CS 3214 Syllabus

Overview

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

Instructor:Dr. Ali R. Butt
2202 Kraft Dr., Room VTKW-2227
540-231-0489

Dr. Dennis Kafura
2202 Kraft Dr., Room VTKW-2218
540-231-5568
Office hours: Office hours will be held in MCB 106/124.
Instructors are also available by appointment.
Class website: http://courses.cs.vt.edu/~cs3214/
TAs: Hari Pyla - GTA (harip@vt.edu)
Ruslan Nikolaev - GTA (rnikola@vt.edu)
Ian Davies - UTA (iand@vt.edu)
Tony Majestro - UTA (tmajest@vt.edu)


Office hours will be held in MCB 106*. Please see website for office hours. Additional office hours will be announced in the forum when projects are due.
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: WHIT-277 2:00pm - 3:15pm T Th
Kafura: RAND-211 9:30am - 10:45pm 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.

Prerequisites

The formal prerequisites for this class consist of CS2506: Introduction to Computer Organization II and CS 2114 Software Design and Data Structures. 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 Sep 6, 2012 for verification.

Objectives

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

Textbook

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; I strongly recommend that you use the 2nd edition.

I will post lecture notes after each lecture on the class website. Although I may not be able to discuss all slides during lecture, I 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.

Format

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

I am 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. Submissions received after you have used up your late days will receive a zero score. 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.

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. My policy is to provide you with as many additional late days as the note from DOS will say. For reasons of consistency and fairness, I will not make any calls myself about sick days or emergency accommodations; I will defer all such calls to them. 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, I 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).

Late Drop and Incomplete Policy

Less-than-hoped-for performance or realizing you have taken on too much work this semester, are not permissible reasons to grant course withdrawal requests after drop deadline. This policy applies only to drop requests that have to be approved by the instructor; in particular, it does not apply to the course withdrawals for six credit hours to which you are entitled according to college policy.

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

Grading

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

Midterm Exam12.5%
Final Exam22.5%
Projects42.5%
Exercises22.5%

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

Auto-Fail Rules

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

To pass the class, you must meet the minimum requirements for all five projects by the end of the semester. If needed, I 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 requirements are necessary, but not sufficient conditions. You may still fail the class even if you avoid the auto-fail rules, which may happen if your midterm/final exam and/or exercise performance is too low in the judgment of the instructor.

"Passing the class" means a grade that is not an F.

Modes of Communication

Forum: I 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 I suspect that an honor code violation has occurred, I generally file complaints directly with the honor system. I am 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.