CS 440
Language Processors
Summer 2005
Dr. D. Nordstrom
361 Sci. & Tech. II
dnordstr@mason.gmu.edu
(703) 993-1565
Office hours: Tuesday and Thursday 2:00 - 3:30 and by
appointment.
The course website is at
http://cs.gmu.edu/~dnord/cs440
Texts
Aho, Sethi, and Ullman, Compilers: Principles, Techniques, and
Tools, Addison-Wesley, 1986.
and recommended if available: Levine, Mason, and Brown, Lex and
Yacc, 2nd ed., O'Reilly & Associates, 1990.
Description
This is a 3-credit course on programming language translation
concentrating on compilers. Prerequisites are CS 265, CS 310, CS 330
and Math 125. Students should know basic data structures, should have
seen finite automata (finite state machines) and context-free grammars
from CS 330, should be comfortable with assembly language programming,
and should be able to program in Java, C, or C++. Topics include:
- Compiler organization
- Regular expressions and finite automata
- Lexical analysis
- Symbol tables
- Context-free grammars
- LL and LR parsing
- lex and yacc
- Code generation
- Attribute grammars
There will be a significant programming project in which students
write a small interpreter and a compiler. Programming will be done in
Java, C, or C++ and will use the tools lex and yacc or their equivalents.
Grading
In addition to the programming project there will be a midterm and a
final exam. Makeups on exams will not be given except for very good
reason (as judged by me) and only when arranged in advance. The
course grade will be computed from:
- Programming: 35%
- Midterm: 30%
- Final: 35%