CS611
Assembly Language Programming and Machine Organization
Fall 2002


Instructor: P. Hatcher
Office: Kingsbury M111
Phone: 862-2678
E-mail: hatcher@unh.edu
Office Hours: MWF 9:30-10am, MWF 11:10-11:40am, MWF 2:10-2:40pm, or by appointment (send e-mail to request an appointment)

Teaching Assistant: Li Ye
Office: Morse 207
E-mail: lye@cs.unh.edu
Office Hours: Tue 10am-12noon, Thur 3:30-5:30pm

The prerequisite for this course is CS515.

The key goals for the course are to understand program and data representation, to become familiar with assembly language and machine language programming, to understand the impact on software of basic computer architecture concepts such as the memory hierarchy, and to study fundamental system software such as assemblers, linkers and debuggers.

An outline of the material covered by this course is given here.

Grading

The course requirements are to complete seven programming assignments, take a midterm exam, and take a final exam. The final exam will be a take-home exam and may include programming.

The programming assignments are (with tentative due dates):

  1. Convert IAS 40-bit binary words to IAS binary-decimal output: due Sep 15.

  2. Write a disassembler for IAS object files: due Sep 29.

  3. Write an IAS assembly program: due Oct 13.

  4. Implement IAS 40-bit integer division using IEEE double precision: due Oct 27.

  5. Perform linking of IAS object code: due Nov 10.

  6. Implement IAS threads: due Nov 24.

  7. Implement an IAS file system: due Dec 15.

The programming assignments must be done in C or IAS assembler.

Programming assignments may be handed in late at a penalty of 5 points per day up to one week late. A program is not considered late unless turned in after 8am on the day after the due date.

The grading of programming assignments will be based primarily upon demonstrated correct functionality. That is, you will be awarded points for what your program actually does. Some test cases may be public but others will be hidden, so careful testing will be required.

Points will be deducted from your programming assignment grade if your work is not adequately documented and structured. You must follow the following guidelines:

In addition, lines should not exceed 80 characters when printed using a tabstop width of 8. It is best to not put tabs in your files. Have your editor automatically expand tabs into spaces. It is also best to use a small indentation amount, like 2.

If you have any questions about these rules for program layout, see me in advance, not after I turn your graded assignment back to you.

The midterm exam will be given during a normal class meeting, probably on Friday, October 18.

The final exam will be a take-home exam and will be due at 3:30pm on Wednesday December 18. The exam requires that you complete a mini-project. The mini-projects will require either writing a program or doing some reading followed by writing a short report (2-3 pages). You must choose a mini-project from this list of possibilities. You must inform me of your choice by sending me e-mail prior to 5pm on Monday November 18. You may not change your choice after that time. If you do not make a choice, I will make a choice for you. Note that you will need to work on your final exam while you are completing programs 6 and 7.

Students receiving at least 68% of the course points are guaranteed at least a C. Students receiving at least 78% of the course points are guaranteed at least a B. Students receiving at least 88% of the course points are guaranteed at least an A.

Textbooks

There is no required textbook for this course.

On reserve in the Kingsbury library:

I do not think you need to purchase either of the above books. Access to the copies on reserve in the library should be sufficient. However, if you want to order your own copies of either of the books on reserve, I suggest Quantum Books or Amazon.com Books.

Computer Accounts

The UNH CIS Linux server (turing.unh.edu) is the primary computing resource for this course. You should automatically be given an account on this machine. During the semester you may use any other machines that you have access to, but for grading purposes your programs must execute on a Intel IA-32 Linux machine.

Policy on Cheating

All students are expected to do their own work on the programming assignments. No collaboration is allowed, either with current or prior CS611 students. A general rule to follow is that you may discuss your programs with other students at the concept level but never at the coding level. If you are at all unclear about this general rule, don't discuss your programs with other students at all.

In addition, submitting programs that are based upon code retrieved from Internet sources is also explicitly forbidden and will be considered "cheating".

Because so much of your course grade is based upon the programming assignments, I will treat cases of cheating severely. If caught cheating on an assignment, you can expect to (at least) receive a failing grade for the course.

In addition, of course, collaboration is also not allowed on the midterm or final exams. Since the final exam is a take-home exam, you should treat it like a programming assignment (see above).


Last modified on November 25, 2002.

Comments and questions should be directed to hatcher@unh.edu