CSC402 Homepage
Programming Language Implementation
Instructor:
Dr. Lutz
Hamel
For more detailed course information please consult the BrightSpace pages.
Description:
- Have you ever wondered how the syntax highlighter in Eclipse works?
- Have you ever wondered how your favorite programming language is implemented?
- How about Python and JavaScript?
- What is the difference between interpreting a programming language and translating/compiling it?
- What is the difference between an interpreter and a virtual machine?
If any of these questions interest you then CSC402 is for you. We will spend
the semester looking at programming language implementations: from syntax
highlighters to code analyzers, from interpreters and virtual machines to
compilers.
As part of the course we will construct interpreters and translators for domain
specific languages such as calculator languages and command line languages for
steering your favorite game character. The course will also include one large
semester project of a language implementation project of your choosing. This
could be a graphics language, a new programming language (think Rust or Go), a domain
specific language such as PHP or a new command line shell interpreter for
Unix/DOS.
The goal of the course is to give you a solid foundation with respect to
programming language implementation which includes grammar construction, parsing
techniques, intermediate representations, tree construction, tree pattern
matching techniques, among many other topics. The course is designed around a
set of programming language implementation design patterns that shed light on
the overall construction of programming language processors. These tools will
enable you to add domain specific and general programming language
implementations to your tool chest to solve difficult engineering problems.
Final Project Ideas
When I say implementation that could mean: as an interpreter, as a compiler to a virtual machine,
or as a compiler to actual machine code.
-
An implementation of a subset of a game scripting language such as Lua
or Pawn.
-
An implementation of a subset of a programming language other than a C-like language which has been
the topic of our course.
-
Design and implement a language to program cellular automata (CA).
-
Design and implement a language interface to the JMusic
framework.
-
Design and implement an interpreter for a graphics/drawing language, e.g. Logo.
-
Implement an interpreter or compiler for Vintage Basic (Altair Basic).
Documents of Interest: