Announcements
-
Lab 10 is available. It is due on Saturday, December 5th before midnight.
-
The Final Exam is scheduled for Thursday, December 10th from 7pm-10pm.
-
A study guide is available for the final exam.
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:
All times listed are local to Swarthmore (US/Eastern time).
Section | Days | Time | Instructor |
---|---|---|---|
1 |
TR |
9:45am-11:00am |
Rich Wicentowski |
2 |
TR |
2:00pm-3:15pm |
Lisa Meeden |
Lab | Day | Time | Instructor |
---|---|---|---|
A |
W |
2:00pm- 3:30pm |
Scout Sinclair |
B |
W |
8:15pm- 9:45pm |
Scout Sinclair |
C |
W |
2:00pm- 3:30pm |
Lisa Meeden |
D |
W |
3:45pm- 5:15pm |
Scout Sinclair |
E |
W |
9:00am-10:30am |
Lisa Meeden |
F |
W |
2:00pm- 3:30pm |
Rich Wicentowski |
G |
W |
3:45pm- 5:15pm |
Rich Wicentowski |
Support Staff & Office Hours
Name | Office Hours |
---|---|
Tuesday 3:30pm-5:30pm (and by appt) |
|
Friday 2:30pm-4:30pm (and by appt) |
|
Friday 10am-12pm (and by appt) |
|
Thursday 11:30am-1:30pm (and by appt) |
Academic Support Coordinator: Lauri Courtenay
Student assistants/Ninjas: Jack Ballou, Asha Bhuiyan, Sam Chen, Olivia Fey, Alex Fischmann, Sherry Huang, Emma Jin, Martina Kampel, Sydney Levy, Sojin Lim, Catherine Wang
Check out the ninja study session schedule.
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.6)
Course Goals
By the end of the course, we hope that you will have developed the following skills:
-
Given a program, be able to simulate on paper how a computer would execute the program, and show the results that would be produced.
-
Given a problem, be able to design a clear, concise, and correct pseudocode algorithm to solve it.
-
Given a pseudocode algorithm, be able to successfully implement it in Python.
-
Be able to use top-down design to sub-divide a large problem into reasonably-sized modular sub-problems.
-
Given several algorithms for solving the same problem, be able to 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 | VIDEOS & QUIZZES | TOPIC & READING | LABS   |
1 | Sep 08 | 00A: Welcome to CS21 00B: Logistics
01A: Intro to CS 01B: Using Linux 01C: Types in python | Course Introduction
| |
Sep 10 | 01D: Variable assignment 01E: Input/Output 01F: The 'def' keyword | |||
2 | Sep 15 | 02A: For loops 02B: range function 02C: loops with range | Numbers, Strings, and Loops
| |
Sep 17 | pythontutor.com 02D: Accumulators 02E: Accum. w/ strings | |||
3 | Sep 22 | 03A: Booleans 03B: if statements 03C: Multi-way if | Conditions and Boolean Logic
| |
Sep 24 | Quiz 1 Study Guide 03D: Logical operators 03E: Formatted printing | |||
4 | Sep 29 | 04A: Functions 04B: Return values 04C: Stack frames | First Functions,
| |
Oct 01 | 04D: While loops 04E: Random library | |||
5 | Oct 06 | 05A: Input validation 05B: Boolean flags 05C: Lists vs Strings | Fruitful Functions
| |
Oct 08 | Quiz 2 Study Guide 05D: Lists with functions 05E: Lists on the stack 05F: Mutating in functions | |||
6 | Oct 13 | 06A: Files 06B: Lists of lists 06C: Top-Down Design | Top-Down Design
| |
Oct 15 | 06D: Flashcards TDD Part 1 06E: Flashcards TDD Part 2 06F: Flashcards implementation | |||
7 | Oct 20 | 07A: Wheel of Fortune TDD Part 1 07B: Wheel of Fortune TDD Part 2 | More Top-Down Design
| |
Oct 22 | Quiz 3 Study Guide 07C: WoF Stubs Part 1 07D: WoF Stubs Part 2 07E: WoF Implementation (Optional) | |||
8 | Oct 27 | 08A: Search 08B: Linear Search 08C: Algorithm Analysis | Searching
| Continue TDD |
Oct 29 | 08D: Binary Search 08E: Analyzing Binary Search | |||
9 | Nov 03 | No class today--Vote! 09A: Sorting 09B: Bubble Sort | Sorting
| |
Nov 05 | Quiz 4 Study Guide 09C: Analyzing Bubble Sort 09D: Selection Sort | |||
10 | Nov 10 | 10A: Recursion 10B: Recursion on Lists | Recursion
| |
Nov 12 | 10C: Recursion on Strings 10D: More Recursion | |||
11 | Nov 17 | 11A: Object Oriented Programming 11B: Defining classes | Classes and Objects
| |
Nov 19 | Quiz 5 Study Guide 11C: More OOP 11D: Objects on the stack | |||
Nov 24 | Thanksgiving Break | |||
Nov 26 | ||||
12 | Dec 01 | 12A: Exceptions/OOP 12B: Cards part 2 | More Classes and Objects
| |
Dec 03 | 12C: Blackjack 12D: Semester Wrap-up Final exam 7-10pm Study Guide (Dec 10) |