CSCI 315: Operating Systems Design

CSCI 315: Operating Systems Design

Department of Computer Science

CSCI 315: Operating Systems Design

Section 02

Professor Xiannong Meng
Fall 2013

Syllabus

Based on Professor Perrone's syllabus

General Information

Meeting time MWF 1:00 - 1:52 p.m.
Meeting place B 165 (or in a lab when appropriate)
Professor Xiannong Meng Dana 212, x. 71214, xmeng@bucknell.edu
Office Hours M 10-11 a.m. , T 3-4 p.m., W 8-9 a.m., R 11 a.m. - noon., F 9-11 a.m.
Or simply stop by my office

Bucknell University Honor Code

As a student and citizen of the Bucknell University community:

  1. I will not lie, cheat, or steal in my academic endeavors.
  2. I will forthrightly oppose each and every instance of academic dishonesty.
  3. I will let my conscience guide my decision to communicate directly with any person or persons I believe to have been dishonest in academic work.
  4. I will let my conscience guide my decision on reporting breaches of academic integrity to the appropriate faculty or deans.

Course Description

CSCI 315 is the final course in the core curriculum for Computer Science at Bucknell. Its contents are essential to the background of a computer professional or academic. The operating system (OS) stands between the user application programs and the hardware resources and therefore is a key component in any computing system. Modern OS's include Windows, Mac OS X, and Linux: if you have ever used a personal computer, you've worked with an OS before. We have OS's also in a variety of devices such as smart phones, media players, and tablets. Since computing technology moves fast (commercial and free open software operating systems are always being updated), what is most important is that we master the underlying principles in this topic.

In this course we'll study a number of aspects of operating systems, such as process management, threads, concurrency, deadlocks, memory management, file systems, input/output systems, and security. We will investigate how these aspects can lead to different design options in the construction of an operating system both from theoretical and practical perspectives. The course consists of "lectures" and structured lab activities. The reason for quotes around "lecture" is that to the fullest possible extent, our meetings will be student-centered, that is, instead of having straight presentations, we are more interested in having discussions and occasional in-class activities. For this to work well, it is expected that students will do a fair share of work outside the classroom, sometimes reading and sometimes experimenting with real systems.

In the practical aspects of this course, our tools will be the C programming language and the Linux operating system. Students who have never programmed in C before: rest assured that you will learn the language as we go. You will also learn a lot about programming at the interface between applications and the Unix system.

Student Learning Outcomes

  1. Students will be able to develop low-level software that interacts directly with the operating systems application programming interface.
  2. Students will be able to identify problems in concurrent computing and to solve them using operating systems synchronization constructs.

Textbooks

The main resource for this class is (1), listed below as the required text. Our reading and some assignments come directly from this book. We will also use a text in Unix systems programming and (2) is an invaluable resource for learning how principles apply to practice. Finally, I strongly recommend that students who have never programmed in C before look for some resource to help them throughout the semester. While there are numerous books on C programming at your disposal, if youre going to pick one up, I recommend considering (3), as it includes some material on systems programming.

  1. Operating Systems Concepts. Abraham Silberschatz, Peter Galvin, and Greg Gagne. Ninth Edition, 2013, John Wiley & Sons, Inc. ISBN 978-0470128725. [REQUIRED] (Previous editions, especially the 8th edition, are fine.)
  2. Advanced Programming in the Unix Environment. W. Richard Stevens and Stephen A. Rago. Second edition, 2005. Addison Wesley. ISBN 0-201-433307-9. [REQUIRED]
  3. C Primer Plus. Stephen Prata. Fifth Edition, 2004. ISBN 978-0672326967. Sams Publishing. [RECOMMENDED]

Work Ethic

Let's be honest here: this a college class, the last one in the CS core curriculum, and it has a reputation for being substantially harder than most. The expectation that youll be able to learn this material just by coming to classes and labs is completely unreasonable.

Bucknell University Expectations for Academic Engagement

Courses at Bucknell that receive one unit of academic credit have a minimum expectation of 12 hours per week of student academic engagement. Student academic engagement includes both the hours of direct faculty instruction (or its equivalent) and the hours spent on out of class student work.

The text in the highlighted paragraph above applies to courses without labs. For this class, which meets for 5 hours/week, the implication is that theres a reasonable expectation that students will work about 20 hours/week outside of class. This time should be somehow divided between reading and working on assignments. If you make sure to account for this time in your weekly schedule, you will certainly learn a lot in this class and the grades you earn will reflect that.

Reading, Quizzes, and In-Class Activities

Look at the schedule page and complete the reading assignments before coming to class. Periodically, we will have quizzes to assess your understanding of the reading material and/or your engagement in class. Some of these quizzes will be announced, though that will not necessarily always be the case.

We will also have in-class activities that will result in deliverables to be turned in at the end of the class. The point of these exercises is to keep you engaged and learning; the deliverables will be used to assess whether you used the opportunity wisely. There will be no opportunity to make up quizzes or in-class activities.

Attendance and Participation

All students are expected to attend class and scheduled labs: poor attendance (either in class or lab) will have an adverse affect on your grade. Absences may be excused if you send me email in advance I understand that people get sick, have to travel for interviews, etc. However, every four unexcused absences will cause a one third letter reduction in the final grade (that is, if you end up with a B+, but have four unexcused absences, your final grade for the course will be a B). There are two reasons for this policy. First, I see our classes as shared experiences in a community of learners including myself; if you're not there, you can't share and the collective loses. Second, every student has to take responsibility for their role in the learning process. Being absent just for the sake of it shows that you're not holding up to your end of the bargain.

Also, note that you will earn a grade for participation in this class. This component of your final grade is determined by how invested you are in our class meetings and labs. Ask and answer questions posed by the instructor and your colleagues, put ideas out for discussion, and bring up points that you have learned outside the classroom or discovered in the technical media. The point is for you not to fade into the background; you are expected to be actively engaged in the class.

Now, using a cell phone, texting, using instant messaging, or browsing the web for topics unrelated to our class activity are contrary to staying engaged; evidence of this type of activity will have an adverse impact on your participation grade.

Laboratories

Whenever labs require advance work, the pre-lab assignment is due at the beginning of the lab and will account for 30% to the total lab grade. Other than that, the labs final deliverables are due during on the first 10 minutes of the following lab, that is, if you don't finish the assignment in lab, you have up to a full week to complete it. Follow the instructions for putting together the deliverables and for submitting completed assignments very carefully. Hand-written work will not be graded, except if/when hand-written annotations are asked for.

Assignments

Doing work outside the class or lab will reinforce what youre learning, so make sure to allocate time to focus on the assignments and to do your very best. The assignments in this class may take the shape of problem sets, papers, or programs. When I craft these assignments, I will do my best to provide clear and unambiguous statements, but it's possible that you might need clarifications. Make sure to ask about what you don't understand and to do so well in advance of the deadline. Extra credit problems may show up in some assignments; work on them if you have time after having completed the rest of the assignment.

Write up your solutions in the most professional manner possible. Use the best word processing and graphing software at your disposal and if you need help with something, make sure to ask for it.

Late assignments are strongly discouraged, but will be accepted only up to three calendar days after the deadline. Late assignments are subject to a 10% penalty for each late day, up to a maximum penalty of 30%. Assignments turned in more than three days late will earn no credit.

If a grade needs to be adjusted, please see me as soon as possible after the return of the assignment.

Exams

There will be two one-hour exams and a comprehensive final. The dates of the two mid-term exams are shown in the class schedule. The final examination will be given at the time scheduled by the Registrars. If you miss an exam due to illness or some other unavoidable circumstance, you will need a written justification for the absence. In the case of a justified absence, make-up exams will be given as long as the student has not communicated with anyone in the class about the exam. I assume that students who qualify for a make-up exam will observe this requirement according to the Bucknell honor code.

If an exam grade needs to be adjusted, please see me as soon as possible.

Grades

The grade components in this course will follow the distribution below.

Quizzes: 5%
Activities: 5%
Participation: 5%
Exam 1: 15%
Exam 2: 15%
Final Exam: 15%
Labs & Assignments: 30%
Project: 10%

Letter grade assignments will be given at the end of the semester and will be based on a typical scale:

93-100 A, 90-92 A-, 87-89 B+, 83-86 B, 80-82 B-, 77-79 C+, 73-76 C, 70-72 C-, 60-69 D, 0-59 F.

In order to pass this course, a student must earn a passing grade on every one of the items above. This effectively means that no one can earn a passing grade in CSCI 315 having forsaken any one of the items above. For instance, a student who has a Labs & Assignments average of 55 and aces everything earns an F in the course.

Students with Special Needs

If you have any documented special needs, please request your Dean to send me a letter itemizing specific accommodations, as soon as possible. I will work with you to make sure that these needs are accomodated.

Student-Athletes

If you are a student-athlete, remember that you are a student first and an athlete second. This means that academic work is your first priority. As per University rules, you will not be penalized for being away to take part in athletic events. It is your responsibility, however, to manage your time wisely so that you can do well in this and in your other classes. Please make sure to notify me well in advance of your travel schedule and to work out a make-up schedule for missed work or exams.

Communicating with the instructor

I want to hear your thoughts on how much youre learning in this course. If you are struggling with the material, please let me know sooner rather than later. Problems which might be resolved somewhat easily when they are just identified can lead to much hardship if left alone for long. Make the best use of our contact time in regular classes and labs and, if that is not enough, come see me for a chat.

You are welcome to give me constructive criticism. Although I will work hard to make this course be a good experience for everyone, it won't be really great unless you give me feedback to make adjustments to maximize effectiveness.

I will do my best to help you reach the learning objectives in this course and to help you grow your enthusiasm for studying computer science. If you have previous knowledge of topics in this class and feel that you could use a bigger challenge to motivate your learning, make sure to let me know and we will work together to identify something productive for you to pursue.