Spring 2023 — 4.0 Units
2023-01-09 through 2023-05-05
Class time: MW, 15:40 — 17:20
Class Location: Pereira 201
Lab Mgr.: Masao Kitimura
Doolan 104, 310.338.8100
Dept. Admin.: Gina Konrad
Doolan 101, 310.338.7351
Prerequisite[s]: CMSI 284
or consent of Instructor/Dept. Chair
Professor: B.J. Johnson, PhD
robert.johnson@lmu.edu
Office Hours:
MW — 12:00 - 15:00
TR — 13:30 - 15:15
and/or by appointment
Office: Doolan 220
[See Brightspace for zoom link]

[Dedicated to the memory of Dr. Phil Dorin, teacher, mentor and friend.]

Course Description from the Latest University Bulletin

The design and implementation of modern operating systems examining both user interaction and internal management of computation and resources. Scheduling, synchronization, and preemptive multitasking of threads and processes. Memory and resource management techniques such as virtual memory, page tables, segmentation, atomicity and transactions. File system storage, indexing, and allocation. Security issues at the process, memory, and resource levels. Case studies and a term project involving the extension of a popular open-source operating system kernel.

Prerequisites

This class uses the C language for its concrete examples, homework, and exams. There will be some class time spent on introductory-level C programming. You are more than welcome to ask for whatever clarification you need at any time, either in class or out. If you require additional practice with C, there are any number of online tutorials which you can use to hone your skills. In addition you can use other professors' web sites [either LMU or other schools] and things like Code Academy, Kahn Academy, codingbat.com, and good old Stack Overflow to help you when you are stuck. And as always, please feel free to come see me during office hours. I have a TON of books about C programming which I can let you look at and use in the office during help sessions.

Note that the course description above is not very specific.... there is TONS more detail below!

REMEMBER: programming, like anything else, takes practice and perseverance. You must be willing to make mistakes, to learn how to fix them, and to learn not to be afraid of them. Humans [and now even computers!] learn by making mistakes, and this is the place to do so without fear. In this class, you must also be willing to take the initiative to DO YOUR OWN RESEARCH on problems that arise and when you get stuck.

Operating Systems are EXTREMELY complex. During this course you will be modifying the Linux operating system, and there are MANY MANY different ways to do such a task. When you look up things on the Internet, be aware that not all solutions you find will be correct for your specific version, installation, or operating system! Be sure to read all of the text that is on the page before just jumping to the conclusion that the first code you see is what you seek.

Course Goals, Objectives, and Learning Outcomes

The goal of this course


When you finish the course, you will be able to:

  • Understand the inner workings of an operating system including things like deadlock and threads
  • Fathom the differences between Windows, MacOS, and Linux/UNIX
  • Grok the REASONS for the differences between those systems
  • Install and configure a Virtual Machine
  • Install, modify, and build the Ubuntu Linux operating system kernel
  • Use the C programming language at a fundamental level
  • Understand some of the significant structural architectural operations of YOUR computer
  • Say, Yes, I've had some experience with that! when people ask you questions
GOOOOOOOOOOAAAAAAALLLLLLL

What You'll Need for Success

good to go

In a nutshell, here's what you will promise yourself to do to be successful in this course:

  • Attend all classes — come prepared, having done the reading
  • Do all the assigned homework, including watching videos, visiting web sites, reading articles
  • Participate in class discussions, exercises, and activities
  • Ask LOTS of questions, both in class and out of class
  • Do well on the tests, which if you do the previous things will be no problem!

…and *I* promise to:

  • Ensure that learning outcomes for the course are clearly stated in this syllabus and are addressed during the semester
  • Be accessible and available during office hours and by appointment for interactive discussions, which can be one-on-one or in small groups
  • Provide constructive assistance and feedback to help you understand the material; such assistance and feedback can be via e-mail or text chat, or in person during office hours
  • Challenge you to do your best work and improve your interest in the topics presented
  • Always let you know as early as possible in advance, whenever I can, if there are any changes to the course or related materials
  • Always allow you to take photos of the whiteboard and to record lectures if you wish
  • Do whatever I can to ensure you leave this course with more skill than you had when you came into it
freaz!

Expected Workload

In accordance with the LMU Credit Hour Policy, this 4-unit course will require 12 hours of work per week, which includes the time spent in class and lab sessions. This work will consist of homework, a project, watching and commenting on some videos about databases and related topics, and reading/study of textbook material.

Textbooks and Resources

There are three textbooks for this course. The first and second are required, and the third is optional:

The first book is a free textbook which I have downloaded and put on my GitHub repo; since it is quite literally a free book, you may use it for reading and reference and may even download your own copy if you like. In spite of the fact that it is somewhat dated, the concepts in it are fundamental to the understanding of operating systems, and they are presented clearly so you can comprehend them rather easily. Besides, it's free.

The second book will be very helpful to you in doing all things Linux. This is also a 'free' book, but the most esteemed LMU Bookstore has some copies, I think. However, the book isn't really 'free' in terms of downloading a copy for yourself to keep forever, but it *IS* available to read and use online for free through our beloved LMU Hannon Library. Here is a link to the library record for the e-book.

The other book will be used for ancillary material. It is VERY good for you to have a copy on your own programmer's bookshelf in some form, because it is full of lessons to help you write high-quality and easily maintained code.

ONLY THE SECOND BOOK IS AVAILABLE IN THE LMU BOOKSTORE. It is also available at many other fine retail outlets, both online and brick-and-mortar, if you really do want your own copy. We will be using the first two books for homework assignments, and for general reading and information.

Although we won't be covering the books in their entirety for this class, we will be using them as primary resources.

There is also a large number of other resources which can be used to "mine the gold" for related information about operating systems. The topic is a very broad field, which has been around for a very long time, and touches almost every aspect of computer science. Any google search on operating systems will turn up at least ten million links. Many of these will be shared during class, and you will be required to find quite a bit of information about specific topics on your own. You may even need to use the LMU library, [GASP!!] so be prepared!

General Course Topics Outline

A list of topics that are covered, and the approximate order and time frame in which they will be discussed, is available on the class notes page for this site.

Reading Assignments

Chapter readings from the text books and the dates by which these readings should be completed are listed below. Note that you should have read the chapter material prior to the date listed, and you should be ready to discuss the text, ask questions about the concepts, and begin working with some of the implementations of the concepts in class. It is also a good idea to at least read (or preferably try) the exercises contained in [and at the end of] each chapter of the Hailperin text.

Here is the reading list:

  1. Week 01: [Nothing assigned to read]
  2. Week 02: Hailperin chapters 1 & 2, pp. 1 – 43
    Helmke chapter 10, Command Line Beginner's Class
  3. Week 03: Hailperin chapter 3, pp. 45 – 92
    Helmke chapter 15, The Boot Process
  4. Week 04: Hailperin chapter 4, pp. 93 – 159
  5. Week 05: Hailperin chapter 6, pp. 209 – 271
  6. Week 06: Hailperin chapter 5, pp. 161 – 208
  7. Week 07: Helmke chapter 14, Automating Tasks and Shell Scripting
  8. Week 08: Hailperin chapter 7, pp. 273 – 331
  9. Week 09: Helmke chapter 20, Securing Your Machines
  10. Week 10: Hailperin chapter 8, pp. 333 – 394
  11. Week 11: [Nothing assigned to read]
  12. Week 12: Hailperin chapter 10, pp. 447 – 466
  13. Week 13: Hailperin chapter 9, pp. 395 – 445
  14. Week 14: [Nothing assigned to read]
  15. Week 15: [Nothing assigned to read]
  16. Week 16: [Nothing assigned to read]

Homework Assignments

All written homework assignments are due at the beginning of the class on the date they are due. Deviation from this process requires prior consent of the instructor. I left my homework at home is not a valid reason for late work. This is college, and you can be responsible for remembering what you need to remember. Every effort is made to ensure assignments, required deliverables, and due dates are prominently posted on these pages; it is your responsibility to make sure you know what is due and when it is due.

You may certainly turn assignments in late; I will happily accept them, but they will be reduced in grade by one letter for each day they are late. Day means day, not workday or class day; an A+ homework due on Thursday which is not turned in until the following Tuesday will unfortunately only earn a failing grade, unless some prior arrangements are made with the instructor due to illness or some major schedule conflict. However, if you want to turn something in late, I'll still provide feedback even for assignments which have no chance of any credit; I keep this policy to allow you to get the learning benefit of the assignment even if you don't get a grade for it. My philosophy is that it is important for the students to know the material, even if an assignment doesn't get the best marks.

All assignments which are to be printed out for submission must be printed on a printer. Details for this requirement are provided for each assignment on the individual assignment's page. All assignments must use proper American English and/or Programming Language spelling and grammar. Failure to do so will cost you a letter grade, so get a spell-checker and a grammar checker, or find a friend who is proficient to proofread your work before it is submitted.

Other than these simple rules, there are no requirements for formatting, fonts, colors, diagrams, or anything else with respect to your homework assignments, other than good code craftsperson-ship.

There will be three homework assignments during the semester, due on the dates shown in the list below. Each assignment will contain several excersises to help give you experience with the concepts covered. Each of these assignments is detailed on a separate web page; they are available from the links below. Solutions will be provided after ALL the assignments are handed in. This policy provides a motivation for everyone to turn assignments in on time, since NO ONE gets the solutions until EVERYONE has submitted their work. Homework will be done in groups of three, since much of the homework involves programming assignments. It is EXPECTED that you will work independently from other groups, although discussion of the concepts is encouraged. Computer science is a collaborative enterprise, but you will be responsible for your own work on the submission of all your assignments. Each link below takes you to the web page for that assignment

  1. Homework #1 — Wednesday of week 04
  2. Homework #2 — Wednesday of week 09
  3. Homework #3 — Wednesday of week 13

Exams, Quizzes, and Projects

There will be no formal quizzes. There will be no midterm exam. There will be a final exam. Grades for the course will come from your homework assignments, your participation in the class [including participating in the in-class exercises], and your semester project, as well as your final exam. The final exam will be open everything except neighbor, because this is hard stuff.

There will be a semester project for this course. You will be required to download and install a copy of Linux from source code. This means you will need a virtual machine for your computer. The semester project will include documenting and implementing some functionality into the Linux kernel, and demonstrating it to the class in some fashion. The final project due date is the week before finals week, so you will have the entire semester to implement it. The project is to be done using triumvirate programming which means you will be working with two partners on this effort for the entire semester. Your homework will be done using the same group as your project group, so there will be three of you collaborating on the homework assignments, too.

Use of Technology

You will need access to a computer of some variety.

…Well, Duh…

Building the Linux kernel takes a LOT of memory and hard disk space. At last count when I did this, I had my VMware virtual machine set up to 8 GB of RAM and 70 GB of hard disk space. If you don't have that much space available, you can still do this, but it will be slower. Be aware that building the kernel can take a very long time, depending upon your hardware. Some of my builds have taken as much as four hours to complete.

If you find that no one in your group has that much space available, let me know. We can work with Masao to try to get something set up in the Keck Lab for you to use for your project.

freaz!


You should also note, while it is not required that ALL THREE of the members of each project group build Linux, THE ENTIRE TEAM should be a part of the process so that you all get the experience of having built the operating system kernel at least once in your life. Start early on this project and don't wait until the night [or even the week] before the deliverable is due to begin. Also, it's a good idea to back up your data to some external device so you can clean off your hard drive, if you need to do so, to insure you have the needed space when the time comes! Also be aware that you should do this project together as a group; don't try to parse it into pieces, because it doesn't work that way.

Attendance and Participation

Although attendance is not mandatory, it is in your own best interest to attend every class. Much of the material will be discussed and elaborated upon in class, so counting on the books for all required information will not provide you with complete information. In addition, there will be in-class exercises in small groups which you will miss out on if you are not there.

Obviously, if you skip too many classes, you will likely fail; this is a simple and self-fulfilling prophecy.

The class participation rubric appears with the grading stuff in the tables below.

Extra Credit

There will be no extra credit given in this course.

Grading

Grades for the course are assigned according to the weighting factors shown in the tables below.

Final letter grades will be assigned based on the following scale:


PercentLetterRating and Achievement
90 - 100% A- / A Professional quality work; outstanding
80 - 90% B- / B / B+ Entry-level quality work; above average, shows extra effort and interest
70 - 80% C- / C / C+ Satisfactory work; expected with reasonable effort
60 - 70% D Substandard work; minimal effort shown
59 or lessF Thank you for playing; see you next semester



Evaluation ItemWeight
Homework [total, all 3]30%
Semester Project
[Preliminary Design]
[Detailed Design]
[Final Presentation/Project]
40%
[10%]
[10%]
[20%]
Final Exam [cumulative]20%
Class Participation 10%



Class Participation CriteriaValue
Absent *without* prior notification/agreement of professor 0
Absent *with* prior consent/agreement of professor 5
Demonstrates adequate preparation with respect to readings and other materials; Offers pertinent analysis, synthesis, and evaluation; puts together pieces of the discussion to develop new approaches that take the class further. Asks probing questions.
If you're in your chair, the points are there
5


Also of note…

An incomplete will be granted only when the student requesting the incomplete has completed at least 80% of the coursework, and has at least a B average in the course work completed. This is standard LMU policy.

Leave of Absence/Withdrawal Policy:

Please read the revised policy in the University Bulletin.


All work is evaluated for both technical merit and quality of written and/or oral presentation. Find yourself a good spelling and grammar checker, or a trusted human editor, if you are having any difficulty with the rules of standard English language usage. Another excellent resource is the Academic Resource Center, located on the south side of Daum Hall. The center takes appointments, and also allows drop-in consultation sessions, and they have a number of good benefits. Call (310) 338-2847 to schedule an appointment. (For those that don't know, Daum Hall is the building where the LMU Security and Parking office used to be. ARC is on the second floor.)

Another thing to remember is, your coding style is an important part of your assignment evaluations. I WILL NOT HESITATE to take points off for code that has hard-coded number

FAIR WARNING!!! DANGER WILL ROBINSON!!! FAIR WARNING!!!



In this class, documentation which is not of professional quality is no longer acceptable. Spelling, grammar, and internal document consistency all count and will cost you big-time if not correct! I will not hesitate to knock off a full letter grade on an otherwise perfectly correct assignment if there are egregious and/or numerous spelling/grammar errors. In addition, coding style will play a large part in determining the grade on the code for the homework and project. It is the job of each student to properly structure, comment, and indent, to select the proper names for variables, and to not hard-code values. NO MAGIC NUMBERS!



FAIR WARNING!!! DANGER WILL ROBINSON!!! FAIR WARNING!!!

DANGER. WILL. ROBINSON.

Course Evaluation

Student feedback on this course provides valuable information for continued improvement. All students are expected to fairly and thoughtfully complete a course evaluation for this course. All course evaluations for the Seaver College of Science and Engineering are administered online through the Blue evaluation system. You will receive an e-mail notification at your Lion e-mail address when the evaluation form is available. You may also access the evaluation form on Brightspace during the evaluation period. A few minutes of class time will be reserved for you to complete a course evaluation near the end of the semester. Please bring a laptop, smart phone, tablet or other mobile device to class on this date so that you can access the online evaluation platform.

Academic Honesty and Integrity

freaz!

General Statement

Loyola Marymount University is a community dedicated to academic excellence, student-centered education, and the Jesuit and Marymount traditions. As such, the University expects all members of its community to act with honesty and integrity at all times, especially in their academic work. Academic honesty respects the intellectual and creative work of others, flows from dedication and pride in performing one's own best work, and is essential if true learning is to take place. As an LMU Lion, by the Lion's Code, you are pledged to join the discourse of the academy with honesty of voice and integrity of scholarship.

Academic dishonesty will be treated as an extremely serious matter, with severe consequences that can range from receiving no credit for an assignment or test to failing the class, to expulsion.

  • It is never permissible to turn in any work that has been copied from another student or copied from a source [including the Internet] without properly acknowledging/citing the source.
  • It is never permissible to work on an assignment, exam, quiz or any project with another person unless your instructor has indicated so in the written instructions/guidelines.
  • It is your responsibility to make sure that your work meets the standard of academic honesty set forth in the LMU Honor Code and Process. The LMU Academic Honor Code and Process can be found at: https://academics.lmu.edu/honesty/.

LMU Academic Honesty Policy https://academics.lmu.edu/honesty/:
Unauthorized Access to or Alteration of Privileged and Proprietary Information:

Special Accommodations

Students with special needs who require reasonable modifications, special assistance, or accommodations in this course should promptly direct their request to the Disability Support Services [DSS] Office. Any student who currently has a documented disability [ADHD, Autism Spectrum Disorder, Learning, Physical, or Psychiatric] needing academic accommodations should contact the DSS Office [Daum Hall 2nd floor, 310-338-4216] as early in the semester as possible. All discussions will remain confidential. Please visit http://www.lmu.edu/dss for additional information.

Students should also keep in mind that resources are available through the Library [https://library.lmu.edu] and Information Technology Services [https://its.lmu.edu]. The DSS Office can help students connect with the appropriate person at the Library and ITS.

Respect For Self And Others

As an LMU Lion, by the Lion's code, you are pledged to join the discourse of the academy with honesty of voice and integrity of scholarship and to show respect for staff, professors, and other students.

The following LMU documents are available to reference:

  • LMU's Community Standards, which defines as prohibited conduct (IV.D):
    Disruptive Behavior, and/or intentionally or recklessly interfering with normal University life, activities, processes or University-sponsored activities including, but not limited to: studying; teaching; research; classroom instruction; campus or residential life; University administration; judicial proceedings; or fire, police or emergency services. [see page 8, section P, item 7 of the Community Standards document]
  • The Lion's Code [see LMU's Community Standards at the link immediately above.]
  • The LMU Student Affairs brochure Disruptive and Threatening Student Behavior (Fall 2010), which states Disruptive behavior which is persistent or significantly interferes with classroom activities may be subject to disciplinary action. A student may be referred to the Office of Student Judicial Affairs if their behavior constitutes a violation of the conduct code.
DANGER. WILL. ROBINSON.

For more information on this or any other conduct issues, please refer to the Student Codes and Policies section in the Community Standards. The Lion's Code, Student Conduct Code, Honor Code and Process, and information on many other policies are available from that link. You can find any and all other related data from the Office of Student Conduct & Community Responsibility web page. Also check the main Student Affairs Department Website.

Expectations for Classroom Behavior

Electronic Devices: Pretty easy — please turn off your cell phone ringer during class time. That's it for me! However…

The official LMU language for this is:

Please turn off and put out of sight all electronic devices (other than those and when allowed) during class-time. The interruptions and/or distractions they cause disrupt class and interfere with the learning process. Even if you are not on video, it's distracting to you.

Expectations for Classroom Behavior in an Online Learning Environment

In case we are required to [for whatever reason] continue our course remotely, the following items are carried over from the COVID era of zoom learning.

  1. Netiquette: In addition to LMU's Community Standards, The Lion's Code and Guidelines on LMU Student Classroom and Course-Related Behavior, students should adhere to Netiquette. Your instructor and fellow students need a safe, online learning environment. All opinions and experiences shared, no matter how controversial they may be perceived to be, must be respected in the spirit of academic discourse. You are encouraged to critique an idea but should not attack an individual. Working as a community of learners, we can build a respectful space for discourse. Below are some tips for good netiquette:
    • Listen actively: listen to understand, to learn, and to receive information.
    • Present ideas appropriately
      1. Avoid the use of offensive language
      2. Be aware of Internet Language. For example, do not capitalize all letters since this suggests shouting.
      3. Popular emoticons such as 😜 or 👍 can be helpful to convey your tone but don't overuse them
      4. Use an appropriate and respectful tone when communicating formally or informally.
    • As in a classroom-based session, engaging in private chat during remote class discussions and presentations is disruptive.
    • Do not work on other things during class attendance
    • It may be tempting to multitask during class, but this will impede your learning. Your full focus on the conversation and class materials is required.
    • Before posting your question to a discussion board, check if anyone has asked it already.
    • Don't post irrelevant links, comments, thoughts or pictures.
    • If you refer to something your classmate said earlier in the discussion, quote just a few key lines from their post so that others won't have to go back and figure out which post you're referring to.
    • Respect the opinion of your classmates. If you feel the need to disagree, do so respectfully and acknowledge the valid points in your classmate's argument.
    • Be willing to express dissent. There should be space for non-majority opinions.
    • Edit before you push the Send button.
    • Students are expected to attend class sessions without interruptions.
  2. Zoom Sessions:
    • Please keep your camera on if at all possible.
      Note that I realize some folks don't have cameras, sometimes things break, sometimes there are others in your same space, some people are shy, etc. Just do your best to be visible when you can.
    • Please keep your microphones muted until it is your turn to speak.
    • Please use the raise hand feature or use the chat if you have a question or comment.
      [Note that I'm notorious for NOT seeing things in the chat window, but using the raised hand will call my attention to you.]
    • Be an active participant in the breakout sessions.
    • All Zoom sessions [and most classroom sessions] will be recorded and put on Brightspace. Please review these if you are unable to attend or need to leave early. I know these recordings are long, but you can use the slider bar to advance or replay portions of it if you want.
  3. Safety and Privacy in the Remote Learning Environment:

    Students and faculty have a reasonable expectation for privacy in all learning spaces. Bimodal and remote learning can involve the use of synchronous video conferencing, asynchronous recorded lectures, live and online discussions, as well as online forums. In these venues, privacy is a priority for a safe learning environment. See Lion's code.

    As a member of our online community, please follow these privacy guidelines:

    • Videos captured during class meetings should be used only to support student learning and to prepare students for effective learning.
    • Do not share screenshots or images from sessions.
    • Do not record any sessions with your own device; asynchronous classes will be posted in a secured page on Brightspace and may not be downloaded, manipulated, or distributed, or uploaded to a public page for any reason [unless with instructor permission].
    • Do not share class access information such as Zoom links etc.

Because of the nature of the class delivery method during remote zoom times we will also take a look at a document which will serve as a guide for everyone in the class. This Netiquette Document is published here and on the Brightspace site for this class. We will take a look at it during the first week of class and will work to make it agreeable to everyone involved.

Emergency Preparedness

Public Safety can be reached 24/7/365 at 310.338.2893 [or x222 from a campus phone]. In a life-threatening emergency, call 911 first and then call Public Safety if possible. To report an incident, call Public Safety, submit an e-report on the Public Safety website or via the Rave Guardian mobile app, or visit Public Safety in Foley Annex. Review evacuation information and other safety tips posted in each learning space. Make sure you're registered to receive emergency alerts – confirm your contact information at lmu.edu/alert, and download Rave Guardian in the Apple or Google Play store. For more information and emergency preparedness tips, visit https://publicsafety.lmu.edu.

To report an emergency or suspicious activity, contact the LMU Department of Public Safety by phone (x222 or 310-338-2893) or at the nearest emergency call box. In the event of an evacuation, follow the evacuation signage throughout the building to the designated safe refuge area where you will receive further instruction from Public Safety or a Building Captain.

For purposes of evacuating the building, our safe area is the sunken gardens. There will be people to guide you.

For more safety information and preparedness tips, visit http://www.lmu.edu/emergency.

Office Hours / Communication / Contact Information

Office hours are listed at the top of this syllabus page. I will make every effort to be available during those hours, and if I cannot for some emergency reason, I'll make sure you all know about it in advance if possible. Office hours will be in my office, Doolan 220. In some cases if you want to have a personal one-on-one with me, we can make an appointment for a zoom meeting.

I am also always available by e-mail at: my LMU mail address

YOU MUST CHECK YOUR LION EMAIL ADDRESS OF RECORD. I will start the semester's communications by sending all email blasts to everyone's lion.lmu.edu email address, which is known as your address of record. If you specifically provide me with a preferred alternative email to use I will be happy to oblige. I create a distribution list to which I send all general communications in addition to the slack channel, so it is important for me to have an email address which you will check on a regular basis.

Tentative Nature of the Syllabus

If necessary, this syllabus and its contents are subject to revision. Students are responsible for any changes or modifications announced or distributed in class, emailed to students' LMU Lion accounts or posted on LMU's course management system, Brightspace. If you are absent from an in-person or online class meeting, it is your responsibility to check Brightspace [and/or the course website] and to check with the professor to see if you missed any important class announcements. Students should not rely on word-of-mouth from classmates.