CPSC 405 Syllabus
Teacher,
Goals,
Required Materials,
Labs,
Grade Determination,
Student Responsibilities,
Honor Code
Communication,
HW 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 022 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, Teams, and Lab Days
- The labs are a learn by doing component of our course and involve significant programming. Labs are designed to improve your OS knowledge and C programming skills.
- 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.
- See Lab Submissions for the details of submitting labs.
- You will be placed in a Lab Team of 1 or 2 students.
- Teammates will work together to complete labs.
- Teams will divide the work among teammates as they see fit; however,
the division must be equal.
- Each team member 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 your teammate, ask me for help, and work on the lab. Most class lab days are on Thursdays.
- 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. Handwritten questions and answers can earn the entire 25 points. Typed (electronic) questions and answers can earn 15 points.
- Programming solutions are worth 75 points.
- See Lab Submissions for more information.
- 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 must take the Final Exam in order to pass the class.
Final 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% |
UMW provides mid-semester grading feedback. A student will receive a mid-semester unsatisfactory (U) grade if he/she has an average that 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
- Attendance - You are responsible for attending class. Attendance is not part of your class grade; however, my observations of past students is that those who attended class regularly usually learned the material better and earned better grades. The students with 100% attendance regularly earned an A.
- Class Participation - The most important component for learning in a class where subsequent material relies upon previous material is DO NOT FALL BEHIND. Our course has online textbooks for studying. You are responsible for studying the material, attending class, completing assignments on time, and taking the exam. You can maximize your learning by reading the material prior to class. Prior to class, you may submit a question about the lecture material. You do not have to fully understand your pre-reading to benefit. I find that learning is iterative. When I first encounter new material, I learn a little bit. When someone explains the material to me, I learn a little bit more. When I review what I have learned, I learn a little bit more. When I practice solving problems, developing code, creating tests, applying tests to my code, and debugging, I learn a little bit more. Often, I reread the material. Eventually, all of my little bits of learning coalesce into my overall understanding, knowledge, and skills.
- Asking Questions - When you need help understanding the material, you must ask questions. Do not remain silent. Often, others have the same questions. You can ask questions during class, you can post questions on Discord, you can ask your classmates questions, and you can visit during office hours for detailed discussions.
- Class Notebook - I recommend that you use an old fashion class notebook for CPSC 405. I find that I learn better when I take notes on paper with a pen or pencil. There is some connection between writing and the brain that improves my learning. All of our labs contain questions that you must answer, and you can earn more points when your answers are handwritten on paper.
- Discord and Canvas - You are responsible for checking Discord DAILY for updates to our class activities/assignments. Make sure Discord sends notifications to your preferred contact. Sometimes I adjust due dates on Canvas assignments.
- Midterm and Final Exams - You are responsible for taking exams on the scheduled date. NO makeup exams are given except in the case of an unavoidable absence that is verified through the Office of Academic Services. If you have a legitimate, planned absence, you must arrange with me an alternative date well in advance.
- Labs Late Policy - The submission deadline is 8am on the day that the lab is due. A typical lab sequence is we begin working on it during class on Thursday and it is due the following Thursday at 8AM. Most labs will require about 8 hours of work so if you begin an assignment the night before it is due, you will not finish! You can submit a lab as many times as you like before the deadline. A lab is considered late when it is submitted after the deadline. This includes submitting a lab at 8:01AM, which is one minute after the deadline.
- When you submit a lab that is between 1 and 2 days late, the highest grade you can earn is a 90. One minute past the deadline is one day late.
- When you submit a lab that is between 3 and 5 days late, the highest grade you can earn is an 80.
- When you submit a lab that is between 6 and 7 days late, the highest garage you can earn is a 70.
Any labs submitted more than 7 days late receive a 0.
I realize that sometimes legitimate life events cause you to submit a lab late. In these cases, I accept late submissions without deductions; however, you must keep me informed. Waiting until the last minute to start is not a legitimate life event. Attending a preplanned wedding is a legitimate life event. Getting sick is a legitimate life event, but if you get sick on the night before an assignment is due, I expect to see some progress.
- In Class Lab Policy - We begin all of our labs in class. On lab days, we may have approximately half of our class as a lecture and the remaining time is provided for you to work on the lab. I will help you get started. If you want to leave during lab time, you may. Realize that students who stay in class, get help, and make progress on their labs usually complete labs with high grades.
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.
- Labs have programming problems and questions. The lab programming problems must be done individually or as a team of two. Teammates work together and thus may help each other as desired. You may consult with anyone including AI to answer the questions.
- When solving labs, code obtained from any source other than me is an honor code violation. Code is provided for most of the labs. You modify the code and/or create new code.
- Searching the Internet and using online AI (such as ChatGPT) for certain types of programming help is acceptable. For example, you can search the Internet or ask AI for samples of how to call fork, samples of creating and joining Pthreads, and documentation of concepts in our materials and lectures. However, (1) you cannot search the Internet or use AI for solutions to our labs that you include in your lab submissions and (2) you cannot seek code from students who previously took the course - doing so is an honor code violation.
- If you discover a code sample (a sample - not the solution) on the Internet that is useful in a lab programming problem; you must study the code sample, understand it, and then render your own version. You must attribute the source of your rendition.
- When working on our lab programming problems, you can study class material, lab descriptions, and sample codes with others - including those not on your team. You can ask anyone questions about the lab programming problem descriptions and sample code, but you cannot ask others that are not on your team to share to share design, to share code, and/or to share test cases. Ask others questions to help you learn, but you and your teammate must create your own design, code, and test cases. You can use our class Discord server to ask these questions.
- Do not post your lab solutions on publicly accessible websites (such as GitHub).
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.
Lecture Questions
- Lecture questions are a tool that allows you to study and think
about the lecture topic 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 you can post them on the lecture-questions channel of our Discord server. I will plan to read this channel between 7:30 and 8:00 on the days of our lecture.
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