!DOCTYPE html> COMS2001 Spring 2016 -- Course info

Course Info


Introduction

The course aims to teach the main concepts and techniques involved in the design of modern operating systems. Since these concepts and techniques pervade the design of all nontrivial computer systems, the course is also meant to introduce the student to the main concepts and techniques involved in building nontrivial computing systems.

The topics covered include:

The above topics are going to be partially covered in the lectures; however, to get a full understanding of the topics, you will have to do the readings. At the very least, this means thorough reading of the prescribed textbook (see below): you do have to have permanent access to a copy of the prescribed textbook and keep up with all the readings; the book can be purchased at the campus bookshop (Van Schaik at the Matrix). You might also want to enquire with the students who did the course last year whether they would like to sell you the copy they were using for the course.

Since the development of computer systems is an integral part of learning about them, the course has a substantial practical component in the form of homework assignments. Homework assignments are meant to give you an opportunity to write systems-level software that relies on the functionality of an operating system. All the HW assignments will have to be done in C. You might get some help with C during the tutorials and labs, but it is largely your responsibility to learn those aspect of C that you are going to need for completing your work. Some resources that you might find helpful for that are listed here.

Homewors will be graded individually. To submit your homeworks, you will need to be able to use git and GitHub -- to learn more, see the course's GitHub page.

Prior knowledge assumed

We assume that the student has the ability to write programs in C++ and Java, knows the most important algorithms and data structures, and has the basic knowledge of computer architecture. This knowledge should have been obtained in COMS1018, COMS1017, COMS1015, and COMS2013. For some topics, it will be helpful for the student to be familiar with series and products, logarithms, advanced algebra, some calculus, and basic probability. We assume that you either know the material that is supposed to be covered in the above-mentioned courses, or that you are willing to learn the material as necessary. We will not spend time in lectures covering any of this material.

Presentation of the course

We will use the board to present the course material during lectures and tutorials -- no slides will be used. The summary of the main points coved in lectures will appear on the course's GitHub page, with links provided from the course's main page, which will also list readings for each topic. As no lecture slides will be used, it is very important for you to attend the lectures and take your own notes.

Course instructor

Dr. Dmitry Shkatov

dmitry.shkatov -AT- wits.ac.za

Office: MSB 105

Office hours: TBD

Lecture schedule

Third teaching block

Wednesdays, 10:15-12:00, SHB3

Fourth teaching block

Tuesdays, 8:00-9:45, SHB3

For the schedule of lab sessions and tutorials will be announced at the first lecture of the course.

Attendance

The attendance of lectures, tutorials, and lab sessions is compulsory. It is important that you attend tutorials and labs---they will provide essential specifics on hands-on aspects of the course, including tools and techniques.

Assessment

Grading

Grades will be determined, in accordance with the School policy, as follows:

Exam

The exam will be closed book, and will cover material from lectures, tutorials, and the readings.

Textbooks

Prescribed

Thomas Anderson and Michael Dahlin. Operating Systems: Principles and Practice (2nd Edition) (A&D) (available from Van Schaik at Matrix)

Recommended

K. N. King. C Programming: A Modern Approach (2nd edition) (King)
Remzi H. Arpaci-Dusseau and Andrea C. Arpaci-Dusseau. Operating systems: Three Easy Pieces. (freely avalable here) (A&A)

Supplemental

You might want to take a look at some parts of these if you want to see how the concepts we're going to be studying are implemented in Linux.

Linux Kernel Development (3rd edition)
Understanding the Linux Kernel (3rd edition)

Last modified: Sun Jul 10 16:38:00 SAST 2016