CS520
Assembly Language Programming and Machine Organization
Fall 2005


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

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 and linkers.

If you are a student with a documented disability who will require accommodations in this course, please register with Disability Services for Students (DSS) in the Memorial Union Building, Room 118 (862-2607) for assistance in developing a plan to address your academic needs. Students who are already registered with DSS and wish to receive accommodations in this course are strongly encouraged to share their Accommodation Letter with me in a timely manner.

Tentative Schedule

  1. week of August 29

  2. week of September 5

  3. week of September 12

  4. week of September 19

  5. week of September 26

  6. week of October 3

  7. week of October 10

  8. week of October 17

  9. week of October 24

  10. week of October 31

  11. week of November 7

  12. week of November 14

  13. week of November 21

  14. week of November 28

  15. week of December 5

  16. week of December 12

Readings

The readings given in the above schedule are not required. They are intended to be supplementary to the lectures. Everything you need to know for an assignment, a quiz or an exam will be covered in lecture or recitation. However, the readings will provide a second presentation of most of the material for the course, in case you find things confusing. For most people, seeing the material twice is very helpful.

Grading

Course grades will be assigned in the following manner:

Recitation exercises will generally be completed during recitation. Occasionally, however, an exercise might be due at the beginning of recitation or a few days after recitation. Attendance at recitation is mandatory. If you cannot attend a recitation, you must make arrangements with me in advance of the recitation.

Program code reviews will be performed during the recitation immediately before the program is due. Your code should be substantially complete by the time of the review. That is, the functionality should be fully implemented, but possibly not fully tested and debugged. The grade assigned for a code review will include both the layout and documentation of the code (see below) and the level of functionality attempted so far. It is your responsibility to bring clean program listings to the code review.

The programming assignments are (with tentative due dates):

  1. Convert Unicode to and from UTF-8: due Sept 25, worth 5% of course grade.

  2. Emulate IEEE single-precision floating-point addition: due Oct 9, worth 8% of course grade.

  3. Construct a comprehensive test application for a simple garbage collector: Oct 23, worth 5% of course grade.

  4. Write a storage allocator: due Nov 6, worth 7% of course grade.

  5. Build debugging tools for a simple garbage collector: due Nov 20, worth 5% of course grade.

  6. Implement the mark and collect phases of a simple garbage collector : due Dec 4, worth 11% of course grade.

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

Each programming assignment will be worth 100 points. Programming assignments may be handed in late at a penalty of 2 points for one day late, 5 points for two days late, 10 points for three days late, 20 points for four days late, and 40 points for five days late. No program may be turned in more than 5 days late. An assignment 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 your first program review.

The midterm exam will be given during recitation, probably on Thursday, October 13. A sample midterm is available as a PDF document on the CIS machines in ~cs520/public/sample-midterm.pdf. Note, however, that this was a CS611 midterm, not a CS520 midterm.

A quiz will be given in recitation, probably on Thursday November 10.

The final exam will be comprehensive and will be given during finals week: Thursday, December 15, 1-3pm in Nesmith 329. A sample final exam is available as a PDF document on the CIS machines in ~cs520/public/sample-final.pdf. Note, however, that this was a CS611 final exam, not a CS520 final exam.

Students receiving at least 65% of the course points are guaranteed at least a C-. Students receiving at least 75% of the course points are guaranteed at least a B-. Students receiving at least 85% 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:

The purchase of these books is not required. 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 servers (turing.unh.edu, pascal.unh.edu and euler.unh.edu) are the primary computing resources for this course. You should automatically be given an account 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 a Intel IA-32 Linux machine.

Policy on Cheating

All students are expected to do their own work on all assignments. No collaboration is allowed, either with current or prior CS520/CS611 students, or anyone else. One 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.

Note that this "no collaboration" policy does not distinguish between the "giver" and the "taker". I consider both parties equally guilty.

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

Be aware that I use tools for automatic plagiarism detection that analyze both current and past assignment submissions.

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, the quiz or the final exam.


Last modified on November 28, 2005. (The only change was the Final Exam location is now specified.)

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