Last Updated: 2020-01-15 Wed 10:16

CSCI 2021: Machine Architecture and Organization

University of Minnesota

4 credits, Spring 2020

Table of Contents

1 Basic Information

1.1 Catalog Description

Introduction to hardware/software components of computer system. Data representation, boolean algebra, machine-level programs, instruction set architecture, processor organization, memory hierarchy, virtual memory, compiling, linking. Programming in C.

1.2 Prerequisites

Grade of C or better in CSCI 1913 or 1933 or instructor consent.

It is presumed that students will have the equivalent of 1 year of college-level programming in some high-level language such as Python or Java prior to taking this course. The C programming language will be introduced but not at an introductory level so prior programming experience is a must.

1.3 Course Goals

Students that complete CSCI 2021 will posses the following characteristics.

  • Basic proficiency at C programming including pointers and addressing, dynamic memory allocation and management, basic file I/O operations. Ability to edit, compile, run, and debug C programs.
  • Knowledge of running programs in physical memory including the stack, heap, global, and text areas of memory and how each area behaves. Basic understanding of security risks associated with programming errors related to memory such as buffer overflows.
  • Understanding of the essential elements of assembly languages executed by CPUs, specifically familiarity with the x86 / x86-64 assembly language
  • Knowledge of the correspondence between high-level program constructs and assembly instructions which are executed by the CPU.
  • Ability to use a symbolic debugger to step through both C programs and assembly programs to aid in debugging programs.
  • Basic understanding of how data is encoded in binary including signed and unsigned integers, floating point numbers, character data, and machine instructions
  • Knowledge of computer memory systems, particularly the memory hierarchy of registers, caches, main memory, and permanent storage. Basic understanding of caching techniques and efficient virtual memory address translation to physical addresses.
  • Basic knowledge of computer architecture including the implementation of instructions with Boolean logic gates, processor pipe-lining for efficiency, and out of order instruction execution.

1.4 Instructor

Name Chris Kauffman
Sections 001 and 010
Office Shepherd 327
Phone 612-626-9351

1.5 Teaching Assistants

Name Email Role
Chris Kauffman Prof
Renjie Li GTA 50%
Burak Mert Gonultas GTA 50%
Bowen Wang GTA 25%
Cole Medin UTA
Denis Rybkin UTA
Emma Yoho UTA
Jacob Walters UTA
Je Vi Tan UTA
John Swenson UTA
Joseph Larson UTA
Kerem Ersoz UTA
Kristopher Wrobel UTA
Nicholas Jacobsen UTA
Rafael Barash UTA
Sam Matenaer UTA
Tien Dinh UTA
Yancheng "Gordon" Yuan UTA
Name Email Role

Office Hours for staff will be posted on the course Canvas site. Office hours for all staff are open to all students in any section of the course governed by this syllabus.

1.6 Lectures and Labs

Meeting Day / Time Location
Lecture 01 MWF 01:25 PM - 02:15 PM Willey Hall 125
Lab 02 Wed 09:05 AM - 09:55 AM Lind Hall 40
Lab 03 Wed 10:10 AM - 11:00 AM Keller Hall 1-250
Lab 04 Wed 10:10 AM - 11:00 AM Lind Hall 40
Lab 05 Wed 11:15 AM - 12:05 PM Keller Hall 1-250
Lab 06 Wed 11:15 AM - 12:05 PM Lind Hall 40
Lab 07 Wed 12:20 PM - 01:10 PM Keller Hall 1-250
Lab 08 Wed 12:20 PM - 01:10 PM Lind Hall 40
Lecture 20 MWF 10:10 AM - 11:00 AM Keller Hall 3-115
Lab 21 Wed 08:00 AM - 08:50 AM Keller Hall 1-250
Lab 22 Wed 09:00 AM - 09:50 AM Keller Hall 1-250

1.7 Course Materials


Computer Systems: A Programmer's Perspective, Third Edition by R. Bryant, D. O'Hallaron, Pearson, 2016
(Required) This is our main course text and covers a wide range of computer architecture issues. The textbook website is here:
C Programming Language Second Edition by Brian Kernighan and Dennis M. Ritchie, Prentice Hall 1988
(Optional) This is the classic reference to the C programming language. It is aimed at folks with a good understanding of computing systems and is thus not the easiest introduction to the language for beginners. The tutorials below supplement this somewhat.

Additional online resources associated with C programming and architecture will be posted in the course materials.

Video Tutorials

The following Video Programming Tutorials are available via for free via licensing at the UMN. They are not required but can serve as an additional resource on C programming for those that want more explanation than what is provided in lecture and lab meetings.

Note: All of these tutorials favor IDEs (integrated development environments) rather than the command line tools we will use.


It is assumed you will have access to a computer with the ability to edit, compile, and run Unix programs. Some university labs provide this ability; the first week of the course will cover how to set up your personal environment as well. If you have difficulty accessing a suitable environment, contact the course staff.

You will need to create a CSE Labs account for use on assignments and during Discussion. Accounts can be created here:

1.8 Communication

  • Canvas is used for Overall grade dissemination, Lab Activities, and Homework/Quizzes
  • Gradescope is used for Project submission/grading and Exam grade dissemination.
  • Piazza is the central site for our announcements and discussion board. The announcements and discussion board are part of the required reading for the course.
    • Sign up for our piazza site here:
    • All instructors and TAs can view all material on Piazza
    • Do not e-mail course staff about programming problems; use the discussion board.
    • Use public posts on Piazza to discuss programming project requirements, labs, and other material related to the course.
    • When prompted by a TA, use private posts on Piazza to share portions of your code pertaining to your questions. Don't share your project code in public posts.
    • Refer to the Piazza main page for etiquette on what should be posted publicly versus privately.
    • Email course staff only for logistical issues such as illness, emergencies, meeting outside of office hours, missing lab/lecture, etc.
  • Office Hours for staff will be posted on the course Canvas site. Office hours for all staff are open to all students in any section of the course governed by this syllabus.

2 Coursework and Grading

2.1 Graded Components

Final grades will be determined by scores obtained on the components below according to their associated weight.

Component Weight Policy
Engagement Points 10% 1% per point, 0.25% per point above 10, Earned through Lecutre/Lab/Piazza
Homework / Quizzes (14) 10% Drop two lowest scores
Individual Projects (5-6) 20% No drops
Midterm Exams (3 x 15%) 45% No drops
Final Exam 15% Comprehensive

2.2 Final Grade Determination

Final grades will be assigned without rounding according to the following criteria.

Percent Grade Percent Grade Percent Grade Percent Grade
>= 93 A 87-89 B+ 77-79 C+ 65-69 D+
90-92 A- 83-86 B 73-76 C 60-64 D
    80-82 B- 70-72 C- <60 F

If circumstances require it, the grading scale may be adjusted, generally in the students' favor.

2.3 Engagement Points

Throughout the semester, students will have opportunities to earn and use engagement points. These are:

  • Attending lecture and participating in discussion
  • Attending labs and participating in the activities
  • Answering discussion board questions from other students and receiving "Good Answer" marks from course staff
  • Participating in optional activities announced during the course
  • Late Project submissions cost Engagement Points

Each Engagement Point is worth 1% to a maximum of 10% for a student's overall grade. Each engagement point beyond this earns 0.25% Bonus Credit to a student's overall grade. This is the sole bonus credit mechanism in the course so students are encouraged to attend Lecture and Lab to earn Engagement points.

2.4 Lectures and Hot Seats

During lectures we will discuss operating system concepts and instructors will provide demos of programming relevant to other course work. In addition to attending the regular meeting times, you are strongly encouraged to visit the professor and teaching assistant(s) during office hours to further your understanding of the material: we are here to help you learn.

This semester, some lecture sections will be recorded via the UNITE service. Students in our lecture sections will have access to the video recordings 10 days after lectures through

Students who participate during lecture by answering activity questions or provide outstanding questions will be awarded a playing card. Student should return this at the end of lecture and note the card on the sheet provided. Generally folks in the first few rows are in hot seats and will be favored to answer activity questions in lecture.

3 Cards earned during lecture nets 1 Engagement Point so students that participate regularly in lecture can earn quite a few engagement points.

2.5 Textbook Readings

Readings from the textbook relevant to each lecture are listed in the schedule. You will increase your understanding of lectures by reading associated textbook sections ahead of time, though this is not assumed. We may provide additional reading material to supplement the textbook which will be posted on the course web page.

2.6 Lab Activities

Lab sections meet once per week. Attendance is not mandatory but will earn 1 Engagement Point. In each meeting, the lab leader will guide students through a short activity to reinforce course concepts. Students are encouraged to freely collaborate on lab activities.

There will be a paper worksheet that students must have TAs sign to show their completion of the activities. TAs will make a record of this score which is recorded online. If there is a mistake of some sort, students should email the TA who signed their activity sheet to correct the score.

Most lab activities will not occupy the entire lab meeting period leaving time for students to ask questions and receive help for other parts of the course during the remaining lab period.

2.7 Homework and Quizzes

Each week a set of Homework exercises will be posted online which cover reinforce and apply lecture topics. Associated with this Homework is an online Quiz. Completing Homework exercises will prepare students to take the online Quiz. Homework and Quizzes are open resource and open collaboration: students may work together with other students in our section(s) of the course to complete homework/quizzes and are encouraged to do so. Submitting identical answers for homework/quizzes is acceptable so long as it does not violate the PRIME DIRECTIVE.

Online Quizzes are graded automatically and scores will be available immediately after completing the quiz. Students can discuss any mistakes they make on Quizzes with course staff during Office Hours or Lab time to earn credit back up to the due date of the associated Quiz.

No late submissions for weekly Homework/Quizzes will be accepted. Missing the deadline results in 0 credit. The two lowest Quiz scores will be dropped in final grade calculations

2.8 Projects

Students will receive a number of programming projects during the semester. Each project will involve writing programs and answering questions about them to illustrate an understanding of course material. Specific projects may allow collaboration between pairs of students or require individual work. Pay careful attention to the guidelines for each programming project. Projects are usually large and require a significant amount of work to complete.

Project grading will include the following elements.

  1. Manual Inspection: Projects will include a checklist of features of completely correct answers. These usually comprise things that cannot be easily checked automatically such as showing the process to reach an answer, inclusion of key elements of an answer, or style aspects of computer code. These features will be checked by graders and assigned credit based on level of compliance.
  2. Automatic Testing: Some projects may have automatic tests provided which check for correctly functioning programs or answers. In most cases, these automatic checks will be publicly available for use while working on the assignment.

2.9 Late Project Submission

Late submission of Projects is governed by the following.

  • No projects will be accepted more than 48 hours after a deadline
  • On-time Projects receive no penalties
  • Submitting 1-24 hours will result in the loss of 1 Engagement Point
  • Submitting 25-48 hours late will result in the loss of 2 Engagement Points
  • Engagement points can be earned in a variety of ways mentioned in the Engagement Points Section.

NOTE: If students attend all 14 Labs, they will earn full engagement scores and have 4 days of late submissions possible.

2.10 Exams

There will be a series of midterm exams during the semester. Exams take place during the regularly scheduled lecture period and are worth a significant portion of the overall course grade. There will also be a comprehensive final exam at the end of the semester. Refer to the schedule for dates of the exams.

Your U-CARD is required for all exams though it may not be checked. You may be asked to show ID on handing your exam in to verify your identity.

Missing an exam results in a zero score and make-up exams will be considered only in situations involving death, near death, and documented dangerous diseases. Proof of such circumstances will be required for a make-up to be considered.

Open Resource Exams: Unless otherwise specified, exams will be open resource: notes, textbook, editor, compiler, and any code the student finds useful is allowed to be used. No communication is allowed during the exam (no email/texting/chat), no Internet searches are allowed, and no unauthorized web sites may be visited. If in doubt, ask about specifics before or during the exam.

2.11 Regrade Requests

Most Project and Exams will be graded via Gradescope which features a Request Regrade Button associated with specific problems and criteria. This will notify the specific individual responsible grading about the dispute. Raise regrade requests respectfully and specifically: mention what you think a grader missed in your answer or why you feel a deduction was unfair. Keep in mind that graders assign credit based on what appears on the project and exams, not post-hoc explanations of answers.

If a Student and Grader are not able to resolve a grading issue to the satisfaction of both, the student can ask the grader to consult the Professor who will review the dispute and resolve it. Students should ask their grader to do this, not email the Professor directly.

When grades are published, there will generally be a 1 week window in which disputes are considered. Failing to request a regrade in that time will forfeit further opportunity to contest the grade.

3 Academic Integrity

PRIME DIRECTIVE: Be able to explain your own work including assignment answers, program code, and exam solutions. The work you submit should be the product of your own effort and reflect your personal understanding.

Nearly all cheating in programming can be averted by adhering to the PRIME DIRECTIVE. Students may be asked at any time to explain code or exam solutions they submit. Inability to do so will be construed as evidence of misconduct. More specific guidelines are given below.

3.1 Thou Shalt Not

Unless otherwise specified, all assessments in this course are individual efforts involving no unfair collaboration. For the purposes of this course, the following actions constitute scholastic misconduct (cheating) and will be reported.

  • Directly copying someone else's solution to an assessment problem, including student solutions from a previous semester
  • Directly copying an answer from some outside source such as the Internet or friend for a homework problem.
  • Making use of an Instructor Solution manual to complete problems.
  • Submitting someone else's work as your own.
  • Using or sharing Exam materials from another student from past offerings of this course
  • Paying someone for a solutions to assignments.
  • Posting solutions to any web site including public posts to our course web site.
  • Collaborating or copying the work of others during an exam.
  • Taking another student's code with or without their consent.
  • Giving another student one's own code on assignments or exams
  • Aiding or abetting any of the above.
  • Witnessing any of the above and failing to report it to an instructor immediately.

Refer to the following links for additional information.

3.2 Penalties

Any instance of misconduct that is detected will be referred to the Office of Community Standards and will likely result in failing the course. Be advised that the teaching team will be employing electronic means to detect plagiarism. This is extremely easy with computer code so keep your nose clean.

3.3 Fair Collaboration

The purpose of this course is to learn about programming and learning from one another is a great help. To that end, the following actions will NOT be considered cheating in this course.

  • Collaboration on Lab Activities and weekly Exercises/Quizzes is allowed and encouraged. These are a great opportunity to help one another on work that counts towards your final grade. Just make sure that you understand any solutions you submit as per the PRIME DIRECTIVE.
  • Discussing projects at a high level with other course students is fair so long as no code is shared. Take great care at the point of directly showing your work to others as your answers are subsequently out of your own control.
  • Asking public questions on the course discussion board so long as limited information about your own solution is included. To convey details of your solution, use private posts.
  • Asking any course staff member questions in person or online is acceptable and encouraged. Staff members may initiate small group discussions in which collaboration is fine.
  • Making use of your own code or exam materials which you accumulated from past semesters of this class. If you are retaking the course, make sure staff understand this so that no misunderstandings occur.
  • If you are unsure whether a given collaboration is fair or not, stop the activity and clear it with your instructor.

At all times keep the PRIME DIRECTIVE in mind when studying with other students. The above collaborations should be limited to getting someone over a hurdle, not carrying them across the finish line.

3.4 Collaboration and other Sections

There is another section of CSCI 2021 running under a different instructor which is not coordinated with this one. Projects, homeworks, quizzes, lab topics, schedule, and exams will differ between sections. The policies within this syllabus apply only to our section and students should refrain from collaborating outside of their own section to avoid problems.

4 General Policies

General university policies which apply to our course are listed here:

Summaries of those policies are below.

Students are expected to maintain a high level of civility for all participants in and out of class meetings. This includes respecting participants of all genders, ethnicities, and social backgrounds. Harassment of any type will not be tolerated and failure to behave in a respectful manner will be reported to the University.

Observance of religious events will be accommodated for students of any faith. All possible accommodations will be made for students with disabilities. Please contact the Disability Resource Center and the instructor for further information.

Author: Chris Kauffman (
Date: 2020-01-15 Wed 10:16