Pomona College

CS 54 PO—Discrete Math and Functional Programming

Fall 2022

Yi Chen

**e-mail:** tzuyi.last_name@pomona.edu

**office hours:** Edmunds 223:
Tuesdays and Thursdays 11am-noon, also by appt

Dave Kauchak

**e-mail:** David.last_name@pomona.edu

**office hours:** Edmunds 224

Monday: 10:30am-12

Wednesday: 10:30am-12

Thursday: 2:30-3:30pm

and by appointment

Wednesday: 7-9pm (Rachel)

Friday: 3:15-5:15pm (Eryn)

Saturday: 2-4pm (Saatvik)

Sunday: 7:30 - 10:30pm (Will, Gabriel)

**Class time: **MW 2:45-4pm

**Class location: **Edmunds 101

**Assignment submission:** Gradescope

**Web page:** http://www.cs.pomona.edu/classes/cs54/

**Course readings:**

- Intro SML: A Brief Introduction to SML
- Machine: The CS52 Machine
- RSA: RSA Encryption
- Discrete Math: Connecting Discrete Mathematics and Computer Science, by David Liben-Nowell

**Final exam:** 2-5pm on Tuesday 12/13 (the designated final time in finals week)

**Other information:**

- Syllabus
- Piazza for questions and discussion
- Software installation instructions
- List of all code examples

Date | Topic | Reading | Assignment | Misc |
---|---|---|---|---|

8/29 | admin, SML basics | Intro SML: Introduction | Assignment 0 (due: 9/2@5pm) - template - check | |

8/31 | SML data types, handout | Intro SML: pgs. 12-18, SML data types | ||

9/5 | *** No class - Labor Day *** | |||

9/7 | list recursion | Intro SML: part III, pgs. 34-47 | Assignment 1 (due: 9/11@11:59pm) - template - check | |

9/12 | advanced recursion | Intro SML: pgs. 19-22, 47-58 | ||

9/14 | more SML fun | Assignment 2 (due: 9/18@11:59pm) - template - check | ||

9/19 | SML: the details | |||

9/21 | SML concluded, recursion patterns | Assignment 3 (due: 9/25@11:59pm) - template - check | ||

9/26 | CS52 machine (ppt) | Machine: pgs. 1-10 | ||

9/28 | *** midterm 1 in class *** | sample problems | Assignment 4 (due: 10/2@11:59pm) - template - check | |

10/3 | CS52 machine functions (ppt) | Machine: pgs. 11-28, Apendix A | ||

10/5 | CS52 machine recursion (ppt) | Machine: rest | Assignment 5 (due: 10/9@11:59pm) - assign5-4.a52 | |

10/10 | encryption (ppt) | RSA: sections I-IV | ||

10/12 | encryption in practice (ppt) | RSA: sections V-VIIOptional: RSA paper | Assignment 6 (due: 10/16@11:59pm) - template - check - assign6.tex | |

10/17 | *** No class - Fall break *** | |||

10/19 | propositional logic (slides on piazza) | CDMCS: 3.2 | week08-ps (due: 10/23@11:59pm) - .pdf and .tex on piazza | |

10/24 | predicate logic | CDMCS: 3.4 | ||

10/26 | predicate logic continued, writing proofs | CDMCS: 3.5, 4.3 | week09-ps (due: 10/30@11:59pm) - .pdf and .tex on piazza | |

10/31 | proofs: direct, contrapositive | CDMCS: 4.3, 4.5 | ||

11/2 | proofs: induction | CDMCS: 5.1-2 | week10-ps (due: 11/6@11:59pm) - .pdf and .tex on piazza | |

11/7 | induction continued | CDMCS: 5.2-3 | ||

11/9 | *** midterm 2 in class *** | week11-ps (due: 11/13@11:59pm) - .pdf and .tex on piazza | ||

11/14 | sets | CDMCS: 2.3 | ||

11/16 | functions | CDMCS: 2.5 | week12-ps (due: 11/20@11:59pm) - .pdf and .tex on piazza | |

11/21 | relations | CDMCS: 8.1-4 | ||

11/23 | *** No class - Thanksgiving *** | |||

11/28 | counting | |||

11/30 | counting/probability | |||

12/5 | probability | |||

12/7 | recap |

**Final exam:** December 13th, 2-5pm

**Additional resources**

- SML resources
- SML software and various tutorials and resources.
- Harper, Programming in Standard ML
- Gilmore, Programming in Standard ML '97: An On-line Tutorial
- Pucella, Notes on Programming Standard ML of New Jersey
- Copies of the following books are available in the CS lab, Edmunds 227. Please do not remove them from the lab; they cannot be replaced if they disappear!
- Paulson, ML for the Working Programmer, second edition, Cambridge University Press, 1996.
- Ullman, Elements of ML Programming, ML 97 Edition, Prentice-Hall, 1998.
- Hansen and Rischel, Introduction to Programming using SML, Addison-Wesley, 1999.

- CS52 Machine download
- Unix and emacs resources
- Aquamacs (a common installation of Emacs on Mac)
- Some basic unix commands
- Harvey Mudd's UNIX: The Basics
- The Gnu Emacs Manual (probably more than you want to know). There is also an emacs quick reference guide.