INTRODUCTION TO PROGRAMMING LANGUAGES AND COMPILERS
Introduction to the theory and practice of compiler design. Comparison of features of several programming languages and their implications for implementation techniques. Several programming projects required.
Prerequisites & course information
Requisites: E C E/COMP SCI 354 and (COMP SCI 367 or 400 ) or graduate/professional standing or declared in the Capstone Certificate in Computer Sciences for Professionals Course Designation: Core GenEd - Natural Science & Wellness Breadth - Natural Science Level - Advanced L&S Credit - L&S Liberal Arts and Science Repeatable for Credit: No Last Taught: Fall 2026 Learning Outcomes: 1. Construct and manipulate abstract syntax trees (ASTs) to represent the structure of source programs, applying grammar rules and language constructs. Audience: Undergraduate 2. Compare and contrast interpreters and compilers, focusing on AST passes and execution models. Audience: Undergraduate 3. Design and implement interpreters by traversing and evaluating ASTs for simple and structured programming languages Audience: Undergraduate 4. Develop lexers and parsers that convert textual program input into ASTs, using formal grammar specifications and parsing techniques. Audience: Undergraduate 5. Implement static analyses, such as type checking, by analyzing and annotating ASTs to enforce program correctness rules. Audience: Undergraduate 6. Translate ASTs into low-level code (e.g., x86 assembly), applying principles of code generation and basic optimization. Audience: Undergraduate 7. Analyze how advanced language features, such as classes, objects, and garbage collection, introduce complexity in interpretation and compilation. Audience: Undergraduate Learning Outcomes: 1. Construct and manipulate abstract syntax trees (ASTs) to represent the structure of source programs, applying grammar rules and language constructs. Audience: Undergraduate 2. Compare and contrast interpreters and compilers, focusing on AST passes and execution models. Audience: Undergraduate 3. Design and implement interpreters by traversing and evaluating ASTs for simple and structured programming languages Audience: Undergraduate 4. Develop lexers and parsers that convert textual program input into ASTs, using formal grammar specifications and parsing techniques. Audience: Undergraduate 5. Implement static analyses, such as type checking, by analyzing and annotating ASTs to enforce program correctness rules. Audience: Undergraduate 6. Translate ASTs into low-level code (e.g., x86 assembly), applying principles of code generation and basic optimization. Audience: Undergraduate 7. Analyze how advanced language features, such as classes, objects, and garbage collection, introduce complexity in interpretation and compilation. Audience: Undergraduate
Sources
- Course catalogue ↗2026-2027