On 21 January 2008 the second term of the academic year 2007/2008 will begin in UCD. Normally I don't notice such dates but now it is a bit special because that's when the first course I'll teach starts. Joe will still be the coordinator as far as the university administration is concerned but I'll be responsible for organizing, planning the content, giving the lectures, and so on. The course is entitled UNIX programming (COMP20060, formerly known as Operating Systems). I will follow the main lines of Joe's curriculum last year. Here's what I'll cover, in various degrees.
- Introduction to C.
- The Open Group Base Specifications, the open version of POSIX.
- Core concepts: multitasking, virtual memory, files.
The course is optional, approximatively 30 students attend it, and they are familiar with Java. My emphasis will be on giving them hands-on experience with the C language. The textbooks are:
- The C Programming Language, by Kernighan and Ritchie
- The Practice of Programming, by Kernighan and Pike
The grading is done as follows:
- 40% for the final exam
- 10% for weekly in-class quizzes (that anyone attending the previous lecture should have no difficulty with)
- 20% for a project to be done in a team of two; it will be a command line tool of some sort
- 30% for weekly assignments
The weekly assignments will be judged in a completely objective way. Grading will be done by a computer program and students will know beforehand exactly how that computer program works. Also, students will submit solutions electronically, as many times as they want before the deadline, they will get immediate feedback, and only their best solution will be used for the final grade (with no penalty for multiple submissions or for submitting bad solutions). Nevertheless, the deadline shall be strict. When the deadline expires submissions will be automatically disabled and a sample solution will appear on the website.
When they finish the course, I'd like the students to:
- feel comfortable using command line in Linux,
- feel comfortable reading C code written by someone else, and
- know the main functions of an operating system and its high level architecture.
The advice of the head of school was less content, higher quality. The next steps for me are to:
- determine more precisely what content I will cover, and
- code the infrastructure for judging assignments.
Any feedback is welcome, especially from UCD students that might take this course.