Overview

CSCI51p provides an introduction to the field of computer science using the Python programming language. Topics include iteration and recursion, basic data structures, sorting and searching, elementary analysis of algorithms, and an introduction to object-oriented programming. This course will place special emphasis on working with and making sense of data in order to connect course material with applications in other disciplines. 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.

There are no prerequisites for this course. In fact, we assume that you have no previous computer programming experience in any language. If you are enrolled in the class but have significant previous experience, please talk to an instructor to explore whether it makes sense to skip this class (while preserving eligibility for the CSCI54 lottery).

Resources

The professors for this class are here to help you succeed. Please don't hesitate to reach out to us via email or to stop by during our office hours! Professor Chen (Edmunds 223; office hours Tuesday 1:30-3pm, Thursday 10-11:30am, and by appt) and Professor Li (Edmunds 111; office hours Monday 4-5:30pm and Tuesday 10:30am-12pm) will be giving the lectures. Professor Ye (Edmunds 115; office hours Tuesday 3-4:30pm) will be running the labs.

We have a wonderful group of mentors/TAs: Prince Bashangezi, Sophy Figaroa, Verrels Lukman Eugeneo, Cid Maciel, Vadym Musiienko, Diane Nguyen, Harper Noteboom, Kartika Santoso, and Kevin Valdivia. Some of them will be in lab and others will hold mentor hours; some of them just took the class last semester and others are seniors. Mentor hours are located on the 2nd floor of Edmunds (either in the lab rooms or the common space). They will serve as great resources, so please get to know them!

The Quantitative Skills Center (QSC) has a QSC Partner program that provides one-on-one support to students in a variety of STEM courses, including cs51p. You can schedule an appointment with a QSC mentor here.

We'll use Canvas for distributing course materials (e.g. lecture slides, assignments). We'll use Slack for announcements and informal discussion. And we'll use Gradescope for submitting and returning assignments. Let us know if you run into issues accessing any of these.

While there is no official textbook for the class, the following are some resources that you may find useful.

Logistics

The basic flow each week will be as follows:

Attendance at lectures is highly recommended, but not required. We will, however, be taking attendance at labs so you should plan to be at those. Please make sure to attend the lab section in which you're enrolled.

There will be a weekly assignment. The assignments will typically consist of two parts. The first part should be done in lab and must be checked off during your assigned lab time. You may (and are strongly encouraged to!) start on the second part in lab as well, but the second part will not be due until 11:59pm on Fridays. On every assignment you can have an automatic no-questions-asked 24-hour extension; just upload your assignment to Gradescope by 11:59pm on Saturday. Any extension beyond that requires approval from Prof. Ye: send him an email explaining the situation.

There will be three in-class, written checkpoints as noted in the calendar below.

Lastly, there will be a final project due by 11:59pm on Wednesday 12/11.

The breakdown of grades will be as follows:

If you need accommodations please contact the Disability Coordinator on your home campus. The process for Pomona students is available here. More generally, if there is anything that is preventing you from participating fully in the class as it's designed, please talk to one of the instructors so that we can work with you!

Schedule

This is a high-level outline of the planned schedule. Note that the calendar is subject to change.

Unless stated otherwise, part 1 assignments are due during lab and part 2 assignments are due at 11:59pm on the given date.

Week Day Date Topic Due
1 M 8/26 lec 1: intro to cs51p, python, data assignment 0
M/T 8/26-27 lab 1: setup assignment 1 - part 1
W 8/28 lec 2: expressions: operators, variables, input()
F 8/30 assignment 1 - part 2
2 M 9/2 *** no class - labor day ***
M/T 9/2-3 *** no lab - labor day ***
W 9/4 lec 3: booleans, conditionals
3 M 9/9 lec 4: loops
M/T 9/9-10 lab 2: introduction assignment 2 - part 1
W 9/11 lec 5: loops
F 9/13 assignment 2 - part 2
4 M 9/16 lec 6: loops, functions
M/T 9/16-17 lab 3: password assignment 3 - part 1
W 9/18 lec 7: functions
F 9/20 assignment 3 - part 2
5 M 9/23 lec 8: functions
M/T 9/23-24 lab: debate and review
W 9/25 *** checkpoint 1 ***
6 M 9/30 lec 9: memory, stack
M/T 9/30-10/1 lab 4: credit card assignment 4 - part 1
W 10/2 lec 10: recursion
F 10/4 assignment 4 - part 2
7 M 10/7 lec 11: recursion
M/T 10/7-8 lab 5: recursion assignment 5 - part 1
W 10/9 lec 12: strings
F 10/11 assignment 5 - part 2
8 M 10/14 *** no class - fall break ***
M/T 10/14-15 *** no lab - fall break ***
W 10/16 lec 13: file I/O, exceptions
9 M 10/21 lec 14: debugging, testing
M/T 10/21-22 lab 6: text processing assignment 6 - part 1
W 10/23 lec 15: intro to data structures, lists
F 10/25 assignment 6 - part 2
10 M 10/28 lec 16: lists
M/T 10/28-29 lab 7: image processing version 1 assignment 7 - part 1
W 10/30 lec 17: nested lists, pointers
F 11/1 assignment 7 - part 2
11 M 11/4 lec 18: dictionaries
M/T 11/4-5 lab 8: image processing version 2 assignment 8 - part 1
W 11/6 lec 19: data visualization
F 11/8 assignment 8 - part 2
12 M 11/11 *** checkpoint 2 ***
M/T 11/11-12 lab 9: data visualization assignment 9 - part 1
W 11/13 lec 20: classes/objects, discussion of final project
F 11/15 assignment 9 - part 2
13 M 11/18 lec 21: classes/objects
M/T 11/18-19 lab 10: OOP, final project exploration assignment 10 - part 1
W 11/20 lec 22: algorithms
F 11/22 assignment 10 - part 2, final project - proposal
14 M 11/25 lec 23: algorithms
M/T 11/25-26 lab 11: algorithms, final project meeting assignment 11 - part 1
W 11/27 *** no class - Thanksgiving
15 M 12/2 lec 24: wrap up assignment 11 - part 2, (optional) final project - functions
M/T 12/2-3 lab: review, work on final project
W 12/4 *** checkpoint 3 ***
16 W 12/11 final project due 11:59pm

Weekly Calendar