CS611
Assembly Language Programming and Machine Organization
Spring 1999


Instructor: P. Hatcher
Office: Kingsbury M208
Phone: 862-3778
E-mail: pjh@cs.unh.edu
Office Hours: MF 1:30-2:00pm, MF 3:10-3:30pm, W 11:00am-12:00noon, or by appointment.

Teaching Assistant: Keith McGuigan
Office: Kingsbury 317
E-mail: kamg@cs.unh.edu
Office Hours: Tu 12:00-2:00pm, Th 3:30-5:00pm.

The prerequisite for this course is CS410 or CS411 or CS416.

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.

Grading

The course requirements are to complete seven programming assignments, take a midterm exam, and take a comprehensive final exam.

The programming assignments are (with tentative due dates):

  1. C bit manipulation and I/O: due Jan 31.

  2. Sorting using Alpha assembly language: due Feb 14.

  3. Simple thread library for Alpha: due Feb 28.

  4. Implement sim611 assembler: due Mar 28.

  5. Implement sim611 linker: due Apr 11.

  6. Emulate sim611 floating point instructions using sim611 assembly language: due Apr 25.

  7. Implement an out-of-core Jacobi calculation: due May 9.

The programming assignments must be done in C. There are three exceptions: program 2 must be done using Alpha assembler, program 3 will require some code written using Alpha assembler, and program 6 must be done using sim611 assembler.

Programming assignments may be handed in late at a penalty of 5% per day up to one week late. (There is one exception: no submissions will be accepted for the last program, program 7, after Thursday May 13 at 8am.) 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 will be public but others will be hidden, so careful testing will be required.

Points may be deducted from your programming assignment grade if your work is not adequately documented and structured. If we can't easily read and understand your program, you may lose points! The following are some guidelines:

The midterm exam will be given during normal class meeting times probably early in March.

The final exam will be comprehensive and will be given on Friday May 14 from 3:30-5:30pm. Mark your calendar now!

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:

Note that two of the books are available on-line. You can also download Postscript for the DEC Unix Assembly Language Programmer's Guide. Go to the DEC home page and search for the document's order number, AA-PS31C-TE. (In addition, a nice compact bound copy can be ordered for $10 from DEC at 1-800-344-4825.)

I do not think you need to purchase any 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 any of the books on reserve, I suggest Quantum Books or Amazon.com Books.

Computer Accounts

alberti.unh.edu is the primary computing resource for this course. You should automatically be given accounts 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 alberti.

Policy on Cheating

All students are expected to do their own work on the programming assignments. No collaboration is allowed. 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.

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.


Last modified on January 18, 1999.

Comments and questions should be directed to pjh@cs.unh.edu