Week | Topics | Resource links |
Jan 6-10 | 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 13-17 | Week 2: lists in lisp | |
blocks, let | slides, youtube | |
lists, sequences, arrays, vectors | youtube, slides | |
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 | |
Jan 20-24 | Week 3: tail recursion, function parameters, higher order functions | |
recursion, tail recursion | youtube, slides | |
parameter passing alternatives | youtube, slides | |
parameter passing continued (keyword-based) | youtube, slides | |
multiple return values | youtube, slides | |
higher order functions | youtube, slides | |
lambda functions | youtube, slides | |
Jan 27-29 | Week 4: closures, lambda functions, let-over-lambda | |
closures | youtube, slides | |
let-over-lambda | youtube, slides | |
labels and let-over-labels-over-lambda | youtube, slides | |
...practice with lol... | ||
Feb 3-7 | Week 5: advanced features | |
loops | youtube, slides | |
structures | youtube, slides | |
hashes | youtube, slides | |
symbols and properties | youtube, slides | |
dynamic scope | youtube, slides | |
Feb 10-14 | Week 6: macros, parsing and grammars | |
macros | youtube, slides | |
efficiency and lisp | youtube, slides | |
homoiconic languages and parsing lisp in 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 17-21 | study week: no labs/lectures | |
Feb 24-26 | Week 7: intro to grammars | |
Formal descriptions of languages | youtube, slides | |
Regular expressions | youtube, slides | |
Context free grammars | youtube, slides | |
Augmented context-free grammars | youtube, slides | |
Mar 3-7 | Week 8: parsing, lex/flex and bison/yacc, intro to attributes | |
lex and yacc (my old webnotes and some examples) | ||
lex (tokenizer) | youtube, slides | |
yacc (parser) | youtube, slides | |
Attributes and binding | youtube, slides | |
operators, precedence, associativity | slides, youtube | |
Mar 10-14 | Week 9: types and conversions | |
Type compatibility/conversion | youtube, slides | |
Primitive types | youtube, slides | |
strings | slides, youtube, | |
ordinal types | slides, youtube | |
arrays | slides, C++ example, youtube | |
records | slides, C++ example, youtube | |
Mar 17-21 | Week 10: blocks and iteration, intro to subroutines | |
blocks | slides, C example, youtube | |
selection | slides, youtube | |
iteration | slides, youtube | |
labels, conditionals, and control | slides, C example, youtube | |
subroutines | slides, youtube | |
Mar 24-28 | Week 11: subroutines, macros | |
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 | |
Mar 31-A4 | Week 12: macros, smart pointers, memory | |
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) | |
Memory handling |
slides,
youtube
External resource: Dynamic memory handling (wikipedia) | |
Dynamic memory handling (a GNU malloc approach) |
memory organization: slides,
youtube
allocate/free algorithms: slides, youtube External resource: GNU malloc (sourceware.org) | |
Apr 7-11 | Week 13: OO, course wrapup | |
ADT features and support | slides, youtube | |
OO features and support | slides, 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) | |
Course wrap-up | details t.b.a. | |
Extras if we get time | (not examinable if we don't get to them in lectures) | |
hashes, sets, unions | slides, C++ example, youtube | |
lisp file i/o, pipes | youtube, slides | |
lisp misc: regex, timing, sleep, random #s, compiling, packages, catch/throw, gotos | youtube, slides | |
Implementing dynamic/nested scopes | slides, youtube | |
A truly different language | DreamBerd by TodePond |