14 Credits

We tiptoe on the broad shoulders of giants.

This course draws liberally from How to Design Programs (Felleisen, et al.). We’re also especially fond of Structure and Interpretation of Computer Programs (Abelson and Sussman with Sussman), Data Structures and Network Algorithms (Tarjan), and Introduction to Algorithms (Manber). We’ve also drawn on work by Chris Okasaki, Ralf Hinze, Guy Steele, and Manuel Blum. You should read these works and authors in the original.

Special thanks to the following people with whom we have had enlightening conversations, who have suggested some of the material for and exercises in this course, or who have helped us perform the preparatory work for it: Jeff Stix, Danny Yoo, Kathi Fisler, Matthias Felleisen, Prabhakar Ragde, John F. Hughes, Chris King, Guillaume Marceau, Chris Okasaki, Brendan Hickey, Philip Klein, Steve Reiss, and Amy Greenwald.

Very special thanks to the staff of cs019 from its first offering in its current form (Fall 2009): Ethan Cecchetti, Jake Eakle, Alvin Kerber, Alex Kruckman, and Jon Sailor. They invested an enormous effort to get this course off the ground, constructing it from scratch. The course wouldn’t exist without their help. Thanks, similarly, to the staff from the second offering (Fall 2010): Kshitij Lauria, Aimee Lucido, Dan Kimmel, Jonah Kagan, Jordan Place, Nathaniel Ford, and Varun Singh. From the third offering (Fall 2011): Jonah Kagan, Aimee Lucido, Andrew Kovacs, Evan Li, Jeanette Miranda, John Connuck, and Kshitij Lauria. From the fourth offering (Fall 2012): Aimee Lucido, Andy Chen, Jason Fedor, Vishesh Jain, Andrew Kovacs, Roie Levin, Jincheng Li, and Jeanette Miranda. From the fifth offering (Fall 2013): Andrew Kovacs, Graham Carling, Frank Goodman, Michael Lazos, Kenneth Lin, Gabriel Lyons, Kenneth Micklas, Michael Scheer, and Daniel Zee. From the sixth offering (Fall 2014): Kenneth Lin, Frank Goodman, Sara Hartse, Jemma Issroff, David Liu, Kevin Paeth, and Abdullah Yousufi. From the seventh offering (Fall 2015): Sara Hartse, Jemma Issroff, Samuel Kortchmar, Vincent Kubala, Sorawee Porncharoenwase (Oak), Clayton Sanford, Laura Shea. From the eighth offering (Fall 2016): Vincent Kubala, Joe Romano, Leslie Bresnahan, Gregory Carlin, Brandon Chen, Tracy Chin, Ebube Chuba, Francesco D’Amato, Benjamin Murphy, Alex St. Laurent, Emma Sloan, Sumit Sohani, and Samuel Waxman. From the ninth offering (Fall 2017): Leslie Bresnahan, Sumit Sohani, Brandon Chen, Noah Fang, Kevin Jin, Jack Kates, Jacob Leiken, Raghu Nimmagadda, Joshua Pattiz, Mina Rhee, Justin Zhang, and Solomon Zitter.

We have also borrowed material, especially labs, from Brown cs17 courses in past years. We thank them for these materials.