CS102
Computational Thinking
The problem-solving mindset behind programming: decomposition, pattern recognition, abstraction, and algorithm design.
8 modules · 32 lessons · Practice after every lesson
Take first
Syllabus
Module 1
Problem Formulation
- From Informal Needs to Precise Problems
- Inputs, Outputs, Constraints, and Assumptions
- Examples, Counterexamples, and Edge Cases
- Defining Success and Failure Conditions
Module 2
Decomposition
- Breaking Systems into Subproblems
- Dependency Structure and Ordering
- Top-Down and Bottom-Up Decomposition
- Interfaces Between Subproblems
Module 3
Abstraction and Representation
- Choosing the Right Level of Detail
- Data Abstraction and Representation Barriers
- Representing State and Change
- Models, Maps, and Useful Simplifications
Module 4
Algorithms and Pseudocode
- Properties of an Algorithm
- Writing Unambiguous Pseudocode
- Sequence, Selection, and Iteration
- Tracing Algorithms by Hand
Module 5
Patterns of Computation
- Accumulation and Reduction
- Search and Filtering
- Transformation and Mapping
- Divide, Classify, and Recombine
Module 6
Reasoning About Solutions
- Correctness Before Efficiency
- Invariants and Progress Measures
- Complexity as Growth
- Trade-Offs Between Time, Space, and Simplicity
Module 7
Debugging Thought Processes
- Hypotheses and Controlled Experiments
- Localizing a Fault
- Distinguishing Symptoms from Causes
- Using Minimal Reproductions
Module 8
Computing in Context
- Automation and Human Judgment
- Bias in Models and Data
- Privacy, Safety, and Failure Impact
- Communicating Computational Decisions
Start Computational Thinking.
No setup, nothing to install. Try the first lessons before you sign up.