CMSC 430, Fall 2014

Introduction to Compilers

Home Schedule Piazza Grades Submit Syllabus Resources

Announcements

All announcements will be posted on Piazza.

Staff

Name Office E-mail Office Hours
(also available by appointment)
Jeff Foster 3423 AVW jfoster at cs Mon 1-2pm, Tue 9-11am
Josh Reese 4103 AVW jreese at cs Wed, Thu 1-3pm

Course evaluations are available through Dec 14. Please fill out an evaluation for this and all other courses.

Extra Office Hours: We will hold some extra office hours during finals week:

Information

Today's programming languages give programmers unprecedented power and flexibility, and yet sometimes they are still not enough. There are many occasions when it is possible to encode the solution to a programming problem in an existing language, but at the cost of significant effort, loss of elegance and clarity, and reduced maintainability. In these cases, often the best way to solve a problem is to develop a new language that makes the solution easy to express correctly, succinctly, and maintainably. Examples of such languages range from "little" ones like Make, XML, JSON, YAML, Wiki, bash, Windows .ini files, autoconf, etc., to "big" ones like Perl, Python, Ruby, PHP, JavaScript, R, MATLAB, etc. All of these languages were invented because existing languages just weren't good enough, and in the course of your career, you also may find yourself needing to invent a new programming language!

The goal of CMSC 430 is to arm students with the ability to design, implement, and extend a programming language. Throughout the course, students will design and implement several related languages, and will explore parsing, syntax querying, dataflow analysis, compilation to bytecode, type systems, and language interoperation.

Lecture Location 2107 CSIC (subject to change until the start of the semester)
Lecture Time MW 3:30-4:45pm
Midterm Exam 1 Oct 13, in class
Midterm Exam 2 Nov 19, in class
Final Exam Wed, Dec 17, 1:30-3:30pm, 2107 CSIC
Textbooks There are no required or recommended texts. See the resources page for useful online links.