CMPS 112: Comparative Programming Languages, Spring 2019



Meeting time and place

Lecture: Tuesdays and Thursdays from 3:20pm to 4:55pm Earth & Marine Sci B206.

Discussion Sections:

  • Monday from 8:30am to 9:30am @ E2 380
  • Monday from 12pm to 1:05pm @ Oakes Acad 106
  • Wednesday from 9:20am to 10:25am @ Phys Sciences 140
  • Wednesday from 10:40am to 11:45am @ Phys Sciences 140

Jump to schedule

We will use the Piazza site for communication, discussion, and announcements. All homework programming assignments will be distributed and managed via GitLab. Homework will be submitted via Canvas. Please use Piazza for communicating with course staff whenever possible. You will be more likely to receive a timely response.

Textbook: Thinking Functionally with Haskell by Richard Bird. Available online (free via library), or in print

Course Staff

Name Position Email Phone Office/consulting hours
Owen Arden Instructor Turn on JavaScript to view the email address 2-7044 Tuesdays and Thursdays 5pm - 5:30pm, outside B206
Wednesdays 4:30pm - 5:30pm, E2-349A
(please make a 15-min appointment)
Ana McTaggart TA Mondays 3:00pm - 4:30pm, BE 312C
Priyanka Mondal TA Thursdays 10:00am - 11:30am E2-586
Sinjoni Mukhopadhyay TA Tuesdays, 10:00am - 11:30am, E2-586
Devesh TA Fridays 2:00pm - 3:30pm E2-586


Students are evaluated on the basis of homeworks, labs, and a final exam.
Class participation

Involves answering questions in-class via Google Forms.

Optional exercises

Exercises from TFwH will be assigned each week. These are optional but recommended.

Homework assignments

There will be 6 to 7 programming assignments, primarily in Haskell. You may work on these assignments individually or in groups of at most two, but all work must be submitted individually.

Register your group here

Midterm exam

Will be held on Tuesday, May 7 during the lecture. Closed book, but you may use a double-sided “cheat sheet”.

Final exam

Will be held on Thursday June 13, from 12-3pm (location TBD). Closed book, but you may use a double-sided “cheat sheet”.

If your final grade is higher than your midterm grade, it will replace your midterm grade, but you must take both the midterm and the final.

Piazza extra credit

Extra credit for top-20 best participants on Piazza, decided by course staff.

Regrades must be requested, in person, within 2 weeks of receiving graded assignment.

Mandatory Course Requirements

You must receive a passing grade (60% or higher) in the homeworks, the midterm, and the final to pass the class.

For example, doing well on the final but submitting poor (or no) homework solutions will see you fail the class. Failing the midterm but passing the final is ok, as long as the midterm was attempted.

Late submissions

You have a total of four late days that you can use throughout the quarter as you need them, where a late day means anything between 1 second and 23 hours 59 minutes and 59 seconds past a deadline. You should save your late days for when unexpected circumstances arise that prevent you from turning in your homework on time. It is very unlikely that additional extensions beyond these four days will be approved, so use them wisely.

Schedule (subject to change)

# Date Topic/notes Assignments
1 Tue 04/02/19 Course overview and introduction (slides) Paul Graham essay
2 Thu 04/04/19 Lambda calculus (slides) Explore elsa demos
3 Tue 04/09/19 cont'd
4 Thu 04/11/19 cont'd
Fri 04/12/19 HW#0 due
5 Tue 04/16/19 Introduction to Haskell (slides) Ch 1: Ex. A,B,C
6 Thu 04/18/19 cont'd Ch 2: Ex. B,D
Mon 04/22/19 HW#1 due
7 Tue 04/23/19 Datatypes and Recursion (slides) Ch 4: Ex. A,B,D,F
8 Thu 04/25/19 cont'd
Mon 04/29/19 HW#2 due
9 Tue 04/30/19 Higher-order functions (slides) Ch 6
10 Thu 05/02/19 cont'd
Mon 05/06/19 HW#3 due
11 Tue 05/07/19 Midterm (solutions) | UCSD sample midterm (solutions)
12 Thu 05/09/19 Environments and closures (slides)
13 Tue 05/14/19 cont'd / Lexing and parsing (slides)
14 Thu 05/16/19 (cancelled)
15 Tue 05/21/19 Theorems about programs (cont'd from slides)
16 Thu 05/23/19 cont'd
Fri 05/24/19 HW#4 due
17 Tue 05/28/19 Polymorphism and type inference
18 Thu 05/30/19 cont'd
19 Tue 06/04/19 cont'd
19 Tue 06/04/19 Theorems about programs (cont'd from slides)
Wed 06/05/19 HW#5 due
20 Thu 06/06/19 Final review
Thu 06/13/19 Final Exam (12pm - 3pm) | UCSD sample final (solutions)
Based on course materials developed by Nadia Polikarpova and Ranjit Jhala