Week
| Lectures (each Monday and Tuesday) and Workshops (Fridays)
| Laboratories and Projects
|
Week 1 Mon 24th 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
Linux and C compiler basics
Frequently used commands
|
Week 2 Mon 31st 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, and Standard Library Functions
and the solution we developed.
|
Labsheet 1
and some sample solutions.
|
Week 3 Mon 7th Aug
|
Lecture 5
(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
Lecture 6
(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
Workshop-3:
Functions, parameter passing, and structures
and the solution we developed.
|
Labsheet 2
and some sample solutions.
|
Week 4 Mon 14th Aug
|
Lecture 7
(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
Lecture 8
(single page)
File input and output (I/O);
Reading and writing text files;
Reading and writing binary data.
Reading:
BGC: Ch.9
Workshop-4:
File I/O and measuring execution time
and the solution we developed.
|
Labsheet 3
and some sample solutions.
|
Week 5 Mon 21st 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
(single page)
Operating system services;
The interface between operating systems and programming languages.
Workshop-5 -
1st Project discussion; come prepared with your questions.
|
1st programming project
Due 5:00pm, Fri 15th Sept (wk 7)
|
Week 6 Mon 28th 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;
Pointers to structures;
Sorting an array of values.
Reading:
DIS: §2.4;
BGC: Ch.12
TEP: Ch.14
Workshop-6:
Creating and managing processes using system-calls
and the solution we developed.
|
Non-teaching week Mon 4th Sept
|
Non-teaching week (no lectures or scheduled laboratories)
|
Week 7 Mon 11th Sept
|
Lecture 13
(single page)
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
(single page)
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 18th Sept
|
Lecture 15
(single page)
File-system basics;
The file management system;
Directory structures;
File allocation methods.
Reading:
TEP: §40.1-40.6
Lecture 16
(single page)
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-7:
Using structures and reading directories
and the solution we developed.
|
Labsheet 4
and some sample solutions.
|
Week 9 Mon 25th Sept
|
Monday 25th September - public and UWA holiday, no lecture or laboratory sessions
Lecture 17
(single page)
Developing C programs in multiple files;
Linking;
Simplifying program development with make;
Reading:
BGC: Ch.17;
DIS: §17.5
Workshop-8:
Building a hashtable data structure
and the solution we developed.
|
Labsheet 5
and some sample solutions.
|
Week 10 Mon 2nd Oct
|
Lecture 18
(single page)
Supporting command-line options with getopt.
Interprocess-communication using pipes.
Lecture 19
(single page)
Self-referential data structures;
stacks;
linked lists;
queues;
binary trees.
Workshop-9 -
2nd Project discussion; come prepared with your questions.
|
2nd programming project
Due 5:00pm, Fri 20th Oct (wk 12)
|
Week 11 Mon 9th Oct
|
Lecture 20
(single page)
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
(single page)
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.
Friday - no workshop this week
|
Week 12 Mon 16th Oct
|
Lecture 22
(single page)
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 -
(recorded, but no slides).
Discussion on questions from
last year's final examination.
Friday - no workshop this week
In 2021, a lecture presented an introduction to C++.
This is included here, just for interest,
and is not examinable in 2023.
A simple comparison of the C and C++ programming languages (single page)
Header files, declarations, and definitions;
Standard I/O streams and file streams;
Parameter passing by reference;
Structures .vs. classes;
Constructors, destructors;
Differences in dynamic memory allocation;
Function overloading and templates.
Mixing C and C++ in the same program;
|