CS 112: Computational Thinking and Problem Solving
Total Credits: 3 cr
Course Coordinator: Robert Heckendorn
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.
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
- The effect of Computer science on Society
- Ethical issues related to computers and information
- Hardware, operating system, libraries, layers of software
- Data representation: binary, ASCII, file formats
- Use of text editors and IDEs
- Programming in Scratch
- Programming in NetLogo
- Programming in Processing
- Algorithm and program design and implementation process
- Variables, declaration, scope, and program design
- Types, arrays, 1D and 2D
- Control statements: if, else, case, loops, nested loops
- Procedure definition and invocation
- Data and functional abstraction
- Flow and models of execution (concurrency and event driven programming)
- Simple graphics
- Randomness, Simulation, and computer modeling
- Testing and debugging
- Computer science as a profession
At the conclusion of this course, the student should be able to:
- Be able to discuss the many aspects where computer science has effect on society
- Be able to discuss several important ethical issues in computer science
- Understand terms and relationships of hardware components of computers
- Understand the importance of operating systems and software libraries
- Understand the layering of software
- Encode and decode data represented in binary and ASCII
- Use of text editors and IDEs to construct programs
- Translate a written problem description into an algorithm that can be programmed
- Write a computer program to execute the algorithm
- Use Scratch to implement an algorithm to solve a problem.
- Use NetLogo to implement an algorithm to solve a problem.
- Use Processing to implement an algorithm to solve a problem.
- Understand what is meant by type and how it is used in programming
- Understand the use of variables, declaration, and scope
- Demonstrate the use of 1D and 2D arrays
- Demonstrate the use of control statements including loops and if statements
- Demonstrate program organization using procedures
- Explain and use data and functional abstraction
- Use concurrency and event driven programming to solve a problem
- Properly use random numbers in program
- Describe the computer science profession
- 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
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.