Instructor:
Justin Bradley 290 Schorr
Office hours: Thursdays 10:45 - 11:45, and otherwise by appointment By appointment
Email: justin.bradley@unl.edu
Phone: (402) 472-5072
TAs:
Mohammad Alali (AVH 12, Students Resource Center)
Office hours: Mondays 11:00 - 1:00 By appointment
Email: alali@huskers.unl.edu
Quinn Lanik (MANT 403)
Office hours: Tuesday/Thursday 11:00 - 12:30 By appointment
Email: quinnmlanik@gmail.com
This course will introduce students to key concepts of modern operating systems. These concepts include system organization, processes, threads, process management, process and thread synchronization, memory management, and storage management.
Topics covered: Organization and structure of operating systems. Processes and concurrent programming. Inter-process communication. Process synchronization using reads/writes, semaphores, and monitors. CPU scheduling. Deadlocks including detection, avoidance, prevention and recovery. Intro to real-time systems. Memory organization and management including paging, segmentation, virtual memory, and page replacement algorithms. File system concepts and structure. Protection and security. Topics are conveyed through lectures and a series of hands on programming assignments.
Class: TR 09:30 - 10:45 in BESY 117
Final exam: 10:00 - 12:00 Thursday, May 7, 2020
Class: TR 14:00 - 15:15 in AVH 106
Final exam: 13:00 - 15:00 Wednesday, May 6, 2020
Class website (just a repeat of Canvas): http://cse.unl.edu/~jbradley/courses/2020_spring/CSCE451-851-OS/
Prerequisites: A grade of “P” or “C” or better in CSCE 230, CSCE 230H or CSCE 231 and CSCE 310, CSCE 310H, CSCE 311, SOFT 260, SOFT 260H or RAIK 283H.
Text: Silberschatz, Abraham, Greg Gagne, and Peter B. Galvin. Operating system concepts: 9th Edition. Wiley, 2013.
This course will consist of 5 (graded) programming assignments, 4 homework assignments, one midterm, and one final exam. The grade breakdown will be:
Late work will be accepted according to the following formula. Let h be the hours past the time due, and t=\lceil h\rceil. Then your grade will be g=xe^{-0.02t} where x is the total points possible on the assignment (typically 100). No other late work exceptions will be made outside of those indicated in the UNL policy indicated at https://registrar.unl.edu/academic-standards/policies/class-attendance/. As a general rule I am much more willing to work with exceptions if you let me know in advance if possible.
Students in 851 will be assigned additional problems on homework assignments. This addition will not be significant as I intend for the 451 and 851 to be roughly equivalent, and this course already has a high workload.
Programming assignments will be graded on a 100 point scale.
Your program must compile and execute on the CSE servers (cse.unl.edu) - else you get 0/100. Make sure you check this prior to handing in.
All programming assignments must be handed into web handin (http://cse.unl.edu/~handin) - else you get 0/100.
Each programming assignment will indicate precisely how the PA will be scored. Most of the time all the points are gained by passing the test suites. If you don’t pass the test suites you get no points. However…
I also reserve the right to take off points for poor programming practices: poor commenting, function names, variable names, magic numbers, etc.
“That’s stupid!”: When you program in industry you will get no “credit” if you break the nightly build, or your program simply doesn’t do what it is supposed to do. Not using good programming practices will make people grumpy, but if your program doesn’t fulfill the specifications your good programming practices won’t mean anything.
“That doesn’t accurately reflect what I learned!”: I’m in the business of preparing our students to be strong employees. As 4th year undergraduates, or graduate students, good programming practice is simply an expectation of a computer scientist. Writing programs that meets specifications is the bare minimum any computer scientist can do. In most PAs you will have access to the test suites or an approximate set of test suites, so it should be straightforward to test all your code, and make sure it compiles and runs on the CSE servers.
“Why not partial credit?” You will get partial credit for passing various tests in the test suite. If your code doesn’t pass a test you get 0 points for that particular test. There are several reasons for this:
Bottom line: write good code that fulfills the specifications (i.e., passes all the tests) and you’ll get all the points.
Sometimes you do your very best and something doesn’t go right. You forgot a “\n” character in a printed statement, etc. In these minor cases, where you were very close, please write me an “appeals” email describing the scenario, submitting your new code, and I will, at my discretion, re-grade the assignment with a 10% penalty. All appeals must be filed within a week of grades being posted.
Grades will then be assigned using the following table:
Grade | Percent |
---|---|
A+ | [98-10] |
A | [93-98) |
A- | [90-93) |
B+ | [88-90) |
B | [83-88) |
B- | [80-83) |
C+ | [78-80) |
C | [73-78) |
C- | [70-73) |
D+ | [68-70) |
D | [63-68) |
D- | [60-63) |
F | [0-60) |
Attendance is not mandatory but you are responsible for anything that transpires during class. Please be on time to class!! If you’re consistently late and/or disruptive in class I reserve the right to dock you points on an assignment.
Put your name, course, and section on everything you turn in. Sometimes we print things out for grading. Also, this is generally just good practice.
Exchange of ideas and techniques is highly encouraged but your work must be your own. If someone helps you, please give them credit in your code (even if it’s the TA). Myself and the TAs will follow up with suspicions of academic dishonesty in accordance with department and university policy (see below).
All homework assignments must be typed unless otherwise specified. If you are not proficient with either LaTeX, Microsoft Word, or some other word processor or typesetting language now is your chance to learn as this will be a necessary component of your professional career.1 If writing is difficult for you, or you are not proficient with English, the UNL Writing Center (http://www.unl.edu/writing/home) may be able to help you. If I can’t understand what you write I will dock you points. This is the subjective nature of writing and communicating.
Students have one week from time of grade posting to challenge a grade.
If you have questions or would like to chat please contact me by email. I’d be happy to talk to you most anytime, but would appreciate setting up an appt. if you need a specific question addressed. I have set aside one open office hour per week, and 1+ hour for individual appointments.
Please use professional email communication. A saluation, description, request, closing, and concise subject line are appropriate for professional communication.
Course announcements will be posted on Canvas and some may be distributed by email. Check your email and the Canvas announcements regularly!
Discussions and questions about PAs and HWs is encouraged! Please use Canvas for such discussions so that everyone can benefit from the answers.
The CSE Department has an anonymous contact form that you may use to voice your concerns about any problems in the course or department if you do not wish to be identified. (http://cse.unl.edu/contact-form)
CSE Department policy dictates that students in CSE courses are expected to regularly check their email so they do not miss important announcements.
Consider the Student Resource Center in Avery 12 if myself or the TAs are not available, or you otherwise need help: (http://cse.unl.edu/src)
All homework assignments, quizzes, exams, etc. must be your own work. No direct collaboration with fellow students, past or current, is allowed unless otherwise stated. The Computer Science & Engineering department has an Academic Integrity Policy (http://cse.unl.edu/academic-integrity-policy). All students enrolled in any computer science course are bound by this policy. You are expected to read, understand, and follow this policy. Violations will be dealt with on a case by case basis and may result in a failing assignment or a failing grade for the course itself.
The University strives to make all learning experiences as accessible as possible. If you anticipate or experience barriers based on your disability (including mental health, chronic or temporary medical conditions), please let me know immediately so that we can discuss options privately. To establish reasonable accommodations, I may request that you register with Services for Students with Disabilities (SSD). If you are eligible for services and register with their office, make arrangements with me as soon as possible to discuss your accommodations so they can be implemented in a timely manner. SSD contact information: 232 Canfield Admin. Bldg.; 402-472-3787.
Academic honesty is essential to the existence and integrity of an academic institution. The responsibility for maintaining that integrity is shared by all members of the academic community. The University’s Student Code of Conduct addresses academic dishonesty. Students who commit acts of academic dishonesty are subject to disciplinary action and are granted due process and the right to appeal any decision.
UNL offers a variety of options to students to aid them in dealing with stress and adversity. Counseling and Psychological Services (CAPS); is a multidisciplinary team of psychologists and counselors that works collaboratively with Nebraska students to help them explore their feelings and thoughts and learn helpful ways to improve their mental, psychological and emotional well-being when issues arise. CAPS can be reached by calling 402-472-7450. Big Red Resilience & Well-Being provides one-on-one well-being coaching to any student who wants to enhance their well-being. Trained well-being coaches help students create and be grateful for positive experiences, practice resilience and self-compassion, and find support as they need it. BRRWB can be reached by calling 402-472-8770.
This schedule is a best estimate and may change, and may be wrong. Please see the master, detailed schedule in Canvas for a reliable, week-by-week schedule:
Week | Assigned | Due | ||
---|---|---|---|---|
1 | Jan 13-17 | PA0 | ||
2 | Jan 20-24 | PA1 (1/21) | ||
3 | Jan 27-31 | |||
4 | Feb 3-7 | PA2 (2/6) | PA1 (2/6) | |
5 | Feb 10-14 | HW1 (2/11) | ||
6 | Feb 17-21 | PA3 (2/20) | PA2 (2/20) | |
7 | Feb 24-28 | No class Feb 25 | HW2 (2/25) | HW1 (2/25) |
8 | Mar 2-6 | |||
9 | Mar 9-13 | Midterm Exam (3/12) | ||
10 | Mar 16-20 | Class cancelled COVID-19 | ||
11 | Mar 23-27 | No class (Spring Break) | EC1 (3/26) | |
12 | Mar 30 - Apr 3 | HW3 (3/31) | HW2 (3/30), PA3 (3/30) | |
13 | Apr 6-10 | PA5 (4/9) | ||
14 | Apr 13-17 | HW4 (4/14) | HW3 (4/14) | |
15 | Apr 20-24 | |||
16 | Apr 27 - May 1 | HW4 (4/28), PA5 (5/1) | ||
17 | May 4-8 | Final Exam | EC1 (5/8) |
These updates are content changes in light of our unfortunate circumstances this semester:
Please contact me with any questions. I’m particularly concerned with the mental and emotional distress our current circumstances could have on each of us. Don’t hesitate to reach out and let me know how things are going. We will all have to be patient with each other and ourselves during this time.
Personally, I use LaTeX, so if that’s your platform and you need technical help I can offer it. If you use Microsoft Word I will be of no use to you.↩︎