Mathematics & Computer Science Department Course Syllabus Fall 2021 Instructor Dr. Charles Edeki Email: charles.edeki@rutgers.edu Office Hours: By appointment (Preferable time: An hour before class or immediate after class). Class Hours: Tuesdays and Thursdays, 4:00 pm – 5:20 pm in room HIL-103. COVID19: In order to protect the health and well-being of all members of the Rutgers-Newark community, masks must be worn by all persons inside campus buildings when in the presence of others, and in buildings in non-private enclosed settings (e.g., common workspaces, workstations, meeting rooms, classrooms, etc.). Masks should securely cover the nose and mouth. Masks must be worn during class meetings. Each day before you arrive on campus or leave your residence hall, you must complete the brief survey on the My Campus Pass symptom checker self-screening app found at: myRutgers Portal. Course Description This course presents the functions of a computer operating system and its implementation. Topics include process management, memory management, storage management and file systems. In addition to the conceptual foundations, students acquire practical experience by developing a systems program that illustrates key operating system concepts. Learning Goals/ Outcomes Upon completion of this course, student should be able to understand: • What operating systems do and computer system organization • Computer System architecture and system boot • Operating System structure and operations • Process management, Memory management and Storage management • Protection and Security • Operating System Services • Distributed system and Special-purpose systems • User - Operating System interface • Operating system design and implementation and Virtual machines Successfully learning operating systems means understanding computer science theory, algorithms, data structures and system-level programming. This operating systems course will include activities to support all of these. As a computer scientist or a computer engineer, this course will be extremely beneficial, but will also be a lot of work. Students should be prepared to spend several hours a week outside of class studying and working on assignments. Prerequisites Data Structures & Algorithm Design (21:198:335) Textbook Operating Systems: Internals and Design Principles 9th Edition Pearson, 2018 by William Stallings ISBN-13: 9780134670959 Reference: Silberschatz, Galvin and Gagne, Operating System Concepts, 9th Edition, Wiley ISBN: 978-1-118-06333-0 DEPARTMENT WEB SITE: http://www.ncas.rutgers.edu/mat Learning strategy: Learning strategy is based on the instructor led lectures and practical work in the computer lab. Scheduled lectures/practical work will take place in every class session. Quizzes and exams will be administered during regular class time. Participation scores will be determined by attendance to both class and laboratory and your enthusiasm for learning during those times. Course Grading: Graded Activities Percent of Final Grade Active class participation/lab work 5% 4 Quizzes 20% Homework Assignments 25% Midterm Exams 25% Final Exams 25% Makeup Exam Policy: If a student missed an exam.quiz, a makeup will be given with a valid reason and documentation. Attendance Students are required to attend all classroom and laboratory sessions. Students are expected to arrive at classes on time. It is the responsibility of the student to notify the instructor if they will miss class with a valid reason (must have documentation to support). Late work policy: Late homework programming assignments have points deducted (5% deduction per day). Late assignments are not accepted a week after the due date. Electronic Devices: Items such as cellular phones, PDA’s, iPod’s, mp3 players, or any such devices must be turned off before coming to class. Anyone caught using any of these devices during an exam will receive a grade of zero for the exam. Topics Outline NOTE: Topics and sequence may change as circumstances require. Date Class Topic/Description/Textbook Chapter Week 1 Activities and/or Assignments Chapter 1 Computer System Overview HW 1 1.1. Basic Elements 1.2. Evolution of the Microprocessor 1.3. Instruction Execution 1.4. Interrupts 1.5. The Memory Hierarchy 1.6. Cache Memory 1.7. Direct Memory Access 1.8. Multiprocessor and Multicore Organization Week 2 Operating System Overview Chapter 2 2.1. Operating System Objectives and Functions HW 2 2.2. The Evolution of Operating Systems 2.3. Major Achievements 2.4. Developments Leading to Modern Operating Systems 2.5. Fault Tolerance 2.6. Os Design Considerations for Multiprocessor and Multicore 2.7. Microsoft Windows Overview 2.8. Traditional Unix Systems 2.9. Modern Unix Systems 2.10. Linux and 2.11. Android Week 3 - 4 Chapter 3 Process Description and Control 3.1. What is a Process? HW 3 3.2. Process States Quiz 1 3.3. Process Description 3.4. Process Control 3.5. Execution of the Operating System 3.6. Unix Svr4 Process Management Week 5 - 6 Chapter 4 Threads HW 4 4.1. Processes and Threads Quiz 2 4.2. Types of Threads 4.3. Multicore and Multithreading 4.4. Windows Process and Thread Management 4.5. Solaris Thread and Smp Management 4.6. Linux Process and Thread Management 4.7. Android Process and Thread Management 4.8. Mac OS X Grand Central Dispatch Week 7-8 Chapter 5 Concurrency: Mutual Exclusion and Synchronization HW 5 5.1. Mutual Exclusion: Software Approaches 5.2. Principles of Concurrency 5.3. Mutual Exclusion: Hardware Support 5.4. Semaphores 5.5. Monitors 5.6. Message Passing 5.7. Readers/Writers Problem Midterm Exams Week 9-10 Chapter 6 Concurrency: Deadlock and Starvation HW 6 6.1. Principles of Deadlock 6.2. Deadlock Prevention 6.3. Deadlock Avoidance 6.4. Deadlock Detection 6.5. An Integrated Deadlock Strategy 6.6. Dining Philosophers Problem 6.7. Unix Concurrency Mechanisms 6.8. Linux Kernel Concurrency Mechanisms 6.9. Solaris Thread Synchronization Primitives 6.10. Windows Concurrency Mechanisms 6.11. Android Interprocess Communication Week 11- 12 Chapter 7 Memory Management 7.1. Memory Management Requirements 7.2. Memory Partitioning 7.3. Paging 7.4. Segmentation Virtual Memory 8.1. Hardware and Control Structures 8.2. Operating System Software 8.3. Unix and Solaris Memory Management 8.4. Linux Memory Management 8.5. Windows Memory Management Chapter 8 HW 7 Quiz 3 8.6. Android Memory Management Week 13 -14 Quiz 4 Scheduling 9. Uniprocessor Scheduling 9.1. Types of Processor Scheduling 9.2. Scheduling Algorithms 9.3. Traditional Unix Scheduling Multiprocessor, Multicore, and Real-Time Scheduling 10.1. Multiprocessor and Multicore Scheduling 10.2. Real-Time Scheduling 10.3. Linux Scheduling 10.4. Unix Svr4 Scheduling 10.5. Unix Freebsd Scheduling 10.6. Windows Scheduling Week 15 Final Exam Review / Final Exam Chapter 9 Chapter 10