On this page:
CMSC430:   Introduction to Compilers
6.12

CMSC430: Introduction to Compilers

Fall, 2018

Compilers is the study of programming language design and implementation.

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.

Staff

Name

E-mail

Office Hours

Location

Nick Petroni

npetroni at cs

Tues, Thurs 11:00am-12:30pm

3423 AVW (inside 3400)

Willem Wyndham

willem at cs

Tues 1:00pm-4:00pm

3400 AVW (MC2)

Weds 10:00am-12:00pm, 2:00pm-4:00pm

3400 AVW (MC2)

Alexander Krebs

akrebs at terpmail

Mon 1:00pm-2:30pm

3400 AVW (MC2)

Information

Location

 

CSI 1122

Time

 

Tues, Thurs: 9:30–10:45am

Midterm 1

 

October 4, in class

Midterm 2

 

November 15, in class

Final Exam

 

Thursday, December 13, 8:00-10:00am, 1122 CSI

Textbooks

 

There no required or recommended texts. See the Resources page for useful links.

Web Accessibility