| instructor: | Jan Vitek |
| assistant: | |
| times: | TTh 4:30-5:45pm |
| room: | BRNG 268 |
Welcome to CS456. This class explores the design and implementation of programming languages. Understanding the fundamental principle underlying modern programming languages is essential to write correct and efficient programs. During this course the following topics are covered:
|
deep understanding of the main concepts of applicative programming as found in languages such as Scheme and ML. experience with Smalltalk, a dynamically typed object-oriented language, and a deeper understanding of Java implementation issues. basic appreciation for logic programming in Prolog. |
Depending on student interest we will pick some advanced topics from the following:
|
how to design and evaluate languages from the viewpoint of security. We will look at vulnerabilities in languages such as C, Perl, C# and Java and potential fixes. NASA plans to have Java running on a Mars Rover by 2009. Purdue is a partnerin this project. We will study technical challenges and motivation behind this choice,/span>as well as introduce the Real-time Specification for Java. Running Java on a peer-to-peer cluster presents many challenges. We will study implementations of distributed virtual machines for applications such as file sharing. |
CS456 assumes basic knowledge of parsing and abstract syntax, as well as some very basic mathematical ideas and notations. We use case studies to give you experience with programming languages that go beyond the basic imperative paradigm. Languages such as Scheme, ML, Smalltalk, CLU and Prolog will be covered. These case studies are reinforced by programming exercises.
Textbook:
Norman Ramsey and Sam Kamin, Programming Languages: An Interpreter-Based Approach.