On this page:
CMSC245:   Principles of Programming Languges

CMSC245: Principles of Programming Languges

Haverford College CS. Fall, 2017

Kristopher Micinski <kris@cs.haverford.edu>
David Wonnacott <davew@cs.haverford.edu>

Have you ever asked yourself: what core principles underly programming languges? How do I make an informed decision about which language to pick? Why are some languages apparently faster than others?

These are the kinds of questions we’re going to get at in this class. Together, we’ll drill into how the computer executes your programs, gradually pulling apart the complexities involved in turning your program from a string of characters to operations performed by your processor.

To do this, we’ll learn languages at three different levels:

The lower-level the language, the more complexity we’ll deal with in terms of having to understand what the computer is doing. And so an auxiliary benefit of this class is that you’ll have to learn more about how computers work. Once we understand what the computer’s doing at a low level, we’ll be able to exploit the complexity that complexity, writing highly efficient code that might be challenging in higher-level languages. Dually, understanding concepts from higher-level languages will teach us how to build better abstractions.

The goal of this course is to teach you both the nuts and bolts of computer languages and to help built intuition about programming paradigms in a broadly construed manner. When you’re done, you still won’t know every language out there. But we hope that you’ll be able to intelligently articulate why you choose to use the tools you used, and have enough intuition to pick up new languages very quickly.



Stokes Hall, Room 4



MWF: 11:30AM-12:30PM

Labs Location


Hilles Hall, Room 110

Lab times


W: 1:30PM-2:30PM (A00C) W: 1:30-2:30PM (A00D)

Note that attendence in lectures is a requirement of the course. Lectures are frequently interactive, and depend on student involvement. Lab attendence is option on weeks where you have completed the assigned lab work.









Kris Micinski






M 1230-1300


W 1700-1730


F 1100-1130


F for ~25min post-class

Dave Wonnacott







Office hours are also available by appointment. You can find Kris’ office hours, and other schedule, at whereskris.com.

(Google maps link to all locations relevant to CMSC245)