Generated on Tue Oct 25 10:19:18 2022

CS 370: Compilers and Automata Theory (JSON)

Catalog description: Methods, principles, and tools for programming language processor design; basics of formal language theory (finite automata, regular expressions, context-free grammars); development of compiler components.

Prerequisites: At least a C- in C S 271, C S 272, and C S 273    (Catalog Link)

Credits: 4 (3+2P)

Coordinator: Jonathan Cook

Textbook: Compilers: Principles, Techniques, and Tools (2nd Edition), Aho, Lam, Sethi, Ullman. ISBN-10 : 0321486811, ISBN-13 : 9780321486813, Addison Wesley
    (also: course handouts)

BS degree role: required

Course Learning Objectives

  1. Understand the language theory concepts of regular languages, context free languages, regular expressions, context free grammars, and formal language hierarchy
  2. Use Thompson's construction to convert from regular expression to NFA, and subset construction to convert from NFA to DFA
  3. Apply recursive descent parsing in programming a parser of a small grammar
  4. Understand the ideas in LL and LR parsing of context-free language classes
  5. Understand and use table-driven top-down (LL(1)) and bottom up (SLR) parsing to parse a sentence

Course Practicum Requirements

  1. Apply the concepts of scanning, parsing, symbol table management, abstract syntax tree representation, and code generation in the construction of a compiler
  2. Use the C programming language features of dynamic data structures, memory allocation, and multi-file source organization
  3. Usage of tools (lex, yacc, make, gdb, valgrind) to develop a medium size C project

Course Topics

  1. Compiling, running, and linking
  2. Language processing and translation
  3. Features of programming languages (program structure, execution, expressions and operators, data types, procedure calling, and more!)
  4. Formal languages, definition, and classification
  5. Regular expressions, finite automata, conversion, string matching
  6. Context free grammars, parsing algorithms, CFG classes
  7. Architecture and components of compilers
  8. Advanced C programming

Course Improvement Decisions

(Course improvement decisions or recommendations from past assessments)

  1. SP19: require more frequent deadlines for compiler (every week?); have some inclass recursion practice
  2. SP15: make lab with regex; better presentation of automata

ABET Outcome Coverage

(Provide Mapping to ABET Student Outcomes)

  1. TBD

Other Notes

(Any important notes or issues to consider)

  1. none