4003-406 Systems Programming I - Course Syllabus

Last updated 2009/11/06 18:29:25

Update history:

2009/11/06: initial version

Name: Warren R. Carithers
Office: 3617 Golisano (70-3617)
Phone: (585) 475-5393
Email: wrc AT cs.rit.edu

1. Course Overview

1.1. Course Goal

The goal of Systems Programming I is to provide students with exposure to and experience with the concepts and techniques related to the development and maintenance of operating systems and systems software.

1.2. Course Outcomes

The following are the intended outcomes for this course:

1.3. Course Prerequisites

This course has the following prerequisites:

From these courses, you should be familiar with the creation and use of standard data structures (linked lists, stacks, queues, trees, etc.), dynamic memory allocation, assembly language programming concepts (in some assembly language), and typical CPU organization (registers, memory addressing, etc.).

Note that these are prerequisites, not corequisites - to succeed in SP1, you should have already passed all of these courses, or their equivalents. Taking them at the same time as SP1 is not sufficient! See me immediately if you are missing one or more of the prerequisites, or you may be dropped from SP1 without further warning!

Important note: Students who receive credit for SP1 cannot later take 4003-309 (C for C++ Programmers) for credit. If you took 4003-309 before taking SP1, you may find that the first weeks of SP1 cover familiar material; don't make the mistake of thinking that this will apply to the entire course, as we will quickly move on to other topics.

2. Books

The only required textbook for this course is Solaris Systems Programming, by Rich Teer, Prentice Hall, 2005.

Not all of the material we will cover this quarter comes from this text; you will have to depend on handouts and class notes for the other material.

The programming assignments for this course will be done in a combination of C and assembly language. Although they are not required, you may want to own a C or x86 assembly language textbook. I've had the bookstore order two optional textbooks for this course:

Pointers on C is a particularly good choice for our course, as it focuses on the lower-level aspects of C. I selected Professional Assembly Language for a similar reason: it's the only x86 textbook I've seen that uses the GNU assembler, which means that its examples use the same syntax as the assembler we're using.

3. Grades

Your final grade will be based on three components: a series of programming assignments, a midterm exam, and a final exam. The distribution between these components is:

  50% projects
  25% midterm exam
  25% final exam

3.1. Exams

Two exams will be scheduled for this course. The first is a two-hour midterm exam; the second, a two-hour non-comprehensive exam during finals week.

Currently, the best guess as to the dates of these exams are:

3.2. Projects

There will be four programming projects this quarter. All projects will be equally weighted. One will involve using assembly language alone, two will use C alone, and one will use both languages. Programming style standards for this course are based on those you've used in other courses.

Your work in this course will be done on the computers in the Distributed Systems Lab (70-3610). These are Intel-based systems running Solaris® 10, so the environment should be similar to what you have used in the main CS labs.

The DSL has no lab assistant; you get in and out by using your RIT ID card. To gain access, you must have your ID entered into the security system; to do this, see Mark Stamer (70-3441), the CS hardware technician. Please don't do this for a few days; things tend to be very hectic at the beginning of the quarter, and you will not need to use the lab immediately.

For security reasons, the DSL is behind a firewall; there is no interactive access to the lab machines from outside the lab itself, so using these machines is less convenient than using the other CS machines. The only access to the DSL from outside the lab itself is ftp access to the DSL server; from the outside world, you can connect to the server ftp dsl using an ftp command or application to move files to and from your DSL account.

The DSL machines also have USB jacks which will accept flash drives. To use a flash drive, simply insert it into one of the computer's USB jacks, and the Solaris volume manager should examine it and (if it has a file system that Solaris recognizes) automatically mount it into the UNIX® file system. The mounted drive will be found in /rmdisk/name (where name is determined by the name used when the flash drive was formatted). If there is no recognizable file system on the drive, it will not be automatically mounted.

Important: you must unmount the drive before unplugging it from the machine. To do this, run the command eject rmdisk in a shell window; when you see the next command prompt, it is safe to remove the flash drive. If you do not unmount the drive before removing it from the jack, Solaris may "lock up" and not perform any more work until you re-insert the drive or reboot the system.

At some times during the term, it may be necessary to disable the automounting of flash drives so that the USB jacks can be used to create bootable media for the interrupt handling assignment.

You can test your C projects on any CS system; however, your assembly language projects can't be tested on any non-x86 CS systems. The interrupt handling assignment can only be tested on the DSL machines, as it requires rebooting the machine to get your code running (this is frowned upon on the main-net CS machines). Of course, if you have access to an Intel machine elsewhere, you may be able to do testing of your projects there, as well.

Important note: All programming projects will be submitted for grading on the DSL machines, and therefore must work on those systems. If you choose to develop your solutions elsewhere, it is your responsibility to allow sufficient time to iron out any problems that may arise due to incompatibilities between your development system and the DSL systems. Programs that ``work on my computer at home'' but don't work on the DSL systems don't work.

Note also that the minimum acceptance test for project submissions is that they must compile and link cleanly (i.e., without fatal compilation or linking errors) when submitted with the try command. Emailed project solutions will not be accepted.

3.3. Problem Sets

In addition to the graded assignments described above, a series of ungraded problem sets and their solutions will be posted to the course home page. Their purpose is to help you gain additional experience with the concepts and techniques covered in class. Although these will not be collected or graded, I suggest you attempt to work the problems before looking at the answers, to help ensure that you understand the concepts.

4. Academic Conduct

Academic dishonesty will be dealt with in accordance with DCS and RIT policies.

5. Notes


UNIX® is a registered trademark of The Open Group.
Solaris is a trademark of Oracle and/or its affiliates.