###### # # Course Title: Concepts of Programming Languages # Course Number: BU CAS CS 320 # # Semester: Summer I, 2009 # # Instructor: Hongwei Xi (hwxi AT cs DOT bu DOT edu) # Teaching Fellow: Likai Liu (liulk AT cs DOT bu DOT edu) # ###### ------ The following is an *approximate* week-by-week course schedule: Week One 19 May, 09 T: Introduction to Functional Programming: minimizing the use of assignments; tail-calls are important in FP 20 May, 09 W: Names, Functions, Types, Lists (I) 20 May, 09 W: Lab: getting started with [atscc] 21 May, 09 R: Names, Functions, Types, Lists (II) Week Two 26 May, 09 T: Induction on Natural Numbers 27 May, 09 W: Trees and Concrete Data (I) 27 May, 09 W: Lab: list sorting: quicksort, mergesort 28 May, 08 R: Trees and Concrete Data (II) low-level data representation; exceptions 29 May, 08 F: Trees and Concrete Data (III) induction on trees; BST root insertion; Braun trees Week Three 01 Jun, 09 M: Functions and Infinite Data (I) higher-order functions ( newton-ralphson method, list_map, list_foldl,list_foldr, ... ) 02 Jun, 09 T: Functions and Infinite Data (II) more higher-order functions ( functions vs. closures, lambda notation , list_filter, sieve, mutual recursion, ... ) 03 Jun, 09 W: Imperative Programming (I) references; arrays; two-dimensional arrays 03 Jun, 09 W: Lab: 04 Jun, 09 R: Midterm1 Week Four 08 Jun, 09 M: Imperative Programming (II) a monto carlo approach to calculating PI; linked lists 09 Jun, 09 T: Imperative Programming (III) implementing queues based linked list; representing objects 10 Jun, 09 W: lazy evaluation (call-by-need) (I) sieve; turning a file into a char stream; euler's transform 10 Jun, 09 W: Lab: 11 Jun, 09 R: lazy evaluation (call-by-need) (II) listing all pairs of natural numbers; ML-like stream programming with on memoization (which is both inconvenient and inefficient) Week Five 15 Jun, 09 M: A Simple Type System 16 Jun, 09 T: Implementing a Typechecker 17 Jun, 09 W: Implementing an Interpreter 17 Jun, 09 W: Lab: 18 Jun, 09 R: Midterm2 Week Six 22 Jun, 09 M: More on Typechecking and Interpreting Advanced Functional Programming (I) 23 Jun, 09 T: Advanced Functional Programming (II) binary search; list functions (length, etc.) 24 Jun, 09 W: Advanced Functional Programming (III) Finding the words that are most frequently used in MobyDick 24 Jun, 09 W: Lab: 25 Jun, 09 R: Final ------