22C:54 -- Programming Languages Concepts
Fall 1999
Syllabus
Prerequisites
22C:30 Computer Science III,
22C:34 Discrete Structures,
22C:40 Computer Organization and Hardware
Textbook
K. C. Louden.
Programming languages: Principles and Practice.
PWS-kent Pub.
On-line supplements
-
R. Harper,
Programming in Standard ML
-
D. Turner, Miranda User's Manual and
An overview of Miranda
-
SICSTUS Prolog Manual
-
Mozart/Oz Documentation
Course Objectives
The purpose of this course is to introduce the fundamentals concepts
and methods of the complete spectrum of programming paradigms.
The traditional style of programming languages
(called imperative programming and exemplified by Pascal, C, and so on)
has been augmented during the years by several other substantially different
styles that are enjoying rapidly growing acceptance.
These alternative styles are explored, including their relation to,
and influence on, modern imperative languages.
Students will gain insight into the central ideas of the major paradigms,
be equipped to more easily learn new programming languages,
and obtain a deeper understanding of familiar programming languages.
Three new languages will be presented in considerable detail:
Standard ML, Prolog, and Oz.
Each of these languages is organized around a single conceptual idea
and adheres to it faithfully.
But the fundamental ideas are quite different from the usual imperative
languages,
and will require active involvement to achieve a solid understanding
of each language in the available time.
In particular,
students should use the available computer facilities and resources
to explore and experiment in addition to the programming
assignments.
Additional languages (in particular, Miranda) will be presented as needed.
Homework
Several small written assignments and programming assignments will be given
covering the material from the text and lectures.
All assignments will be collected and graded.
Exams
There will be two midterm exams and a final exam.
All the exams will be open-book and scheduled for a 90 minute period,
if possible.
Grading
The weighting of items in grade determination will be as follows:
30% | Programming/written assignments |
20% | Exam I |
20% | Exam II |
30% | Final Exam |
The following cutoffs will be used to determine letter grades.
In the ranges below, x stands for your total score at the end of the semester.
Final scores near a cutoff will be individually considered for the next
higher grade.
Grade | Score |
A | 85 <= x < 100 |
B | 70 <= x < 85 |
C | 60 <= x < 70 |
D | 50 <= x < 60 |
F | 00 <= x < 50 |
Plus(+) and minus(-) grades will also be given.
Course Policies
Homework:
You are urged to consult sources other than our text,
even if there is no directed outside reading assignment,
including both reserve books and on-line material.
You are also encouraged discuss the course topics with your classmates.
It is a genuinely helpful learning activity having to formulate your own
thoughts about the material well enough to express them to others.
However,
since the homework counts as a significant portion of your grade,
it is expected that the submitted work be strictly your own.
Late submissions:
Written assignments will be submitted in class, before
the class starts.
Late written and programming assignments will be graded according to the
following policy:
-
20% of the actual score will be taken off for assignments
submitted between 0 and 24 hours after the deadline.
-
40% of the actual score will be taken off for assignments
submitted between 24 and 48 hours after the deadline.
-
No assignments will be accepted after that.
Saturdays and Sundays are excluded for the count of late hours.
Cheating:
Copying someone else's work or working on homework together will result
in a 0 on the assignment for the first offense and an F in
the course for the second offense.
Attendance:
Students are expected to attend all classes.
Your knowledge and therefore your grade depends on it.
You are responsible for all announcements and material covered during class.
Extra-credit:
No extra-credit homeworks or tests will be given.
Make-up exams:
Make-up exams will be offered only if there is a serious, documented reason
for not being able to attend the scheduled exam,
and the request is made at least a week before the scheduled exam.
Special needs:
I must hear from anyone who has a disability that may require some
modification of seating, testing, or other class requirements
so that appropriate arrangements can be made.
Please see me after class or during office hours.
Computing Facilities:
We will use the HP workstations in the CS Educational Labs in 301 MLH.
Please see me after class if do not have an CS account yet.
Programming assignments will employ the languages
ML and Miranda (functional),
Prolog (logic),
and
Oz (functional/logic/object-oriented).
Outline:
The topics that will be covered in the course are outlined below.
The outline is tentative and will be adjusted as necessary during the course
of the semester.
No. of lectures | Topic | Readings |
1 | History/survey | Chaps 1,2 of textbook |
6 | Syntax/grammars | Chap 4 of text |
9 | Functional programming |
Chap 10 of text + on-line material +
Paulson (reserve) |
- | Midterm I | (all of the above) |
4 | Data and control structures | Chaps 3,5,6,7 of text |
10 | Logic Programming |
Chap 11 of text + on-line material +
Clocksin and Mellish (reserve) |
- | Midterm II | (all of the above after Midterm I) |
11 | OO prog. + data abstraction |
Chaps 8,9 of text + on-line material |
- | Final Exam (comprehensive) | (all of the above) |
Last Updated: Aug 23, 1999