Course Home | Course Policies | Assignments | Schedule & Lecture Notes

CS 3200: Programming Languages
Spring 2019


Here is this semester's tentative schedule; we will update it as the semester progresses.

Please note that lecture notes are provided as a supplement, and are NOT a substitute for attending lecture. In particular, these are not guaranteed, so expect technical difficulties to prevent them from being posted at least a few times in the semester; they also will not contain exercises whose solutions are worked out on the board in class. Please plan accordingly to either take notes or get them from a friend if necessary.

Date Topic Reading Lecture Notes Supplemental Examples
Monday, Jan. 14 Syllabus
Overview
Chapter 1 of textbook Slides
Wednesday, Jan. 16 Scanning:
Regular expressions and DFAs
Chapter 1, Section 2.1 Slides
Wednesday, Jan. 23 Scanning:
DFAs and NFAs
Section 2.2 of book Slides
Friday, Jan. 25 Scanning:
NFA to DFA conversion
Intro to flex
Section 2.2 of book Slides
Monday, Jan. 28 Scanning:
More flex
Flex tutorial
Flex manual
Flex book
Slides countcharandline.lex
abcdexample.lex
getusername.lex
zapme.lex
countwords.lex
Wednesday, Jan. 30 Parsing: CFGs Section 2.3 of book Lecture Notes
Friday, Feb. 1 Parsing: CFGs with ambiguity and left recursion Section 2.3 of book Lecture Notes
Monday, Feb. 4 Parsing: LL(1) grammars Section 2.3 of book Lecture Notes
Wednesday, Feb. 6 Parsing: More on LL(1) Section 2.3 of book Lecture Notes Handout from class
Friday, Feb. 8 Parsing: LL(1) example Section 2.3 of book Lecture Notes Handout from class
Monday, Feb. 11 Parsing: LR and Bison Section 2.3 of book
Bison book
Lecture Notes
Wednesday, Feb. 13 Binding Chapter 3 of book Lecture Notes
Friday, Feb. 15 Binding Chapter 3 of book Lecture Notes
Monday, Feb. 18 Binding
Control flow
End of chapter 3
Start of chapter 6
Lecture Notes
Wednesday, Feb. 20 Control Flow Chapter 6 of book Lecture Notes A Case against the GO TO Statement, by Edsger W. Dijkstra
Friday, Feb. 22 Simple Variables Chapter 7 Lecture Notes
Monday, Feb. 25 Variables Chapter 8 Lecture Notes
Wednesday, Feb. 27 Subroutines Chapter 9 Lecture Notes
Friday, March 1 Subroutines
Object Orientation
Chapter 9 Lecture Notes for 9
Lecture Notes for 10
Wednesday, March 20 Haskell: intro Learn you a Hasekll Lecture Notes
Friday, March 22 Haskell: lists Learn you a Hasekll
Haskell wikibook
Lecture Notes
Monday, March 25 Haskell:
writing functions
higher order functions
Learn you a Hasekll
Haskell wikibook
Lecture Notes
Wednesday, March 27 Haskell:
higher order functions
Data and Type declarations
Learn you a Hasekll
Haskell wikibook
Lecture Notes
Friday, March 29 Haskell:
Modules
I/O
Learn you a Hasekll
Haskell wikibook
Lecture Notes expression.hs
Monday, April 1 Haskell:
Functors
Learn you a Hasekll
Haskell wikibook
Lecture Notes BinaryTree.hs
Wed and Fri, April 3 and 5 Functional programming: Lisp
Mon and Wed, April 8 and 10 Functional programming:
C++ and Python
Lecture Notes
Friday, April 12 Haskell:
Monads
Learn you a Hasekll
Haskell wikibook
Lecture Notes BinaryTree.hs
Monday, April 15 Intro to prolog Chapter 12 of book
Gentle intro to prolog
Lecture Notes
Wednesday, April 17 Prolog: backtracking, recursion and lists Chapter 12 of book
Learn Prolog Now!
Intro to Prolog Programming
Adventure in Prolog
Lecture Notes
Wednesday, April 24 Prolog: backtracking, recursion and lists (See last lecture's links) Lecture Notes family.pl
Friday, April 26 Prolog: control flow
larger examples
Prolog sample programs
Learn prolog via examples
Lecture Notes dfa.pl
mapcoloring.pl
Monday, April 29 A taste of COBOL Lecture Notes
Wednesday, May 1 Educaitonal Programming Languages Lecture Notes
Friday, May 3 History of Programming Languages Lecture Notes
Monday, May 6 Review session for final exam