CS111 is an introduction to the problem solving foundations of computer science. In this course, you will learn big ideas about solving problems, developing algorithms, and organizing programs.
These ideas include:
- 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, recursion, iteration;
- Models: ways to understand how programs are executed;
You will get hands-on experience with these ideas by reading, modifying, debugging, designing, writing, and testing Python programs. Example programs will involve various text manipulation, Python graphics, and animations.
CS111 students must register for and attend a weekly laboratory. Problem solving and programming are skills best learned by doing.
The course uses the Python programming language to explore these ideas. Although you will learn a lot about Python along the way, our focus is on the big ideas. You will really be learning and practicing techniques for solving problems — techniques that apply to any programming language, and, indeed, to any discipline.
CS111 is required for students who wish to major or minor in computer science or elect more advanced courses in the field. Consult Choosing an Introductory CS Course for more information.
Prerequisite: None. No prior computer science background is expected.
Distribution: Mathematical Modeling. Does not satisfy laboratory requirement. Unit: 1.0