Week
| Lectures (each Monday and Wednesday) and Workshops (Fridays)
| Laboratories and Projects
|
Week 1 Mon 22nd July
|
Lecture 1
(single page)
Administrivia;
The C programming language;
Why C?;
A brief history of C;
Standardization.
Lecture 2
(single page)
The structure of a C program;
Basic datatypes;
Variables, naming, and scope.
Flow-control in C programs;
Conditional tests, Boolean values, and conditional execution;
Bounded and unbounded loops, and their equivalence.
Reading:
BGC:
Ch.2,
Ch.3
Workshop-1 -
getting started with practical work
(recorded, but no slides).
|
No laboratories this week.
OS and C compiler software
unix and C compiler basics
Frequently used commands
|
Week 2 Mon 29th July
|
Lecture 3
(single page)
An introduction to operating systems;
A brief history of operating systems;
The contemporary role of operating systems.
Reading:
DIS: Ch.13 intro;
TEP: Ch.2 intro, §2.6;
The Evolution of Operating Systems,
Per Brinch Hansen, Nov 2001.
Lecture 4
(single page)
Functions in C;
Passing parameters to functions;
Returning values from functions;
the static keyword;
Functions receiving a variable number of parameters.
Reading:
BGC: Ch.4
Workshop 2:
Conditions, Loops, Basic Formatting, and Standard Library Functions
the MP4 recording from 2023 (145MB),
and the solution we developed in 2024.
|
Labsheet 1
and some sample solutions.
|
Week 3 Mon 5th Aug
|
Lecture 5
(single page)
Aggregate data structures in C - arrays and strings;
Initializing arrays and strings;
Formatting results into character arrays;
Defining and accessing structures;
Better representations of our data - enumerated types.
Reading:
BGC: Ch.6,
Ch.7,
Ch.8
Lecture 6
(single page)
An overview of computer hardware components;
The processor and its registers;
The memory hierarchy;
Code execution.
Reading:
DIS: §5.2,
§5.6,
§11.1
Workshop 3:
Functions, parameter passing, and structures
and the solution we developed.
|
Labsheet 2
and some sample solutions.
|
Week 4 Mon 12th Aug
|
Lecture 7
(single page)
File input and output (I/O);
File descriptors;
File copying;
Reading and writing text files;
File pointers and standard I/O;
Reading and writing structures and binary data.
Reading:
BGC: Ch.9
Lecture 8
(single page)
Operating system processes;
The state of an operating system process;
Timer interrupts;
The scheduling of processes;
Process suspension and swapping.
Reading:
DIS: §13.2,
TEP: Ch.4
Workshop 4:
File I/O and measuring execution time
and the solution we developed.
|
Labsheet 3
and some sample solutions.
|
Week 5 Mon 19th Aug
|
Lecture 9
(single page)
Creating new processes;
Parent and child processes;
Waiting for process termination;
Overlaying a new process image;
The importance of the exit status.
Reading:
DIS: §13.2,
TEP: Ch.5
Lecture 10
(get up-to-date with all past lecture material...)
Mid-semester test discussion; come prepared with your questions.
Friday 23rd Aug - Mid-semester test
|
1st programming project
|
Week 6 Mon 26th Aug
|
Lecture 11
(single page)
Addresses and pointers in C;
The relationship between pointers and arrays;
Pointer arithmetic;
Reading:
DIS: §2.1,
§2.2;
BGC: Ch.5,
Ch.11
Lecture 12
(single page)
Passing pointers to functions.
Dynamic memory allocation;
Allocating memory for arrays and strings;
Reallocating and deallocating memory.
Reading:
DIS: §2.4;
BGC: Ch.12
TEP: Ch.14
Workshop-5 -
1st Project discussion; come prepared with your questions.
|
Non-teaching week Mon 2nd Sept
|
Non-teaching week (no lectures, workshop, or scheduled laboratories)
|
|
Week 7 Mon 9th Sept
|
Lecture 13
An introduction to memory management;
Allocating physical memory to processes;
Fixed and dynamic partitioning schemes;
Simple memory paging.
Reading:
DIS: §11.1-11.2;
TEP: §18.1-18.3
Lecture 14
The principle of referential locality;
Memory paging in more detail;
Virtual memory.
Reading:
DIS: §11.3;
DIS: §13.3;
Friday - no workshop this week
|
Week 8 Mon 16th Sept
|
Lecture 15
File-system basics;
The file management system;
Directory structures;
File allocation methods.
Reading:
TEP: §40.1-40.6
Lecture 16
System-calls and system-defined structures;
Accessing structures using pointers;
Defining our own datatypes;
Finding the attributes of a file;
Reading the contents of a directory;
File and Directory Permissions.
Reading:
BGC: Ch.10;
DIS: §17.7;
TEP: Ch.39
Workshop-6:
Creating and managing processes using system-calls
|
Labsheet 4
|
Week 9 Mon 23rd Sept
|
Monday 23rd September - public and UWA holiday, no lecture or laboratory sessions
Lecture 17
Developing C programs in multiple files;
Linking;
Simplifying program development with make;
Reading:
BGC: Ch.17;
DIS: §17.5
Workshop-7:
Using structures and reading directories
|
Labsheet 5
|
Week 10 Mon 30th Sept
|
Lecture 18
Supporting command-line options with getopt.
Interprocess-communication using pipes.
Lecture 19
Self-referential data structures;
stacks;
linked lists;
queues;
binary trees.
Workshop-8 -
2nd Project discussion; come prepared with your questions.
|
2nd programming project
|
Week 11 Mon 7th Oct
|
Lecture 20
Multi-threaded programming;
Thread support in standard-C;
Benefits of threads;
Threads versus processes;
Thread creation, execution, and termination;
Reading:
DIS: §14.2;
BGC: Ch.39.1-39.5.
Lecture 21
Waiting for threads;
Synchronization using mutexes;
Condition variables;
When are threads faster, and when slower?
Reading:
DIS: §14.3;
BGC: Ch.39.7-39.8.
Workshop-9:
Building a hashtable data structure
|
Week 12 Mon 14th Oct
|
Lecture 22
Portable systems programs;
Using the preprocessor to isolate system-specific code;
Preprocessor tokens for C language standards and operating system platforms;
System-specific integer datatypes;
Unicode support in C11.
Reading:
BGC: Ch.19;
Ch.27.
Lecture 23
Discussion on questions from last year's final examination
(recorded, but no slides).
Friday - no workshop this week
|