BGSU Logo
BGSU Home BGSU Academics BGSU Admissions The Arts BGSU Athletics Libraries Offices
Department of Computer Science
Computer Science Home Undergraduate Program Graduate Program Computer Science Faculty Academic Advising Mission and Vision
Small font Medium font Larger font Largest font
Left Bracket CS 409: Language Design and Implementation Right Bracket

Course Syllabus

  1. Introductory Concepts
    1. The Nature of Systems Software
    2. Types of Language Translation Systems
    3. Language Specification
    4. Backus-Naur Form
    5. Summary of Language Design Concepts
  2. Compilers
    1. Token Representation (Internal Compiler Code)
    2. Lexical Scan
    3. Number Conversion
    4. Name Declaration
    5. Code Generation
    6. Types of Compilers
    7. Table Compression Algorithms
  3. Implementation of Specific Language Features
    1. Arithmetic Expressions
    2. Procedure calls
    3. Parameter passing: by value, by reference, by name, by value/result
    4. Recursion and Reentrancy
    5. Multi-dimensional arrays (including subscript mapping functions)
    6. Control structures (if/then/else, case, while, etc.)
  4. Error Analysis and Debugging Aids
    1. Error Detection
    2. Error Repair
    3. Error Correction strategies (e.g. spelling correction)
    4. Implementation strategies for symbolic debuggers
    5. Code trace and variable trace alternatives
  5. Symbol Table Organization
    1. Hashing, Linear, Binary, Linked Lists
    2. Considerations for block-structured languages and various scope rule conventions
  6. Role of Linker
    1. Linker responsibilities
    2. Special requirements for object-oriented languages (such as name mangling)
  7. Code Optimization
    1. Introduction to data flow analysis
    2. Introduction to program flow analysis
    3. Specific optimization algorithms (both machine-independent and machine-specific)
  8. Differences between Compilers and Interpreters

Course Project

Implementing a compiler for a small programming language.

webmaster@cs.bgsu.edu