Announcements
-
If you have prior CS experience, please consider taking the CS Placement Exam.
-
Lab attendance is mandatory.
Course Info
Welcome to CS21. This course will introduce 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.
This course 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 CS31 or CS35.
Meeting Times:
Section | Days | Time | Room | Instructor | Ninjas |
---|---|---|---|---|---|
1 |
MW |
9:00 AM - 10:15 AM |
Martin 213 |
Alex, Emma |
|
2 |
MWF |
10:30 AM - 11:20 AM |
Martin 213 |
Phelps |
|
3 |
MWF |
11:30 AM - 12:20 AM |
Martin 213 |
Rania |
Lab | Day | Time | Room | Instructor | Ninja |
---|---|---|---|---|---|
A |
T |
1:05 PM - 2:35 PM |
Martin 213 |
Kevin Webb |
Phelps |
B |
T |
2:45 PM - 4:15 PM |
Martin 213 |
Charles Kazer |
Michelle |
C |
W |
1:05 PM - 2:35 PM |
Martin 213 |
Nathaniel Grammel |
Lona |
D |
W |
2:45 PM - 4:15 PM |
Martin 213 |
Joshua Brody |
Gia |
Office Hours and Support Staff
Time | Name | Location |
---|---|---|
FIXME |
FIXME |
FIXME |
Students can attend any office hour session regardless of lecture/lab section. If you cannot meet during the posted times, please reach out to one of us to schedule an appointment.
Academic Support Coordinator: Lauri Courtenay
Student assistants/Ninjas: Rania Abohatab, Elizabeth Bugayev, Alex Coley, Michelle (Ziyuan) Fang, Lona Hoang, Gia (Yaejie) Kwon, Erin Picken, Emma Shi, Phelps (Yuxan) Wang
Textbook
We will primarily be using the online book How to think like a computer scientist: Learning with Python by Elkner, Downey and Meyers.
See the Schedule for each week’s reading assignment.
Here are a few other useful online resources:
-
Python documentation (Note: we are using version 3.8)
Course Goals
By the end of the course, we hope that you will have developed the following skills:
-
Given a program, simulate on paper how a computer would execute the program and show the results that it would produce.
-
Given a pseudocode algorithm, successfully implement it in Python.
-
Given a problem, design a clear, concise, and correct pseudocode algorithm to solve it.
-
Use top-down design to sub-divide a large problem into reasonably-sized modular sub-problems.
-
Given several algorithms for solving the same problem, analyze which algorithm would be more efficient in terms of running time.
-
Develop debugging and unit testing skills. Consistently use these skills while implementing programs.
Schedule
WEEK | DAY | ANNOUNCEMENTS | TOPIC & READING | LABS |
1 | Sep 03 |
Course Introduction
| ||
Sep 05 | ||||
2 | Sep 08 | Numbers, Strings, and Loops
| Lab 1: First programs | |
Sep 10 | ||||
Sep 12 | ||||
3 | Sep 15 | Drop/Add Ends | Conditions and Boolean Logic
| Lab 2: Numbers, Strings, and For Loops |
Sep 17 | ||||
Sep 19 | ||||
4 | Sep 22 | First Functions, while Loops
| Lab 3: if statements, for loops | |
Sep 24 | ||||
Sep 26 | ||||
5 | Sep 29 | Fruitful Functions
| Lab 4: Functions and While Loops | |
Oct 01 | ||||
Oct 03 | ||||
6 | Oct 06 | Graphics, Using Objects
| Lab 5: More Advanced Functions | |
Oct 08 | ||||
Oct 10 | ||||
Oct 13 | Fall Break | |||
Oct 15 | ||||
Oct 17 | ||||
7 | Oct 20 | Top-Down Design
| Lab 6: Using Graphics | |
Oct 22 | ||||
Oct 24 | ||||
8 | Oct 27 | More Top-Down Design
| Lab 7 Part I: Design | |
Oct 29 | ||||
Oct 31 | ||||
9 | Nov 03 | Searching
| Lab 7 Part II: Implementation | |
Nov 05 | ||||
Nov 07 | Last Day to Declare CR/NC | |||
10 | Nov 10 | Sorting
| Lab 8: Searching | |
Nov 12 | ||||
Nov 14 | ||||
11 | Nov 17 | Recursion
| Lab 9: Sorting | |
Nov 19 | ||||
Nov 21 | ||||
12 | Nov 24 | Classes and Objects
| Lab 10: Recursion | |
Nov 26 | ||||
Nov 28 | ||||
13 | Dec 01 | More Classes and Objects | Lab 11: Creating Classes | |
Dec 03 | ||||
Dec 05 | ||||
14 | Dec 08 | Wrap up
|
| |
Dec 10 |