University of Minnesota
Machine Architecture and Organization (sec 010)

Time and location

Lectures are held Mondays, Wednesdays, and Fridays from 3:35 to 4:25pm, in room B75 of Amundson Hall. It's right by the underground connection from Keller Hall. The Schedule page linked from the lists the dates of all the lecture classes.

Labs are held Wednesdays in 1-250 Keller Hall. The list of the individual lab sections is on the Labs page linked to the left.

Following the university-wide standard schedule, the final exam will be held on Monday, December 17th, from 8:00am to 10:00am. The final exam location will be announced after it has been officially scheduled (often it's in the same room as lectures).


Instructor: Stephen McCamant
Office: 4-225E Keller Hall
Home page:

There are also several teaching assistants. Information about the TAs and about all the staff's office hours are on the Staff page linked on the left.

Where to send your electronic questions? If it's something everyone could benefit from the answer to, use the Moodle forums. For general course questions that should be private, please use the csci2021f18-010-help at umn dot edu mailing list, which goes to all the course staff.


CSci 1902/1913/1933 or instructor's permission


This course will introduce you to the basic concepts underlying all computer systems and prepare you for in-depth study in any area of computer science. This is the first course on computer organization and computer systems. It provides 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 you to the organization of basic components in modern computers such as processors, hierarchical memory systems, and includes basic concepts in logic circuit design.

Why do you need this course if you have already taken the introductory programming sequence? Oversimplifying matters somewhat, CSCI 1113/1133 is based on a simplified model of program execution, and CSCI 1913/1933 builds further layers of abstraction. CSCI 2021 looks "under the hood", and introduces greater detail about system behavior and operation.

Note that this is not primarily an assembly language programming course. You'll get some practice reading and writing assembly language during the course, but we'll use it as a tool to understand how the machine works, not as a language for its own sake.


  • Required Textbook: R. Bryant, D. O'Hallaron. Computer Systems: A Programmer's Perspective, third edition. Prentice Hall, 2016. (textbook web page). We recommend that you get a paper version of the textbook; in addition to the DRM restrictions on the eBook, only paper books can be used during tests.
  • Supplemental Readings: You'll find it helpful to get more details about the C language that are given in the main textbook, especially if you don't have much previous experience with C or C++. There are a variety of books and free resources available. As a free option, we've recommended chapters from The GNU C Programming Tutorial, edition 4.1, by Mark Burgess and Ron Hale-Evans. The PDF version of the tutorial is available here, and the Texinfo source is here. The tutorial is a bit out-of-date or unpolished in places, but it has a pretty good pace and topic coverage for our purposes. Look for a Moodle forum thread with errata.

Course Work and Grading

Item Fraction of Grade
Lab attendance (12/15)5%
Written exercises15%
Hands-on assignments20%
Midterm 115%
Midterm 215%
Final Exam30%

Responsibilities and Recommendations

  • Read this syllabus and know the class policies outlined in it.
  • Come to class regularly and be prepared to participate. Slides on the class webpage may be incomplete, and reading them isn't a substitute for attending lectures.
  • Turn in individual and original work. This means that what you turn in must be your own work, and you must cite outside sources if you used any.
  • Start your assignments early enough that you can get help and still turn them in on time.
  • Read the directions for submitting homework and follow them. It is your responsibility to submit the assignments on time.
  • Pick up your graded homework and exams. They contain important feedback.
  • Check the class web page regularly for announcements or changes.
  • Keep up with the reading. Students generally find that they get much more out of lectures when they have already seen material introduced in readings.
  • Do the homework exercises. The exercises are provided as a way of reinforcing the lecture material and allowing you to practice what has been learned in class. You will notice that they are similar in style to the questions that will appear on exams.
  • Do not leave things to the last minute. The assignments will be challenging. Leaving them to the last possible minute is a recipe for various kinds of disaster. Starting working on assignments as soon as they are released, rather than letting material go stale. Computers crash, files are lost, Murphy's Law is continually reinforced.
  • Ask questions. We are here to help you learn, but we cannot read your mind. If a concept is not clear to you, ask a question sooner rather than later. If there is not sufficient time in class, additional time can be arranged to go over a topic until you are comfortable.

Course Policies:

  • Program in C: The labs and hands-on assignments will involve reading and writing code in C. If you've previously worked with C++ or Java, you'll find many aspects of C familiar, but we'll be covering details of things like numeric operations and pointers that may not have been emphasized in previous courses. There won't be time in class to teach every aspect of C, and teaching C itself is not the main point of the course: you'll need to build your familiarity with it and look for other resources as you have questions.
  • Submission and Late submission Policy: Hands-on assignments are due at 11:55pm (i.e., just before midnight) on the date specified on the course schedule, and are turned in electronically with Moodle. Written exercise sets are turned in on paper, and due at the beginning of lecture on the day specified on the course schedule. We strongly recommend that you type up your homework assignments and turn in printouts, rather than hand writing. Late assignments submitted within 24 hours after the deadline will receive a reduction of 15% of the maximum possible score, and no credit is available after 24 hours. (Other than excused absences such as illness.) Late exercise sets should be handed in at the instructor's office (slip them under the door if it's closed).
  • Lab Access: We will be using PCs running Linux maintained by CSELabs for the lab activities and hands-on assignments, and thus you must have a CSELabs account. We recommend using CSELabs systems for hands-on assignments, but you can use any of the CSELabs open Linux labs, or access CSELabs machines remotely via FastX (VOLE) or SSH.
  • Appealing: After each midterm or assignment is graded, we will post a message on the class forum giving a time period (typically seven calendar days) during which we will consider re-grading requests. The message may specify particular staff to see about re-grades. If you are not satisfied, you can then appeal to the instructor. Be aware that we will generally regrade an entire exam or assignment, so the net change in your grade could be either positive or negative.
  • Incomplete: Grades of incomplete will be given only when a student who has SUCCESSFULLY completed all the hands-on assignments and at least one exam and is unable to finish the final exam for reasons beyond their control such as a medical emergency.
  • Missed exams: There will be no make-up exams. If you miss one midterm exam with a valid permission/excuse, it will be omitted from the computation of you grade, increasing the weight of the final exam to compensate. For example, if you miss a midterm that corresponds to 15% of the total grades, you final exam is worth an additional 15% of your final grade. Any additional or unexcused missed exams will receive a score of zero.
  • Final Grade: To compute final grades in the course, we'll start by computing a numeric average using the percentages mentioned above. If your numeric score is at least 85%, 72%, or 60%, your letter grade will be at least A-, B-, or C- respectively. We may also apply a curve, to help improve the consistency of grades between different offerings of the course. The curve will apply only in students' favor (i.e., increasing your final letter grade). If we accidentally make the assignments too hard, the curve will make sure we don't fail everyone, but if we accidentally make the assignments too easy, or everyone just does better than usual, it won't stop everyone from getting As. But if student performance is similar to previous years, we expect to have a similar distribution of grades as previous years. Historically the average grade has been some kind of B; only the best students who show consistent mastery of everything get As, but A- is more common, there are lots of Bs and Cs, and it's hard to get an F if you keep up with the material and submit the assignments on time.
  • Open book exams All exams will be open book. You are not expected to memorize obscure details; we'll try to design the tests so that if you've keeping up in class, all the information you need is included in the test. You may not use calculators, phones, or other electronics. Note that this means electronic books are not allowed. You can bring any books, handwritten notes, photocopies, or printouts.
  • We take cheating very seriously.

    You must do your own work and cite sources as appropriate. Failing to do so is scholastic dishonesty. Scholastic dishonesty includes, but is not limited to: plagiarizing; cheating on assignments or examinations; engaging in unauthorized collaboration on academic work; taking, acquiring, or using test materials without faculty permission; submitting false or incomplete records of academic achievement; acting alone or in cooperation with another to falsify records or to obtain dishonestly grades, honors, awards, or professional endorsement; altering, forging, or misusing a University academic record; or fabricating or falsifying data, research procedures, or data analysis. A student found responsible for scholastic dishonesty will at a minimum receive a grade of 0 for the assignment in question and be reported to the campus-wide Office for Community Standards (OCS). More serious offenses will receive a grade of F (or N) for the course and be subject to additional sanctions from the University. You should also read the CS&E department's department-wide academic conduct policies and this page about academic conduct in computer science.

    On written exercises and hands-on assignments, it is permissible to refer to public external sources such as books, websites or software, as long as you cite external sources that contributed to your solution. However we have generally tried to design assignments so that searching for external resources is not a necessary or efficient strategy. So we recommend you spend your time thinking about assignments on your own using in-class resources.

    We would encourage you to discuss the concepts covered in class with other students, and to help each other understand what assignments are asking for and how to use the code we provide. During lab activities, which are graded only by attendance, we encourage you to collaborate in ways that help everyone learn from the activity. But written exercises and hands-on assignments must be your own individual work: you must not share information as a substitute for each student coming to their own understanding and producing their own solution. Sharing code or written answers to assignments is never allowed.

PAL: The SMART Learning Commons will be facilitating PAL peer-assisted learning sessions focusing on CSci 2021, starting during the second week of the semester:

Peer SessionDayBeginsTimeLocation
PAL CSCI 2021Mon9/102:30-3:20Akerman 215
PAL CSCI 2021Wed9/121:25-2:15Akerman 227

Other Applicable Policies: There are a number of other University-wide policies that apply to this course which you should be familiar with. This list is an abridged summary of longer policies which you can find linked from a University-wide page:

  • Students are required to abide by the Student Conduct Code, which among other things prohibits disruptive classroom conduct.
  • Personal electronic devices should be used with caution in the classroom lest they interfere with your or other students' learning.
  • Students will not be penalized for absence during the semester due to unavoidable or legitimate circumstances. Such circumstances include verified illness, participation in intercollegiate athletic events, subpoenas, jury duty, military service, bereavement, and religious observances. The requirement of verification for absences due to illness is waived for a single episode absence that did not require professional treatment, and did not lead to missing an important in-class event such as an exam.
  • The University considers that accepting compensation for taking and distributing classroom notes violates shared norms and standards of the academic community.
  • Sexual harassment is not acceptable in the University setting.
  • The University provides equal access to and opportunity in its programs and facilities, without regard to race, color, creed, religion, national origin, gender, age, marital status, disability, public assistance status, veteran status, sexual orientation, gender identity, or gender expression.
  • The University of Minnesota is committed to providing equitable access to learning opportunities for all students, including making reasonable accommodations. If you have, or think you may have, a disability that might affect your participation in class please contact the Disability Services office. If you are registered with DS and have a current letter requesting reasonable accommodations, please contact your instructor as early in the semester as possible to discuss how the accommodations will be applied in the course.
  • As a student you may experience a range of mental health concerns or stressful events which may interfere with learning. You can learn more about the broad range of confidential mental health services available on campus via the Student Mental Health website.
  • Within the scope and content of the course as defined by the instructor, academic freedom includes the freedom to discuss relevant matters in the classroom and conduct relevant research. Students are free to take reasoned exception to the views offered in any course of study and to reserve judgment about matters of opinion, but they are responsible for learning the content of any course of study for which they are enrolled. (Adapted from the AAUP Joint Statement on Rights and Freedoms of Students.)