Values and Commitments
Bucknell University steadfastly affirms our commitment to our students, staff, and faculty. Regardless of race, ethnicity, or nationality, gender, gender expression or sexual orientation, religion or belief system, economic status, or ability, you are a valued, respected, and essential member of our community. We are all committed to welcoming others in this manner. We will not tolerate mistreatment or disrespect of persons for any reason by members of our community. The College of Engineering strives to offer a safe environment for learning, growth, inquiry, and the respectful sharing of ideas for all.
We have a moral and professional obligation to share the responsibility of always treating each other with respect and dignity, even when we disagree. However, we will not question or leave room for disagreement about the value of different human beings. We investigate and solve problems, sometimes very challenging ones. An important method for such investigations and solutions is through the exploration of ideas in conjunction with the unquestioned support and value of individuals. We can all engage in such processes when we feel comfortable and safe as members of a community.
Your suggestions to help the University meet this commitment are encouraged and appreciated. If something occurs in class that makes you feel uncomfortable, please talk to the instructors about it. Other resources for you include your instructors, department chairs, and Associate Deans Terri Norton (trn005@bucknell.edu) and Rich Robbins (rlr024@bucknell.edu). Instead or additionally, you may file a bias incident report using this link. This report may be filed anonymously if you so choose. The College of Engineering commits to working alongside students expressing concerns and/or making reports to empower them in any follow-up actions and to ensure that they are protected from repercussions of any kind.
Professionally, we adhere to ACM’s Code of Ethics. More broadly, a course like Operating Systems Design involves group and class discussion. Computer science has a checkered history with respect to inclusion – in corporate environments, in our classrooms, and in the products we create. We strive to promote characteristics of transparency and inclusivity that reflect what we hope our field becomes (and not necessarily what it has been or is now).
We reject behavior that strays into racism or harassment. Such behavior (whether verbal, written, or actions) may relate to others’ race, gender, faith, or sexual orientation, among virtually innumerable professionally irrelevant characteristics (e.g., religion, [dis]ability, age, etc.); sexual images in public spaces; deliberate intimidation, stalking, following, harassing photography or recording, disruption of meetings, inappropriate physical contact, and unwelcome sexual attention.
If you believe someone is violating these principles (for example, with a joke that could be interpreted as sexist, racist, or exclusionary), please feel empowered to speak up. If the behavior persists, send a private email to your instructor to explain the situation. While we will preserve anonymity when possible, also be aware that we are required by law to report incidents of sexual misconduct or relationship violence.
You may also contact Bias Incident Reporting at https://www.bucknell.edu/life-bucknell/health-wellness-safety/bias-incident-policy
We are here for you. Life can be full of uncertainties and hardships. You may find yourself in tough situations such as being sick, having to care for someone who is sick, having a hard time coping with a personal crisis, or even facing food insecurity. If you find yourself in a predicament that is weighing on you, please get in touch with us. We will work with you to make the accommodations necessary to help you out and we will try our best to help you. Please believe that we are invested in supporting you.
Bucknell University Honor Code
As a student and citizen of the Bucknell University community:
- I will not lie, cheat, or steal in my academic endeavors.
- I will forthrightly oppose each and every instance of academic dishonesty.
- 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.
- I will let my conscience guide my decision on reporting breaches of academic integrity to the appropriate faculty or deans.
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!
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 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 additional hours/week outside of class. This time should be somehow divided between reading, watching class videos, experimenting with what you learn, 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. Please, do your very best to not be that person.
Attendance
In a community of learners, it is expected that all students will participate in all classes and labs, which means arriving on time and being prepared. However, if you have to be absent because with good reasons, please notify your instructor at your earliest convenience. It is your responsibility to work with your instructors to catch up and make up what you missed during your absence.
Course Description
CSCI 315 is a core systems sequence 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 and contact information on this course’s web page. Some of us will be working remotely, some will be physically present on campus. To make sure that the instructors will be there at the time of your need, call or email them to make an appointment. Please understand that you and your learning are our biggest priorities. Reach out and we will be glad to carve out time to work with you.
Student Learning Outcomes
- Students will be able to develop low-level software that interacts directly with the operating system’s application programming interface. (EAC 1,2) (CAC 2)
- Students will be able to identify problems in concurrent computing and to solve them using operating system’s synchronization constructs. (EAC 1,2) (CAC 2)
Textbooks
The required text for this class is (1), listed below. Most readings 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, we strongly recommend that students have some resource to help them with C programming throughout the semester. While there are numerous books on C programming at your disposal, if you’re going to pick one up, we’d recommend considering (3), as it includes some material on systems programming.
- Operating Systems Concepts. Abraham Silberschatz, Peter Galvin, and Greg Gagne. Tenth Edition, 2018, John Wiley & Sons, Inc. ISBN 978-1119800361. [REQUIRED] (Other recent editions are fine.)
- Advanced Programming in the Unix Environment. W. Richard Stevens and Stephen A. Rago. Third edition, 2013. Addison Wesley. ISBN 978-0321637734. [RECOMMENDED] (Previous editions, specially 2nd, are fine.)
- C Primer Plus. Stephen Prata. Fifth Edition, 2004. ISBN 978-0672326967. Sams Publishing. [OPTIONAL]
Work Ethic
Let’s be honest here: this is the final class in the systems sequence of 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 textbook, 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.
Reading, Quizzes, In-Class Activities, and Engagement
Look at the schedule page for your section 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 period. 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.
Finally, we are looking forward to seeing you develop an interest for our subject and to make efforts to learn. The engagement component of your grade will reflect the energy you invest in the class. We will quantify your engagement through the assessment of class participation and/or work that you do outside the class. If you feel comfortable asking questions and making comments during the class period, great! If you feel that doesn’t agree much with you, there are other options: you can look for a podcast episode, video, or written article about a topic in the class and write a one page reflection on it. It will be up to you to identify and to digest this material on your own.
Professionalism
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 can be excused if you let the instructor know by email in advance – people get sick, travel for interviews, etc. 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. Additionally, 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.
Ask your own questions, 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. There’s much for you to gain when you are actively engaged in the class.
Much of what we do this semester will be through Zoom, which redefines what we understand as etiquette. Please do you best to understand what it means to be productive, professional, and engaged in this media.
Laboratory
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). We 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.
Assignments
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 we craft these assignments, we will do my best to provide clear and unambiguous statements, but they will not be perfect. Make sure to ask about what you don’t understand and to do so well in advance of the deadline. If extra credit problems show up on an assignment, work on them only after having completed the core assignment.
You will have three “teach to learn” assignments that will give you a list of topics to choose from and to put together a product in which you will explain that topic to another student at your same level of academic development. Your product can be in one of three different kinds of media: a paper, an audio podcast, or a video. It will be up to you to choose a medium that you are most comfortable with. More details on the expectations and even a grading rubric will be shared with you when the assignment is posted. If there’s anything we can clarify for you, please let us know.
Late assignments are strongly discouraged, but will be accepted without penalty if you negotiated an extension at least 24 hours before the deadline. Otherwise, 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 us as soon as possible after the return of the assignment.
Exams
There will be two exams and a comprehensive final. The dates of all exams are shown in the class schedule. 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. We 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 us as soon as possible.
Grade Breakdown
The grade components in this course will follow the distribution below.
- Quizzes: 10%
- Activities: 5%
- Engagement: 5%
- Teach to Learn: 15%
- Exam 1: 10%
- Exam 2: 10%
- Final Exam: 10%
- Labs: 35%
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.
Just so that we are on the same page, our interpretation of letter grades is as follows:
A: Superior achievement
B: High pass
C: Pass
D: Low Pass
F: Failing work
In order to pass this course, the student must earn a passing grade on all components of the course’s final grade. For instance: a student who has a lab average of 45 and aces everything else, will have earned F for their final grade.
Access Statement
Any student who needs an accommodation based on the impact of a disability should contact the OAR at OAR@bucknell.edu; 570-577-1188 or complete the Disability Accommodation Request form. The OAR will coordinate reasonable accommodations for students with documented disabilities.
If you have a disability and think you may need an accommodation, I encourage you to contact the OAR. The OAR is here to help and will work with you to determine appropriate accommodations. If accommodations are needed, the OAR will communicate those to me through a Letter of Accommodation. I will not be given information about the nature of your disability, only the accommodations you need. I will treat any information I receive as private and confidential. Please visit https://www.bucknell.edu/life-bucknell/diversity-equity-inclusion/accessibility-resources for more information about the OAR.
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 mid-term exams.
Religious Holidays
Bucknell University recognizes the value of religious practice and seeks to accommodate students’ commitment to their religious & spiritual traditions whenever possible. When conflicts between holy days or other religious practice and academic scheduling arise, I will make every effort to allow students to adhere to their tradition, including – when possible – excusing class absences and allowing make-up work.
A student anticipating the need to miss a class for religious reasons should notify me as early in the semester as possible – understanding that last-minute requests may not be able to be accommodated. A form for notification is available through the Office of Religious & Spiritual Life if you wish to use it. We can then have further conversation to shape a final agreement. Questions or concerns or support are always available via Religious & Spiritual life via Chaplain@bucknell.edu.
Communicating with the Instructors
We want to hear your thoughts on how much you’re learning in this course. If you are struggling with the material, please let us 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 us constructive criticism. Although we will work hard to make this course be a good experience for everyone, it won’t be really great unless you give us feedback to make adjustments to maximize effectiveness.
We will do our best to help you reach the learning objectives in this course, to help you grow your enthusiasm for studying computer science, and to help you grow as a human being. 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 us know and we will work together to identify something productive for you to pursue.