Course Syllabus

Please save/download a copy of the Course Syllabus: NEW_QC_ADA_Syllabus_Spring 2025 .docx

The syllabus is an essential tool for learning about the course and instructor, course goals/expectations, required readings and instructional materials, assignment and activity due dates, and other important information. Read it thoroughly. If you have questions regarding the syllabus, please contact your instructor.

Link to the textbook

Week Module Module Outcomes Readings
1 Language Processors Define compiler, interpreter, assembler, linker, symbol table
Compare and contrast compiler/interpreter
List phases of a compiler
Describe the purpose of the symbol table
Describe characteristics of code optimization
Pages 1-14
2 The Evolution of Programming Languages Distinquish between types of programming languages
Describe the evolution of programming languages by listing the attributes of each
generation.
Compare and contrast static scope versus dynamic scope
Relate compiler goals with respect to computer architecture
Pages 15-38
3 Syntax Definition and Parsing Specify a context free grammar using Backus-Naur Form
Derive language strings given a grammar and an input string
Identify ambiguity within a given grammar
Identify left and right recursion in a grammar
Pages 39-75
4 Introduction to Syntax Directed Translation  Describe the operation of syntax directed translation
Create a simple lexical analyzer
Compare and contrast syntactic versus type checking and describe the role that the symbol table plays.
Pages 76-108
5 Lexical Analysis Use regular expressions for lexical analysis
Define the term regular definition
Use the Lexical Analyzer Generator Lex to create a scanner.
Pages 109-146
6 Finite Automata and Optimization Describe the characteristics and operation of finite automata
Distinguish between NFA and DFA 
Pages 147-190
7 Grammars Define the term Context Free Grammar
Parse a given string using left-most and right-most derivations
Eliminate ambiguity and or left recursion in a grammar
Pages 191-216
8 Parsing Distinquish between top down and bottom up parsing
Categorize LR and other types of grammars
Pages 217-302
9 Syntax-Directed Definitions Define the term Syntax Directed Definition
Describe the use of a dependancy graph during parsing
Pages 303-323
10 Syntax-Directed Translations Implement a  recursive descent parser Pages 324-356
11 Translation of Expressions and Type Checking Describe the use of Three Address Code within a compiler
Create a directed acyclic graph to represent an expression
Distinguish type checking using sythesis versus type checking using inference
Pages 357-397
12 Control Flow Evaluate code behavior in the presence of short-circuit code
Translate Boolean expressions into flow of control statements
Pages 398-426
13 Storage Organization of  the run-time environment List considerations for code optimization based on knowledge of the memory hierarchy.
Describe the typical sub-division of runtime memory
Pages 427-463
14 Design for Garbage Collection Define garbage collection
Evaluate methods for garbage collection
Pages 463-504

Course Summary:

Course Summary
Date Details Due