Syllabus Statements

Staff and Office Hours

Instructor Teaching Assistants and Graders
12:15–1:15, Wed
9:30–10:30, Fri
ECCS 112

Course Communication

We will use Piazza for announcements and student Q&As. Make sure to sign up and check often! If you have a question, then almost certainly other students do, too.

For individual issues, you can contact the instructor and/or TAs via email. If you do, please say or enter the string "[PFP]" in the subject line to help direct your call.


Grades will be based on programming lab assignments, written exams, and a course project according to the following weights:

  • 15% : Class Participation (in class, on Piazza, etc)
  • 30% : Labs (~5-7) and Course Project
  • 25% : Midterm Exam
  • 30% : Final Exam


Lab assignments will be released approximately every week or two and will be your primary vehicle for digging deeply into the course material.

Late Days

You may not turn in your work late.
(Late assignments recieve zero credit.)

Course Project

The course project will be your opportunity to design and implement something of your choice. You will find more details here, but generally the idea is to work in groups of one or two and build something fun and interesting in Elm that makes use of web programming and data structures in some way. Set your aims high, to contribute an interesting project to the Elm community!

The project will be split into several milestones, culminating in demos at the end of the quarter.


We will have two in-class written exams, each of which will cover roughly half of the course material.

Textbook and Other Resources

The required textbook for the course is Chris Okasaki's Purely Functional Data Structures, which is a time-honored classic. Although we will not cover the book in its entirety this quarter, it will serve as a trusty reference on your bookshelf going forward... assuming you still have a physical bookshelf!

In addition to the textbook, we will use various other electronic references that will be linked to in the lecture notes. Because we will be doing our programming in Elm, the language documentation — including the Elm Guide, Syntax Reference, Core Library Documentation, and Examples pages — will become good friends of yours before long.

Academic Integrity