Course Syllabus
Syllabus |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
The current version of the course web site and syllabus is available at https://cscie92.dce.harvard.edu/spring2021/. Please refer there for updated information.Syllabus forHarvard Extension School CSCI E-92 (formerly CSCI E-251)Principles of Operating Systems (25900)Spring 2021
|
| TA | Section Meeting Time/Place | Office Hours Time/Place | E-mail Address/Phone |
|---|---|---|---|
| Stephen Benjamin Section Site |
Tuesday, 6:30-7:30 PM ET, Via web conference |
Thursday, 6:30-7:30 PM ET by appt. only, Via phone and/or web conference |
E-mail: |
| Mark Ford Section Site |
Tuesday, 6:30-7:30 PM ET, Via web conference |
Monday, 6:30-7:30 PM ET by appt. only, Via phone and/or web conference |
E-mail: |
Questions and Issues:
When posing questions or bringing up issues of a non-personal nature, please use the class Piazza Forum. Answers to questions posed on Piazza benefit the whole class and allow the course staff to answer questions once for all students. Questions that include code or other information that shouldn't be shared with other students should be sent via e-mail to all course staff at the same time in order to increase the probability of a rapid response.
Piazza Wiki/Forum:
A Piazza Wiki/Forum (on-line discussion list) for CSCI E-92 is set up at Harvard Extension School CSCI E-92 Piazza Forum.
Record a Say Hello! Video:
Using any tool of your choosing (perhaps a cell phone selfie or the camera on your laptop), please record and post a short video (maybe just one to three minutes in length) in Canvas Discussions as a reply to my Say Hello! discussion to introduce yourself to the class. With everyone being remote, anything we can do to create a community for our class would be great. Please tell us a little about yourself possibly including where you are located, your background, what you do when you're not taking classes, and your goals for this class.
Enter Your Location:
Please enter your location in Canvas.
Using git and GitHub:
When using "git" and GitHub, make sure to follow the information on using "git" and setting up your GitHub repository that is available on the section web site.
Grading:
Graduate credit students:
- 65% Programming assignments & problem sets
- 12% Midterm exam
- 23% Term project (required)
Problem Sets:
All problem sets and programming assignments are due at midnight Eastern Time on Sunday night (i.e., midnight between Sunday and Monday) unless otherwise stated in the assignment or in the syllabus. Unless otherwise stated, all programming assignment solutions must be written in the C Programming Language. All code must build, be tested, and run on cscie92.dce.harvard.edu or on the NXP/Freescale K70 Tower computer systems, as appropriate; be submitted using "git" on GitHub (or, in dire circumstances, via e-mail only if agreed to by the course staff); be well-written (clear coding style, modular structure, appropriately commented and documented in English); and tested (include any programs and/or shell scripts used in testing your solution as part of your submission). Remember, in addition to handing in all parts of the problem set solution or programming assignment program, sample runs of the program which demonstrate that the program works must be attached. In addition, each submission must include a makefile to build the assignment. The grade for programming assignments will include all of these attributes.
Of course, the solutions may be written and tested using any system of the student's choosing; however, when the solution is complete, it must be tested on the cscie92.dce.harvard.edu computer and pushed to the git code repository on GitHub. You may choose to develop under your own Unix/Linux system or under Cygwin under Windows, but testing and grading of your programming assignments will take place on the cscie92.dce.harvard.edu computer. To reiterate, we will be grading the solutions based on their behavior on the cscie92.dce.harvard.edu computer.
You can establish an account on cscie92.dce.harvard.edu by accessing the website at URL https://ac-web.dce.harvard.edu/ and clicking on "Reset Password." Please note that the username shown on this screen is the username you will use to login to our server. Our cscie95.dce.harvard.edu computer may be accessed for remote login using "ssh" over the Internet. Files may be transferred to these systems using "secure ftp" (SFTP). If you are using a Windows system, the SecureCRT and SecureFX programs are available from the Science Center at http://downloads.fas.harvard.edu/download; these programs implement "ssh" and "secure ftp," respectively. On Unix/Linux systems, the shell commands "ssh" and "sftp"/"scp" can be used for ssh and SFTP, respectively.
Separate documentation is available describing how to install and use git and GitHub on the section web site.
Some assignments may include Extra Credit programming problems. The Extra Credit programming problems can be completed to earn points that can increase the overall grade on the programming portion of your problem set; however, the grade on the programming portion of a problem set including extra credit will ever exceed the full credit possible grade on the programming portion. That is, the Extra Credit programming problem(s) can be used to make up for deficiencies in other programming portions of the problem set to allow a higher grade to be earned. Extra Credit points from one problem set are not transferrable and may not be used on any other problem sets.
Late Policy:
All problem sets except for Problem Set 0 may be submitted late for partial credit. A late homework will lose 5% of its original grade for each day it is late (e.g. an assignment handed in two and a half days late will receive its original grade multiplied by 0.85). Late assignments may be submitted via "git" and an e-mail message notifying the instructor and the teaching assistants should be sent immediately after the late assignment is submitted. In addition, each student is given five free late days that may be used freely during the semester. However, keep in mind that almost all of the assignments are built on the previous assignments; handing in one assignment late does not extend the due date for subsequent assignments. The scope and difficultly level of the assignments increases during the class; therefore, we recommend against using the five free late days early in the class.
After a programming assignment has been initially submitted, we will award additional partial credit for corrections made to that assignment. We encourage students to correct any errors found in their code and to make improvements and enhancements. This will improve your grade and, in many cases, will be required to allow the next phase of your compiler to function correctly. No additional partial credit will be awarded for Problem Set 0 or for book problems.
Commented and Documented:
In the "Grading: Problem Sets" section above, the phrase "commented and documented" is used; this paragraph will clarify the necessary comments and documentation that should be provided with all programs. First, there should be a description of the entire application. This should include the user interface (i.e., how a user interacts with the program) and an explanation of what the program does. This documentation may be in a separate file from the program itself. Second, there should be a description at the beginning of each file which outlines the contents of that file. Third, each routine, function, method, etc. must be preceded by a section describing: (1) the name of the routine, (2) the purpose/function of the routine, (3) the parameters to the routine (name, type, meaning), (4) the return value from the routine (type, meaning), and (5) any side-effects (including modifying global variables, performing I/O, modifying heap-based storage, etc.) that the routine may cause. Fourth, declarations of variables should be commented with their purpose. Fifth, blocks of code should be commented to describe the purpose of the code section. Sixth, any complex or difficult to understand code statements or fragments should be commented to clarify their behavior.
Programming Languages:
In addition to programming in a conventional language (the C Programming Language), students will learn how to write code in ARM/Thumb assembly language. These are the low-level languages used by ARM computers. All students are required to use Special Edition CodeWarrior for Microcontrollers, Version 10.6 or Kinetis Design Studio (KDS), Version 3.2.0 from NXP/Freescale. This software may be downloaded from the www.nxp.com web site, is free, and no license is required. The Special Edition CodeWarrior for Microcontrollers software runs only on Windows. The Kinetis Design Studio software runs on either Windows, Mac, or Linux (DEB or RPM).
Using git:
When using "git" and https://github.com/, make sure to follow the information on using "git" and setting up your repository that is available on the section web site. Create a named branch for each of your problem sets as follows: specify "problem-set-0" for Problem Set 0 (the course questionnaire, fix this program, and word count), specify "problem-set-1" for Problem Set 1, "problem-set-2" for Problem Set 2, etc., specify "project-proposal" for the Term Project Proposal, and specify "term-project" for the Term Project.
Midterm Exam:
See Distance Learning Links: Midterm Exam for more information for distance students.
Accessibility:
The Extension School is committed to providing an accessible academic community. The Accessibility Office offers a variety of accommodations and services to students with documented disabilities. Please visit https://www.extension.harvard.edu/resources-policies/resources/disability-services-accessibility for more information.
Plagiarizing:
All work should be the personal creation of the individual student. Students are free to consult with each other and to study together, but all problem set solutions, programming assignments, exams, and the final project must be the personal contribution of each individual student. More explicitly, whenever a concept is reduced to a detailed algorithm or a program, no collaboration is allowed. If a paper, assignment, exam, program, or final project contains any information, algorithms, program fragments or other intellectual property taken from another source, that source and material must be explicitly identified and credit given. If you have any questions about this policy, it is the student's responsibility to clarify whether their activity is considered plagiarism.
You are responsible for understanding Harvard Extension School policies on academic integrity (https://www.extension.harvard.edu/resources-policies/student-conduct/academic-integrity) and how to use sources responsibly. Not knowing the rules, misunderstanding the rules, running out of time, submitting the wrong draft, or being overwhelmed with multiple demands are not acceptable excuses. There are no excuses for failure to uphold academic integrity. To support your learning about academic citation rules, please visit the Harvard Extension School Tips to Avoid Plagiarism ((https://www.extension.harvard.edu/resources-policies/resources/tips-avoid-plagiarism), where you'll find links to the Harvard Guide to Using Sources and two free online 15-minute tutorials to test your knowledge of academic citation policy. The tutorials are anonymous open-learning tools.
Course Outline:
- Devices for which the operating system is responsible
- CPU
- Memory
- RAM
- ROM
- Disk
- Hard
- Floppy
- CD-ROM
- CD-R
- Optical
- Magneto-optical
- MMU
- Display
- Keyboard
- Mouse (or other pointing device)
- Network
- Printer
- Modem
- Tape
- Bus
- DMA
- ISA
- PCI & PCI-Express
- USB
- SCSI
- IEEE 1394 (FireWire)
- Bootstrap
- Abstractions provided by the operating system
- Process
- Address space/Virtual memory
- File
- Window
- Socket, channel
- Interact via programmable shell & utility programs
- Operating system structure
- Monolithic
- Layered
- Microkernel
- Virtual machines
- Client-Server
- Exokernel
- Processes & Threads
- Process state and status
- Fork and join
- Synchronization, semaphores, monitors, critical sections, mutual exclusion, concurrency control, transactions, serializability, atomicity, deadlock
- Scheduling
- Processor
- Job
- Resource allocation
- Fairness, starvation
- Memory Management
- Paging & Swapping
- Virtual memory
- Page replacement algorithms
- Segmentation
- Files & Input/Output Systems
- File systems
- Polling vs. interrupts
- Buffering
- Memory mapping
- Sharing
- Typed memory and messages
- Persistence
- Clocks
- Power management
- System Modeling
- Queuing models
- Stochastic models
- Performance Measurement and Evaluation
- Cache, paging, VM, OS measurements
- Pre-fetch and instruction execution times
- Effect of register windows
- Introduction to Parallel and Distributed Systems
- Networking
- True distribution
- Pitfalls: network partitioning, dependencies and reliability
- Programming models
- Message passing
- Data parallelism
- Gang scheduling
- Parallel I/O
- Synchronization within jobs
- Security & Protection
- Systems calls
- Authentication & authorization
- Reliability
- Availability
- Privacy
- Common attacks & hazards
- Crypto-systems
- Kerberos
- Capabilities
- Access control lists
- Communication
- Synchronization
- Threads
- pthreads
- Remote procedure call
- Distributed file systems
- Replication
- Mobile computing
- Other operating system case studies
Approximate Schedule:
| November 2020 | Description |
|---|---|
| 5 | Registration opens at 9 AM for degree candidates |
| 9 | Registration opens at 9 AM for all students |
| January 2021 | Description |
|---|---|
| 7 | Full payment deadline |
| 18 | Martin Luther King Jr. Day |
| 21 | Registration deadline |
| 22-31 | Course change period for registered students only |
| 25 | Classes begin |
| 26 | First class meeting. Introduction, course information & policies, outline, schedule. Review of the C Programming Language. Devices. Abstractions provided by the operating system. Operating system structure. |
| 31 | Course changes deadline; Course drop deadline for full-tuition refund |
| 31 at Midnight | Problem Set 0 (the course questionnaire, fix-this-program.c & word-count.c) due. |
| February 2021 | Description |
|---|---|
| 2 | Second class meeting. Processes. Synchronization, scheduling. For today, read Tanenbaum 4/e chapters 1 "Introduction" and 2 "Processes and Threads". |
| 7 | Course drop deadline for half-tuition refund |
| 9 | Third class meeting. Finish covering processes. K70 hardware platform. CodeWarrior development environment. Basic Electronics. Projects DataSizes, FlashLED, and Pushbutton. Distribute hardware. |
| 14 at Midnight | Problem Set 1 due. |
| 15 | President's Day |
| 16 | Fourth class meeting. Finish covering projects FlashLED and Pushbutton. Memory management. Virtual memory, swapping, paging, and segmentation. For today, read Tanenbaum 4/e chapter 3 "Memory Management". |
| 23 | Fifth class meeting. Input/Output systems, file systems, buffering. Numerical encodings. For today, read Tanenbaum 4/e chapters 4 "File Systems" and 5 "Input/Output". |
| 28 at Midnight | Problem Set 2 due. |
| March 2021 | Description |
|---|---|
| 2 | Sixth class meeting. Finish covering Hamming Codes in Input/Output systems. Serial Communication. Project SerialIO. Introduce Deadlocks: definition, detection, recovery, avoidance, and prevention. For today, read Tanenbaum 4/e chapter 6 "Deadlocks". |
| 9 | Seventh class meeting. Application Notes. Deadlocks: definition, detection, recovery, avoidance, and prevention. Details of SerialIO project. Projects MCGInit, sdramTest, and LCDRGB. For today, review Tanenbaum 4/e chapter 6 "Deadlocks". |
| 14 at Midnight | Problem Set 3 due. |
| 14-20 | Spring Break |
| 15-April 15 | Degree program application period for spring |
| 23 | Eighth class meeting. Discuss UART2 problem on some Windows 10 computers and fix. Demonstrate UART2 use in SerialIO and in LCDRGB projects. Introduce concepts and code for using TWR-LCD-RGB, capacitive pads, A-to-D conversion, Supervisor calls, and privileged execution state. |
| 30 | Midterm exam. (Ninth class meeting.) There will not be a usual class meeting held today. The midterm exam will start at the time class would normally begin. Students will have three hours to complete the exam. Section will still be held today at its usual time, but no material or questions relevant to the midterm exam will be discussed in section today. |
| April 2021 | Description |
|---|---|
| 4 at Midnight | Problem Set 4 due. |
| 6 | Tenth class meeting. Security and protection. For today, read Tanenbaum 4/e chapter 9 "Security". |
| 11 at Midnight | Term Project Proposal due. |
| 13 | Eleventh class meeting. Introduction to parallel systems, data parallelism, communication, gang scheduling. For today, review Tanenbaum 4/e chapter 8 "Multiple Processor Systems". |
| 18 at Midnight | Problem Set 5 due. |
| 20 | Twelfth class meeting. Synchronization, threads, RPC. System modeling, performance measurement and evaluation. Introduction to distributed systems, DCE/Encina. Distributed file systems. Fault tolerance, replication, redundancy. Case study of UNIX/Linux/Android. For today, review Tanenbaum 4/e chapter 2 "Processes and Threads". For today, read Tanenbaum 4/e chapter 10 "Case Study 1: Unix, Linux, and Android". |
| 23 | Withdrawal deadline (no tuition refund) |
| 27 | Thirteenth class meeting. Case study of Windows 8. For today, read Tanenbaum 4/e chapter 11 "Case Study 2: Windows 8". |
| May 2021 | Description |
|---|---|
| 2 at Midnight | Problem Set 6 due. |
| 4 | Fourteenth class meeting. Operating system design, Virtualization, and additional topics. For today, read Tanenbaum 4/e chapter 7 "Virtualization and the Cloud" and chapter 12 "Operating System Design". |
| 10-15 | Final exams and last class meetings |
| 11 by 4 PM ET | URL for ten minute pre-recorded final project presentation sent to course staff. |
| 11 | Final Class Meeting during usual section and class time. Student project presentations/demonstrations. |
| 14 by 2 PM ET | Term Project report, slides, code, makefiles, test programs, etc. are due. |
| 25 | Grades available online in Online Services |
| 27 | Commencement |
| 31 | Memorial Day |
Software and Course Documents On-Line:
Slides used in class
- Class Agenda.
- Review of the C Programming Language for E-92 in PDF.
- Devices, Abstractions Provided, OS Structure in PDF.
- Processes in PDF.
- Basic Electronics in PDF.
- Memory Management in PDF.
- Input-Output Systems in PDF.
- Numeric Encodings for Operating Systems in PDF.
- Serial Communication in PDF.
- Deadlocks in PDF.
- Security and Protection in PDF.
- Parallel Systems in PDF.
- ISO C/POSIX/Unix/Linux I/O & Fork Concepts in PDF.
- Virtualization in PDF.
The Course Questionnaire and Problem Sets
-
The course questionnaire is available on-line. Please submit your completed questionnaire using "git" with the tag "problem-set-0" as soon as possible after our first class meeting.
- Problem Set 0 (the course questionnaire, fix-this-program.c & word-count.c)
- Problem Set 1 (textbook problems & simple shell including conversion of microseconds since the Unix epoch to printable form)
- Problem Set 2 (memory management: malloc & free, K70 LED flashing program, shell enhancements)
- Problem Set 3 (textbook problems & device independent I/O for LEDs, pushbuttons, and an in-memory file system, shell enhancements, must use UART serial input & output for all shell interactions)
- Problem Set 4 (K70 enhancements: faster clock, off-chip SDRAM, supervisor calls, serial I/O added to device independent I/O, also LCD display, A-to-D input, and touch sensors, unprivileged mode, shell enhancements)
- Term Project Proposal
- Problem Set 5 (FlexTimer for time and date, interrupt-driven serial I/O, user timer, shell enhancements)
- Problem Set 6 (SysTick for multiprocessing, processes)
Online Software: GNU, Cygwin, etc.
- Look here for information about the GNU Project and the Free Software Foundation.
- Look here for information about getting GNU Emacs for Windows 95/98/ME/NT/XP and 2000.
- Look here for information about getting the Cygwin Linux-like environment for Windows.
- Look here for GNU manuals online.
- Look here for a List of Linux distributions.
- Look here for information about getting mtools: A collection of utilities to access MS-DOS disks from Unix.
Harvard University Information Technology
- There are computers available for Extension student use at 53a Church Street and in the Science Center, Room B-14. The Science Center computer labs are open 24 hours a day. Apple, PC, and Linux workstations are available for student use.
- Software is available for free download from Harvard Information Technology
- Harvard University Information Technology:
Online Papers Used in Class
- Here is an interesting discussion of the Mars Rover Pathfinder mission involving priority inversion.
- Here's the discussion of the crash of the Ariane 5 rocket in HTML format and in text format.
- For papers discussing the Internet Worm of November 1988, see note by Gene Spafford & Robert Gasch, General Accounting Office report, University of Lowell report, How to patch the holes, the court appeal, request for comments 1135, MIT-IEEE, MIT, seely, spaf CCR, spaf ESEC.
- Description on blog.CryptographyEngineering.com by Matthew Green of the OpenSSL Heartbleed bug.
- Description of Diffie-Hellman key exchange vulnerability by Alex Halderman and Nadia Heninger.
- Description of Ingenious Chip-and-Pin Card Hack by Andy Greenberg of WIRED.
- The C* Slides are available here in PDF format: The C* Language.
Section Home Page
Course Information
Course Summary:
| Date | Details | Due |
|---|---|---|