CSci 2021

Machine Architecture and Organization

Spring 2002

Syllabus

ORGANIZATION

Instructor:  Wei Hsu, EE/CS 6-207, 625-2013, hsu@cs.umn.edu, Office hours:  T, Th 11:00-12:00, or by appointment.  I will try to be prompt in answering email, but note that if the email requires more than a few lines in reply, it may take longer for me to get to a response.  My mail box is in the Computer Science Department Office, EE/CS 4-192. 

You may call me "Wei" -- pronounced like "Way", "Dr. Hsu", or "Professor Hsu", which ever you are comfortable with.

Teaching Assistants:  The three teaching assistants for the class, Raghuram Lanka, Murali Sangubhatla and Krishna Raghavendra Rao, also have office hours and are available via email.  See the course Web page.  We meet weekly to discuss the course, so they know what is happening and how to be of help.

ABOUT THE COURSE

Course description: CSci 2021 is the first introductory course on computer organization and computer systems. It is a required course that CS majors should take in their sophomore year. 2021 introduces students to the underlying principles by which programs are executed on a computer, providing broad coverage of processor operation and the aspects of system software such as compilers, linkers, and operating systems that are important from the programmer's perspective. It also introduces students to the organization of basic components in modern computers such as processors, hierarchical memory systems, and I/O peripherals and includes basic concepts in logic circuit design. In order to study the behavior of programs at this level, the student will be introduced to the system programming language C and to the instruction set architecture and assembly language of one processor.  CSci 2021 is a four credit course.

Course role:  CSci 2021 is a required course for computer science majors and should be taken in the sophomore year.  It provides necessary background for courses such as operating systems and compilers, and provides useful background for any course in the systems area such as networks and databases, not to mention more advanced courses in computer organization and architecture.

Goals:  The goal of CSci 2021 is to help you become a better programmer by teaching you the basic concepts underlying all computer systems.  We want you to learn what really happens when your programs run, so that when things go wrong (as they always do) you will have the intellectual tools to solve the problem.

Why do you need to understand computer systems if you do all of your programming in high level languages?  In most of computer science, we're pushed to make abstractions and stay within their frameworks.  But any abstraction ignores effects that can become critical.  As an analogy, Newtonian mechanics ignores relativistic effects.  The Newtonian abstraction is completely appropriate for bodies moving at less than 0.1c, but higher speeds require working at a greater level of detail.

Oversimplifying matters somewhat, 1901 is based on a simplified model of program execution, and 1902 builds further layers of abstraction. 2021 introduces greater detail about system behavior and operation.  This greater detail is needed for optimizing program performance, for working within the finite memory and word size of computers, and for system-level programming.

The following "realities" are some of the major areas where the abstractions we teach in 1901/1902 break down:

1. Int's are not integers, Float's are not reals.  Our finite representations of numbers have significant limitations, and because of these limitations we sometimes have to think in terms of bit-level representations.

2.  You've got to know assembly language.  Even if you never write programs in assembly, the behavior of a program cannot always be understood based purely on the abstraction of a high-level language.  Further, understanding the effects of bugs requires familiarity with the machine-level model.

3.  Memory matters.  Computer memory is not unbounded.  It must be allocated and managed.  Memory referencing errors are especially pernicious.  An erroneous updating of one object can cause a change in some logically unrelated object.  Also, the combination of caching and virtual memory provided the functionality of a uniform unbounded address space, but not the performance.

4.  There is more to performance than asymptotic complexity.  Constant factors also matter.  There are systematic ways to evaluate and improve program performance.

5.  Computers do more than execute instructions.  They also need to get data in and out, and they interact with other systems over networks.

By the end of the course you will understand these "realities" in some detail, and you will have learned skills and knowledge that will help you throughout your career.  (Adapted from syllabus of Bryant and O'Hallaron, CS213)

Prerequisites:  CSci 1902 (or CSci 3321) We assume that the student has a facility for designing algorithms for computer programs, experience with programming and debugging, and is familiar with some basic data structures, particularly arrays, stacks, and linked lists.  We also assume you have experience with either Java, C, or C++.

Text Books: 
1. R. Bryant, D. O’Hallaron, Computer Systems – A Programmer's Perspective   We are using a Beta version  The book will be published by Prentice Hall this summer.

2.  Other handouts:  Chapter 4 of the text and an appendix on logic circuits have not been completed yet.  We will be provided with the first two chapters of Mano, Computer Systems Architecture, 3d Edition, Prentice-Hall, for the logic circuit information.  We will also be supplied with Chapter 4.

3. A. Kelley, I. Pohl, C by Dissection, 4th edition, Addison Wesley, 2001.  If you already know C and/or have a good book on C, you don't need to purchase this particular C book.  It does come highly recommended.

Computer Labs:  We will be using PC's running Linux for the lab assignments.  There are 40 Linux machines in Lind 24, and 2 in EE/CS 4-204.  You must have an ITLabs account.

On-line course information:  The syllabus, tentative schedule, homework assignments, answer keys to homework and exams, handouts, supplementary notes, sample programs, etc. will be found on the course web page at http://www.itlabs.umn.edu/classes/Spring-2002/csci2021.  Please also check at least weekly for announcements.

Class format:  The lecture part of the class will include some individual and group activities, since education research shows that you learn better when you actually do something with the material besides sitting here taking notes.

The recitations will be used for answering questions on homework and review for exams, as usual.  They will also be used to introduce material on C/assembly  programming, and sometimes other material.  They will sometimes include some group exercises and in-class assignments..

KEEPING SCORE

Exams:  There will be two exams during the semester and a final exam.  The final is scheduled for Thursday,May 16, 4:00-6:00pm.  All exams will be open book, open notes.  The exams are worth 50% of your grade. 

Assignments:  There will be reading assignments as we go along.  I will give one every day, and expect you to be prepared for class. There will be 6 assignments, a mixture of programming and written, that will be collected and graded.  Most of these you will be able to do in groups of 2.  Form these groups early and stay with the group through the semester.  If I want you to do an assignment individually, I will tell you. Assignments will also be given for practice and not collected.

Grading:  Grades are criterion based, not normed or curved.  You can all get A's, or all get C's.  Your fellow students are not enemies - so talk to each other. Every effort will be made to return graded homework and exams within a week of collecting them.
 
 
How Much Each Exam & Assignment Counts
Final Exam 20%
Two exams, 15% each 30%
6   Assignments
Varying weights.
50 %
Total 100%

Final grades will be assigned based on the following scale:

93.0% -- 100.0% A
90.0% -- <93.0% A-
87.0% -- <90.0% B+
83.0% -- <87.0% B
80.0% -- <83.0% B-
75.0% -- <80.0% C+
70.0% -- <75.0% C
65.0% -- <70.0% C-
60.0% -- <65.0% D+
50.0% -- <60.0% D
0% -- <50.0% F

For information on the meaning of each grade, please refer to page 29 of the 2000-2002 Undergraduate Catalog.

CLASS POLICIES

Make-up exams:  Please note the dates of the exams in the schedule carefully, as makeup's will be given only under extreme circumstances.  Examples include illness (provide documentation.), an approved University event (athletic, ROTC, etc.), or family emergency (provide documentation.)  If you have questions about whether you qualify, ask.  Make-ups for the second and third exams will be given at the same time near the end of the course.

Late homework:  All assignments are due at the beginning of class on the day noted in the schedule.  Do not miss class to finish an assignment.  Late assignments will be accepted with a penalty of 15% of the amount possible per week day.  A late assignment must be turned in by the beginning of class on Wednesday following the day it was due.  An assignment turned in after the first 10 minutes of class is already one day late.  If you have an emergency or left the assignment in your room, talk to me immediately before or after class.

Regrading:  Any regrading of written homework assignments, programming assignments, or exams must be done within ONE week after the item in question is returned. Do not wait until the end of semester, and decide you need a few more points.

Please keep all returned graded assignments and exams with you until the end of the semester.

Academic honesty:  Cheaters are low life forms, and will not be tolerated.

Attendance:  Come to class.  We know who is not coming.  It is not reasonable to use the time of the instructor or the TAs to fill you in on what you missed by skipping class.

Your time:  You are responsible for choosing a load (school, work, social life, ...) that you can handle.  If you overload yourself, you increase the likelihood that your grades will go down.  University policy is that students should plan to spend at least 8 hours per week outside of class and 4 hours in class for a four credit class.

YOUR PART

Come to class regularly and be prepared.  In any case, it is your responsibility to know what has happened in class.

The goal is not memorization, it is learning skills and concepts and trying to integrate them.  Practice skills and work to understand concepts and how they fit together.

Form study groups of three to five people to discuss course material and homework.

Start your homework early enough that you can get help and still turn it in on time.

Read the directions for submitting homework and follow them. There is a reason for each part of the directions.

Pick up your graded homework and exams.  They contain important feedback.

Check the class web page at least weekly.

Check your grades on GRIT at least after each exam.

UNIVERSITY, INSTITUTE OF TECHNOLOGY, AND COMPUTER SCIENCE POLICIES

Incompletes: Incompletes will be given only in very rare instances when an unforeseeable event causes a student who has completed all the course work to date to be unable to complete a small portion of the work (typically the final assignment or exam). Incompletes will not be awarded for foreseeable events including a heavy course load or a poorer-than-expected performance. Verifiable documentation must be provided for the incomplete to be granted, and arrangements for the incomplete should be made as soon as such an unforeseeable event is apparent.

Withdraws:  You are free to withdraw from the class up to the end of the eighth week of classes. Withdrawing thereafter is up to the college, and is not automatic. If you are not doing as well as you had hoped in the course, and are considering withdrawing, please do so by the end of the eighth week.

Scholastic conduct:  See the policy on page 262 of the 2000-2002 Undergraduate Catalog.  Although you are free to discuss assignments with others, the work you turn in for individual assignments must be your own. This means that on written problems you must come up with your own solution; on programming problems, you must design, implement, debug, and test the program on your own. The amount of collaboration allowed on any group assignments will be discussed in class. In addition, copying, assisting, or collaborating on an exam is cheating. Changing your answer on an exam after it is returned and turning it back for regrading is cheating.  Cheating is a grave matter, and can result in failing the course and/or more severe disciplinary action.

DisabilitiesIf you have a documented disability and require accommodations, please inform the instructor during the first week of classes.