Week | Topics | Resource links |
Jan 8-12 | Week 1: getting started, intro to common lisp | |
Course intro, administrivia | outline, exams/midterm/quizzes, | |
What is the course actually about: | youtube, slides | |
intro to functional programming | youtube, slides | |
intro to common lisp | youtube, slides | |
lisp types/checking | youtube, slides | |
selection (if, cond) | youtube, slides | |
basic function definitions (defun) | youtube, slides | |
common errors | youtube | |
Jan 15-19 | Week 2: lists and recursion | |
blocks, let | slides, youtube | |
lists, sequences, arrays, vectors | youtube, slides | |
Snow day Wed the 17th | ||
Jan 22-26 | Week 3: tail recursion, function parameters, scope | |
example: checking validity of a list of pairs of reals | function implementation , automated test script | |
list implementation/side effects | youtube, slides | |
data structures as lists | youtube, slides | |
recursion, tail recursion | youtube, slides | |
Jan 29-F2 | Week 4: higher order functions, lambda functions, let-over-lambda | |
higher order functions | youtube, slides | |
lambda functions | youtube, slides | |
closures | youtube, slides | |
let-over-lambda | youtube, slides | |
labels and let-over-labels-over-lambda | youtube, slides | |
parameter passing alternatives | youtube, slides | |
Feb 5-9 | Week 5: parameters cont., return values, macros | |
parameter passing continued (keyword-based) | youtube, slides | |
multiple return values | youtube, slides | |
macros | youtube, slides | |
Feb 12-16 | Week 6: lisp wrapup, parsing and grammars | |
loops | youtube, slides | |
structures | youtube, slides | |
hashes | youtube, slides | |
symbols and properties | youtube, slides | |
dynamic scope | youtube, slides | |
efficiency and lisp | youtube, slides | |
the structure of functions | youtube, slides ***<= these slides/video are gcl-based, sbcl is quite different in this regard*** | |
parsing lisp in lisp revisited | youtube, slides | |
pure functional programming vs common lisp | youtube, slides | |
Feb 19-23 | study week: no labs/lectures | |
Feb 26-M1 | Week 7: intro to grammars, midterm Wed. | |
homoiconic languages and parsing lisp in lisp | youtube, slides | |
prep for midterm | ||
MIDTERM FEB 28 | ||
Mar 4-8 | Week 8: Dave sick most of the week (sorry!) | |
Mar 11-15 | Week 9: grammars, parsing, lex/yacc | |
Formal descriptions of languages | youtube, slides | |
Regular expressions | youtube, slides | |
Context free grammars | youtube, slides | |
Mar 18-22 | Week 10: grammars, attributes and binding | |
Augmented context-free grammars | youtube, slides | |
lex and yacc (my old webnotes and some examples) | ||
lex (tokenizer) | youtube, slides | |
yacc (parser) | youtube, slides | |
Ambiguity and precedence | ||
Attributes and binding | youtube, slides | |
Mar 25-29 | Week 11: data types | |
operators, precedence, associativity | slides, youtube | |
Type compatibility/conversion | youtube, slides | |
Primitive types | youtube, slides | |
strings | slides, youtube, | |
ordinal types | slides, youtube | |
arrays | slides, C++ example, youtube | |
Apr 1-5 | Week 12: functions, variants, macros | |
University closed Apr 1, no labs/lectures | ||
records | slides, C++ example, youtube | |
subroutines | slides, youtube | |
parameter passing |
slides,
C example,
C++ example,
part 1: youtube part 2: youtube (a code look at variadic functions) | |
higher order functions | slides, C++ example, youtube | |
variadic functions in C/C++: (revisited) | youtube, slides sample code: C, C++ (simple variadic sum), C++ (reduce) | |
macros | slides, sample code, youtube | |
Apr 8-12 | Week 13: pointers, blocks/control, course wrapup | |
pointers | slides, C++ example, youtube | |
Smart pointers | slides, youtube | |
C++ smart pointers |
C++ example (more current syntax than slides),
slides (but antiquated syntax),
youtube
External resource: Smart pointers (Alexandrescu, InformIT) | |
blocks | slides, C example, youtube | |
selection | slides, youtube | |
iteration | slides, youtube | |
labels, conditionals, and control | slides, C example, youtube | |
Course wrap-up | details t.b.a. | |
Extras if we get time | (not examinable otherwise) | |
Memory handling |
slides,
youtube
External resource: Dynamic memory handling (wikipedia) | |
hashes, sets, unions | slides, C++ example, youtube | |
C++ OO implementation |
slides,
youtube
(whoops: in slide 3, the definition of foo inside the class is incomplete, it was supposed to be returning x+i) | |
lisp file i/o, pipes | youtube, slides | |
lisp misc: regex, timing, sleep, random #s, compiling, packages, catch/throw, gotos | youtube, slides | |
Dynamic memory handling (a GNU malloc approach) |
memory organization: slides,
youtube
allocate/free algorithms: slides, youtube External resource: GNU malloc (sourceware.org) | |
Implementing dynamic/nested scopes | slides, youtube | |
ADT features and support | slides, youtube | |
OO features and support | slides, youtube | |
A truly different language | DreamBerd by TodePond |