The University of Sydney COMP2129 Operating Systems and Machine Principles
Semester 1, 2009

School of Information Technologies 

About the course
Lecturer: Associate Professor Bob Kummerfeld

Lecture Timetable

  • Lectures: 9am Wednesday, 9am and Noon Friday, Carslaw LT159 (first lecture 9am Friday 6th March)
  • Labs: Thursdays in Carslaw 202A/B/C
Consultation Time: 1pm Friday in room 302 SIT Building

Email

To contact the lecturer, please mail comp2129@ug.it.usyd.edu.au. Please use your ugrad account as mail from "anonymous" accounts (eg hotmail)  may be delayed due to spam filters.

If you prefer to read mail on another machine, please arrange to have your mail forwarded to that account using the command mailforward (see man mailforward).

Textbook
The main text is available from the Copy Centre:

Software Development in C and Unix
J Kay and R J Kummerfeld.

There are many other books on C written for students learning C as their first language. For example:

Problem Solving and Program Design in C
Jeri R. Hanly and Elliot B. Koffman. Addison Wesley.

COMP2129 Postconditions
Code
  • Ability to read and write correct, clean code in C that allocates, deallocates and manages memory.
  • Understanding of common memory-related errors (such as memory leaks, dangling pointers) and how to avoid these.
    [Higher performance could involve detecting errors in example code, and fixing them using debuggers (see below)]
  • Ability to read and write code that correctly uses the main standard library functions, especially for I/O, file handling, and string handling.
    [Higher performance could involve elegant use of these functions, particularly avoiding idioms which are extremely inefficient.]
  • Ability to correctly implement standard linked list data structures
    [Higher performance could involve slightly more complicated structures such as binary search trees]
Process
  • Ability to use code quality strategies appropriate for C, including preprocessor techniques, and use of common idioms
  • Experience of following a thorough automated testing regime using tools such as make, diff, scripts to present the outcomes, and a tool to manage regression testing.
    [Higher performance could involve ability to construct such a regime]
  • Experience in using debugging tools.
Unix
  • Understanding of the approach and concepts of Unix, including its tools philosophy, processes (including pipes and redirection), the file system, and the shell.
Generic
  • Ability to learn to use Unix commands and system calls (including usage of flags etc) from online manual system.
Powered by  [Cellerator]