COM S 440/540 Spring 2021

Purple_dragon_book_b.jpg     flex_bison.jpeg

ComS 440/540: Principles and Practice of Compiling

The course is an introduction to the theory and practice of building compilers. Throughout the semester, students will build their own compiler for a subset of the C programming language. Specific topics covered in the course include

  1. Lexical analysis
  2. Parsing methods
  3. Code generation
  4. Runtime environment
  5. Tools for constructing compilers

Other topics will be covered as time permits.

ABET learning outcomes

  • An ability to apply knowledge of computing and mathematics appropriate to the discipline.
  • An ability to design, implement, and evaluate a computer-based system, process, component or program to meet desired needs.
  • An ability to communicate effectively with a range of audiences.
  • An ability to engage in continuing professional development.
  • An ability to use current techniques, skills, and tools necessary for computing practices.
  • An ability to apply mathematical foundations, algorithmic principles, and computer science theory in the modeling and design of computer-based systems that demonstrate comprehension of the tradeoffs in design choices.
  • An ability to apply design and development principles in the construction of software systems of varying complexity.

Course prerequisites:

Ideally, students have already seen regular expressions and grammars, as would be covered in a theory of computation course or a programming languages course. These topics will be covered again in this course.

Programming experience is probably the most critical prerequisite. Students are expected to be strong C or C++ programmers, as the semester-long project to build a compiler will likely require a few thousand lines of code in total. Projects must be implemented in C or C++, must use make as the build system (or something similar, with instructor approval), and must be submitted as a private git repository. This is discussed in more detail under course work.

Format: synchronous/zoom

Lectures will be broadcast live over zoom during the scheduled class time, recorded, and posted in Canvas. This will be done from our designated classroom if face-to-face meetings are possible and desired by students.

Getting started

Start with the the Orientation: Begin Here module.

Course Summary:

Date Details Due
CC Attribution Non-Commercial No Derivatives This course content is offered under a CC Attribution Non-Commercial No Derivatives license. Content in this course can be considered under this license unless otherwise noted.