Computer Science
Generic Course Syllabus
(For actual course syllabi please consult the schedule of classes, determine the instructor for the courses and consult his or her home page.)


 
Course #: C311 
Course Title: Structure of Programming Languages
Prerequisites: C243, C335
Credits: 4
Text Book: Essentials of Programming Languages, by Friedman, Haynes, & Wand
Supplemental Texts: Handouts
Course Information:  The course is designed to provide students with a high level view of programming languages, how they differ in design and implementation, and why some have failed.  In recent years, Scheme has been the vehicle by which a number of programming concepts have been illustrated.
Other Information: 1.  Compiled languages vs. interpreted languages.  
2.  Scheme and its LISP ancestry.
3.  Meta-languages.
4.  Expression oriented vs. imperative languages.
5.  The essentials of the Scheme language
6.  First class objects;  higher order procedures.
7.  Recursion;  debugging with "begin" and output.
8.  Tail recursion elimination.  Essentially iterative procedures.
9.  Deep recursion.
10.  Program translation phases.
11.  Grammars for syntactic specification;  Backus-Naur.
12.  Scope;  free and bound variable references;  lexical address.
13.  Finite functions.
14.  Interpreters for little languages.
15.  Parsing and parse trees. .  
16.  Mutation.
17.  Dynamic scope.
18.  Parameter passing methods.