Announcements
Welcome to CS21!
Please read through the class webpage.
Week 1: no office hours on Monday or Tuesday.
-
If you have prior CS experience, please consider taking the CS Placement Exam.
-
Lab attendance is mandatory.
-
Link to this week’s schedule.
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 |
MWF |
9:30 AM - 10:20 AM |
Martin 213 |
Nate, Roshan |
|
2 |
MWF |
10:30 AM - 11:20 AM |
Martin 213 |
Tara |
|
3 |
MWF |
11:30 AM - 12:20 AM |
Martin 213 |
Lily |
| Lab | Day | Time | Room | Instructor | Ninja |
|---|---|---|---|---|---|
A |
T |
1:05 PM - 2:35 PM |
Martin 213 |
Joceyln Corey |
Nate |
B |
T |
2:45 PM - 4:15 PM |
Martin 213 |
Jocelyn Corey |
Paris |
C |
W |
1:05 PM - 2:35 PM |
Martin 213 |
Tia Newhall |
Rania |
D |
W |
2:45 PM - 4:15 PM |
Martin 213 |
Nathaniel Grammel |
Alex |
Office Hours and Support Staff
| Day | Time | Name | Location |
|---|---|---|---|
Monday |
1:00 PM - 3:00 PM |
Nathaniel Grammel |
321 |
Monday |
1:00 PM - 2:00 PM |
Tia Newhall |
321 |
Monday |
2:00 PM - 3:00 PM |
Kevin Webb |
321 |
Tuesday |
10:00 AM - 11:15 AM |
Kevin Webb |
321 |
Tuesday |
11:15 AM - 12:00 PM |
Tia Newhall |
321 |
Thursday |
2:45 PM - 4:45 PM |
Jocelyn Corey |
321 |
Friday |
1:00 PM - 3:00 PM |
Lauri Courtenay |
204 |
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
EdSTEM Course Discussion: EdSTEM course discussion forum
Student assistants/Ninjas: Alex, Lily, Nate, Paris, Rania, Roshan, Stephanie, Tara
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 | Jan 21 |
Course Introduction
| ||
Jan 23 | ||||
| 2 | Jan 26 | Numbers, Strings, and Loops
| Lab 1: First programs | |
Jan 28 | ||||
Jan 30 | ||||
| 3 | Feb 02 | Drop/Add Ends | Conditions and Boolean Logic
| Lab 2: Numbers, Strings, and For Loops |
Feb 04 | ||||
Feb 06 | ||||
| 4 | Feb 09 | First Functions, while Loops
| Lab 3: if statements, for loops | |
Feb 11 | ||||
Feb 13 | ||||
| 5 | Feb 16 | Fruitful Functions
| Lab 4: Functions and While Loops | |
Feb 18 | ||||
Feb 20 | ||||
| 6 | Feb 23 | Graphics, Using Objects
| Lab 5: More Advanced Functions | |
Feb 25 | ||||
Feb 27 | ||||
| 7 | Mar 02 | Top-Down Design
| Lab 6: Using Graphics | |
Mar 04 | ||||
Mar 06 | ||||
Mar 09 | Spring Break | |||
Mar 11 | ||||
Mar 13 | ||||
| 8 | Mar 16 | More Top-Down Design
| Lab 7 Part I: Design | |
Mar 18 | ||||
Mar 20 | ||||
| 9 | Mar 23 | Searching
| Lab 7 Part II: Implementation | |
Mar 25 | ||||
Mar 27 | Last Day to Declare CR/NC | |||
| 10 | Mar 30 | Sorting
| Lab 8: Searching | |
Apr 01 | ||||
Apr 03 | ||||
| 11 | Apr 06 | Recursion
| Lab 9: Sorting | |
Apr 08 | ||||
Apr 10 | ||||
| 12 | Apr 13 | Classes and Objects
| Lab 10: Recursion | |
Apr 15 | ||||
Apr 17 | ||||
| 13 | Apr 20 | More Classes and Objects | Lab 11: Creating Classes | |
Apr 22 | ||||
Apr 24 | ||||
| 14 | Apr 27 | Wrap up
| TBD | |
Apr 29 | ||||
May 01 | ||||
