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 Mondays 2:30-3:30pm and Fridays 9-10:30am. 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; there will be a sign-up sheet on my office door by the end of the first week of classes.
The mentors/TAs for the class are Julia Aceron and Emanuel Ling. 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; see the discussion of academic honesty below as well as in the slides from the first lecture). Other resources may be useful include:
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 me so that I'm aware and can work with you to figure out a plan. Please keep in touch! (Note: I encourage you to come talk to me 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 105.
You will be assigned to a small group of approximately 4 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 Friday evening on Gradescope. There are no extensions on the groupwork so please make sure everyone knows who is submitting each week's assignment! Because they will be graded on attendance and completeness, rather than on correctness, please make it clear in your submission that your group looked at every question even if you choose not to submit a response. 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 at any time.
In addition, there will be a weekly problem set that asks you to apply concepts in new ways. You are strongly encouraged to discuss the problems with anyone else currently taking cs54 (or with the TAs or myself), but you must write up your 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 copied from another student, found on the internet, or generated by an AI-powered system such as ChatGPT is considered an academic honesty violation (see academic honesty policy). (Stop yourself before either copying the problem set question into genAI, or copying text generated by genAI into your submitted solutions. Either of those is unacceptable.) Unless stated otherwise, problem sets are due by 10pm on the due date. There is an automatic 24-hour extension on all problem sets (i.e. until 10pm the next day); additional extensions will require documentation of circumstances that could not have been anticipated.
There will also be weekly quizzes most Wednesdays. The calendar below lists the quiz dates. We will typically allocate 15-20 minutes for each of these quizzes; the rest of the time in lecture will be used to cover new material. The last class of the semester is set aside for retakes of these written quizzes: if you need to miss any of the quiz dates for any reason, you should plan to include that quiz as one that you retake in class on 12/9. Note that three of the quizzes will be done in short one-on-one whiteboard sessions that you'll schedule individually with me. There will be more information on these as we get closer to the scheduled dates.
There is no final exam.
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 online version of the book "Learn You a Haskell for Great Good! by Miran Lipovača (note that the chapter numbers may differ between the online and the paper versions) 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 |
|---|---|---|---|---|---|
| 1 | M | 8/31 | intro to cs54, intro to Haskell | LYAH: ch 1, 2 | intro survey due 10pm on 8/29 |
| W | 9/2 | types, lists | LYAH: ch 2, 3 | ||
| F | 9/4 | week01-groups | |||
| Su | 9/6 | week01-ps-coding | |||
| 2 | M | 9/7 | *** no class - Labor Day *** | ||
| W | 9/9 | functions: types, pattern matching week02-quiz |
LYAH: ch 3 | ||
| F | 9/11 | week02-groups | |||
| Su | 9/13 | week02-ps-coding | |||
| 3 | M | 9/14 | functions: pattern matching, guards | LYAH: ch 4, 5 | |
| W | 9/16 | functions in functions: where, let week03-quiz |
LYAH: ch 4 | ||
| F | 9/18 | week03-groups | |||
| Su | 9/20 | week03-ps-coding | |||
| 4 | M | 9/21 | higher-order functions | LYAH: ch 6 | |
| W | 9/23 | anonymous functions, folds week04-quiz |
LYAH: ch 6 | ||
| F | 9/25 | week04-groups | |||
| Su | 9/27 | week04-ps-coding | |||
| 5 | M | 9/28 | user-defined types, maybe | LYAH: 8 | |
| W | 9/30 | sets week05-quiz |
CDMCS: 2.1-2.3 | ||
| F | 10/2 | week05-groups | |||
| Su | 10/4 | week05-ps-coding | |||
| 6 | M | 10/5 | propositional logic | CDMCS: 3.1-3.3 | |
| W | 10/7 | reasoning with propositional logic, predicate logic | CDMCS: 3.3-3.5 | ||
| F | 10/9 | week06-quiz (whiteboard) | |||
| Su | 10/11 | week06-ps | |||
| 7 | M | 10/12 | predicate logic | CDMCS: 3.5-3.6 | |
| W | 10/14 | binary numbers (review), proofs by example/counterexample week07-quiz |
CDMCS: 4.1, 4.3 | ||
| F | 10/16 | week07-groups (optional) | |||
| 8 | M | 10/19 | *** no class - Fall break *** | ||
| W | 10/21 | binary representation, direct proofs week08-quiz |
CDMCS: 4.3-4.5 | ||
| F | 10/23 | week08-groups | |||
| Su | 10/25 | week08-ps | |||
| 9 | M | 10/26 | contrapositive, iff | CDMCS: 4.3-4.5 | |
| W | 10/28 | induction week09-quiz |
CDMCS: 5.1-5.2 | ||
| F | 10/30 | week09-groups | |||
| Su | 11/1 | week09-ps | |||
| 10 | M | 11/2 | recurrences, induction | CDMCS: 5.2-5.3 | |
| W | 11/4 | basic linear algebra week10-quiz |
CDMCS: 2.4 | ||
| F | 11/6 | week10-groups | |||
| Su | 11/8 | week10-ps | |||
| 11 | M | 11/9 | basic linear algebra | CDMCS: 2.4 | |
| W | 11/11 | counting | CDMCS: 9.1-9.2 | ||
| F | 11/13 | week11-quiz (whiteboard) | |||
| Su | 11/15 | week11-ps | |||
| 12 | M | 11/16 | counting | CDMCS: 9.2-9.4 | |
| W | 11/18 | probability week12-quiz |
CDMCS: 10.1-10.2 | ||
| F | 11/20 | week12-groups | |||
| Su | 11/22 | week12-ps | |||
| 13 | M | 11/23 | probability | CDMCS: 10.2-10.3 | |
| W | 11/25 | *** no class - Thanksgiving *** | |||
| S | 11/29 | week13-ps | |||
| 14 | M | 11/30 | probability | CDMCS: 10.2-10.3 | |
| W | 12/2 | functions week14-quiz |
CDMCS: 2.5 | ||
| F | 12/4 | week14-groups | |||
| Su | 12/6 | week14-ps | |||
| 15 | M | 12/7 | functions, relations | CDMCS: 2.5, 8.1-3 | |
| W | 12/9 | retakes of written quizzes | |||
| F | 12/11 | week15-quiz (whiteboard) |