Welcome to CS111A (CS111-03)
What is CS111A?
CS111A is an advanced version of CS111 for students with some previous programming experience in any programming language(s). But no background in Python is required!
CS111A will move at a pace that is somewhat faster than the regular sections of CS111 and it will cover some topics that are not covered in those sections.
If you're looking for the website the regular sections of CS111 (CS111-01, taught by Prof. Sandu, and CS111-02, taught by Prof. Lee) click here.
"How to" knowledge
Computer science is the study of imperative ("how to") knowledge, which is at the heart of problem solving. Imperative knowledge is expressed via algorithms, which are descriptions of computational processes that can be encoded as programs written in a programming language. Programs communicate imperative knowledge between people; they can also be executed by computers.
Big Ideas
- Abstraction: Capturing common patterns, hiding information, making specifications (contracts)
- Modularity: Expressing programs as the composition of mix-and-match parts
- Problem solving strategies: Divide-conquer-glue, incremental development, tracing & debugging, iteration, recursion
- Computational Models: Ways to understand how programs are executed
- Interdependence: Computational technology should be in service of human flourishing