Week
| Lectures (each Monday and Tuesday) and Workshops (Fridays)
| Laboratories and Projects
|
Week 1 Mon 25th 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.
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 1st Aug
|
Lecture-3
(single page)
An introduction to operating systems;
A brief history of operating systems;
The contemporary role of operating systems.
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.
Workshop-2 -
reviewing Conditions, Loops, and Standard Library Functions
and the heavily commented solution we developed - mycal.
|
Labsheet-1
and some
sample solutions.
|
Week 3 Mon 8th Aug
|
Lecture-5
(single page)
An overview of computer hardware components;
The processor and its registers;
The memory hierarchy;
Code execution.
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.
Workshop-3 -
reviewing functions and parameter passing
and the solution we developed - haversine.
|
Labsheet-2
and some
sample solutions.
|
Week 4 Mon 15th 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.
Lecture-8
(single page)
File input and output (I/O);
Reading and writing text files;
Reading and writing binary data.
Workshop-4 -
File I/O and measuring execution time
and the solution we developed - readfile.
|
Labsheet-3
and some
sample solutions.
|
Week 5 Mon 22nd 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.
Lecture-10
(single page)
Operating system services;
The interface between operating systems and programming languages.
Workshop-5 -
Project 1 discussion; come prepared with your questions.
|
1st programming project
Due 5:00pm, Fri 16th Sept (wk 7)
|
Week 6 Mon 29th Aug
|
Lecture-11
(single page)
Addresses and pointers in C;
The relationship between pointers and arrays;
Pointer arithmetic;
Passing pointers to functions.
Lecture-12
(single page)
Dynamic memory allocation;
Allocating memory for arrays and strings;
Reallocating and deallocating memory;
Pointers to structures;
Sorting an array of values.
Workshop-6 -
creating and managing processes using system-calls
and the solution we almost finished - manychessmoves.
|
Non-teaching week Mon 5th Sept
|
Non-teaching week (no lectures or scheduled laboratories)
|
Week 7 Mon 12th Sept
|
Lecture-13
(single page)
An introduction to memory management;
Allocating physical memory to processes;
Fixed and dynamic partitioning schemes;
Simple memory paging.
Lecture-14
(single page)
The principle of referential locality;
Memory paging in more detail;
Virtual memory.
Friday - no workshop this week
|
Week 8 Mon 19th Sept
|
Lecture-15
(single page)
File-system basics;
The file management system;
Directory structures;
File allocation methods.
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.
Thursday 22nd September - public and UWA holiday, no laboratory sessions
Workshop-7 -
building a hashtable data structure
and the solution we developed - hashtable.zip.
|
Labsheet-4
and some
sample solutions.
|
Week 9 Mon 26th Sept
|
Monday 26th 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;
Workshop-8 -
building a system-utility similar to ls
and the solution we developed - myls.zip.
|
Labsheet-5
and some
sample solutions.
|
Week 10 Mon 3rd Oct
|
Lecture-18
(single page)
Supporting command-line options with getopt.
Interprocess-communication using pipes.
Lecture-19
(single page)
Operating system support for users and groups;
Properties of the Unix superuser;
Changing and setting user information.
Workshop-9 -
Project 2 discussion; come prepared with your questions.
|
2nd programming project
Due 5:00pm, Fri 21st Oct (wk 12)
|
Week 11 Mon 10th Oct
|
Lecture-20
(single page)
Multi-threaded programming;
Thread support in standard-C;
Benefits of threads;
Threads versus processes;
Thread creation, execution, and termination;
Lecture-21
(single page)
Waiting for threads;
Synchronization using mutexes;
Condition variables;
When are threads faster, and when slower?
Friday - no workshop this week
|
Week 12 Mon 17th 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.
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 2022.
A simplified 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;
|