Syllabus
CSCI 3675
Organization of Programming Languages
Summer 2000
Instructor: | Karl Abrahamson |
Office: | Austin 233 |
Office hours: | M-F 1:30-2:30 |
Phone: | 328-1879 |
Email: | karl@cs.ecu.edu |
Text: | Programming Languages: Concepts and
Constructs by R. Sethi |
Additional Text: | Concepts of Programming Languages:
A Unified Approach
(manuscript)
by Karl Abrahamson |
Course web page: | www.cs.ecu.edu/~karl/3675/sum00/ |
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 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 approximately nine fairly small programming
assignments and possibly some homework exercises (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.
Course outline
Here is a approximate outline of the course.
- (Tu May 16) Introduction to programming languages. How programming
languages are implemented.
Assignment 1 available.
- (We May 17) Specifying Syntax.
- (Th May 18) Language implementations. Data and data representation.
- (Fr May 19) Names and name binding. Scope.
Quiz.
- (Mo May 22) Equational programming.
Assignment 1 due.
Assignment 2 available.
- (Tu May 23) Functional programming.
- (We May 24) More functional programming.
Assignment 3 available.
- (Th May 25) Scheme.
Assignment 2 due.
- (Fr May 26) Procedural programming.
Assignment 4 available.
Quiz.
- (Mo May 29) Semantics of procedural programming.
- (Tu May 30) Reasoning about procedural programs.
Assignment 3 due.
- (We May 31) Language implementation issues.
Assignment 5 available.
- (Th June 1) Types and type checking.
Assignment 4 due.
- (Fr June 2) Working with data types.
Quiz.
- (Mo June 5) Polymorphism. Generics.
- (Tu June 6) Object-based programming. Classes.
Assignment 5 due.
Assignment 6 available.
- (We June 7) Object-oriented programming.
- (Th June 8) Run-time typing and virtual functions.
Assignment 7 available.
- (Fr June 9) Java.
Assignment 6 due.
Quiz.
- (Mo June 12) More Java.
Assignment 8 available.
- (Tu June 13) Dealing with failure. Exceptions. Backtracking.
Assignment 7 due.
- (We June 14) Logic programming.
Assignment 9 available.
- (Th June 15) More logic programming. Prolog
Assignment 8 due.
- (Fr June 16) More Prolog.
Quiz.
- (Mo June 19) Open.
Assignment 9 due.
- (Tu June 20) Final exam.