This is a tentative schedule of what we'll be covering in class each week, along with dates for assignments, exercises, and exams.
Note that this is subject to change, so check this page frequently! Go Back.


WeekDatesTopics CoveredEvaluationsAssignments Due
Week 1 May 18 - May 24 Introduction to the course.
Main Programming Paradigms.
Development Environment.
Week 2 May 25 - May 31 Compilation Process.
Syntax. Context-free grammar. Lexical and Syntactic Analysis.
Programming in C: Fundamentals.
Week 3 June 1 - June 7 Imperative Programming.
Expressions and Statements. Control Flow.
Functions and Procedures.
C Programming: Control flow, Modular Design, Functions.
Storage Classes, Type casting, Scope of variables.
Week 4 June 8 - June 14 Type Systems. Static vs Dynamic Typing.
C Programming: Pre-processor, Compiler, Linker.
One-dimensional arrays. Introduction to Pointers.
Week 5 June 15 - June 21 C Programming: Arrays as Pointers.
Characters and Strings.
String and Pointers.
Assignment N1 (10%)
Week 6 June 22 - June 28 Memory layout of a program.
Dynamic Memory Management in C.
Pointer to a Pointer. Multidimensional Arrays.
Midterm (30%)
June 29 - July 5 Reading Week - No Classes
Week 7 July 6 - July 12 Structures and Unions.
Object-Oriented Programming Paradigm.
Programming in C++: Fundamentals.
Week 8 July 13 - July 19 Programming in C++:
Abstract Classes and Interfaces.
Inheritance and Polymorphism. Dynamic Dispatch.
Assignment N2 (10%)
Week 9 July 20 - July 26 Programming in C++:
Self-reference, Friend Classes and Functions.
Template Classes.
Week 10 July 27 - August 2 Introduction to Logic/Declarative programming.
Programming in Prolog: Fundamentals.
Assignment N3 (10%)
Week 11 August 3 - August 9 Introduction to Functional Programming.
Functions and Lambda Expressions.
Programming in F#: Fundamentals..
Week 12 August 10 - August 16 Target Machine Architecture.
Catch-up Lecture.
Final Exam (30%) Assignment N4 (10%)
Saturday July 11th, 2020.
© Alex Babanski