###### # # Course Title: Concepts of Programming Languages # Course Number: BU CAS CS 320 # # Semester: Summer I, 2010 # # Instructor: Hongwei Xi (hwxi AT cs DOT bu DOT edu) # Teaching Fellow: Zhiqiang (Alex) Ren (aren AT cs DOT bu DOT edu) # ###### The following is an *approximate* week-by-week course schedule: ###### Week One 18 May, 10 T: Introduction to Functional Programming; minimizing the use of assignments; some code for drawing 2D graphics based on cairo 19 May, 10 W: Lab: getting started with ATS 19 May, 10 W: tail-recursion; generalization and specialization 20 May, 10 R: Names, Functions, Types, Lists Week Two 24 May, 10 M: Induction on Natural Numbers; recurision 25 May, 10 T: Structural induction; binary trees; tree drawing based on cairo 26 May, 10 W: Lab: tail-recursion 26 May, 10 W: String manipulation via lists 27 May, 10 R: higher-order functions and exceptions Week Three 01 Jun, 10 T: closures vs functions; references and arrays 02 Jun, 10 W: Lab: tail-recursion; higher-order functions; drawing in cairo 02 Jun, 10 W: calculating PI using a Monte Carlo method 03 Jun, 10 R: options; exceptions; a commentary on N-queens solutions 04 Jun, 10 F: Midterm1 Week Four 07 Jun, 10 M: CPS (continuation passing style) 08 Jun, 10 T: A simply typed language: theoretical development 09 Jun, 10 W: Lab: closure, continuation, etc. 09 Jun, 10 W: A simply typed language: implementation (via subst.) 10 Jun, 10 R: A simply typed language: implementation (via closure) Week Five 14 Jun, 10 M: lazy evaluation (I) 15 Jun, 10 T: lazy evaluation (II) 16 Jun, 10 W: Lab: divide-and-conquer; references 16 Jun, 10 W: lazy evaluation (III) 17 Jun, 10 R: Midterm2 Week Six 21 Jun, 10 M: review of midterm2; implementing type-checking 22 Jun, 10 T: continuation; more examples on lazy evaluation; course evaluation 23 Jun, 10 W: Lab 23 Jun, 10 W: what's next: advanced types 24 Jun, 10 R: Final ###### end of [schedules.txt] ######