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 OSs include Windows, Mac OS X, and Linux: if you have ever used a personal computer, you’ve worked with an OS before. We have OSs 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 their fair share of work outside the classroom, sometimes reading/researching 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. You will also learn a lot about programming at the interface between applications and the Unix system.

Office Hours

Your lecture and lab instructors have posted office hours on the web page. Make sure to understand that the posted hours are times in which the instructors are guaranteed to be at their offices and that in addition to these times, students are welcome to drop by. If you want to make sure that the instructor will be there at the time of your need, you can either check their online BMail calendars and/or call or email to make an appointment. Also, we may work with doors closed to avoid the noise from the hallway, but that does not mean you are not welcome to come by. Feel free to knock and check if we are available with or without advance notice.

Academic Responsibility

One of the most important aspects of this course is that it is set up to emphasize the development of your self-reliance and independent learning skills. There will be many occasions in which you will need to stretch yourself to find an answer to a programming or research problem. This will require that you use wisely the resources available to you on the web and at our physical or digital libraries. At all times, however, remember the principles of academic responsibility and follow the departmental guidelines for appropriate collaboration. When the collaboration policy is not clear to you, it is your responsibility to ask for a clarification!

Student Learning Outcomes

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


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 you’re 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 ISBN 978-0470128725. [REQUIRED] (Previous editions, specially 8th and 8th Updated, are fine.)
  2.  Advanced Programming in the Unix Environment. W. Richard Stevens and Stephen A. Rago. Third edition, 2013. Addison Wesley. ISBN 978-0321637734. [REQUIRED] (Previous editions, specially 2nd, are fine.)
  3. C Primer Plus. Stephen Prata. Fifth Edition, 2004. ISBN 978-0672326967. Sams Publishing.  [RECOMMENDED]

Work Ethic

Let’s be honest here: this is the final class in the CS core curriculum and it has the reputation for challenging students.  The expectation that you’ll be able to learn this material only by coming to classes and labs is completely unreasonable. 

You are expected to put in the time to read the textbooks, to experiment with systems programming concepts, and to read beyond assigned readings. You will only make the most of this class if you seek out and read articles that help you integrate the class material with the state-of-the-art in computing. If you reserve some time, every day, for reading our material and for working on this class’ assignments, you are much more likely to learn deeply.

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 there’s a reasonable expectation that students will work about 20 hours/week outside of class. This time should be somehow divided between reading, trying things out, 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.

You should watch this video, which is a collection of real-life moments in the life of a computer science professor. Do your very best to not be that guy.

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 let the instructor know by email in advance – people get sick, 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 B+, but have four unexcused absences, your final grade for the course goes down to B). There are two reasons for this policy. First, our classes are shared experiences in a community of learners; if you’re not there to share what you are learning, the collective stands to lose. Second, every student has to take responsibility for their role in the learning process. Being absent without due reason conveys the notion 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


Lab assignments will be done individually, unless it is stated otherwise. 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 lab’s 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). I strongly recommend against using a lab session to complete the previous week’s lab assignment. 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 requested.


Doing work outside the class or lab will reinforce what you’re 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 on 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.


There will be two one-hour exams and a comprehensive final. The dates of the two exams are shown in the class schedule. The final examination will be given at the time scheduled by the Registrar’s. 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.


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

  • Quizzes: 5%
  • Activities: 5%
  • Professionalism: 5%
  • Exam 1: 15%
  • Exam 2: 15%
  • Final Exam: 15%
  • Labs (and other assignments): 40%

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, the 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.

Access Statement


If you have a disability that may have some impact on your work in this class and for which you may require accommodations, please see me and Heather Fowler, Director of the Office of Accessibility Resources at, 570-577-1188 or in room 212 Carnegie Building so that such accommodations may be arranged.


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 mid-term exams.

Communicating with the instructor

I want to hear your thoughts on how much you’re 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 should feel safe 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.

Print Friendly