Course Syllabus¶
Computer Science 400 Fall 2022¶
Course Instructor¶
- Name: Dr. Gregory M. Kapfhammer
- Office Location: Alden Hall 108
Instructor Office Hours¶
- Monday: 10:00 AM-11:00 AM, Alden Hall, 15 minute time slots
- Monday: 1:00 PM-2:00 PM, Alden Hall, 15 minute time slots
- Tuesday: 10:00 AM-12 PM, Alden Hall, 15 minute time slots
- Wednesday: 4:30 PM-5:00 PM, Alden Hall, 15 minute time slots
- Thursday: 10:00 AM-12 PM, Alden Hall, 15 minute time slots
- Friday: 4:30 PM-5:00 PM, Alden Hall, 15 minute time slots
Scheduling Office Hours
To schedule a meeting with the course instructor during his office hours, please visit the schedule page of his web site and click the "Schedule an Appointment" link at the top of the page. Now you can schedule an appointment by clicking a suitable box in Google Calendar and then reserving an open time slot. At his point, the details about your chosen appointment will appear in both your Google Calendar and the instructor's Google Calendar. If you have chosen an appointment slot through Google Meet, please check the event for a link to join the meeting with your browser.
Course Meeting Schedule¶
- Discussion and Group Work Session: Monday and Wednesday, 8:00 AM-9:15 AM
- Laboratory Session: Wednesday, 2:30 PM-4:20 PM
Course Description¶
A study of the principles used in the design, implementation, and evaluation of operating systems. Participating in hands-on activities that often require teamwork, students create and assess components of an operating system that runs on modern computer hardware. Leveraging insights and tools from an industry partner, students also investigate the resource management, process scheduling, and file systems used in representative operating systems. During a weekly laboratory session students use advanced operating systems software to complete projects, reporting on their results through both written documents and oral presentations. Students are invited to use their own departmentally approved laptop in this course; a limited number of laptops are available for use during class and lab sessions.
- Prerequisite: CMPSC 200
- Distribution Requirements: QR, SP.
Required Textbook¶
Operating Systems: Three Easy Pieces by Remzi H. Arpaci-Dusseau and Andrea C. Arpaci-Dusseau
Course Policies¶
Grading¶
The grade that a student receives in this class will be based on the following categories. All of these percentages are approximate and, if the need to do so presents itself, it is possible for the course instructor to change the assigned percentages during the academic semester.
Category | Percentage |
---|---|
Course Participation | 5% |
Course Web Site | 10% |
Midterm Examination | 10% |
Final Examination | 15% |
Long-Term Project | 20% |
Laboratory Assignments | 40% |
These grading categories have the following definitions:
-
Course Participation: After either an unexcused absence or a late attendance to class on two separate occasions, a student's course participation grade will be reduced by half a percentage for each additional time they are absent or late in an unexcused fashion. Students who need to miss class or attend late for an excused reason should communicate their situation to the course instructor as soon as possible. Students who are sick should communicate their situation to the course instructor at their earliest convenience and not attend any in-person class sessions.
-
Course Web Site: Throughout the semester students are invited to contribute content to the OS-Sketch web site in the form of, for instance, technical diagrams (i.e., a sketch of an operating system component), source code segments that comprise part of a laboratory assignment, enhancements to technical writing, and new written content. By the end of the semester, each student should make at least ten substantive contributions — excluding the merge of a pull request — to the web site, as evidenced through the GitHub repository's commit listing.
-
Midterm Examination: The midterm is an online cumulative assessment covering all of the material from the class and laboratory sessions, as outlined on the course schedule. Unless prior arrangements are made with the course instructor, all students will be expected to use their computer to take this test on the scheduled date and to complete it in the stated location while taking no more than the required amount of time.
-
Final Examination: The final is an online cumulative assessment covering all of the material from the class and laboratory sessions, as outlined on the course schedule. Unless prior arrangements are made with the course instructor, all students will be expected to use their computer to take this test on the scheduled date and to complete it in the stated location while taking no more than the required amount of time.
-
Long-Term Project: Students will propose, design, implement, test, and experimentally evaluate a significant software component of an operating system as part of this project that will take place over approximately half of the academic semester. The long-term final project will afford learners the opportunity to explore, in greater detail and in an independent fashion, some aspect of operating systems referenced by the course course schedule.
-
Laboratory Assignments: These assignments invite students to explore different techniques for rigorously designing, implementing, evaluating, and documenting operating system components or concepts. As part of these assignments, learners will use the data collected from running experiments to evaluate the implementation of an operating system component as they consider trade-offs between, for instance, its efficiency and effectiveness.
Assignment Submission¶
All assignments will have a stated due date shared through GitHub, GitHub Classroom, and Google Calendar. Electronic versions of the laboratory assignments must be submitted to the instructor through a student's GitHub repository created by GitHub Classroom. No credit will be awarded for any laboratory assignment work that you submit to the incorrect GitHub repository. Unless special arrangements are made with the instructor, no work will be accepted after the published assignment deadline. Students who are completing work for the OS-Sketch web site must do so in accordance with the content integration guidelines described in the learning community content.
Assignment Evaluation¶
Using a report that the instructor shares with you through your assignment's GitHub repository, you will privately receive a grade for and feedback on each assignment. Your grade will be a function of whether or not you completed correct work that fulfills the project's specification and whether or not you submitted the project by the deadline.
Course Attendance¶
It is mandatory for all students to attend the course sessions. If, due to extenuating circumstances, you will not be able to attend a session, then, whenever possible, please communicate with the instructor at least one week in advance to describe your situation. Students who have any signs of illness should not attend any in-person course sessions and should instead send a status update to the course instructor at their earliest convenience.
Class Preparation¶
In order to minimize confusion and maximize learning, students must invest time to prepare for the class discussions, laboratory, and programming sessions. During the class periods, the course instructor will often pose challenging questions that could require group discussion, the creation of a Python program or data table, a vote on a thought-provoking issue, or an in-class presentation. Only those students who have prepared for class by reading the assigned material and reviewing the current course assignments will be able to effectively participate in these class discussions.
Importantly, only prepared students will be able to acquire the knowledge and skills that they need to be successful in this course, subsequent courses, and the field of web development. In order to help students remain organized and to effectively prepare for classes, the OS-Sketch web site features a course schedule with, for instance, reading assignments and presentation slides. During the class sessions students will also be required to download, use, and modify source code segments and data sets that are made available through means such as the course web site or a GitHub repository.
Seeking Assistance¶
Students who are struggling to understand the knowledge and skills developed in either a class, laboratory, or programming session are encouraged to seek assistance from the course instructor and the student technical leaders. Students should, within the bounds of the Honor Code, ask and answer questions on the Discord server for our course; please request assistance from the instructor and student technical leaders first through Discord before sending an email. Students who need the course instructor's assistance must schedule a meeting through his web site and come to the virtual meeting with all of the details needed to discuss their question. Students can find out the office hour schedule student technical leaders by viewing the list of student technical leaders.
Using GitHub and Discord¶
This course will primarily use GitHub and Discord for all course communication, as summarized in the list of community connections. We will use GitHub for the sharing of both source code and course projects and for reporting issues in those materials. We will use a Discord server for all other course discussions: the OS Sketch Discord Server provides a way for members of the proactive community to use text and video to chat with each other and will be the main forum for the discussion of technical content in operating systems.
Using Email¶
Although this course primarily uses Discord for communication, the instructor may use email to send announcements about important matters. It is your responsibility to check your email at least once a day and to ensure that you can reliably send and receive emails. This class policy is based on the statement about the use of email that appears in The Compass, the College's student handbook; please see the instructor if you do not have this handbook.
Honor Code¶
The Academic Honor Program that governs the entire academic program at Allegheny College is described in the Allegheny Academic Bulletin. The Honor Program applies to all work that is submitted for academic credit or to meet non-credit requirements for graduation at Allegheny College. This includes all work assigned for this class (e.g., examinations and course assignments). All students who have enrolled in the College will work under the Honor Program. Each student who has matriculated at the College has acknowledged the following pledge:
I hereby recognize and pledge to fulfill my responsibilities, as defined in the Honor Code, and to maintain the integrity of both myself and the College community as a whole.
Effective Collaboration¶
Computer science is an inherently collaborative discipline. People must work together to produce large, complex, and ultimately useful software systems. Because of this, the Department of Computer Science at Allegheny College encourages students to engage in collaboration. However, in the context of individual coursework, through which each student must demonstrate their own knowledge and skills, there are certain forms of collaboration that are and are not acceptable.
-
Acceptable forms of collaboration include:
- Discussing high-level concepts, such as the use cases for
while
loops or the various ways in which you can modify arrays. - Referring someone to a course text book, course slides, or other resources that contain helpful information or instructions.
- Outlining the high-level steps to solving a problem or implementing a feature, without writing the necessary lines of code.
- Discussing high-level concepts, such as the use cases for
-
Unacceptable forms of collaboration include:
- Sharing specific source code, including showing your source code to someone or looking at someone else's code.
- Copying someone else's source code, technical writing, or program output, even with some slight modifications.
- Typing source code, technical writing, or program commands on someone else’s laptop or computer.
The aforementioned forms of communication are unacceptable because they make it difficult for both the course instructor and a learner to assess individual knowledge. Moreover, these unacceptable forms of collaboration can impede your learning or someone else's learning since an individual is less likely to understand source code or technical writing that they do not create by themself. Importantly, any student who participates in these unacceptable forms of collaboration, whether they are the one sharing, showing, looking, copying, or typing, are in violation of the Honor Code at Allegheny College.
In summary, students should collaborate as long as they do so in acceptable ways. With that said, if a student needs assistance beyond what can be gained through acceptable forms of collaboration, they should seek help from the course instructor or a technical leader. If a student submits deliverables (e.g., source code or technical writing) that are nearly identical to the work of others, this will be taken as evidence of violating the Honor Code at Allegheny College.
Disability Services¶
The Americans with Disabilities Act (ADA) is a federal anti-discrimination statute that provides comprehensive civil rights protection for persons with disabilities. Among other things, this legislation requires all students with disabilities be guaranteed a learning environment that provides for reasonable accommodation of their disabilities. Students with disabilities who believe they may need accommodations in this class are encouraged to contact Disability Services at 814-332-2898. Disability Services is part of the Learning Commons and is located in Pelletier Library. Please do this as soon as possible to ensure that approved accommodations are implemented in a timely fashion.
Welcome Message¶
In reference to software, Frederick P. Brooks, Jr. wrote in chapter one of The Mythical Man Month that "the magic of myth and legend has come true in our time." It is so exciting that we can write programs that "come alive" on our computers! It is also both fun and challenging to study the operating system — one of the most complex types of software that humans have ever implemented. Moreover, the design, implementation, evaluation, and documentation of operating systems is an exciting and rewarding activities. The course instructor invites you to pursue, with great enthusiasm and vigor, this adventurous exploration of operating systems — one sketch at a time!
Note
This syllabus is for learners who enrolled in a for-credit Computer Science class at Allegheny College. Even though external learners are not bound by the rules in this syllabus, they can rely on the team of operating system sketchers and the members of the OS Sketch community to complete the projects on this web site.