15-150: Functional Programming, Summer 2024


Here is a summary of all resources at your disposal:

Course Platforms

Canvas and Gradescope

We will use Canvas to distribute various files to you this semester.

Written solutions and code files for both homeworks and labs should be turned in to Gradescope. We will use Gradescope to handle grading and regrade requests.


We use Piazza to answer questions about the assignments, allow for students to discuss course material, and make announcements about the class. You are responsible for keeping up with the information and discussions that are posted there.

You will get an email from Piazza with a link inviting you to create an account within the first week of the term. If you haven't gotten one in that time, please contact course staff.

OH Queue

We use 15150q.fun/ to hold office hours. Join the queue (making sure to put a valid Zoom link in the 'Question' box if you're attending remote OH), as well as a question or general description of what you need help with. Office hours is a great resource for questions about labs, homeworks, or general concepts. The TAs are happy to help!


There is no required textbook for the course. All material we expect you to be familiar with will be covered in sufficient detail in the lectures and lecture notes.

We are in the process of constructing a new reference website, smlhelp.github.io. Here, we will post supplementary notes, guides, tutorials, etc. as they are created. This SML Syntax Cheatsheet might be a particularly useful page, with regards to SML syntax.

You can find documentation for the SML Basis Library here. This includes documentation for your favorite structures, including the List, Integer, and Char structure. Note, however, that a majority of the material is not particularly relevant to this course.

There is also an optional (and free!) text which some students find useful, called Programming In Standard ML (PSML). This book is based on the lecture notes for the predecessor to this course, 15-212. Note that the things discussed in this text are at a level of formality beyond what is expected in this course. Additionally, the material does not line up exactly with how this course is taught.

Course Guides

SML Style Guide

Here is a style guide to help you write clean, clear, and concise SML. You should follow it closely and feel free to ask for clarifications. Remember, failing to pass the style checker deducts a preventable percentage from your homework grade!

Setup Reference

We have created a Setup Reference, which details tasks (e.g. ssh and scp) that you'll need for this semester, as well as other helpful tools (like VSCode and Sublime).

LaTeX Help Sheet

We require that you turn in your written homework assignments as a typeset PDF. LaTeX is one of the best ways to create such a PDF, although you may use whatever method you feel comfortable with.

To aid in your 15-150 LaTeX journey, we have created a 15-150 LaTeX Help Sheet, which shows off many of LaTeX's features that are more relevant to course.

We highly recommend using Overleaf, an online LaTeX editor that allows you to create LaTeX documents without setting anything up. There are also several LaTeX specific IDEs that you may find more comfortable to use, depending on your working environment. This is all covered in further detail in the LaTeX reference above.

Some additional resources you may find helpful are:

Proof Guidelines

Here is a proof guideline document to make it clearer as to what we look for in proofs for this class. Keep in mind that this is just a guideline, meaning that following every point laid out here will not guarantee you a 100% on your proofs, but it should be a nice place to get started.

We also have a shortened version of the proof reference here.

Totality Cheat Sheet

Here is a totality cheat sheet to make it clearer as to how to cite totality in proofs.

We also have a shortened version of the totality cheat sheet here.



Tree-to-SML Converter

Here is a Tree-to-SML Converter to help you to visualize and construct tree test cases. This resource also supports the shrub and rose datatype.

last modified 16:39, 23 Jul 2024