Principles of Programming Languages
CSCI 3155, Spring 2008

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:   Tu 11-12:30, Th 4:30-5:30, and by appointment
Class times:  9:30-10:45 Tue and Thu
Class location:  ECCR 200
Class web pagewww.cs.colorado.edu/~diwan/3155-s08
TA: Danish Ullah Khan (Danish dot Khan at colorado dot edu
TA office hours
:  M 4-5:30, W 11-12:30 (CSEL conf. room (ECCS122))
Recitations: Th 1:00pm-1:50pm (ECCR 1B08), and 2:00pm-2:50pm (ECCR 110) NOTE ROOM CHANGE

Goals

This course will cover important concepts behind modern programming languages such as Java and ML.  After taking this course, you will be able to:


Methods and Tools

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.

The PL-Detective. The PL-Detective is a tool based on our (my collaborators and myself) experience in teaching computer science courses.  The PL-Detective aims to make learning programming language concepts fun while attempting to address many of the goals enumerated above.  Click here to get a paper describing the PL-Detective.  We will use the PL-Detective not just for assignments but also for classroom demonstrations.  Click here to get a link to play with the PL-Detective. 


Texts

The main text for this course is Concepts of Programming Languages by Robert Sebesta (8th ed). 

Course requirements

Assignments 30%
Midterm exams 40%
Final exam 30%

There will be weekly assignments and several of the assignments will involve programming.  All assignments will be due at 9:30 p.m. on Tuesday  (i.e., before class) unless the assignment specifies otherwise.  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 midterm 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.  I will expect you to have read the assigned pages before coming to class.

   


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.  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, or someone outside of your group helped you in doing the assignment, you should thank the source.  Bottom line: feel free to use whatever resources that are available to you as long as you cite them in your submission.


Moodle

We will use moodle for submitting assignments and for any announcements.  Be sure to log into moodle.cs.colorado.edu and sign up for the csci3155-s08 course.


Interesting links

Course page for previous years taught by me: Spring 2001, Spring 2002, Fall 2003, Spring 2004Fall 2004
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
Haskell programming language

Acknowledgements

This web page and course has benefited greatly from the web pages and experience from earlier versions of this class taught by Michael Main, William Waite, Martin Hirzel, and Clayton Lewis