In this course, we will introduce you to what programmers need to know about programming languages.  You will design and implement small languages, called domain-specific languages, which are the glue of the complex software that we write today.  You will also learn about principles and implementation of large, general-purpose languages and about how to exploit modern features of these languages.

For students taking  the course:

Lecture notes: spring'13, spring'12

Piazza, where you can post questions.

Syllabus (topics that we will cover).

Coming attractions (schedule of projects and HWs).

Ideas for final projects.

Description of exams, projects, and grading.

Course policies.

Course information:

Overview of the course its weekly project assignments.

The Final ProjectIn lieu of the written final exam, you will design and implement a small language.

More about the philosophy of the course.

Links to previous incarnations of Hack Your Language!, recommended books, tools, and blogs.