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
- Understand the language theory concepts of regular languages, context free languages, regular expressions, context free grammars, and formal language hierarchy
- Use Thompson's construction to convert from regular expression to NFA, and subset construction to convert from NFA to DFA
- Apply recursive descent parsing in programming a parser of a small grammar
- Understand the ideas in LL and LR parsing of context-free language classes
- Understand and use table-driven top-down (LL(1)) and bottom up (SLR) parsing to parse a sentence
Course Practicum Requirements
- Apply the concepts of scanning, parsing, symbol table management, abstract syntax tree representation, and code generation in the construction of a compiler
- Use the C programming language features of dynamic data structures, memory allocation, and multi-file source organization
- Usage of tools (lex, yacc, make, gdb, valgrind) to develop a medium size C project
Course Topics
- Compiling, running, and linking
- Language processing and translation
- Features of programming languages (program structure, execution, expressions and operators, data types, procedure calling, and more!)
- Formal languages, definition, and classification
- Regular expressions, finite automata, conversion, string matching
- Context free grammars, parsing algorithms, CFG classes
- Architecture and components of compilers
- Advanced C programming
Course Improvement Decisions
(Course improvement decisions or recommendations from past assessments)
- SP19: require more frequent deadlines for compiler (every week?); have some inclass recursion practice
- SP15: make lab with regex; better presentation of automata
ABET Outcome Coverage
(Provide Mapping to ABET Student Outcomes)
- TBD
Other Notes
(Any important notes or issues to consider)
- none