Programming Language Concepts

Axel-Tobias Schreiner, Department of Computer Science, Rochester Institute of Technology.

A study of the syntax and semantics of a diverse set of high-level programming languages. The languages chosen are compared and contrasted in order to demonstrate general principles of programming language design. The course emphasizes the concepts underpinning modern languages rather than the mastery of particular language details. Programming projects will be required.

Lecture notes for a course at the Rochester Institute of Technology, winter quarter 2001.

The text does not constitute a complete transcript of the lectures; additionally you need to consult books and web sites about Lisp and other programming languages.

A CD with this material is available from the author.

Folder Contents
code The programming examples are collected in folders for programs, applications, and applets, with subfolders corresponding more or less to the sections of the lecture notes.
ftp Here are archived copies of the overhead slides and the programming examples, as well as links to the development kits, browsers, and related tools.
html Here are the overhead slides used in class.
pdf The overheads from the html area were converted with Adobe Acrobat 5.0 into the Portable Document Format. This is primarily suitable for printouts and for text searches.

Depending on the computing platform you need special viewers or plugins which have to be installed beforehand.

problems There will be some programming assignments each week, followed by a final exam. Current grade points can be viewed.
reports This is a collection of the reports that the students gave on various programming languages. It also contains Colin Allen and Maneesh Dhagat's Lisp Primer.

Dates, Winter 2001

Lectures Monday, 2:00-3:50 pm room 12-1205
Wednesday, 2:00-3:50 pm 08-3365
Office Hours Monday, 1:00 pm room 10-1188
Tuesday, 10:00 am office (585) 475-4902
Wednesday, 11:00 am home (585) 264-0944
Wednesday, 1:00 pm and by appointment
Graders Dustin Metzgar
Xiaoyun Xie

Calendar, Winter 2001

December 3 Course administration, registration and language report, hints on assignment 1. Timeline.
5 Language feature analysis, e.g., bc: Lexical aspects, bc, data types, bc, literals, bc, variables, bc.
10 jxc1906@cs.rit.edu reports on POV-Ray.
Hints on assignment 2, solution for assignment 1. Language feature analysis for Java: Lexical aspects, data types, literals, variables, subroutines, scope, lifetime.
12 rwr2545@rit.edu reports on Lua [notes] .
acs2313@rit.edu reports on Curl.
Language feature analysis, e.g., bc: subroutines, bc, scope, bc, lifetime, bc.
17 garrett@csh.rit.edu reports on Postscript [notes] .
bjm2315@rit.edu reports on Matlab.
solution for assignment 2.
19 jason@faulring.com reports on Cobol [notes] .
Hints on assignment 3. XML: purpose, data description structure, DTD.
January 7 ads4260@cs.rit.edu reports on SmallTalk.
dms3723@cs.rit.edu reports on Snobol [notes] .
Hints on assignment 4. SmallTalk hints.
9 spc6471@rit.edu reports on Haskell.
zfh7894@rit.edu reports on Perl [notes] .
Solution for assignment 3.
14 jon2401@rit.edu reports on Rexx [notes] .
rtb6765@cs.rit.edu reports on Mozart-Oz [notes] .
Hints on assignment 5.
16 jdm0532@cs.rit.edu reports on Python [notes] .
Solution for assignment 4. Parameter passing concepts: call by name, reference, value.
21 jdm0532@cs.rit.edu reports on Python [notes] .
axk2789@cs.rit.edu reports on SQL [notes] .
Hints on assignment 6.
23 Solution for assignment 5. Grammars, BNF, EBNF, language processing.
28 wis1291@cs.rit.edu reports on Prolog [notes] .
Solution for assignment 6. Hints on assignment 7.
30 fgl4818@rit.edu reports on Ada [notes] .
aat0995@cs.rit.edu reports on Fortran [notes] .
dpl1926@cs.rit.edu reports on Ruby [notes] .
February 4 dpl1926@cs.rit.edu reports on Ruby [notes] .
lfm8184@cs.rit.edu reports on awk [notes] .
Hints on assignment 8.
6 vxm3179@cs.rit.edu reports on Visual Basic [notes] .
ajk5554@cs.rit.edu reports on LEGO RIS.
Solution for assignment 7.
11 cec6781@rit.edu reports on Delphi [notes] .
Hints on the last assignment. Solution for assignment 8. Pure Lisp: gcl, clisp, atoms, lists, functions, predicates, macros, special forms.
13 nrs2811@rit.edu reports on Occam.
sxm4866@cs.rit.edu reports on Bistro [notes] .
Pure Lisp: special forms, trivial programs, scoping example, function pointer example.
18 sxm4866@cs.rit.edu reports on Bistro [notes] .
rds3880@rit.edu reports on Forth [notes] .
filldaddy@hotmail.com reports on Pike [notes] .
20 tdb5818@cs.rit.edu reports on Basic [notes] .
jah4007@cs.rit.edu reports on Tcl/Tk [notes] .
Solution for the last assignment.

Final

The final is closed-book on Saturday 2/23/02, 11:30 - 1:30, in room 01-2000.

Grading Policy

This is an advanced programming course covering several programming languages. The schedule is tight; you will have to dig into documentation and some books as well as do some programming on your own to succeed.

Half of your grade will be based on weekly assignments (mostly programming), the other half on a final exam.

One assignment is a report on a programming language of your choice, delivered verbally in class. Each class meeting two students get 10 minutes each to persuade the class why they would (not) want to use their language. Graduate students can get up to 20 minutes; they must demonstrate at least one working program and provide a web page documenting their efforts.

Each assignment counts the same. The worst score will be ignored, i.e., you can miss one assignment or the language report.

Unless explicitly marked otherwise, each problem on each assignment as well as each problem on the final exam counts the same. A convenient number of points is used for grading each problem, but these points will be scaled for the total. For undergraduates, the language report is graded on a pass/fail basis only and counts either as much as a scaled assignment or not at all. For graduate students, the language report is graded on high/pass/fail basis; a high increases the course total by one letter grade.

Assignments and solutions are posted as indicated above. Each assignment must be turned in before the due date as a ZIP archive of plain text files using the form on the web page of the assignment. The archive must contain a read-me file describing the contents and explaining how the programs should be compiled and run. Don't turn in submissions late (no excuses), and don't copy from others. Cheating would count zero and would not be dropped.

Incomprehensible code will be considered wrong -- this is not a first programming course. If you have complaints e-mail the grader; if it is still necessary see the instructor.