everything.study
COMP SCI 536

INTRODUCTION TO PROGRAMMING LANGUAGES AND COMPILERS

3 credits.

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