CS 112

From CS Wiki
Jump to: navigation, search

CS 112: Computational Thinking and Problem Solving

Total Credits: 3 cr

Course Coordinator: Robert Heckendorn

URL: http://marvin.cs.uidaho.edu/Teaching/CS112/index.html

Textbook: None. Handouts provided on class web site. Language support material available at each language web site.

Catalog Description: Introduction to computational thinking and problem solving, including elementary computing concepts such as variables, loops, functions, lists, conditionals, concurrency, data types, simple object oriented concepts, I/O, events, syntax, structured programming, basic concepts of computer organization, editing and the influence of computers in modern society.

Type: This course is not required for Computer Science students. It is available for General Education credit in mathematics.

Prereq: Math 108 with a grade of ‘C’ or better; or sufficiently high ACT, SAT, or Math Placement Test score to qualify for Math 143.

References: Additional course references will be available on the course web site.

Course Goals

This is a first course in computing and computer programming, for students who have no prior experience writing programs. Computer science and engineering majors and non-majors are equally welcome. For computer science and computer engineering majors, this course is a bridge to CS 120, Computer Science 1, which is fast-moving and demanding. Taking this course first will help them hit the ground running. For non-majors, this course provides the tools to make computers work for them, whatever their chosen profession. Students will use beginner-friendly computer languages to master the basic elements of computer programming and to become comfortable with programming computers to solve problems. Possible languages include Scratch (graphical programming language), Net Logo, Processing (Java-like), and Python.

Major Topics Covered

  1. The effect of Computer science on Society
  2. Ethical issues related to computers and information
  3. Hardware, operating system, libraries, layers of software
  4. Data representation: binary, ASCII, file formats
  5. Use of text editors and IDEs
  6. Programming in Scratch
  7. Programming in NetLogo
  8. Programming in Processing
  9. Algorithm and program design and implementation process
  10. Variables, declaration, scope, and program design
  11. Types, arrays, 1D and 2D
  12. Control statements: if, else, case, loops, nested loops
  13. Procedure definition and invocation
  14. Data and functional abstraction
  15. Flow and models of execution (concurrency and event driven programming)
  16. Simple graphics
  17. Randomness, Simulation, and computer modeling
  18. Testing and debugging
  19. Computer science as a profession

Course Outcomes

At the conclusion of this course, the student should be able to:

  1. Be able to discuss the many aspects where computer science has effect on society
  2. Be able to discuss several important ethical issues in computer science
  3. Understand terms and relationships of hardware components of computers
  4. Understand the importance of operating systems and software libraries
  5. Understand the layering of software
  6. Encode and decode data represented in binary and ASCII
  7. Use of text editors and IDEs to construct programs
  8. Translate a written problem description into an algorithm that can be programmed
  9. Write a computer program to execute the algorithm
  10. Use Scratch to implement an algorithm to solve a problem.
  11. Use NetLogo to implement an algorithm to solve a problem.
  12. Use Processing to implement an algorithm to solve a problem.
  13. Understand what is meant by type and how it is used in programming
  14. Understand the use of variables, declaration, and scope
  15. Demonstrate the use of 1D and 2D arrays
  16. Demonstrate the use of control statements including loops and if statements
  17. Demonstrate program organization using procedures
  18. Explain and use data and functional abstraction
  19. Use concurrency and event driven programming to solve a problem
  20. Properly use random numbers in program
  21. Describe the computer science profession
  22. Methodically debug a program: observe behavior, diagnose and fix problems
  23. Save their work and access it later
  24. Keep track of old versions of their work so they can always go back to a working version

Should I Take This Course?

The purpose of this class is to give you enough computing background to go on to learn to use different programming environments effectively, particularly those that require programming, and to make them work for you, whatever career path you choose to follow.

If you have experience programming in a language like Java, JavaScript, Python or C++, you will probably be bored in this class. This does not include experience with a markup language like HTML, or software packages such as Microsoft Excel, Microsoft PowerPoint, or Adobe Photoshop: these are very different skills, and background in these areas does not preclude taking this class.