Languages and Compilers Spring 2017
Programming languages allow us to express our intentions to computers and to each other. This course teaches you how to analyze programming languages, focusing on semantics, the meaning of programs in languages. To understand the semantics of a programming language, we take an engineering approach, building interpreters and compilers for the language. We use this approach to understand a variety of constructs in functional and object-oriented languages and to understand how these constructs interact with each other in real-world languages.
|Lectures||Mon 8:30–10:15, Wed 10:30–12:15 in Room SI-007|
|Programming languages references||
L&C on Moodle
|Grading||30% Homeworks, 30% Quizzes, 40% Final exam|
Nate Nystrom instructor
Luis Mastrangelo teaching assistant
|Office||Via Balestra 20 (3rd floor)|
Schedule Subject to change
GradingYou will be graded on programming assignments, quizzes, and a final exam. There will be approximately one assignment per week. Assignments will consist of programming exercises in Haskell and a several small compiler implementation projects. There will be approximately one 15-minute quiz per week.
Assignments will include both written and programming assignments. You are encouraged to work on the programming assignments with your classmates. The contributions of each student must be explicitly described. All students are responsible for understanding the assignments.
Assignments should be submitted through Github.
Cheating and plagiarism is unacceptable
You are free to discuss assignments and solutions with others. However, you must write your own assignments, and must not represent any portion of others' work as your own. Assignments found to have been plagiarized will be given a grade of -100%.
Collaboration on quizzes and exams is forbidden.