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.
- Introduction to programming languages.
Forms of language implementation.
- Specifying Syntax.
- Data. Memory and memory management.
- Names and name binding. Scope.
- Equational programming.
- Functional programming. Scheme.
- Procedural programming. Semantics of procedural programming.
- Reasoning about procedural programs.
- Language implementation issues.
- Types. Polymorphism.
- Object-based programming.
- Classes and object-oriented programming.
- Run-time typing and virtual functions.
- Java.
- Dealing with failure. Exceptions. Backtracking.
- First order logic.
- Logic programming. Prolog.
- 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.