Notes
- Course taught by Anya Tafliovich - call her Anya
- Course website: https://www.utsc.utoronto.ca/~atafliovich/cscc24/
- Syllabus: https://www.utsc.utoronto.ca/~atafliovich/cscc24/admin/courseinfosheet.pdf
- One tutorial/lab will be closed: (which one?)
- Labs take around 2hours, TA will be there for 1 hour, but they dont teach anything that important
- Homework exercises worth 25%
- Two term tests worth 30%
- Final exam worth 40% - must achieve at least 40% on the final exam
- Lab/tutorial worth 5%
- No lecture recordings
- Pre-posted lecture slides
- No required textbook, optional textbooks
- John C Michell Concepts in Programming Languages
- R Kent Dybvig - The Scheme Programming Language
- Simon Thompson, Haskell: The craft of functional programming
- Ivan Bratko - Prolog - Programming for Artificial Intelligence
- Markus to submit homework exercises for programming
- Crowdmark to submit homework for hand-written
Final
- There will be Functional Programming Proofs
- There will be type inference
- There will be Tail Recursion with CPS
- Racket Closure
- Prolog basic concepts
- Java FP
- Java type system
- Haskell datatype and folding over them (ex4)
Concepts
Week 1
- Language
- Translation
- High-Level Language
- Low-Level Language
- Assembly
- Assembler
- Compiler
- Interpreter
- Pseudo Compilation
- JIT Compilation
- Specification
Week 2
- Tokenization
- Syntactic Analysis
- Chomsky Hierarchy
- Regular Expression
- CFG
- Extended Backus Naur Form
- Parse Tree
- Syntactic Ambiguity
- Grammar Disambiguation
- Grammar Delimiter
- Sequential Composition
Week 3
- Racket
- Evaluation by Substitution
- Closure
- Higher Order Function
- Lambda Function
- Equality of Functions
Week 4
- Java Stream
- Java Lambda Function
- Java Method Reference
- Racket Full Function Definition
- Racket fold
- Recursion
Week 5
- Tail Recursion
- Function Call Scratch Paper Analogy
- Python Tail Recursion Elimination
- Python Traceback
- Racket Evaluation
- Continuation Passing Style
Week 6
- Haskell
- ghci
- Scope
- Closure
- Parallelism Advantage
- Functional Programming Proofs
- Closure Lemma
- Type Safe
- Verifying Compiler
Week 7
- Type
- Haskell Type
- Type System
- Type Checking
- Type Inference
- Haskell Function
- Parametric Polymorphism
- Haskell Pattern Matching
Week 8
- Type Definition from Tree Representation
- Haskell $
- Haskell Function Composition
- Haskell Typeclass
- Eta Reduce
- hlint
- Haskell List Comprehension
- HUnit
Week 9
Week 10
- Multiple Inheritance
- Diamond Problem
- Lazy Evaluation
- Thunk
- Haskell Lazy Evaluation Example
- Logical Programming
- Java Default Methods
- Java Generics
- Relation
Week 11
- Prolog
- Horn Clause
- Prolog Variable Universality
- Unification
- Backward Chaining
- Backtracking
- Prolog Search Tree
- Logical Programming
- Prolog List