CSE 131 is an introduction to modern Compiler Design. According to the venerable Wikipedia

A compiler is a computer program (or a set of programs) that transforms source code written in a programming language (the source language) into another computer language (the target language), with the latter often having a binary form known as object code.[1] The most common reason for converting source code is to create an executable program.

In the course of the next ten weeks, we will look at how to convert programs written in a high-level language think ML from CSE 130, all the way down to bare metal, i.e. x86 assembly. While doing so, we will also learn important lessons about Software Engineering and Testing. As an added bonus, CSE 131 will reinforce and tie together concepts learnt in Computer Organization and Programming Languages, in particular showing the connections between assembly (x86), systems (C) and functional (Haskell) programming.

Integrity of Scholarship

University rules on integrity of scholarship will be strictly enforced. By taking this course, you implicitly agree to abide by the UCSD Policy on Integrity of Scholarship described here. In particular,

all academic work will be done by the student to whom it is assigned, without unauthorized aid of any kind.

You are expected to do your own work on all assignments; when specified, you may work in pairs – but will submit the assignments individually. You may (and are encouraged to) engage in general discussions with your classmates regarding the assignments, but specific details of a solution, including the solution itself, must always be your own work.

There will be graded assignments and exam in this course, as described below. All exams are closed book; no tools other than your brain and a writing instrument are to be used.

Incidents which violate the University’s rules on integrity of scholarship will be taken seriously. In addition to receiving a zero (0) on the assignment/exam in question, students may also face other penalties, up to and including, expulsion from the University. Should you have any doubts about the moral and/or ethical implications of an activity regarding the course, please see the instructor.


Your class work might be used for research purposes. For example, we may use anonymized student assignments to design algorithms or build tools to help programmers. Any student who wishes to opt out can contact the instructor or TA to do so after final grades have been issued. This has no impact on your grade in any manner.