COM S 440/540 Spring 2021
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
- Lexical analysis
- Parsing methods
- Code generation
- Runtime environment
- 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 |
---|---|---|