CS 250 - Computer Organization: Software

Last modified at 1:49 PM on 1/25/02.
General Info Schedule Lab Activities Projects Tips for Success Instructor
Course Objectives:
The primary objective of this course is to learn how software controls the hardware. We will be programming an Intel processor in assembly language using the Linux operating system. We will use C/C++ as our example higher level language in order to achieve this objective. The course is not intended to provide proficiency in writing programs in assembly language, but to explain how high-level language constructs are implemented at the machine level.

Prerequisites:
CS 150.
The material in CS 251 and Math 142 will also help your understanding of this class.

Course Materials:
I am writing a manuscript that will serve as the main "textbook" for this class. The manuscript will be available in the SSU Bookstore shortly before classes begin in the Spring. (See note.)

You will learn how to develop programs under Linux, including how to design and use makefiles. I have asked the SSU Bookstore to provide Programming with GNU Software by Loukides & Oram; O'Reilly & Associates, 1997, as a "required" text for this class. If you are an experienced Linux (or Unix) programmer, you may already know the material in this book. (Perhaps you learned it from this book!)

In addition, you will find many links to lots of information on the web in my and the CS Department's web pages. Make sure that you explore these resources and find the ones that work best for you.

We will do all of our programming under Linux. If you are new to Linux/Unix, Learning the UNIX Operating System by Peek, Todino, & Strang; O'Reilly & Associates, 1998, is intended for those who have never used Unix. It is probably a good choice if you have never used a command line operating system interface (e.g., MS-DOS, Unix). You will probably outgrow it quickly, but it's cheap.

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.

You should also become familiar with the CS Department's website. For example, under "Other" you will find "Useful Sites." And amongst the "Useful Sites" you will find a "Linux Tutorial." I have found this to be a particularly good tutorial.


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 five or six 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.

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.