Week | Tue. Lecture | Tue/Wed Labs | Thu. Lecture |
Week 1: Jan 6-10 |
Course intro, overview, administrivia
Intro to functional programming, Lisp: functions/calls, variables, expressions, types, t/nil, i/o, if, cond |
No lab | Lisp: defun, lists, type checking |
Week 2: Jan 13-17 |
Cancelled: VIU snow closure | ||
Week 3: Jan 20-24 |
recursion on lists, sequences, arrays, vectors | Lab 1: lisp basics | let blocks, recursion and tail recursion, lisp implementations/side effects |
Week 4: Jan 27-31 |
Lisp: hashes, structures, scope, parameter tokens: &rest, &key, &optional, "special" variables (dynamic scope) | Lab 2: tail recursion | Lisp: higher order functions, map, eval, apply, funcall |
Week 5: Feb 3- 7 |
Lisp: lambda, closures, labels, internal structure of functions | Lab 3: Lisp higher order functions | loops, packages, pure functional programming vs lisp, efficiency |
Week 6: Feb 10-14 |
midterm preparation, intro to let over lambda | Lab 4: closures, lambda functions | Midterm |
Week 7: Feb 17-21 |
Lisp: let over lambda example, macros | Lab 5: let over lambda (with labels) | Formal language description syntax and semantics: regular expressions, context free grammars |
Study break: Feb 24-28 | |||
Week 8: Mar. 2- 6 |
augmented context free grammars, lex/yacc, intro to course projects | Lab 6: scope and lifetime in C | lex/yacc examples, project discussion |
Week 9: Mar 9-13 |
Lexical components of languages, static/dynamic binding, data entity names, addresses, types, scopes, lifetime, and binding | Lab 7: relationship between C and assembly instructions | Primitive data types and operators, type compatibility, casting and conversion |
Week 10: Mar 16-20 |
Composite data types and operators, C unions | Lab 8: operations, precedence, side effects in C | Expressions, precedence, associativity |
Week 11: Mar 23-27 |
Code statements, blocks, scope, branching and labels | Lab 9: Macros/templating covered in lab session: variadic functions in C and C++ | Iteration, selection, subroutines, call/return, parameters, scope. |
Week 12: Mar 30-A3 |
Subroutine overloading, nesting, implementation details (memory organization, access, function pointers) | Lab 10: implementing higher order functions in C++ (templated function pointers) | Pointers, operations, issues, memory allocation and organization, garbage collection, smart pointers |
Week 13: Apr 6-10 |
OO: fields and methods, scopes, access control | OO: inheritance, dynamic binding, memory organization, implementation issues | Final review/wrapup |