CS 463 - Spring 2018

Schedule

1 Texts

  • ChX readings refer to our main text, Concepts of Programming Languages.
  • RWH: readings refer to Real World Haskell, freely available online.
  • LYAHFGG: You should also read Learn You a Haskell for Great Good! as an additional study for a quirky, free introduction to Haskell.
  • other readings for languages will be posted as needed throughout the semester.

2 Order of Topics

We will approach topics in the following order. Please try to keep current with the readings as we approach the topics in lecture.

Topic Readings Planned
    Assignments
Class Welcome/expectations Ch1, (Ch2 optional), Ch3 H1: Python
Untyped Lambda Calculus   H2: ULC
- evaluation, extending the language    
Evaluation Criteria   P1: ImpSmash
Syntax and Semantics    
BNFs, Parse Trees (Ch3)  
Static Semantics, Attribute Grammars    
Dynamic Semantics (Ch3)  
- Operational, Denotational, Axiomatic    
LANG: Haskell Intro install Haskell, LYAHFGG, RWH1-4 H3: Haskell
LANG: Lisp Tutorial: Learn Lisp Fast! (via Prof. Luke) H4: Lisp
  Tutorial: Common Lisp(book)  
TEST ONE (W 2/28) <STUDY!>  
Concurrency: basics Ch13 P2: ImpConc
- semaphores, mutexes, monitors    
Threads, pthreads    
Names, Bindings Ch5  
Scope, Lifetime (Ch5) Java visibility  
Data Types Ch6  
Type Checking    
Typed Lambda Calculus (Types and Programming Languages H5: STLC
- type checking, environment - access digital copy via library)  
- extensions    
Haskell, pt. 2   H6: Haskell
- list comprehensions    
- type classes, Monads RWH 6, 14  
Expressions, Assignments Ch7 P3: FuncSmash
Control-Flow Ch8  
Subprograms: parameter conventions Ch9  
Polymorphism    
Impementing subprograms Ch10  
TEST TWO (M 4/9) <STUDY!>  
Concurrency in Haskell RWH 24  
- forkIO, MVar, channels   P4: FuncConc
LANG: Ruby Tutorial: Ruby Essentials H7: Ruby
Exception Handling, Event Handling Ch14  
- setjmp/longjmp vs. tracebacks    
EXTRA LANG (if there's time) Tutorial: Learn Prolog Now! H8: LangWriteup
  Tutorial: R Tutorial  
Final Exam Live Schedule (originally Mon(a)day, 5/14,  
  10:30am-1:15pm)