CS603 Organization of Programming Languages

University of Alabama
Department of Computer Science
Spring 2004

Class: Mo We Fr 9:00 AM - 9:50 AM, 110 East Engineering
Instructor: Joel Jones, 224 Houser, jones@cs.ua.edu
  Office hours: Tuesday and Thursday 3PM - 4:30PM and by appointment
Text: Norman Ramsey and Sam Kamin (with Russ Cox)
  Programming Languages: An Interpreter-Based Approach,
  Draft manuscript, Spring 2004. Required, Appearing Soon!
Exams: Machine Problems (MP) 35%
  Midterm Wednesday March 3, 2004, in class, 30%:
  Final, 35%: 5 May 2004, 8:00 AM to 10:30 AM
Web Page: http://cs.ua.edu/cs603
Call Number: 11902

Course Description

In this course on programming languages, we examine programming languages from a multi-paradigm approach. By this, we mean that we look at languages in the whole, rather than in the parts. We choose languages that exemplify different points in the design space of programming language design. We will write lots of programs in several different programming languages. We will approach each language by first examining it in its essential form, stripped of its particular syntactic expression. Then we will examine its implementation in comparison to other programming languages. Then we will write programs in the syntax and environment of the real language, giving a better feel for the languages role in a broader context.

Course Objectives

The purpose of studying various languages is to make you a better programmer, regardless of the programming language you are using. You will find that knowing multiple languages that follow different paradigms will increase the number of tools in your toolbox of programming techniques. These techniques can be useful even if the language you are using do not directly support the paradigms you learn in this class.

The examination of the interpreters will provide you with the knowledge to implement simple languages in whatever programming language you use. The examination of the interpreters will also provide you with a greater understanding of language implementation.

Course and Class Topics

Date Lecture Topic Reading Assignment Assignment Assignment
      Out Due
7 Janaury Introduction, Impcore      
9 January Impcore, thinking inductively Chapter 1 MP1  
12 January Impcore      
14 January Semantics and Internals     MP1
16 January Impcore Interpreter      
21 January        
23 January        
26 January        
28 January        
30 January        
2 February        
4 February        
6 February        
9 February        
11 February        
13 February        
16 February        
18 February        
20 February        
23 February        
25 February        
27 February        
1 March        
3 March        
5 March        
8 March        
10 March        
12 March        
15 March        
17 March        
19 March        
22 March        
24 March        
26 March        
29 March Break      
31 March Break      
2 April Break      
5 April        
7 April        
9 April        
12 April        
14 April        
16 April        
19 April        
21 April        
23 April        
26 April        
28 April        
30 April        

A more complete schedule will be available soon.


The work for this class will involve machine problems. We require that you not discuss the substance of machine problems with anyone. By substance, we mean to exclude such things as ``What machines are we doing this MP on?'' and ``Has MP3 been passed out yet'' and other questions of similar ilk.

Evaluation and Policies

Class assignments will be annotated with the point count for individual components of the assignment. Late work will be accepted only for two days after the due date, with a 10% penalty per day. This is to facilitate the timely return of graded assignments with answers. Machine problems that do not compile will receive no credit, i.e. 0 points.


I try to make every class worth attending. Students will be responsible for any and all material covered, handed-out, announced, etc. in class unless told otherwise (in class :-) ). Attempts will be made, however, to place important announcements on the class web page. Class will be held on all days as scheduled, unless notified otherwise. For more information, reference the Computer Science Department's guidelines on the pink sheets.

Academic Misconduct

Academic misconduct will not be tolerated. For more information, reference the Computer Science Department's guidelines on the pink sheets. Since this class will involve group work, we will establish specific guidelines for each group assignment and post them at the time of the assignment.

Retention of material

Every attempt will be made to return assignments in a timely fashion. In the case of the final examination, it will be kept. However, you may examine it by arranging a meeting with the instructor during the Summer 2004 or Fall 2004 semester.

About this document ...

CS603 Organization of Programming Languages

This document was generated using the LaTeX2HTML translator Version 2K.1beta (1.61)

Copyright © 1993, 1994, 1995, 1996, Nikos Drakos, Computer Based Learning Unit, University of Leeds.
Copyright © 1997, 1998, 1999, Ross Moore, Mathematics Department, Macquarie University, Sydney.

The command line arguments were:
latex2html -split 0 -nonav syllabus.tex

The translation was initiated by on 2004-01-08