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 me 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 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 behaviors that stray into discrimination, racism, or harassment. Such behavior (whether verbal, written, or through 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.
As a student and citizen of the Bucknell University community:
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 responsibilityand 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!
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.
CSCI 315 is the final course in the 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.
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.
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, 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.
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.
If you are in doubt as to whether you are using AI appropriately in this course, I encourage you to meet with your instructor for a conversation. In this class, we expect that all the work you submit for grading is of your authorship. That said, we understand that there is material that may come from Unix manual pages, especially “boiler plate” code used in examples. If your instructor should ever permit the submission of work produced with the help of an AI, that will be stated explicitly in the assignment.
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.
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.
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.
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.
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.
The grade components in this course will follow the distribution below.
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.
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.
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.
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.