Syllabus
CSCI 3675
Organization of Programming Languages
Summer 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/sum99/ |
Prerequisites
You should have had a course in data structures and be familiar
with 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.
Summer session
The summer session goes by very quickly. In five weeks, we
will cover what is covered in fifteen weeks during the fall
or spring sessions. There are no breaks, and you will have
to work hard. You should count on working {\it more than
three times as hard\/} as during the regular term, because it
takes more work to learn material faster.
Here are some tips on how to do well in the
summer session.
- Attend class. Arrive on time.
- Do not allow yourself to fall behind. Work on the
homework early. Do not wait until just before the deadline.
- Schedule time to work outside class.
- Read the notes and the book twice. Take a break
in between. You will learn much more this way.
- If you are having trouble, seek help soon. Do not
wait until it is too late.
You should plan on spending at least three hours per day outside
of class on this class. Some days you might need to spend more.
Grading
Grading will be on the basis of nine fairly small programming
assignments (40%), five quizzes (35%, counting only the four best quizzes)
and a final exam (25%). By small programs, I
mean something that can be completed in about four hours.
Your time might vary.
Here is a approximate outline of the course.
- (May 18) Introduction to programming languages. How programming
languages are implemented.
Assignment 1 available.
- (May 19] Specifying Syntax.
- (May 20) Data. Memory and memory management.
- (May 21) Names and name binding. Scope.
Quiz.
- (May 24) Equational programming.
Assignment 1 due.
Assignment 2 available.
- (May 25) Functional programming.
- (May 26) More functional programming.
Assignment 3 available.
- (May 27) Scheme.
Assignment 2 due.
- (May 28) Procedural programming.
Assignment 4 available.
Quiz.
- (May 31) Semantics of procedural programming.
- (June 1) Reasoning about procedural programs.
Assignment 3 due.
- (June 2) Language implementation issues.
- (June 3) Types. Polymorphism.
Assignment 4 due.
Assignment 5 available.
- (June 4) Data types.
Quiz.
- (June 7) Object-based programming. Classes.
- (June 8) Object-oriented programming.
Assignment 5 due.
Assignment 6 available.
- (June 9) Run-time typing and virtual functions.
- (June 10) Java.
Assignment 7 available.
- (June 11) More Java.
Assignment 6 due.
Quiz.
- (June 14) Dealing with failure. Exceptions. Backtracking.
Assignment 8 available.
- (June 15) First order logic.
Assignment 7 due.
- (June 16) Logic programming.
Assignment 9 available.
- (June 17) Prolog.
Assignment 8 due.
- (June 18) Generics.
Quiz.
- (June 21) Concurrency.
Assignment 9 due.
- (June 22) Final exam.