CS 3214 Syllabus


CS 3214 provides an introduction to computer systems as they are relevant to application programmers today, with an emphasis on operating systems principles. Topics covered include: operating systems design and architectures; processes, threads, synchronization techniques, deadlock; CPU scheduling; system call interfaces, system level I/O and file management; shell programming; separate compilation, loading and linking; interprocess communication (IPC); virtual and physical memory management and garbage collection; network protocols and programming; virtualization; performance analysis and optimization.

The topics will be accompanied by a series of exercises and programming projects that will give you hands-on experience in interacting with systems at different levels. Some projects will be done in a group, which gives you the added benefit of learning how to work in a team.

Staff Information and Meeting Times

Instructors:Ali R. Butt
2207 KWII
Dr. Dennis Kafura
2202 Kraft Dr., Room VTKW-2218
Office hours:

Dr. Butt and Dr. Kafura will hold office hours in McB 122.

The TAs will hold their office hours in MCB 106/124.

Instructors are also available by appointment.

Additional office hours will be announced in the forum when projects are due.

Class website: http://courses.cs.vt.edu/~cs3214/
TAs: Ali Anwar - GTA (ali@vt.edu)
Da Zhang - GTA (daz3@vt.edu)
George Burgess - UTA (ggbiv@vt.edu)
Mohammed Davoodi - UTA (mdavoodi@vt.edu)
Calvin Winkowski - UTA (cwinkows@vt.edu)
Email: To contact teaching staff, use cs3214-staff@cs.vt.edu
Forum: Well be using piazza.com this semester. Please sign up and enroll in CS 3214.
Class meeting times: Butt: Surge 109 2:30pm - 3:45pm M W
Kafura: Surge 118B 2:00pm - 3:15pm T Th

Regular class attendance is not enforced, but is strongly recommended. Subjects taught in class closely correspond to the concurrently run exercises and projects.


The formal prerequisites for this class consist of CS2506: Introduction to Computer Organization II and CS 2114 Software Design and Data Structures. For ECE majors these prerequisites can be satisfied by ECE2504 and ECE2524 and (either ECE2500 or ECE2534) and ECE2574. Every student must prove that they have obtained a grade of C or better in those classes by submitting a Computer Science Prerequisite Form no later than the second class meeting for verification.


Upon completion of the course, students should be able to:

  1. Explain the major components of an operating system and their respective functionality and interaction, including runtime libraries and systems programs
  2. Use an operating system's command line interface to run shell scripts and perform productivity tasks
  3. Describe the theories underlying CPU scheduling and their impact on applications
  4. Describe proper synchronization techniques, deadlock prevention and avoidance
  5. Describe the principles underlying virtual memory and their impact on applications
  6. Design, implement, test, and debug:
    1. programs that interact directly with an operating system using its system call application programming interface (API)
    2. multi-process applications that use inter-process communication
    3. multi-threaded applications
    4. custom user-level memory allocators
    5. simple network applications
  7. Describe the principles underlying virtualization
  8. Measure application performance accurately and identify sources of overhead


The required textbook is:

Computer Systems: A Programmer's Perspective, Second Edition (CS:APP2e)
Randal E. Bryant and David R. O'Hallaron
Prentice Hall, 2011, ISBN 0-13-610804-0.

The first edition of this book dates from 2003; We strongly recommend that you use the 2nd edition.

We will post lecture notes before each lecture on the class website. Although we may not be able to discuss all slides during lecture, we consider them material you should know. As you work over the lecture when you study, be sure to ask questions if necessary.

In addition, the class website will link to other external resources.


The course work consists of a mix of lectures, exams, exercises, and programming projects.

Midterm: There will be one in-class midterm. The midterm will cover material from the lectures and textbook. The midterm will also include questions related to the programming projects.

Final: There will be a final exam. The final exam will be comprehensive and include material from the lectures, textbook, and programming projects.

Exercises: Exercises are done individually. They consist of small tasks that reinforce necessary skills. Exercises run in parallel with projects, generally have a short deadline, and late submissions are not accepted.

Projects: There will be 4 medium-size projects. Projects are done in groups of 2 students.
Projects and exercises will be submitted electronically and grades will be posted electronically. Instructions will be posted on the class website.

Late Policy

Exercises are intended to ensure that you remain continuously engaged in the class and do not fall behind. Therefore, they must be submitted on time.

We are generally hesitant to grant individual extensions for projects. Instead, each student will have a budget of 4 late days that can be used to submit projects (not exercises!) late without penalty. You decide when you want to use your late days -- there is no need to contact the instructor or GTA beforehand. Late days are granted in whole integer multiples of days: if your assignment is 5 minutes late, you will have used up an entire late day. For some assignments, you may work in a team. If you are working in a team, late submissions will count against the budgets of all team members, so make sure that all of you have enough late days left, or the team member with an insufficient number of days risks getting a zero.

Project submissions made after a student is out of late days will be penalized 10% for each extra day used. It is, therefore, possible that two partners with different numbers of late days left may receive different scores on a project. It should also be noted that there will be a final deadline for each project, after which further submissions will not be accepted.

These late days are intended to account for various minor emergencies, such as network outages, snow or flood days, minor (12 hours or less) lab/cluster downtime, or job interviews.

If you are sick, or if you have family or other emergencies that prevent you from submitting assignments on time, please contact the Dean of Students Office (http://www.dos.vt.edu). They will make a determination as to what accommodation should be given, and inform the instructors of the classes in which you are enrolled of their decision. Our policy is to provide you with as many additional late days as the note from DOS will say. For reasons of consistency and fairness, we will not make any calls about sick days or emergency accommodations; we will defer all such calls to the DOS. If you have learning or other disabilities, please also see the section Students With Disabilities below.

Sickness: If you cannot complete an assignment due to sickness, we ask that you provide proof of visit to Shiffert health center or another health care provider (a scanned or photographed copy of the Visit Documentation slip will suffice). You should tell teaching staff how many days you were sick. All deadlines will be moved by this many days without counting against late days. The honor code and the university policy on class attendance apply.

In the case of a prolonged illness – defined as an absence that exceeds 5 days - Shiffert will provide an absence verification (see http://www.hokiehandbook.vt.edu/studentlife).

Incomplete Policy

We will not grant incompletes for this course unless truly extraordinary, unforeseen circumstances outside of your control are to blame. See also Late Policy.


Based on past offerings, we estimate that the contributions of the different portions to your final grade will be as listed below, but we reserve the right to adjust these weights as necessary:

Midterm Exam14%
Final Exam21%

We expect the median final grade for this class to be between a B and B-. In other words, students who consistently perform above the median can expect a B or better. The sample population over which this median is computed includes all students who submit at least one piece of work for grading during the course of the semester. We will publish score distributions for all projects and the midterm to give you an indication of where you are. We reserve the right to adjust this curve in either direction, depending on the performance of the class.

Students who do not appear for an exam at the scheduled time will receive a zero score on the exam.

Satisfactory Project Achievement Rules

For each of the 4 projects, a clearly defined subset of the overall project requirements is described as "minimum requirements."

Your final grade for the course will be limited if you do not satisfy these minimum requirements, for all the projects, by the end of the semester. If needed, we will accept late submissions for projects (beyond the late days discussed in the section Late Policy above) for the purpose of showing that you meet minimum requirements. These late submissions will not alter your score for a project.

If you satisfy the minimum requirements for only three projects, your course grade will be no more than a B+. If you satisfy the minimum requirements for only two projects, your course grade will be no more than a C+. If you satisfy the minimum requirements for only one project, your course grade will be no more than a D+. If you do not satisfy the minimum requirements for even one project, your course grade will be an F.

These requirements are necessary, but not sufficient conditions. You may still fail the class even if satisfy all of the minimum project requirements, which may happen if your midterm/final exam and/or exercise performance is too low in the judgment of the instructor.

Modes of Communication

Forum: We strongly encourage the use of the forum to ask question and discuss class-related topics. When using the forum, treat it like a public forum: ask questions and bring up topics where you have a reasonable belief that others may be interested in them (perhaps because they may be facing the same issue), or may be able to help you.

Website: The class website and the forum are the primary means of communication from us to you. We will post announcements there, which are binding. In addition, we will send email to you as needed.

Email etiquette:

Communication Protocol: Students and staff are expected to be professional in all of their communications. Staff reserves the right to completely ignore, and in certain cases report to the Dean of Students, any abusive language, gestures, and threats that affect the safety and environment of the class, and/or obstruct the staff's ability to conduct the class and impart a meaningful learning experience.

Collaboration Policy and Honor Code

On the class website you will find links to the following policies applying to this class: University Policy of Class Attendance, The Virginia Tech Undergraduate Honor System, the ACM and IEEE Code of Ethics, and the Departmental Policy on Koofers.

The tenets of the honor code will be strictly enforced in this course, and all assignments shall be subject to the stipulations of the Undergraduate Honor Code. For more information on the Honor Code, please refer to the Undergraduate Honor System Constitution, location online at http://www.honorsystem.vt.edu/.

If we suspect that an honor code violation has occurred, we generally file complaints directly with the honor system. We are not required to discuss suspected honor code violations with suspected students before filing charges, and typically will not do so.

In addition, we will enforce the Departmental Policy on Koofers, Old Programs, Cheating, and Computer Use, available at http://www.cs.vt.edu/undergraduate/handbook#Koofer.

The following policies regarding collaboration apply in this class.

Students with Disabilities

The instructors are pleased to make arrangements for students with disabilities. Students needing special accommodation because of a disability should provide to the instructor during the first week of class an appropriate letter from the Services for Students with Disabilities office. Also, if you have emergency medical information to share with the instructor, or if you need special arrangements in case of emergencies, please meet with the instructor as soon as possible.