Syllabus
CSCI 3675
Organization of Programming Languages
Fall 1999

Instructor:Karl Abrahamson
Office: Austin 233
Office hours: M-F9:35--10:35
Phone: 328-1879
Email: karl@cs.ecu.edu
Text: Programming Languages: Concepts and Constructs by R. Sethi
Additional Text: Concepts of Programming Languages (manuscript) by Karl Abrahamson
Course web page: www.cs.ecu.edu/~karl/3675/fall99/

The manuscript Concepts of Programming Languages will be made available for copying on Monday, August 23 at Kinko's on Tenth street. Lectures will be based on the material in the manuscript. The manuscript is not a completed textbook, and lacks some of the requirements of a textbook, including a list of references and exercises. The text, by R. Sethi, contains additional information, and is a complete text.

Emergency Numbers

The following university web pages and phone number are available for emergency information.
Severe weather
http://www.ecu.edu/oehs/emergency/SEVERE.HTM
University emergency notices (included closings)
http://www.ecu.edu/services/weatherpage.html
Emergency information hotline
252-328-0062

Prerequisites

You should have had a course in data structures and be familiar with at least one procedural programming language, such as C, C++ or Pascal.

Introduction

Programming languages are the notation in which programmers express their creations. It is said that natural language influences how people think. Whether or not that is true, it is certainly the case that programming languages strongly influence how programmers think.

This course explores different kinds of programming languages: their philosophies, structure, advantages and disadvantages. The student should come away with an appreciation for different forms of programming languages, as well as an ability to use different programming styles (regardless of the language used) when the need arises.

Grading

Grading will be on the basis of about nine fairly small programming assignments (40%), five quizzes (35%, counting only the four best quizzes) and a final exam (25%).

Course Outline

Here is a approximate outline of the course.
  1. Introduction to programming languages. Forms of language implementation.
  2. Specifying Syntax.
  3. Data. Memory and memory management.
  4. Names and name binding. Scope.
  5. Equational programming.
  6. Functional programming. Scheme.
  7. Procedural programming. Semantics of procedural programming.
  8. Reasoning about procedural programs.
  9. Language implementation issues.
  10. Types. Polymorphism.
  11. Object-based programming.
  12. Classes and object-oriented programming.
  13. Run-time typing and virtual functions.
  14. Java.
  15. Dealing with failure. Exceptions. Backtracking.
  16. First order logic.
  17. Logic programming. Prolog.
  18. Generics.

Programming Languages

You will write programs in at least four languages, including Astarte, Java, Scheme and Prolog. You are not presumed to know any of those languages. Astarte is an experimental multi-paradigm programming language in which you can make use of several different programming styles in a single framework. A manual for Astarte is available at http://www.cs.ecu.edu/astarte.