CIS5220 - Computer Organization


Aug. 22-Dec 16, 2005, Wed, 5:15-7:45 PM, Crawford Science Tower room 523.


This course gives an overview of computer organization including operating system fundamentals, hardware (CPU, memory, disk, peripherals), data representation, and digital logic.


Matt Mahoney, or


Textbook: The Architecture of Computer Hardware and Systems Software - An Information Technology Approach, 3rd Ed., Irv Englander, chapters 1-12.

Course notes

x86 assembly language notes
C++ notes Introduction to C++ Reference

Grading Policy

50% homework and 50% exams. Programming assignments will be submitted by email only. There is a late penalty of 20% per day including non-class days, weekends and holidays.

There will be 4 exams including the final. Your lowest grade is dropped. The other 3 exams are weighted equally. There are no makeup exams for any reason. Exams are open book and open notes. Exams will usually be given in the first hour of class before break so that we can go over them afterwards.

Grade = (sum of homework)/2 + (sum of best 3 exams)/6. 90-100=A, 80-89=B, 70-79=C, 60-69=D, 0-59=F.

Attendance is not mandatory. However you are responsible for (and will be tested on) all material covered in class.

Students are expected to do their own work (no group projects) and to cite all outside sources, including help received from other students. You are responsible for knowing the policy on academic honesty, covered in the student handbook, p. 33.

Conflict Resolution

I normally answer email within 24 hours. In case of a conflict that cannot be resolved with me, resolution policy is covered in the student handbook, p. 55. The CIS program chair is Dr. Rhoda Baggs Koss, 321-223-4821, rkoss (at) Her office is on the 5th floor of the Crawford Science Tower.

Mailing List

Within 24 hours after the first class you should receive an email notifying you that you have been added to the fit-cis5220 mailing list. If you do not, then email me to request an invitation. You are responsible for all material posted to the list, such as homework assignments, test announcements, and additional course material. Once you are a member, you are encouraged to post questions (or answers) to the class at If you have a Google account you may also access the list at the members-only website


Homework 1

Due Fri. Sept. 9, midnight (15 pts). Write a program (any language) to input two 32-bit signed integers, a and b, and print a, b, a+b, a-b, a*b, and a/b in decimal, hexadecimal and binary. Describe in your source code comments:

Homework 2

Due Fri. Sept. 23, midnight (15 pts). This assignment is to encrypt and decrypt files using ROT13. This simple (but not secure) encryption is sometimes used on USENET to encrypt jokes, answers to puzzles, and such. ROT13 works by replacing letters in the upper row (see table below) with those in the lower row, and vice versa.
Upper case letters remain upper case, and lower case remains lower case. All other characters are unchanged. For example:
  Hello World!
  Uryyb Jbeyq!
In the ASCII character set, the rule is to add 13 to A-M or a-m, and to subtract 13 from N-Z or n-z. If you apply this rule a second time, you get back the original text.

For homework, write a program (any language) that reads a text file (you may assume it is ASCII) and creates a second file which is the ROT13 encryption of the input file. If the input file is already ROT13 encrypted, then the output will be the original text.

As usual, comment your code to describe what the program does, so that someone who is unfamiliar with this assignment will know what command to type to run the program. In particular, does your program prompt the user for the names of the input and output files, or do you type them on the command line (and in which order)? Don't "hard code" the file names. Let the user pick them.

Exam Solutions

Fall 2005
Exam 1