Dan Grossman   Teaching Materials

Programming Languages

I have full course materials, including lecture videos (mp4 files), slides (Powerpoint or pdf), reading notes (pdf, somewhat like a textbook), programming assignments, and sample exams, for a lower-level (but not introductory) course that introduces functional programming and many of the most important topics in programming languages. I consider this material essential for every computer scientist and software developer (in addition to including some pragmatic material on using some particular programming languages). The material is methodical and precise, but it is not formal or foundational in the programming-languages sense.

Course topics include:

The course uses Standard ML for the first half of the course, Racket for two-three weeks, and Ruby for roughly two weeks. It includes occasional contrasts with Java. "What languages do you use?" is far from the most important question to ask about a programming-languages course. The course-motivation materials (which are near the middle of the course so students can appreciate them) discuss language choice.

I have taught this course several times at the University of Washington. For recent offerings, which make the course materials publicly available, see my Autumn 2017 offering though other recent offerings are very similar. The only pre-requisites are two quarters of introductory programming (in Java), though many students have taken several other computer-science courses.

I have also offer the material as a MOOC on Coursera (divided into three parts to make each "course" closer to the typical workload of a MOOC) and thouands of students have completed the MOOC. The MOOC utilizes many of the same materials, but includes automatic grading of programming assignments (test cases and checking for use/non-use of language constructs), peer assessments of programming assignments using provided rubrics and sample solutions, and different exams (containing only multiple choice and check-all-that-apply questions). The MOOC web-page describes recommended background in considerable detail.

Course instructors at academic institutions are welcome to use and adapt my materials. Please contact me for any source materials:

picture of Dan's email address

Last updated: July 2018