COMP 524: Programming Language Concepts
Spring, 2008
Jeff Terrell
jsterrel AT cs.unc.edu
(919) 962-1791 (office: Sitterson 138)
COMP 524, Spring 2008 - Lecture Notes
Here I will post my lecture notes after I use them.
Unit 1
| Date | Topics |
| Thu Jan 10 | course expectations; why study programming languages, brief history of PL's, intro to Python |
| Tue Jan 15 | Python: flow control, functions, built-in data structures, list comprehensions, modules, input & output |
| Thu Jan 17 | Compilers, interpreters, virtual machines, preprocessors, etc. Tombstone diagrams. Bootstrapping a compiler - example with Pascal. Overview of compilation. |
| Tue Jan 22 | Lexical analysis, a.k.a. scanning: tokens, regular expressions (formal and practical), scanner implementation |
| Thu Jan 24 | Context-free grammars: derivations, parse trees, syntactic and semantic ambiguity, precedence, eliminating left recursion |
| Tue Jan 29 | Eliminating common prefixes, recursive descent parsers (with example) |
| Thu Jan 31 | Scheme: basics, special forms, procedures, iterative processes and tail recursion |
| Tue Feb 5 | Scheme 2: higher-order procedures, functions as first-class objects, anonymous functions, pairs, lists |
| Thu Feb 7 | Scheme 3: lists and recursion, mapping over lists, trees, lists as conventional interfaces |
| Tue Feb 12 | Names; binding; binding vs. object lifetimes; storage mechanisms (static, stack, heap) and object lifetimes; garbage collection |
| Thu Feb 14 | Static and dynamic scope; symbol tables; closures; shallow vs. deep binding |
Unit 2
| Date | Topics |
| Tue Feb 26 | test review (no notes) |
| Thu Feb 28 | Control flow: expression evaluation, sequencing, unstructured flow, selection, iteration & recursion |
| Tue Mar 4 | Type systems: defining and using types; rules for inference, equivalence, and compatibility; casting and coercion |
| Thu Mar 6 | Strong vs. weak typing; case studies on C-style arrays and strong typing in ML |
| Tue Mar 11 | No notes--spring break. |
| Thu Mar 13 | No notes--spring break. |
| Tue Mar 18 | No notes--class cancelled. |
| Thu Mar 20 | Evaluation, with Pseudo-C example. Implementing namespaces and scope. |
| Tue Mar 25 | Introduction to Prolog: knowledge bases, queries, terms, variables, matching. |
| Thu Mar 27 | Proof search, tic-tac-toe game, not operator. |
| Tue Apr 1 | Clarifying addendum to type systems (half lecture). |
Unit 3
| Date | Topics |
| Thu Apr 10 | Classes as data abstraction; object-oriented paradigm; inheritance and initialization of objects; reference vs. value model; static vs. dynamic binding; polymorphism. |
| Tue Apr 15 | Classes 2: member lookup; dynamic aspects of OO interpretation; generics (a.k.a. templates); function parameter passing. |
| Thu Apr 17 | Python's parameter-passing semantics; Normal vs. applicative order in Scheme (enrichment: infinite streams) |
lectures.php: Last Modified: 04/22/08@11:26:42 | Size: 5183 bytes |
View Source