General Info | Schedule | Lab Activities | Projects | Tips for Success | Instructor |
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.
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.Other books (on reserve in the library):
• MC68HC81 Dual Asynchronous Receiver/Transmitter (DUART)TM .
• 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.
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.
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 |