• Instructor Profile: Kremer, Ulrich
  • Prerequisite Information:

    01:198:211 or 14:332:331; 01:198:314.

    † This course is available for CS Graduate degree credit.

    - A grade below a "C" in a prerequisite course will not satisfy that prerequisite requirement.

  • Course Links: 01:198:211 - Computer Architecture, 01:198:314 - Principles of Programming Languages
  • Topics:

    Compilers
    Methods of language specification
    Lexical analysis
    Top-down (recursive descent) and bottom-up (LR) parsing methods
    Semantics-driven translation
    Code generation
    Symbol tables and intermediate code forms
    Procedures and run time stacks
    Recursion implementation
    Code Optimization

  • Expected Work: Work will consist primarily of a large programming project, usually the implementation of a working compiler for a simulated abstract machine.  Some additional written homework will be assigned.  Previous knowledge of C or C++  will be useful.
  • Exams: A midterm and a final examination
  • Learning Goals:

    Computer Science majors ...

    • will be prepared to contribute to a rapidly changing field by acquiring a thorough grounding in the core principles and foundations of computer science (e.g., techniques of program design, creation, and testing; key aspects of computer hardware; algorithmic principles).
    • will acquire a deeper understanding on (elective) topics of more specialized interest, and be able to critically review, assess, and communicate current developments in the field.
    • will be prepared for the next step in their careers, for example, by having done a research project (for those headed to graduate school), a programming project (for those going into the software industry), or some sort of business plan (for those going into startups).