Systems Programming - Lecture Schedule

NWEN 241: 2019 Trimester 1

Things You Must Already Know

The course assumes that you are familiar or have taken courses that have dealt with the following topics:

  • Binary representation of numbers
  • Basic logic or Boolean algebra
  • Computer program design
  • Java programming

Computer program design and Java programming are essentially covered in COMP 102 and COMP 103, courses that you should have taken prior to NWEN 241. If you want to brush up on your knowledge of binary representation and basic logic, this online reference provides a good overview: https://www.bottomupcs.com/chapter01.xhtml.

Lecture Schedule

NOTE: Lecture slides uploaded before the lectures serve as pre-readings, and thus are subject to changes. The final version of the slides will be uploaded after the lectures.
This schedule provides an approximate distribution of topics among the 12 weeks of the trimester. Lecture slides, and additional materials/tutorial shall be posted as and when they become appropriate.

Week Topics Lecture Slides Additional Material/Tutorials
1 Course introduction
C/C++ fundamentals
Operators, flow control, functions
Identifier scope, namespace
Arrays
Course Introduction
Lecture Slides (updated)
Tutorial 1 Slides
2 User-defined types
C++ classes
Lecture Slides (updated) Computer Lab Session Slides
Computer Lab Session Files
Tutorial 2 Slides
Tutorial 2 Source Files
3 Strings
Pointers
Lecture Slides 1
Lecture Slides 2
Tutorial 3 Slides
Tutorial 3 Source Files
4 More on pointers Lecture Slides 1 (updated)
Lecture Slides 2
2018 Mid Term Test
Tutorial 4 Slides
Tutorial 4 Source Files
5 Dynamic memory allocation
Constructors and destructors
Lecture Slides 1
Lecture Slides 2
Tutorial 5 Slides
Tutorial 5 Source Files
6 Vectors and templates Lecture Slides 1
Lecture Slides 2
 
Mid-trimester Break
7 Data structures in systems programming Lecture Slides 1 (updated) Tutorial 6 Slides
Tutorial 6 Source Files
8 Command-line arguments
File I/O
Lecture Slides 1
Lecture Slides 2
Mid-Term Test Answers
Tutorial 7 Slides
Tutorial 7 Source Files (updated)
9 Low-level programming Lecture Slides 1
Lecture Slides 2
Tutorial 8 Slides
Tutorial 8 Source Files
10 Process management: system calls Lecture Slides 1
Lecture Slides 2
2018 Final Exam
Tutorial 9 Slides
Tutorial 9 Source Files
11 Process management: operating system kernel Lecture Slides 1
Lecture Slides 2
Tutorial 10 Slides
Tutorial 10 Source Files (updated)
12 Socket programming Lecture Slides (updated)