Last Updated: 2024-02-20 Tue 17:24

CMSC216: Introduction to Computer Systems

Sections 1xx / 3xx

University of Maryland

4 credits, Spring 2024

1 Basic Information

1.1 Catalog Description

Introduction to the interaction between user programs and the operating system/hardware. Major topics include C programming, introductory systems programming, and assembly language. Other concepts covered include UNIX, machine data representation, thread management, optimization, and virtual memory. Programming is done in the Linux Environment.

1.2 Prerequisites

Minimum grade of C- in CMSC132; and minimum grade of C- in MATH141.

It is presumed that students will have the equivalent of 1 year of college-level programming in some high-level language such as Java or Python 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 CMSC216 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-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.
  • Understand the Process abstraction of running programs, how it allows isolation and safety between programs.
  • Ability to create and manipulate processes programmatically.
  • Knowledge of execution Threads, their relation to processes, and the ability to create and manipulate them programmatically.

1.4 Staff

Instructor

Name Chris Kauffman
Sections 1xx / 3xx
Email profk@umd.edu
Office Iribe 2226
Phone 301-405-2724

Teaching Assistants

Name Email Role
Yoon-Kyung Shon <ykshon@umd.edu> GTA
Yianni Karabatis <yianni@umd.edu> GTA
Aadit Nilay <aadit@terpmail.umd.edu> UTA
Aadit Shah <aadit201@terpmail.umd.edu> UTA
Adam Yang <ayang115@terpmail.umd.edu> UTA
Aditya Shelke <ashelke@terpmail.umd.edu> UTA
Ananya Dandi <adandi@terpmail.umd.edu> UTA
Carter Maisel <cmaisel@terpmail.umd.edu> UTA
Christian "CJ" Nygard <cnygard@terpmail.umd.edu> UTA
Clara Gong <cgong12@terpmail.umd.edu> UTA
Dashawna Lara <dlara16@terpmail.umd.edu> UTA
Divahar Sivanesan <sdivahar@umd.edu> UTA
Eckart Schneider <eckshn@terpmail.umd.edu> UTA
Feileen Li <fli1234@terpmail.umd.edu> UTA
Gavin Crisologo <gcrisolo@terpmail.umd.edu> UTA
Iris Guo <iguo@terpmail.umd.edu> UTA
Jihyo Park <jihyo@terpmail.umd.edu> UTA
Justin Reese <jreese30@umd.edu> UTA
Kushal Kapoor <kushalk@terpmail.umd.edu> UTA
Luis Esparza <lesparza@terpmail.umd.edu> UTA
Macy Donahoe <mdonaho2@terpmail.umd.edu> UTA
Matthew Liu <mliu218@terpmail.umd.edu> UTA
Mosinmiloluwa Ojeyomi <mojeyomi@terpmail.umd.edu> UTA
Rebecca Lam <rlam12@terpmail.umd.edu> UTA
Rohan Panigrahi <rpanigr@terpmail.umd.edu> UTA
Ryan Jung <ryjung@umd.edu> UTA
Vedant Agrawal <vedant99@terpmail.umd.edu> UTA

Staff office hours are described in the Office Hours Section with times and locations listed on our Canvas site.

1.5 Meetings

Meeting Day / Time Location
Lec 1xx TuTh 9:30am - 10:45am IRB 0324
Dis 101 MW 09:00am - 09:50am CSI 2118
Dis 102 MW 01:00pm - 01:50pm CSI 2107
Dis 103 MW 11:00am - 11:50am CSI 2118
Dis 104 MW 12:00pm - 12:50pm CSI 2118
Dis 105 MW 01:00pm - 01:50pm CSI 2118
Dis 106 MW 02:00pm - 02:50pm CSI 2107
Dis 107 MW 03:00pm - 03:50pm CSI 2107
Lec 3xx TuTh 2:00pm - 3:15pm ESJ 0224
Dis 301 MW 09:00am - 09:50am CSI 1122
Dis 302 MW 12:00pm - 12:50pm IRB 1207
Dis 303 MW 02:00pm - 02:50pm CSI 1122
Dis 304 MW 03:00pm - 03:50pm CSI 1122
Dis 305 MW 04:00pm - 04:50pm CSI 1122
Dis 306 MW 09:00am - 09:50am CSI 2120
Dis 307 MW 09:00am - 09:50am CSI 3118

1.6 Course Materials

Textbooks

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: http://csapp.cs.cmu.edu/
The 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 online.

Computing

It is assumed you will have access to a computer with the ability to edit, compile, and run Linux programs. Students may attempt to set up a Linux environment on their own computing device but instructions will be given on how to access the UMD Grace cluster to use that environment to run programs in the course. Most students will opt to use their laptops to connect to Grace to do remote development for the course. The first few weeks of the course will cover how to set up an environment that suits you. If you have difficulty accessing a suitable environment, contact the course staff for help.

Programs will be evaluated through the UMD's Grace system so it is imperative that students gain access to this soon. Some tactics to do so are described here:

1.7 Office Hours

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. No appointments are necessary but usually students receive help on a first-come / first-serve basis. Often office hours will become crowded around project deadlines and students are advised to start projects early, come to office hours with questions prepared, and be patient.

Check our Canvas site to see available office hours and note the locations: some office hours are held in-person while other office hours are held via Zoom.

Students are strongly encouraged to visit the professor and teaching assistant(s) during office hours to further their understanding of the material: we are here to help you learn.

Please note that office hours often become crowded close to project deadlines. Plan accordingly and set your expectation: last-minute help is often in short supply.

1.8 Communication

This offering of the course will be administered in a mixture of in-person + online which means you should acquaint yourself with the following resources / policies on communication in the class.

  • Canvas (Course Management): used to provide links to other resources and for Overall grade dissemination
  • Gradescope (Assignments/Exams): used to submit most graded work, receive grades on that work, and make requests for regrades.
  • Piazza (Announcements/Async Q&A): used to ask questions on course material outside of synchronous meetings and for staff to make announcements to students.
  • Zoom (Video Conferencing): used to present audio/video synchronously such for individual online appointments.

How should I contact staff?

Here are common situations for students and the best method to use to contact staff.

  • I want to get some real-time assistance with some coursework.

    Stop by office hours online or in preson. Locations and times for office hours are listed on the course Canvas site. Keep in mind that office hours get busy around project deadlines so there may be a queue to wait in to get help.

  • I have a question on an assignment or course content and there aren't any office hours coming up soon.

    Post your question on Piazza; staff members check several times a day and answer questions there. Make sure to post an answerable question as described in the Etiquette Piazza post and avoid publicly posting large portions of your code.

    You might also try searching Piazza first to see if someone already asked your question and received an answer.

  • I have a logistics questions such as when something is due, when something will happen, etc.

    Also use Piazza for most of these. If a staff member isn't sure how to answer the question, they'll give you they're best guess sooner and ask the Professor to confirm later.

    Staff will often use Piazza for Announcements such as upcoming deadlines or canceled office hours. These announcements will go to student email so check your UMN account regularly.

  • I think some of my work was graded wrong and I want someone to look at it again.

    Gradescope has a "Request Regrade" feature which will be open for students to use after grades are posted. Using this feature will notify whoever graded your work to have another look. If you cannot resolve the issue, your grader will involve the professor. There are some exceptions to this:

    • Homework Quizzes allow you to retake the Quiz to improve your score. No online Regrade Requests will be available, just retake the quiz up to the deadline.
    • Lab Exercises can re-submitted as many times as you like prior to their deadline and give nearly immediate feedback. If you aren't getting full credit and can't figure out why, get help from staff and then resubmit.
  • I need some one-on-one help and I can't make it to office hours to talk to staff about it.

    Email one or two of your favorite staff members to see if they can meet outside of their normal office hours. If you don't have luck in the first go, try contacting a different staff member including Prof Kauffman.

  • I had a major life event (got sick / family emergency / mental health problem) and I'm wondering how to cope with it and this class.

    Email Prof Kauffman as soon as you can. Explain the situation and we'll work out a plan for how to proceed such as rescheduling exams, extending deadlines, or providing some additional help

  • I'm going to miss a lecture / discussion meeting. What should I do?

    No special action is required: all lectures will be recorded and will be viewable within two days of them happening to support the inevitable conflicts that arise. Discussions have online materials and are designed to allow students to work through them independently if needed or to collaborate on with a friend in the course.

2 Coursework and Grading

2.1 Course Modality

This is an in-person course but many elements of the course can be completed without physical attendance. Fully remote students are not supported in this class as all students must attend exams in person.

A summary of course elements and their particulars is below.

Component Modality / Notes
Lecture In-person, attendance optional
  Recorded with videos posted to Canvas within 2 days
  Attending gives the opportunity to earn bonus Engagement Points
   
Exams In-person in lecture halls, attendance mandatory
  No remote exam options are available except through the ADS
  If ill/absent for an exam, contact instructor ASAP or lose all credit for it
   
Discussions In-person, attendance optional, no recordings planned,
  Demos of lab concepts provided, submit labs online for 1 EP per lab
  Skipping misses demos and guaranteed help from TAs
  Group work allowed
   
Homework Weekly exercises related to lecture / discussion, online quizzes to complete
  No meetings / recordings associated
  Group work allowed
   
Projects Larger programming work, video overviews posted in most cases
  No in-person meetings though questions during lecture / discussion are welcome
  Submit online for credit
  Individual work only, no collaboration

2.2 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 mainly through Labs
Homework Quizzes (14) 10% Drop two lowest scores
Individual Projects (5) 20% No drops
Midterm Exams (2) 40% No drops
Final Exam 20% Comprehensive

2.3 Final Grade Determination

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

Percent Grade Percent Grade Percent Grade Percent Grade
>= 97 A+ 87-89 B+ 77-79 C+ 67-69 D+
96-93 A 83-86 B 73-76 C 63-66 D
90-92 A- 80-82 B- 70-72 C- 60-62 D-
            <60 F

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

2.4 Engagement Points

Throughout the semester, students will have opportunities to earn and use engagement points. The system is a follows.

  1. Each Lab Exercise completed earns 1 EP and there are typically 12 of them in a semester.
  2. There will be a few opportunities to take course surveys which earn 1 EP as well.
  3. BONUS Engagement points may be earned through participation in lecture and by answering questions on Piazza. At the end of the semester, the total number of times students participated in these places will determine their Bonus EPs according to this formula:

    BonusEP = log2(1 + LectureParticipation + PiazzaAnswers + PiazzGoodAnswers)

  4. Late Project submissions COST 1 Engagement Point per day late.

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 Discussion to earn Engagement points.

FAQ: How many Engagment Points do I have? Count the number of Labs you have completed. Then check the participation sheet in lecture and number of questions you've answered on Piazza and apply the formula above to get your bonus EPs. Subtract the number of days late you've submitted.

2.5 Lectures and "Hot Seats"

Lectures will be delivered in person at the times/locations mentioned in the course schedule. During lectures, students will frequently be asked to work on short exercises with a few of their colleagues. After working on these exercises, the Professor will select a 1-2 students from the "Hot Seats" section of the lecture hall to discuss their answers with the class. Showing effort on these exercises will earn bonus Engagement Points. Hot Seats locations will be announced at the beginning of the course and are typically the first few rows of a lecture hall or a few designated tables in an active classroom.

All lectures will be recorded and posted for asynchronous viewing within 48 hours of the meeting. Students not able to attend lecture synchronously will miss the chance to ask questions and earn bonus Engagement Points there but can still earn full credit in the course through other means of acquiring EPs such as completing required Lab Exercises.

In the event that the instructor is ill or the University deems the level of plague too high too risk in-person meetings, Lectures will be held in a similar format online via Zoom. Updates on any such changes will be announced to students through Piazza and Email.

2.6 Discussion Meetings and Lab Exercises

Discussion sections meet twice per week in the locations mentioned. During these meetings, a lab exercise will be introduced and discussed which, if completed within the week, will earn 1 Engagement Point.

Students do not need to attend discussion meetings synchronously to earn credit but during discussion meetings, staff will give brief demos, group students to help complete the exercises, and be on hand to help students surmount difficulties. While not required, attending discussion has the following benefits

  • Virtually guarantees earning credit for the associated Lab exercise
  • TAs are on hand to give extra assistance on course topics
  • Provides great place to meet other students in the class to form study groups

Lab exercises are Open Resource and Open Collaboration. Students are encouraged to work in groups during discussion to complete the work and can submit their work as a group (one submission, several students getting credit for it). Generally discussion work is automatically graded so feedback is available immediately.

No late submissions will be accepted for Lab Exercises. Deadlines to submit are typically 7 days after release.

Discussion meetings that take place close to Project deadlines and Exams will be devoted to assisting the completion of the project and review in which case no lab exercises will required.

2.7 Weekly Homework Quizzes

Each week a set of Homework exercises will be posted online which 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 and quizzes may be retaken an unlimited number of times up to the deadline.

No late submissions for weekly Homework/Quizzes will be accepted and no regrade requests are allowed. Missing the deadline results in 0 credit. The two lowest HW 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. Generally Projects are Individual Work with sharing of code or detailed solutions being a violation of the PRIME DIRECTIVE. 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: Most projects 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 policies.

  • 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.
  • Students may submit projects as many times as they wish to Gradescope: the most recent submission will be graded though if it is submitted late it will cost Engagement Points.

NOTE: If students complete all 14 Lab Exercises, they will earn full engagement scores and have 4 days of late submissions possible while maintaining full credit.

2.10 Exams

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

All exams are Open Resource Exams: unless otherwise specified you may use any course content during exams including lecture slides, your notes, the textbook, editors/compilers/shells, and any code the you have written or received from course staff. No communication is allowed during the exam (no email/texting/chat), and no Internet searches are allowed (do not "google for answers"). In addition, you may only use exams from previous versions of the course if you personally took those exams. If in doubt, ask about specifics before or during the exam.

All exams will be preceded by official Practice Exams so that students can acquaint themselves with the tools and tactics to be successful.

Missing an exam results in a zero score and make-up exams will be considered only in situations involving significant life events. Proof of such circumstances will be required for a make-up to be considered.

2.11 Regrade Requests

Most coursework 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.

2.12 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.

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

Some coursework is to be done individually, usually programming Projects and Exams. For this individual work, 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 project 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; you may view your own past copies of exams but not share them with others.
  • Paying someone for a solutions to assignments/exams.
  • 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.

REMEMBER: Once you give away your code/work, you lose control of it. This may lead to pain in the following non-obvious cases

  • Using a public Github repository to track your code allows anyone to copy it and submit it as their own.
  • Sharing code with a classmate "just to help them" may lead to them submitting it as their own, sharing it with others, or selling it for profit
  • Giving someone access to your accounts or devices to help them may mean that they use your account to steal your work subsequently.
  • Leaving your work open in a public space may allow someone to take snapshots of your screen and use it as their own.

All Of This Has Happened Before And Will Happen Again. Don't become one of your Professor's stories.

Refer to the following links for additional information.

3.2 Penalties

Any instance of misconduct that is detected will investigated and may be referred to the Office of Community Standards. The most common penalty is an F in the course. Be advised that the teaching team will be employing electronic means to detect plagiarism. As easy as it may be to copy code, so to it is easy to detect copies. Keep your nose clean.

3.3 Fair Collaboration

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

  • Collaboration on Lab Activities and weekly Homework 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 or other classes is fine. If you are retaking the course, make sure staff know 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 are other sections of CMSC216 running under other instructors which are not coordinated with this one. Projects, homeworks, discussions, and exams will differ between sections along with the overarching schedule. The policies within this syllabus apply only to our section and students should refrain from collaborating outside of their own section to avoid problems. TAs for different sections will not be able to provide specific assistance on assignments to students from other sections though may be able to assist with general course concepts.

4 General Policies

General university policies which apply to our course are listed here: https://www.ugst.umd.edu/courserelatedpolicies.html

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 Accessibility & Disability Services and the instructor for further information.

Some special policies in effect for the semester are below.

4.1 Notification of Recording and Use of Recordings

This course will include video and audio recordings of class lectures and classroom activities. These recordings will be used for educational purposes and the instructor will make these available to students currently enrolled in this course. Students must seek instructor permission in order to share either course recordings or course content/materials. Similarly, instructors who wish to share zoom recordings with other sections or classes must seek and document permission from students whose image or voice are in these recordings.


Author: Chris Kauffman (profk@umd.edu)
Date: 2024-02-20 Tue 17:24