CS 112: Computational Thinking and Problem Solving
Total Credits: 3 cr
Course Coordinator: Terry Soule
Proposed Catalog Description: May be used as core credit in J-3-c. 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. No lab.
Type: This course is not required for Computer Science students. It is available for General Education credit in mathematics.
Prereq: Math 108 or sufficiently high ACT, SAT, or Math Placement Test score to qualify for Math 143.
Textbook: None. Materials will be provided as needed.
References: Additional course references will be available on the course web site.
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
- Data representation: binary encoding
- Use of text editors
- Programming in Scratch
- Programming in NetLogo
- Programming in Processing
- Simple graphics; working with shapes and colors
- Control models: loops, nested loops
- Mathematical and computer models
- Testing and debugging
At the conclusion of this course, the student should be able to:
- Understand how data such as numbers and text are represented in a computer
- Understand data types including: scalars and arrays
- Translate a verbal problem description into an algorithm that can be programmed
- Write a computer program to execute the algorithm on a sample input
- Accept input data from source like a keyboard
- Process the data to solve a problem
- Print the results on a display devices such as a computer screen
- Implement conditional constructs (name varies with programming language):
- If, if-then, If-then-else
- Nested If, if-then, If-then-else
- For loops
- While loops
- Nested loops
- Use pre-built methods/functions/subroutines
- Write and use methods/functions/subroutines
- Introduction to objects, classes, member functions
- Runtime behavior: timing, waits, animated sequences
- Verify the correctness of a program
- Methodically debug a program: observe behavior, diagnose and fix problems
- Save their work and access it later
- Keep track of old versions of their work so they can always go back to a working version