Course Description

This is an introductory graduate course. Its intent is to provide all students that are interested in software systems with a basic background that will help them succeed in subsequent endeavours (courses, research, and work in industry) related to software. The course is intended to be “hands-on” – there is a large project component that involves building a software system.

Additional information about the course is available in the course syllabus.

Details Instructor Teaching Assistant Teaching Assistant
Name Prof. Arie Gurfinkel Jakub Kuderski Liuyang Ren
Office DC2536    
email first . last AT uwaterloo.ca first . last AT uwaterloo.ca first . last AT uwaterloo.ca

Important Dates (likely to change, check frequently)

Date Event
Sep 8 A0 an A1 out
Sep 14 A0 due
Sep 27 A2 out
Oct 6 A1 due
Oct 13 A3 out
Oct 20 A2 due
Oct 26 A4 out
Nov 3 A3 due
Nov 10 Project out
Nov 17 A4 due
Dec 1 Project Due
Dec 20 Final Exam
Week Lecture Reading
1 Admin
Git and Unix
 
2 Python  
3 Python Tutorial  
4 C++
CMake
C++ Tutorial
5 Systems Programming and Concurrency (Part 1)  
6 Forks and Pipes  
7 Propositional Logic Logic for Computer Scientists
8 Propositional Satisfiability Decision Procedures for Propositional Logic
9 Systems Programming and Concurrency (Part 2)  
10 Operating Systems  
11 Abstract Data Types and Containers
Lists
Stacks
Queues
 
12 Hashtables
Asymptotic Analysis
Statistics
 

Posts