CPSC 405 Syllabus
Teacher,
Goals,
Required Materials,
Labs,
Grade Determination,
Student Responsibilities,
Honor Code,
Communication,
Pre-lecture Questions
CPSC 405, Operating Systems and Programming
- Instructor: Gusty Cooper
- Email: ecooper@umw.edu.
- Discord: CPSC 405 Discord Server -
you may also message me on Discord.
- Zoom Meeting: Gusty's Zoom Room - must prearrange meeting.
Link: https://umw-sso.zoom.us/j/9197627727?pwd=VURwak5UWmdrZEdySHp0eXVxQ1MrUT09
- Lectures: - in person and held in James Farmer Hall, Room 025 on Tuesday and Thursday from 8:30 to 10:20.
- Office: Farmer 047 -
I am on campus every Tuesday and Thursday, from approximately 7:30 to noon.
If I am not in our classroom, I will be in my office or roaming the halls of Farmer.
If you cannot visit during regular office hours, we can arrange a meeting at a
mutually acceptable day and time.
- Office Hours: Tuesday and Thursday - 10:20-noon; Other days: via prearranged appointment.
- Catalog Description: CPSC 405 Catalog Description
- Prerequisites: CPSC 305 and CPSC 340.
Course Goals, Objectives, and Outcomes
After completing this course, students will be able to:
- Implement systems programs using a Unix/Linux API.
- Recognize, recall, and explain CPU and memory virtualization.
- Analyze and implement various OS scheduling algorithms.
- Implement OS data structures for processes and memory management.
- Recognize, recall, and explain relationships between computer hardware and OS.
- Implement threaded programs using locks, condition variables, and semaphores.
- Recognize, recall, and explain the differences between processes and threads.
- Analyze and implement a simple persistent file system.
- Analyze the relationship between computer security and operating systems.
Required Materials and Computing Capability
-
Laptop/Desktop - You need a computer with Linux, C, and Xv6 that has Internet to access our CPSC 405 website, Canvas, GitHub, Discord, and the CPSC Linux Server.
- Notebook and Pencil/Pen - You need a notebook and pencil/pen to take notes, complete in class work, and answer lab questions.
- CPSC 405 Website - contains all of the material required for our class.
- CPSC 405 Schedule Page - the PDF syllabus contains a schedule, but the website schedule is more comprehensive.
- Canvas - where you observe due dates, submit labs/assignments, and view grades.
- CPSC 405 Github - contains source code for labs.
- CPSC 405 Discord - our course discussion board. All course announcements are delivered via Discord. Students can post questions and answers.
- Linux, Xv6, and C - You need Linux with an Xv6 C programming environment. Your CPSC server account satisfies this.
- Textbooks
- Xv6 - A small, Linux-like, teaching OS created by MIT. We use the RISC-V version of Xv6. The Xv6 source code for our labs is on our GitHub site.
- Zoom - You can contact me to schedule Zoom meetings if needed.
Labs and Lab Days
- The labs are a learn by doing component of our course and involve significant programming.
- The course is designed where I lecture on material and then you perform a lab on the material.
- Labs are designed to reinforce your OS knowledge on the material covered in lectures and to improve your C programming skills.
- Labs have questions and programming problems.
- Lab questions may be completed using whatever means you choose. You can answer the questions yourself, collaborate with other students, or use AI to answer the questions. Answers to questions must be handwritten (with a pencil, pen, and/or stylus) in a notebook of your choice. You must write the question and the answer.
- Lab programming problems are to be completed as an individual effort. Students cannot perform for example pair programming or solicit an AI solution to the problem; however, you can ask each other questions (in person or via Discord) and help someone who gets stuck on a problem. The key is that a student must first attempt to solve the problem using their own brain. If at this point, the student gets stuck, the student can reach out to other students, to me, or the AI to get themselves unstuck. Whatever help you receive and/or provide in getting unstuck must be described in the lab submission.
- We have two types of labs. The majority of our labs are Xv6-based Labs.
These labs are completed by adding code to Xv6, building, running, and testing
your Xv6 code.
We have a few Linux-based Labs. These labs are completed by creating standalone
C programs that run on Linux.
- Each student must submit labs on Canvas, and the submission must show the lab solution running on their own computing device. You will copy/paste from a terminal window that shows you running test cases with your username on the shell prompt. You cannot work with others in our class and submit a lab running on one of their devices.
- See Lab Submissions for the details of submitting labs.
- Students must submit labs on Canvas, and the submission must show the lab solution running on their own computing device.
- A class lab day is when we spend the first half of a class on a lecture and the second half of a class starting a lab. You have dedicated time to collaborate with others in our class, ask me for help, and work on the lab. Most class lab days are on Thursdays. Often students leave when we have class lab time, which surprises me. When I was in college, I always used my extra class time wisely, which meant I lessened my after class study time. I have discovered that students who remain for our lab time, use their time wisely, and ask questions; typically learn more.
- Labs are due at 8:00AM one week after we start them in class. For example, when starting Lab util on Thursday Jan 23, it is due at 8:00AM on Thursday Jan 30.
Grade Determination
Your CPSC 405 grade is based on the following.
- Labs: (50%)
- In each lab you can earn 100 points.
- Labs have questions and programming problems.
- Questions are worth 25 points. Answers to questions must be handwritten (with a pencil, pen, and/or stylus) in a notebook of your choice. You must write the question and the answer.
- Programming solutions (design, implementation, and tests) are worth 75 points.
- See Lab Submissions for the details of submitting labs.
- The Lab Notebook Checkoff Day is near the end of class. You must show me a clump of pages with answers to the lab questions. Failure to show your Lab Notebook results in a 10% deduction of your lab grade.
- You must submit all labs in order to pass the class.
- Midterm Exam: (25%)
- A written exam given in person and in class during our regular class time.
- You must take the Midterm Exam in order to pass the class.
- Final Exam: (25%)
- A written exam given in person and during the exam time assigned for our class.
- You can earn a note card for use on the final exam. See Attendance in Student Responsibilities for rules for earning note cards.
- You can earn 3 points to be added to your final exam score by submitting pre-lecture questions on our Discord channel pre-lecture-questions. See the section Pre-lecture Questions for more information.
- You must take the Final Exam in order to pass the class.
- Final Grade:
- The midterm and final are averaged together to create a test average.
- Your labs are averaged together to create a lab average.
- Your test average and lab average are averaged together to create your overall average.
- If your test average is less than 60, you will earn an F.
- If your lab average is less than 60, you will earn an F.
- If your overall average is less than 60, you will earn an F. NOTE: I include this rule even though it is redundant.
Examples: (1) If you have a 56 for your test average and a 94 for your lab average, you will earn a F, NOT a C because your test average is less than 60. Even though the overall average is (56+94)/2, which is a 75. This average is not your grade because your test average is less than 60 so you earn an F. You CANNOT use the 94 lab average to pull your test average to get a C.
(2) The similar example is true if you have a 56 average on your labs and a 94 average on your midterm and final.
- All other letter grades are determined according to the following scale.
grade | points |
grade | points |
grade | points |
grade | points |
A | 93-100% | B+ | 87-89% | C+ | 77-79% | D+ | 67-69% |
A- | 90-92% | B | 83-86% | C | 73-76% | D | 60-66% |
| | B- | 80-82% | C- | 70-72% | F | below 60% |
- Midterm Grade:
- UMW provides mid-semester grading feedback, which is either satisfactory (S) or unsatisfactory (U).
- A student will receive a U mid-semester grade if the student has an average that is less than 70 or their midterm grade is less than 70.
- Any student receiving a U mid-semester grade should meet with me to develop a performance improvement plan.
Student Responsibilities and Late Policies
Honor Code and AI in CPSC 405
- All assignments are under the UMW Honor Code and the CPSC department honor code policy. Plagiarizing code in a program is an honor code violation just like plagiarizing words in a paper. Be prepared to explain any submission. Contact me if you have questions about the Honor Code and this course.
- All Canvas submissions are assumed to include the UMW honor code pledge even if you do not place it on your submission. "I hereby declare upon my word of honor that I have neither given nor received unauthorized help on this work." The following describe authorized help.
- When taking the midterm and final, you are authorized to use your brain to answer the questions with a pencil (or pen) on a sheet of paper. On the final exam, you are authorized to use the notecard you earned via attendance.
- When answering the questions on labs, you are authorized to use whatever you desire. You can use our class material, other students, professors, me, the Internet, and AI.
- When solving programming problems on labs, you must first attempt to solve the problem individually using our class material and any code provided by me. You will discover that I provide code solutions for many of the programming problems. For these cases, your task is to understand the problem, understand the design, understand the code, modify the code (as appropriate), understand/create test cases, and execute the test cases to demonstrate the code solves the problem.
If after you have studied the problem and attempted to solve it, (1) you don't understand it, (2) you cannot create a design and implementation, (3) you cannot create test cases, or (4) you get stuck testing your solution with your test cases, you are authorized to seek help from other students, from me or others, Internet searches, and from AI. Any help received or given must be documented in your lab submission.
Class Communication
- Our CPSC 405 course website is the primary place for our course.
- Our PDF Syllabus has a schedule, but a more detailed schedule can be found on our website at CPSC 405 schedule page.
- All of our labs are on our CPSC 405 course website.
- Lab solutions must be submitted on Canvas. See Lab Submissions for the details of submitting labs.
- I will make all announcements through our course Discord server.
- You can post messages for classmates and me on our Discord server.
- You can email me at ecooper@umw.edu or
alternatively, you can message me on Discord.
Pre-Lecture Questions
- Pre-Lecture questions are a tool that allows you to study and think about the lecture material prior to the lecture. If you read the material prior to a lecture, you will be better prepared to understand the lecture. You do not have to understand all of the material in the readings to think of questions.
- In addition to simply writing your questions on a piece of paper, you can post Pre-Lecture questions on the pre-lecture-questions channel of our Discord server. These must be posted prior to the class of the lecture.
- Students who submit 11 Pre-Lecture unique questions to our pre-lecture-questions channel will receive three points added to their final exam grade. The word unique means you cannot copy/paste another student's question and it counts as one of yours.
Questions or comments regarding CPSC 405? Send e-mail to Gusty at
ecooper@umw.edu.
Top //
CPSC 405 home //
Last updated 8-Aug-2024 13:30 EST