Lectures: MWF11-11:50 in Edmunds 114
Lab: F 1:15-4 in Edmunds 219 and 229
Instructors: Eleanor Birrell and Yi Chen
TAs: Gabe Magee (head TA), Janice Lee, Thummin Mekuria, Ruben Pacheco-Caldera, Cassie Wang, Gina Wang
By the end of this course we hope you have a good basic understanding of how to develop (design, code, and debug) medium-sized programs in Python, and have a basic understanding of how one might analyze programs for correctness and efficiency.
This course (or one of the other variations of CSCI 051) is a prerequisite for all upper level Computer Science courses. In this course we do not assume that you have had any previous computer programming experience in any language. If you have had significant previous experience, please come talk to one of the instructors as cs52 or cs54 may be more appropriate. The required textbook for the class is Think Python, 2nd edition by Allen Downey. The pdf is freely available. However, if you prefer having a physical copy as well, we've also placed an order for the book at Huntley bookstore.
Some of the materials used in this class are inspired by materials created by other people for various other classes (including CS30 at Pomona).
Any topics or assignments that are listed for dates in the future should be taken as (potentially very) tentative. Anything for a date at least 2 days in the past will accurately reflect what actually happened in the class.
Lecture notes (if any) will be posted on piazza.
The readings will be most useful if done before that day's lecture.
Week | Date | In class | Readings for class | Assignments due |
---|---|---|---|---|
1 | (Wed) 9/5 | introduction python basics, values, types | Ch 1-2 | |
(Fri) 9/7 | variables, operators | Ch 2 | ||
(Lab) 9/7 | lab 1 - introduction to pycharm, python | |||
2 | (Mon) 9/10 | operators, booleans, conditionals | Ch 5 | assignment 1 due 11PM |
(Wed) 9/12 | conditionals | Ch 5 | ||
(Fri) 9/14 | coding style, functions, return values | Ch 3 | ||
(Lab) 9/14 | lab 2 - conditionals | |||
3 | (Mon) 9/17 | functions, parameters, arguments | Ch 3 | assignment 2 due 11PM |
(Wed) 9/19 | functions, parameters, arguments | Ch 3 | ||
(Fri) 9/21 | scope, modules | Ch 3 | ||
(Lab) 9/21 | lab 3 - functions, operators | |||
4 | (Mon) 9/24 | functions, while loops | assignment 3 due 11pm | |
(Wed) 9/26 | for loops, turtle graphics | Ch 4, 5 | ||
(Fri) 9/28 | turtle graphics, review | Ch 4 | ||
(Lab) 9/28 | lab 4 - loops, graphics | |||
5 | (Mon) 10/1 | * checkpoint 1 * | ||
(Wed) 10/3 | recursion | Ch 5, 6 | ||
(Fri) 10/5 | recursion | Ch 5, 6 | ||
(Lab) 10/5 | lab 5 - recursion | |||
6 | (Mon) 10/8 | recursion without graphics range(), strings | Ch 6, 8 | assignments 4 and 5 due 11PM |
(Wed) 10/10 | strings, files | Ch 8, 9 | ||
(Fri) 10/12 | strings, files | Ch 8, 9 | ||
(Lab) 10/12 | lab 6 - strings | |||
7 | (Mon) 10/15 | intro to data structures, lists | Ch 10 | |
(Wed) 10/17 | lists | Ch 10 | assignment 6 due 11pm | |
(Fri) 10/19 | lists | Ch 10 | ||
(Lab) 10/19 | * programming checkpoint * | |||
8 | (Mon) 10/22 | *** no class - Fall recess *** | ||
(Wed) 10/24 | lists, tuples, review | Ch 10, 12 | ||
(Fri) 10/26 | * checkpoint 2 * | |||
(Lab) 10/26 | lab 7 - files, lists | |||
9 | (Mon) 10/29 | nested lists | Ch 10 | assignment 7 due 11pm |
(Wed) 10/31 | nested lists | Ch 10 | ||
(Fri) 11/2 | copying lists, dictionaries | Ch 10, 11 | ||
(Lab) 11/2 | lab 8 - nested lists | |||
10 | (Mon) 11/5 | dictionaries | Ch 11 | assignment 8 due 11pm |
(Wed) 11/7 | dictionaries, plotting | Ch 11, pyplot tutorial | ||
(Fri) 11/9 | object-oriented programming | Ch 16, 17 | ||
(Lab) 11/9 | lab 9 - dictionaries, plotting | |||
11 | (Mon) 11/12 | object-oriented programming | Ch 16, 17 | assignment 9 due 11PM |
(Wed) 11/14 | object-oriented programming | Ch 16, 17 | ||
(Fri) 11/16 | * checkpoint 3 * | |||
(Lab) 11/16 | lab 10 - oop | |||
12 | (Mon) 11/19 | discussion of final program | assignment 10 due 11PM | |
(Wed) 11/21 | *** no class/lab - Thanksgiving *** | |||
(Fri) 11/23 | ||||
13 | (Mon) 11/26 | sorting algorithms, selection sort | ||
(Wed) 11/28 | insertion sort, linear/binary search | |||
(Fri) 11/30 | mergesort, browsers and servers | |||
(Lab) 11/30 | lab 11 - algorithms | |||
14 | (Mon) 12/3 | resources, intro to html | assignment 11 due 11pm | |
(Wed) 12/5 | beautifulsoup | |||
(Fri) 12/7 | webpages, css | |||
(Lab) 12/7 | work on final program | |||
15 | (Mon) 12/10 | javascript | ||
(Wed) 12/12 | javascript, wrap-up | final program due 4PM |
The final exam will be on Thursday 12/20 from 9am-noon in Edmunds 114.
Final grades will be determined by grades on labs, test programs, the midterm, and the final.
Work | Proportion |
---|---|
Labs and Assignments | 40% |
Final Programming Project | 20% |
Checkpoints | 24% |
Final exam | 16% |
The following links may be helpful (let me know if you find anything that you feel should be included!) :