Fundamentals of Programming Languages
CSCI 5535, Fall 2007

This page describes the high level goals and format of the course.  Click here for a lecture by lecture syllabus


Administrivia

Instructor: Amer Diwan (diwan at cs dot colorado dot edu)
Office: ECOT 520
Office hours:   M 1-2:30, F 4-5:30, and by appointment
Class times and location:  MWF 3:00 to 3:50 p.m. in DUAN G131
Class web page:  www.cs.colorado.edu/~diwan/5535-07
 


Goals

This course will cover semantic foundations of advanced features found in modern programming languages such as Java, C#, and SML. This course will give students a detailed and in-depth understanding of modern programming languages: motivation behind language designs, strengths and weaknesses of different language designs, and implementation issues.    Studying these issues will give you a greater understanding of 

We will use case studies from a wide variety of languages, including both languages in common use and languages that are research prototypes.  This course will assume that you have already taken CSCI-3155 or equivalent.


The Conversational Classroom

Sitting in a room listening to somebody talk is not the best way to learn (and much research backs this up). This course will de-emphasize listening to me talk and emphasize your learning ideas from resources out of class, and discussing problems and questions in class. We’ll try to make our classroom a place of active conversation, rather than passive listening.  You can find out more about the conversational classroom by reading this article.


Texts

We will be using Kim Bruce's text Foundations of Object-Oriented Languages, recent research papers, and language specifications in this course.  The bookstore has copies of the text.  This page gives errata for the Kim Bruce books; to avoid unnecessary confusion, I recommend that you incorporate these errata in your book before reading it.  The research papers will be available for download on the schedule web page in pdf format. 

The readings for a class are compulsory and I will expect you to read them before you come to class.  


Course requirements

Bi-weekly homework assignments 30%
Midterm exams 40%
Final exam 30%

There will be weekly assignments.  All assignments are due at 3:00 on Fridays.  No late assignments (even by a few minutes) will be accepted unless in the case of emergency, in which case the student must provide appropriate documentation

We will have two midterms and one final exam. 

Students are responsible for the material covered in the readings, the material covered in the assignments, and  the material covered in the classes. 


Grading

We will consider the following criteria in our grading:


Collaboration policy

We strongly encourage you to work together in learning the material.  Most of the assignments will involve group work.  If a student outside your group helps you in your assignment, you should note it in your submission.  We encourage you to talk both to your group members and other students when learning the material or doing the assignments.  If your submission includes quotes from a book, paper, or web site, you should clearly cite the original source at the point of the quotation.  Bottom line: feel free to use whatever resources that are available to you as long as you acknowledge them in your submission.


Moodle

You will use Moodle to submit assignments.  I will also use Moodle's forum to make time-sensitive announcements so please be sure to check it regularly.  You can access moodle at moodle.cs.colorado.edu; if you do not already have an account then please create one.


Resources

You can access slides and other materials from this course in 1999, 2000, 2001, and 2002.  I recommend using the exams and assignments in the previous years to prepare for your exams.

Ada reference manual
C++ language definition
C# language specification
Eiffel
Java language definition
Modula-3 language definition
Full SML tutorial