CS5363 Programming Languages and Compilers, Spring 2026
Course Objectives and Schedule

Course Objectives

  1. Understand the definition and construction of formal languages.
  2. Understand the design of compilers.
  3. Learn the optimizations employed by compilers.
  4. Write a compiler.

Syllabus

The following syllabus gives you a rough idea of the time spent on each topic. The syllabus may change depending on how quickly or slowly we move. Regardless, the tests and exams will be on the dates shown. Make any travel plans accordingly.

Week Topics Assignments & Exams Supplement Materials
Week 1: 01/19 Introduction;

Week 2: 01/26 Formal Languages: Basics

Formal Languages: Automation;

Week 3: 02/02 Lexical Analysis;

Project Step 1 post;
Week 4: 02/09 Context Free Languages;

Assignment 1 Post
Week 5: 02/16 Parsing: Recursive Descendent Parsing;

Parsing: LL(1)
Project Step 1 due;

Project Step 2 post;
Week 6: 02/23 Parsing: LL(1)

Parsing: LR
Assignment 1 Due;
Week 7: 03/02 Parsing Abstract Syntax Tree;

Assignment 2 Post;
Week 8: 03/09 Spring break; No class

Week 9: 03/16 Parsing Abstract Syntax Tree;

Typ System and Type Checking
Project Step 2 due;

Project Step 3-4 post;

Midterm Exam on 03/18;
Week 10: 03/23 Code Generation: Tree Walking;

Week 11: 03/30 Code Generation: Tree Walking;

Code Generation: Instruction Set
Project Step 3 due;
Week 12: 04/06 Code Generation: Instruction Set;

Code Generation: Register Allocation
Assignment 2 Due
Week 13: 04/13 Code Optimization: Data Flow Analysis;

Code Optimization: Loops
Week 14: 04/20 Static Register Allocation;

Code Optimization: Memory and cache
Project Step 4 Due;

Project Step 5 Post;
Week 15: 04/27 Code Optimization: Memory and cache

Functional Langugages
Week 16: 05/04 Functional Langugages;

Final Review
Project, Step 5 due;
Final Exam Final Exam: Monday, May 04, 06:00pm - 07:15pm