Overview of CS 330 Programming Languages 

George Tzanetakis

gtzan@cs.uvic.ca


Course Outline
Webboard (CSC330Spring2004 not CSC330)
Anonymous comment submission form
Online Submission system
Instructions for running/installing sml

Office hours: TW 10:00-11:00 (send email if you want to meet another time)

  1. Bird's eye view of the course (Jan 6,7,9)  
    1. Introduction & History                   (Louden ch. 1,2,3) 
    2. First stab at syntax & semantics     (Louden ch. 4) 
    3. More semantics & Introduction to functional programming (Louden ch. 5,11)
  2. Programming in SML I  (Jan 13,14,16)
    1. Why SML ? Basic values and operators  (Notes) 
    2. Tuples and Records                                 (Notes)
    3. Lists                                                         (Notes)
  3. Programming in SML II   (Jan 20,21,23)
    1. DataTypes, Tagged values, partial functions     (Notes)
    2. Finite trees and abstract datatypes             (Notes)
    3. Higher-order functions                              (Notes)
  4. Programming in SML III   (Jan 27, 28, 30)
    1. Modules I  Signatures and Structures         (Notes)
    2. Modules II Functors 
    3. Input/Output, Interactive programs            (Notes)
  5. Other functional languages and revision  (Feb 3,4,6)
    1. Iteration and imperative features of SML  (Notes)
    2. Lazy evaluation and infinite lists in SML (Louden chapter 11 + notes)
    3. Haskell   (Notes)
  6. Putting it all together (Feb  10,11,13,17) 
    1. Revision for the midterm + scheme
    2. Revision for the midterm
    3. Revision for the midterm + assignment II discussion
    4. Midterm  (15% only functional programming weeks 1-6, Open book)   (February 17)
  7. Imperative programming (Feb 24, 25, 27)
    1. Assignment III - Scanning and Parsing in SML  (Notes)
    1. C                                                                  (Notes)
    2. Symbol table                                  (Louden Chapter 5 - Notes)
  8. More on imperative programming (March 2,3,5)
    1. C pointers + dynamic memory allocation
    2. DataTypes (Louden Chapter 6,9)
    3. Control + Procedures and Environments (Louden Chapter 7,8)
  9. Object-oriented programming (March 9,10,12)
    1. Intro to Object-oriented programming, Smalltalk             (Louden Chapter 10
    2. C++                                                             (notes)
    3. More C++                                                    (notes)
  10. Object-oriented prorgamming                                 (March 16, 17,19) 
    1. Constructors, destructors, class hierachies and smart pointers          
    2. Standard Template Library and Streams              (notes)
    3. Lambda calculus                                      (notes + Louden chapter 11)
  11.  Other paradigms (March 23,24,26)
    1. More Lambda Calculus  + Prolog
    2. Prolog                                     (Louden chapter 12) 
    3. Scripting Languages Python    (notes)                     
  12.  Misc  (March 30,31, April 2) 
    1. Review of object-oriented 
    2. Review + morphing programming languages
    3. Wrapping up + discussion + final exam preparation