Wizard

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

DateTopics
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

DateTopics
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

DateTopics
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 Valid XHTML 1.1 Valid CSS