Overview

CSCI 054 introduces finite mathematical structures and ways to build them, count them, and analyze them. There is an emphasis on applications to computer science, creative problem solving, and learning to read and write proofs. Additionally students will be exposed to the fundamentals of functional programming.

The prerequisite for the class is CSCI 051. Email the professor (Prof. Chen) if you have any questions about the requirements for the class.

Resources

The professor for this class is Professor Chen. I'm happy to talk about the class, about CS more generally, or about anything else. My office hours are Tuesdays 1:30-3pm and Fridays 1:30-2:30. I'm also happy to meet by appointment (in person or on Zoom): send me an email with some times that work for you and a sense of what you want to talk about. I'm also available for occasional small group lunches/dinners if you'd just like to chat: see the sign-up sheet on my office door.

The mentors/TAs for the class are: Harrison Brown, Helene Sov, Charlotte Wang, Samuel Wang, and Dylan Yang. In general the mentor hours will be on the 1st or 2nd floor of Edmunds at times TBD. Please expect occasional changes and cancellations; these will be posted on Slack.

We'll use Canvas for distributing course materials. We'll use Slack for announcements and informal discussion. And we'll use Gradescope for submitting and returning assignments. Let me know if you run into issues accessing any of these.

The textbooks for the class are:

You are encouraged to look for and to use other resources to learn more about the ideas and concepts (you may not, however, look directly for answers to individual questions on the weekly problem sets!). Some others that people have found useful are:

If you find anything particularly helpful you are strongly encouraged to share it with the class on Slack.

If you might need accommodations please contact the Disability Coordinator on your home campus. The process for Pomona students is available here.

More generally, life happens to all of us and we know there may be times when staying on top of the workload in this class is going to feel like too much on top of everything else that you're managing. If that happens, please come talk to a professor so that we're aware and can work with you to try to figure out a plan. Please keep in touch! (Note: we encourage you to come talk to us even if there isn't anything in particular that you feel you need to discuss!)

Logistics

The basic flow each week will be as follows:

The lectures will be in Edmunds 114.

You will be assigned to a small group of approximately 5-6 students the first week of class. Your group will work together for the entire semester; your first task will be to find an hour when all of you can meet either Thursday or Friday. The plan is for each group to have an assigned TA who will attend the meetings to answer questions, talk through concepts, etc. Each week there will be a low-stakes assignment to work on during your group meeting; this should be turned in by 10pm Thursday evening on Gradescope. There may occasionally be anonymous surveys for you to give feedback on how your group is doing, but please feel free to bring up concerns with me (Prof. Chen) at any time.

In addition, there will be a weekly problem set. The assignments will mostly be done and submitted in pairs and will also be submitted on Gradescope. The pairs will be by assignment for the first few weeks and then at your discretion after that. Problems on the assignment will ask you to apply concepts in new ways. You may discuss the problems with anyone else currently taking cs101 (or with the TAs or myself), but each pair must write up their own solution without referring to any written/typed/etc materials that may have been generated during such discussion. In addition, you must acknowledge who you worked with and what their contribution was. Submitting an answer found on the internet or generated by an AI-powered system such as ChatGPT is not allowed. Unless stated otherwise, problem sets are due by 10pm on the due date.

Finally there will be a comprehensive final exam given during finals week as well as a written, in-class quiz almost every Friday. We'll spend at most half the class time on the quiz before continuing with new material. There will be an option to retake a small number of quizzes.

The breakdown of grades will be as follows:

Schedule

This is a high-level outline of the planned schedule. Note that the calendar is subject to change! For the readings "LYAH" refers to the book "Learn You a Haskell for Great Good! by Miran Lipovača and "CDMCS" refers to the book "Connecting Discrete Mathematics and Computer Science" by David Liben-Nowell.

Unless stated otherwise, all deadlines are at 10pm on the given date.

Week Day Date Topic Reading Due
0 Sat 8/23 intro survey due 5pm
1 M 8/25 intro to everything (class, groups, Haskell) LYAH 1.1-3, 2.1
W 8/27 types LYAH 2.1-3, 3 week01-group due 8/28
F 8/29 week01-quiz, lists week01-ps-coding due 8/31
2 M 9/1 *** no class - Labor Day ***
W 9/3 lists, types, pattern matching LYAH 2, 3 week02-group due 9/4
F 9/5 week02-quiz, more lists LYAH 2.5 week02-ps-coding due 9/7
3 M 9/8 guards, where LYAH 4
W 9/10 where, let LYAH 4 week03-group due 9/11
F 9/12 week03-quiz, higher-order functions LYAH 6 week03-ps-coding due 9/14
4 M 9/15 higher-order functions LYAH 6
W 9/17 higher-order functions LYAH 6 week04-group due 9/18
F 9/19 week04-quiz, logic week04-ps-coding due 9/21
5 M 9/22 logic
W 9/24 logic week05-group due 9/25
F 9/26 week05-quiz, sets week05-ps-written due 9/28
6 M 9/29 sets, logic, proofs
W 10/1 proofs week06-group due 10/2
F 10/3 week06-quiz week06-ps-written due 10/5
7 M 10/6 functions
W 10/8 functions week07-group due 10/9
F 10/10 quiz retakes (weeks 1-6)
8 M 10/13 *** no class - Fall break ***
W 10/15 week08-group due 10/16
F 10/17 week08-quiz, week08-ps due 10/19
9 M 10/20
W 10/22 week09-group due 10/23
F 10/24 week09-quiz, week09-ps due 10/26
10 M 10/27
W 10/29 week10-group due 10/30
F 10/31 week10-quiz, week10-ps due 11/2
11 M 11/3
W 11/5 week11-group due 11/6
F 11/7 week11-quiz, week11-ps due 11/9
12 M 11/10
W 11/12 week12-group due 11/13
F 11/14 week12-quiz, week12-ps due 11/16
13 M 11/17
W 11/19 week13-group due 11/20
F 11/21 quiz retakes (weeks 8-12) week13-ps due 11/23
14 M 11/24
W 11/26 *** no class - Thanksgiving ***
F 11/28 *** no class - Thanksgiving ***
15 M 12/1
W 12/4 week15-ps
F 12/6 *** no class - reading days ***
16 T 12/9 final exam 9am-noon