CS 310 - Systems Programming
Last modified at 1:23 PM on 1/22/02.
General Info Schedule Lab Activities Projects Tips for Success Instructor

Course Objectives:
The objective of this course is to learn about system-specific features of a computing environment.

We will start the semester studying how the kernel of an operating system accesses I/O hardware. This will be done by programming a single-board computer with a Motorola 68000 processor. The programs will be written and compiled in C and assembly language under Linux and downloaded to and executed on the single-board computer. We will use the monitor program (TUTOR) on the single-board computer to debug the programs.

We will then move on to study the concepts of linking separately compiled modules.

Next we will study Linux processes and communication between them.


Prerequisites:
CS 250 and CS 254. It is also highly recommended that you have completed CS 251 and Math 142.

Course Materials:
Required book: Advanced Programming in the UNIX® Environment by W. Richard Stevens, Addison-Wesley, 1993. This is an older book, so some of the details may not be completely up to date. But it is a very good book for learning the concepts.

Recommended book: Linkers & Loaders by John R. Levine, Morgan Kaufmann, 2000. This book will be used in only about one-fourth of the class, and we will specifically refer to probably fewer than fifty pages in the book. On the other hand, it contains lots of information that I think is essential for every programmer to know. For example, Microsoft's DLLs are explained in this book. I will leave it up to you to decide whether or not to buy this book. I have asked the library to place a copy on two-hour reserve.

You also need to know how to develop programs under Linux or Unix, including how to design and use makefiles. I have asked the Bookstore to stock some copies of Programming with GNU Software by Loukides & Oram; O'Reilly & Associates, 1997, in case you need to freshen up your skills in this area.

Required manuals (available in the lab and in the library):
SBC68K User Manual.
MC68HC81 Dual Asynchronous Receiver/Transmitter (DUART)TM .
Other books (on reserve in the library):
Assembly Language and Systems Programming for the M68000 Family 2nd ed., by William Ford and William Topp, D. C. Heath, 1992.
Beginning Linux Programming by Richard Stones and Neil Matthew, Wrox, 1999.

Course Format:
Specific reading assignments are given in the schedule. You are responsible for knowing the material presented in class, as well as that in the assigned reading.

Weekly homework assignments will be given in lab. They are due by the beginning of your next lab period. You will be given a grade of 0%, 50%, or 100% based on completeness of the assignment. They will not be graded for correctness.

There will be three or four programming projects, which will be graded according to the guidelines in Programming Projects.

Note that lab attendance counts as part of your final grade. You are expected to attend the entire lab period1. Many students run Linux at home and work on their assignments there. (Lab attendance is still required!) Get your system working smoothly before the semester begins. You can probably get some help doing that at the North Bay Linux Users' Group.

There will be two midterm exams and a final exam. Late work is not accepted and no makeup exams will be given, except in verifiable emergencies or with at least one week prior arrangements.

University policies regarding incompletes will be strictly followed2. There is no "extra credit" available.


Grading Policies:
Lab attendance 5% Lab assignments 5% Programming projects 15%
Midterm exams (2) 40% Final exam 35%
The weighted average is rounded to the nearest tenth of a percent and converted to a letter grade according to:
    |    A    | A- | B+ |  B  | B- | C+ |  C  | C- | D+ |  D  | D- | F -->
  100        93   90   87    83   80   77    73   70   67    63   60
Current grades
1. "Class Attendance," SSU Spring 2002 Schedule of Classes, pg. 10.
2. "Incomplete Marks," SSU Spring 2002 Schedule of Classes, pg. 10.