Principles of Programming Languages
CSCI 3155, Spring 2002
Table of contents
Instructor: Amer Diwan (diwan%40cs.colorado.edu)
Office: ECOT 743
Office hours: TuTh 2:00 to 3:30 and by appointment
Class times: TuTh 9:30 to 10:45
Class location: ECCR 1B40
Class web page: www.cs.colorado.edu/~diwan/3155-02
TAs: Susan Hendrix
and Han Lee
TA office hours in CSEL: Sue (MWF 9:00-10:00, M
3:00), Han (MF 1:00-3:30)
Recitations: See University schedule for times and locations
This course will cover important concepts behind modern programming languages
such as Java and ML. After taking this course, you will be able to:
-
Understand better the strengths and limitations of languages you use already;
-
Teach yourself new languages with relative ease;
-
Evaluate the suitability of a language for a given task.
The main text for this course is
Programming
Language Concepts 3rd Edition by Carlo Ghezzi. You may find Programming Language
Pragmatics by Michael Scott to be a useful reference.
There will be weekly assignments and several of the assignments will involve
programming. All assignments will be due at 9:30 a.m. on Tuesday (i.e.,
immediately before class) unless the assignment specifies otherwise. No
extensions will be granted except in the case of emergency, in which case the
student must provide appropriate documentation.
There will be two in-class midterm exams. All exams are closed-book.
Students
are responsible for the material covered in the readings, the material covered
in the assignments, and the material covered in the lectures. To get the
most out of lectures, I strongly recommend that you do the reading for the class
before coming to the lecture.
For non-code parts of an assignment/exam, we will consider the following:
- How well your submission answers the questions. For example, a
common mistake is to give an example when a question asks for an
explanation. An example may be useful in your explanation but it
should not take the place of the explanation.
- How clear is your submission? If we cannot understand what you are
trying to say then we cannot give you points for it. Try reading your
answer aloud to yourself: that is often a great way to identify holes in
your reasoning.
For code parts of an assignment/exam, we will consider the following:
- Does your code correctly handle our test cases?
- The quality of your code (documentation, structuring etc.). This is
particularly important if your code fails on some of our test cases: if your
code is clean, well structured and documented, then we will be able to give
you partial credit.
All your grades will be available electronically. Watch this space for
instructions on how to get your grades.
We strongly encourage you to work together in learning the material. For
example, when starting on an assignment, it is perfectly reasonable and
encouraged to sit down with other students and discuss the assignment and help
each other understand the material needed for the assignment. You should,
however, write up (or code up) the assignment separately. In your
submission you should clearly indicate which students helped you in the
assignment and on what questions. Similarly, if you include any text, code,
or figure from any source in your submitted work you should cite the original
source at the point of the quotation..
Most students should already be signed up for the class mailing list.
If you registered late, please fill out this form.
To avoid duplicate messages, please make sure you are not already on the
list. Feel free to post any relevant question/opinions to this mailing list by sending
mail to: 3155disc@cs.colorado.edu.
I often post important and time-critical announcements to this list so please
make sure you get on it as soon as possible. You can get to the archives
of this mailing list by clicking on the "archives" link on
http://www.cs.colorado.edu/mailman/listinfo/3155disc
The following table gives the topics we will cover in the class and the
approximate number of lectures to be spent on each topic. The "Reading"
column lists the reading material for the class. You should do the reading
for a class before attending the class.
| Date |
Topic |
Reading |
| 1/15 |
What are programming languages and why should we study them? |
Chapter 1 except 1.6 |
| 1/17 |
Syntax and semantics |
Sections 2.1, 2.2 (skip denotational semantics disc. on pages 44 and 45) |
| 1/22 |
Assignment 1 due |
|
| 1/22 |
Variables and scopes |
Section 2.3 |
| 1/25 |
Routines and parameters |
Sections 2.4 and 2.5 |
| 1/29 |
Assignment 2 due |
|
| 1/29 |
Stack memory management |
Sections 2.6 and 2.7 (upto and including 2.7.3) |
| 1/31 |
Block structure |
2.7.4, 2.7.5, 2.7.6 |
| 2/5 |
Programming assignment 1 due |
|
| 2/5 |
Parameter passing mechanisms |
2.7.7 |
| 2/9 |
Types and type constructors |
3.1, 3.2, 3.3 (excluding 3.3.2) |
| 2/12 |
Assignment 3 due |
|
| 2/12 |
Type systems |
3.4, 3.5 |
| 2/12 |
Optional assignment |
|
| 2/19 |
Midterm 1 |
Cumulative |
| 2/21 |
Implementation models |
3.6 |
| 2/26 |
Control structures |
Chapter 4 up to and including 4.3 |
| 2/26 |
Prog. assign 2 stage 1 |
|
| 2/28 |
Exception handling |
4.4 (except 4.4.1, and sidebar "Exception handling in CLU") |
| 3/5 |
Pattern matching |
4.5 |
| 3/5 |
Assignment 4 due |
|
| 3/5 |
Prog. assign 2 stage 2 |
|
| 3/7 |
Programming in the large |
5.1, 5.2, 5.3 (except 5.3.4) |
| 3/12 |
Generics |
5.4 |
| 3/12 |
Prog. assign 2 stage 3 |
|
| 3/14 |
O-O programming languages |
6.1 |
| 3/19 |
More O-O programming languages |
6.2 |
| 3/19 |
Assignment 5 due |
|
| 3/21 |
More O-O programming languages |
|
| 4/02 |
Prog. assign 3
stage 1 due |
|
| 4/02 |
Inheritance and interfaces |
6.3.5 (except 6.3.5.6) |
| 4/04 |
Midterm 2 |
Cumulative |
| 4/09 |
Smalltalk |
6.3.4 |
| 4/09 |
Prog. assign 3
stage 2 due |
|
| 4/11 |
Functional languages |
7 (up to and including 7.2) |
| 4/16 |
Prog. assign 3
stage 3 due |
|
| 4/16 |
Functional languages continued |
7.3 |
| 4/18 |
Functional languages continued |
7.3 |
| 4/23 |
SML |
7.4.3 |
| 4/23 |
Prog. assign 4, stage 1 due |
|
| 4/30 |
Prog. assign 4, stage 2 due |
|
| 4/30 |
Insights into language design |
"How the language got its spots" (handout) |
| 4/02 |
Review |
|
All assignments, whether text or code should be submitted
electronically. Following are directions for submitting text
assignments. The instructions for programming assignments will be provided
with the assignments themselves.
- Click here
to access the submission page.
- Log in using your login name (this is the same one you use to log in to CU
machines) and password (the password is initialized to the last 5 digits of
your student ID). Use csci3155 as the course. All students that
were registered by 10th Jan are already in the system. If you
registered after that, please send mail to the instructor or TA with your
information (student id, email, first name, last name).
- Click on the assignment you want to work on in "Pick the assignment
you want to work on". If it is an old assignment and you want to
see your grade, click on that assignment in the "Pick an assignment to
view feedback".
- Click on "fill out form" (this is to be used for all text
assignments. "write code" is for coding assignments).
- On this page you will have a text window for each question. For each
question, we identify it by giving the first line of the question. You
will need to look at the assignment description to see the full
question.
- Paste your solution in text format to each question and click on
"submit". Note that you can also type your solution directly
into the forms rather than pasting it in. However, the advantage of
the pasting is that you will have another copy of your solution on your
local machine in case there is a web or network problem.
Some useful things to know about online submission
- The submission system will time out your session if you have been idle for
one hour. "idle" means that you have not clicked on any link
or button (NOTE: typing does not change your idle status as far as the
system is concerned). This may be a particular issue if you are typing
your assignment directly on the form: if you have typed up your assignment
but haven't clicked submit or any other button/link for an hour, you may
lose your assignment!
- Every time you click on "submit" it saves a copy of your
solutions. You can click it as many times as you want. Your
assignment isn't really "submitted" until the assignment due time
passes.
- The system will stop accepting your assignment as soon as the due time
passes.
Course page for Spring 2001 (You
may find the assignments and exams particularly useful)
C++ language definition
Modula-3
language definition
Using opaque types for Modula-3 I/O library
Java
language definition
Full SML tutorial
Ada reference manual
Eiffel
C#
language definition