Course Information

CS221, Computing Systems and Assembly Language

Spring, 2010


Professor Lisa Ballesteros, 220 Clapp, 538-2421


Office Hours: M 9-10, Tu 3:15-4:30, Th 3:15-4:30, or by appointment


TA: Cathy Zhang


TA hours: Sunday 7-9pm, Tuesday 7-9 pm; Location will typically be in Clapp 201 and 202 unless otherwise specified.


Meeting times:  Lectures: T Th 8:35-9:50 in Kendade 203.  4th hour, Wed. 3:15- 4:05 Clapp 402.


Tentative Schedule


Course Objectives


From the course catalog:  This course looks at the inner workings of a computer and computer systems. It is an introduction to computer architecture. Specific topics include assembly language programming, memory, and I/O issues.


In this course, you will gain understanding of:


          architecture of modern computer systems

          how various computational tasks are carried out at machine level

          Become a better programmer by learning the basic concepts underlying all computing systems


Prerequisites:  CS 101 and CS102


Textbook: Computer Organization and Design, The Hardware/Software Interface, Fourth Edition (Elsevier, ISBN 9780123744937) by Patterson and Hennessy. This is available from Odyssey Books (and elsewhere).  You must use the 4th edition as it is significantly different from earlier versions.  The majority of the readings and assignments will come from this text.  Some of the readings will be assigned from the following:


A Programmerís View of Computer Architecture, Goodman and Miller. (On reserve in the library)


 Art of Assembly Language Programming  (On-line and linked to the course webpage on Ella)



Course Webpage: accessed via Ella at


Note: Everything on the syllabus and schedule is subject to change.  Changes will be announced in lecture and updated online.  Check the online schedule regularly for updates.




Class participation:                                         5%

Short exercises/Quizzes:                             15%

Exam1:                                                                       10%

Exam 2:                                                                      10%

Final:                                                                           10%

Labs/Programming assignments:         50%





You are expected to attend lecture and participate in discussions.  Lectures will assume you are familiar with the reading.  Most lectures will include a short assignment due at the start of the next class.  No late submissions of these assignments will be accepted as they will typically be discussed in class on the due date.  Announcements made during normal class meetings are official communications for this course. Consequently, absence is no excuse for failure to act in accordance with class announcements.  If you miss class, talk with your classmates to find out what you missed.


Working on Assignments:


All assignments submitted for grading are to be done independently, unless specified by the instructor as a group assignment.  All assignments should be typed, I will accept handwritten assignments if they are extremely neat and legible.



There are no pre-scheduled lab periods for this class, but expect to spend a significant amount of time working in the lab.  You will have lab assignments roughly each week, with a larger project due at the end of the semester.  We will typically use the 4th hour slot to discuss lab assignments.  Course software is loaded on the PCs in Clapp 202 and the hardware weíll use is stored in Clapp 201.  Youíll need one-card access to both rooms.  If you do not have a one-card, you can get one at the Auxillary Services office, 109 Central Services (building is behind Blanchard Campus Center, next to Ciruti).


All programming assignments are to be individual work unless otherwise specified and are graded on the completeness and correctness of the program results and answers to any accompanying questions.  Follow instructions exactly.  For example if an assignment tells you not to change the order in which statements are given, then donít.  Programs that do not generate any correct results will rarely get more than 60%.  Comments in your code may help in determining partial credit when your solution is not completely correct. 


Late Assignments:

Lab/programming assignments are due on the dates specified.   Late assignments are penalized 1.08h%, where h is the number of hours late.  Extensions will only be given under extreme circumstances and only after arrangements have been made with me in advance.  Bring a USB drive with you to the laboratory in order to save project files as this protects you in the event that the network goes down and your home directory cannot be accessed.  Inability to access your account is not an acceptable excuse for not finishing an assignment.


It is extremely important to keep up to date in this class.  The lectures and labs are integral parts of this course.  In order to understand the material covered in a given day, it is important that you understand the material and concepts covered on previous days.  The most successful approach to this course is to work regularly on readings and assignments.  Donít put things off until you feel pressured by a deadline as problem solving typically takes longer than you expect it will.  If you get behind, donít wait to get help.  Ask questions in class and come to office hours.


If you have any problems, concerns, or issues you would like to discuss, come to office hours or contact me via email to make an appointment.  I am always available during office hours and am happy to try to schedule appointments outside these times when necessary.  Under NO circumstances is it acceptable to call me at home.  I check email regularly.



Academic Honesty


Copying any assignment or any portion of an assignment whether homework, exam, lab, or programming project with or without the authorís permission is not permitted.


A student submitting any work not entirely her/his own violates the Honor Code.  The penalty for such a violation is a zero on the assignment.  In accordance with the student handbook, all such violations will be reported to the Dean of Students.


A comment about working together:


I have no problem with students discussing concepts related to homework and programming assignments.  Discussion is an important aspect of learning.  However, there is a fine line between discussing a concept and solving a problem together.  It is not O.K. to write programs together and it is not O.K. to write homework assignments together unless it is specified as a group assignment.  You may discuss assignments at a high level, but the actual solution and the write-up or coding of that solution must be done independently.  All of your resources for solving homework or programming problems must be cited.  This means that if you use other books or reference materials to solve a problem, you must indicate the name of the reference used and the page on which the solution was found.  It is not OK to copy code from any resource for any assignment.  If you work in a study group, the names of your study partners must be included on all assignments.  Failing to appropriately cite any and all resources used to complete an assignment is a violation of the honor code.


What is cheating?


          Submitting a solution to any assignment that was not written or typed entirely by you.  Group assignments, when given, may be solved and written only by the members of your group.


          Sharing code, written assignments, any electronic files, or written files: either by copying, retyping, looking at, or supplying a copy to another person.



          Allowing someone else to turn in your work as his or her own.  Be sure to store your work in protected directories and remove any printouts promptly from printers.





What is not cheating?


          Clarifying ambiguities or vague points in class handouts or textbooks.