I'm taking this course in the January of 2007 through a distance learning, masters in computer science program at Walden University.
— Doug Daniels (Dev Journal) 2006/11/23 19:31
The course objectives are:
Understand the central issues and principles governing the design of modern programming languages.
Understand the fundamental differences between the four major programming language paradigms.
Understand the value of operational and denotational semantic specifications of programming language constructs.
Implement a syntax analyzer for any reasonable programming language.
Understand the process of translation of a program in a high-level language to a low-level language.
For the course project I wrote an Abstract Syntax Tree generator for the RPAL language.
Listed below are the various topics that were covered in the course.
(I'm going to try and provide some additional details such as homework assignments and practical code samples for some of them. — Doug Daniels 2006/12/20 22:00
-
-
-
-
-
Generating Abstract Syntax Trees
Introduction to the RPAL language
-
Building AST's for RPAL programs
Name binding and object lifetimes
Scope rules
Binding of reference environments
Functional graphs and evaluation algorithms
Attribute grammars
An attribute grammar for binary numbers
A Tiny language, its syntax, target machine, and attributes
An attribute grammar for Tiny
Extending Tiny
Expression evaluation
Control flow, selection, and iteration
Recursion
Type systems and type checking
Records and arrays
Pointers and recursive types
Stack layout, static links, and displays
Parameter passing
Generics and exceptions
RPAL tree standardization
Lambda expressions and the subst function
Lambda calculus
The RPAL CSE machine
Optimizations of the CSE machine
Recursion
Semantic domains and semantic functions
Denotational semantics of Tiny
The RPAL denotational description of Tiny
Adding new expressions and statements
Adding the for statement in C and Pascal
Expanding Tiny into Medium
C++ as a better C
Object-oriented programming in C++
Logic Programming