CS 333: Syllabus

Syllabus for Spring 2008

Topics and Reading Assignments

Textbooks

Kenneth C. Louden,Programming Languages: Principles and Practice, Second Ed., Brooks/Cole-Thomson, 2003, ISBN 0-534-95341-7.
online book content

Grading

Assignments/Homework 60%
Class Participation 5%
Midterm Exam 15%
Final Exam 20%

Attendance

You are expected to attend and actively participate in all lectures. You will benefit from what is presented and discussed in lecture and I and your classmates will enjoy the pleasure of your company and benefit from your insights. Advance notice of a scheduled absence is appreciated but not necessary. Please don’t skip class to work on homework or a project for this or another class.

Assignment & Homework Submission

There will be both written homework and programming assignments. Written homework may be either handwritten (provided it is organized and relatively legible) or typed (preferred) using LaTEX or other type setting/word processing software and is due at the start of class on the specified date. Homework submitted later than 10 minutes after the start of class will be considered late. Programming assignments will be submitted electronically (exact method to be determined) and are due by 11:59 p.m. on the specified date unless otherwise indicated. Late assignments/homework are graded at my discretion, so start thinking about the assignment early and budget your time accordingly. If I decide to grade late work, up to twenty percent may be deducted for each day late. Exceptions will be made for what I consider to be extraordinary situations (death, serious illness, etc.).

Collaboration Policy

I strongly encourage you to collaborate with each other to learn the material we cover in the course. For written homework, you may freely discuss with each other what the problems are asking and how to solve them. However, you are each required to submit your own written solution prepared without assistance from your collaborators. You should clearly acknowledge your collaborators as well as any external resources you utilize. For programming assignments, less collaboration will be permitted. You may still discuss what the problems are asking and general approaches to solving them, but you should not collaborate on developing specific solutions nor should you share your solutions with one another. The intent of the policy should become clearer after an assignment or two. At any time if you have any questions about this policy please do not hesitate to ask me.

Weekly Topics and Readings (tentative and subject to change)

WeekDateTopicsReading
1:
2/7
  • Introduction, course concept, background
Chapter 1
2: 2/12
2/14
  • Programming Language historical overview
  • Language design principles
Chapters 2-3
3: 2/19
2/21
  • Functional Programming: Programs as functions
  • Scheme
Chapters 11.1-11.3
4: 2/26
2/28
  • Scheme
  • ML: functional programming w/ static typing
Chapters 11.4
Chapters 6.6-6.9 (type checking)
5: 3/4
3/6
  • ML data structure, higher-order functions, and Currying
  • Delayed evaluation; Haskell
Chapters 11.4-11.5, 6.6-6.9
Chapter 11.6
6: 3/11
3/13
  • Haskell
  • Intro. to Logic Programming
Chapter 11.6
Chapters 12.1-12.3
7: 3/18
3/20
  • Prolog
  • Prolog; Logic programming issues
Chapters 12.3-12.4
Chapters 12.5-12.6
8: 3/25
3/27
  • Spring Break
  • no classes
9: 4/1
4/3
  • OOP intro.; Inheritance
  • ** MIDTERM EXAM **
Chapters 10.1-10.3
10: 4/8
4/10
  • Exams back; Inheritance
  • Dynamic binding; C++
Chapters 10.3-10.4
Chapters 10.5-10.6
11: 4/15
4/17
  • C++; OOL design and implementation issues
  • Syntax, formal semantics
Chapters 10.7-10.8
Chapters 4.1-4-5
12: 4/22
4/24
  • Operational Semantics
  • Denotational Semantics
Chapter 13.1
Chapters 13.2-13.4
13: 4/29
5/1
  • Parallel Programming intro.
  • PP intro., threads
Chapters 14.1-14.2
14.3-14.4
14: 5/6

5/8
Chapters 14.4-14.5
Chapters 14.6-14.7
15: 5/15
  • ** 12:30 pm - Final Exam (Keyes 103) **