CS 364 Syllabus Spring 2009

Instructor

  • Ed Harcourt
  • Office: Valentine 210
  • Phone: x5444
  • edharcourt@stlawu.edu
  • Office hours: Monday - Thursday 9AM - 10AM. I am often in the office all morning Monday through Thursday. Most afternoons I teach and can be hard to find.

Course Info

CS 364 - Programming Languages

The prerequisite for this course is CS220 or CS319.

Required textbook: Programming Languages: Principles and Paradigms , Second Edition, by Allen Tucker and Robert Noonan. I will refer to this book by the acronym "PLPP".

Required textbook: Structure and Interpretation of Computer Programs Second Edition, by Ableson and Sussman. You do not have to purchase this book; it is freely available online at the link above. I will refer to this book by the acronym "SICP". SICP is a classic computer science text; one of the best. We'll only cover parts of it, but as budding computer scientist that is a treasure-trove I've ideas in this text. I recommend you read it cover-to-cover.

Recommended Scheme Reference: The Scheme Programming Language, is useful as a reference manual for Scheme when trying to figure out the name of a built-in function or language feature.

Required Readings:

Required Software

  • Scheme. Freely available here.
  • Java. I assume you have this already or know how to install it. See me if you need assistance. The keeper of the Java programming language is Sun Microsystems. See java.sun.com. There are several popular IDEs. I use DrJava in CS140. For an industrial strength IDE use Eclipse.

I may also assign a few other readings from papers and web sites.


Grading

Grades are based on a 100 point scale and are derived from the following.

  • Exams (60%)
  • Homework Assignments (40%)

The 100 points above translate to the following GPA points.

Click here to toggle displaying the grade table.

Homework Assignments

There will be regular homework assignments. Most of these are programming assignments but there will also be a few writing assignments based on readings and other problem sets out of the book. All assignments are to be done on your own unless I indicate otherwise. By now you are all mature programmers and I expect your code to be well structured, commented, contain preconditions and postcondintions, etc. We will go over these requirements in class, and if you have any question, I'm happy to look over a project before you turn it in.

Exams

  1. There will be two mid-term exams each worth 20%.
    1. Exam 1: Tuesday February 17
    2. Exam 2: Tuesday March 31
  2. The final exam will be a take home exam worth 20% of your grade and includes a final programming project. The final exam is due Friday May 8 by 5:00PM Note, the scheduled final exam time for this class is Wednesday May 6 at 1:30PM.

Attendance

Attendance is mandatory. You will be allowed two absences during the semester. After that your final grade will be reduced by two points per absence.


Topics

Below is the rough order of topics we will cover in this class.

  1. Overview. Chapter 1 (PLPP). The Hundred Year Language by Paul Graham.
  2. Functional Programming in Scheme. Chapters 1 and 2 in SICP and Section 14.1 and 14.2 in PLPP.
  3. Lexical and Syntactic Analysis. Chapter 2 and 3 (PLPP)
  4. Names. Chapter 4 (PLPP)
  5. Types. Chapter 5 (PLPP)
  6. Semantics. Chapter 7 and 8 (PLPP)
  7. Functions. Chapter 9 and 10 (PLPP)
  8. Memory Management. Chapter 11 (PLPP)
  9. Object Oriented Programming. Chapter 13 (PLPP)
  10. Event Driven Programming. Chapter 16 (PLPP)
  11. Concurrent Programming. Chapter 17 (PLPP)

Academic Integrity

Please read the university's academic integrity policies in your student handbook.