This course introduces fundamental ideas in computer science while also
teaching you how to write computer programs. We will study algorithms
for solving problems and implement solutions in the Python programming
language. Python is an interpreted language that is known for its ease
of use. We also introduce object-oriented programming and data structures.
A deeper coverage of these topics will be presented in CS 35.
CS21 is appropriate for all students who want to learn how to write computer
programs and think like computer scientists. It is the usual first
course for computer science majors and minors. Students with advanced
placement credit or extensive programming experience should place out
of this course and instead begin with CS 31 or CS 35.
CS21 Goals
By the end of the course, you will have developed the following skills:
- Given a problem, be able to design a clear, concise, and correct pseudocode algorithm to solve it.
- Be able to use top-down design to sub-divide a large problem into reasonably-sized modular sub-problems.
- Given a pseudocode algorithm, be able to successfully implement it in the high-level programming language being taught in the course, both on paper and on the computer.
- Develop debugging and incremental testing skills. Consistently apply these skills while implementing programs.
- Given several algorithms for solving the same problem, be able to analyze which algorithm would be more efficient in terms of running time.
- Given a program, be able to simulate on paper how a computer would execute the program, and show the results that would be produced.
- Demonstrate understanding of function call semantics and the call stack by tracing through function calls and drawing stack diagrams.
- Learn to communicate an understanding of core concepts in the class. Students should be able to explain fundamental concepts to one another and critique each other's approaches.
- Utilize encapusulation, abstraction, modularity and re-use (e.g. through the use of OO programming paradigm) in the programs they develop.
Course Webpages:
Current or Most Recent Offering:
Spring 2024
Older:
In Python:
S'22,
S'17, F'11, S'10,
F'09, F'08
In Java: S'06
In C: S'05,
F'04, S'04,
F'00, S'00,
F'99