Helpful Resources


We have written a style guide to help you write clean, clear, and concise SML. You should follow it closely and feel free to ask for clarifications.

Most of you have taken 15-150 and therefore already know SML. If you do not we encourage to go over this tutorial, and use this book as a reference guide.

An official installation of SML of New Jersey (SML/NJ) can be run from the Andrew Unix servers at They are currently running version 110.76. All of your submissions for the class must compile on the Unix machines, as we will test them using Autolab on a Unix machine using the same version of SML.

This course will make heavy use of SML/NJ's compilation manager, CM. We have a brief document on how to use CM that should be sufficient for this course.


We make heavy use of pseudocode in this class. The pseudocode uses mathematical notation for sequences, sets and tables. Here are some resources:

Examples of the sequence notation, along with their mapping to SML.

A more detailed version, which includes notation for sets and tables.

A LaTeX package file that defines an environment and various commands for easily writing pseudocode. Here is an example of a LaTeX document that uses the package, and the pdf that is generated.


This course will use Piazza (the end is pronounced like Pizza, not Pisa) for online communication among students and staff. Students should post their questions here and they will be answered either by other students or by the staff (you can decide which answers are more reliable). The staff will also post any updates to labs or other announcements here. You are responsible for being current with any information posted by the staff.

You should be getting an invite from Piazza to join, but if you do not, you can find the class page here.


We require that you turn in the written parts of the labs as typeset PDFs. Please use $\LaTeX$ to typeset your solutions, as it is by far the best way to produce clean-looking write-ups. You can find useful information on how to use $\LaTeX$ on the 15-150 resources page.


If you are taking this course without having had 15-150 (e.g. as a graduate student), then you should see the 15-150 resources page for information on using Andrew Unix, or using Text Editors with SML.