CS611
Assembly Language Programming and Machine Organization
Fall 2000


Instructor: P. Hatcher
Office: Kingsbury M202
Phone: 862-2678
E-mail: pjh@cs.unh.edu
Office Hours: MWF 9:30-10am, MWF 11:10am-12noon, or by appointment.

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 six programming assignments, take a midterm exam, and prepare and defend a programming portfolio.

The programming assignments are (with tentative due dates):

  1. Translate Unicode to/from UTF-8: due Sep 25.

  2. Emulate IEEE Floating Point addition: due Oct 9.

  3. Compaq Alpha subset simulator: due Oct 23.

  4. Simple thread library for Alpha: due Nov 6.

  5. Dynamic linking: due Nov 20.

  6. Simple file system: due Dec 11.

The programming assignments must be done in C. There are only two exceptions: programs 4 and 5 may require some code written using Alpha assembler.

Programming assignments may be handed in late at a penalty of 5% 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 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 the normal class meeting on Monday Oct 30.

The programming portfolio provides an opportunity for you to demonstrate by the end of the course that you have mastered the concepts being explored by the programming assignments. A portfolio simply consists of your source code for the six programming assignments. A portfolio review will be conducted one-on-one with me during either the week of Dec 11 or the week of Dec 18. A portfolio review will take roughly 30 minutes.

The portfolio process will allow you an opportunity to have the first five assignments evaluated a second time. (Since program 6 is due on Dec 11, there simply isn't time to re-evaluate that asignment.) You can fix program errors detected during the initial grading, update deficient documentation or program structure, or even extend your solution to a higher assignment level. Each assignment may be submitted for a second evaluation once and the second submission must occur prior to the final portfolio review.

The final portfolio review is an oral examination of the course concepts utilized by your program submissions. Come prepared to discuss these concepts as well as to do a self-evaluation of your assignment submission. What went wrong? What went right? What would you do differently if you were to start over now? Since time is limited we may not review all the assignments, but may rather review a subset of the assignments (possibly including program 6) that I will choose at the time of the portfolio review.

The grading for the portfolio will begin with the best grade you receive for each assignment (either your original grade if you do not re-submit, or your second evaluation grade). The testing of concepts can not raise this grade. In essence you are defending the programming grades you received. If your conceptual understanding is weak, points will be subtracted from your programming portfolio grade.

The portfolio grade consists of 5% for each of the first five programming assignments (i.e. 5 @ 5% = 25% of the course grade). Program 6 may also be covered by the portfolio review but, if conceptual shortcomings are detected, points will be deducted from your program 6 grade itself.

Just to be clear: the programming assignment portion of the course grade is not affected by the second evaluation of assignments or by the portfolio review. The programming assignment portion of the grade is strictly determined by your submissions on the original assignment due dates. However, the programming portfolio portion of the grade is determined both by potential second submissions and by the portfolio review.

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 PDF for the Tru64 Unix Assembly Language Programmer's Guide here.

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

The UNH CIS Alpha servers (alberti.unh.edu, hypatia.unh.edu and hopper.unh.edu) are the primary computing resource for this course. You should automatically be given accounts on these machines. During the semester you may use any other machines that you have access to, but for grading purposes your programs must execute on the Alphas.

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 November 19, 2000.

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