Operating Systems

Purpose of Course  showclose

This course will introduce you to modern operating systems.  We will focus on UNIX-based operating systems, though we will also learn about alternative operating systems, including Windows.  The course will begin with an overview of the structure of modern operating systems.  Over the course of the subsequent units, we will discuss the history of modern computers, analyze in detail each of the major components of an operating system (from processes to threads), and explore more advanced topics in the field, including memory management and file input/output.  The class will conclude with a discussion of various system-related security issues.

Course Information  showclose

Welcome to CS401!  Below, please find some general information on the course and its requirements. 

Course Designer: John Russo

Primary Resources: This course is comprised of a range of different free, online materials. However, the course makes primary use of the following materials:

Requirements for Completion: In order to complete this course, you will need to work through each unit and all of its assigned materials.  Pay special attention to Unit 1, as this lays the groundwork for understanding the more advanced, exploratory material presented in the latter units. 

You will also need to complete a Final Exam.  Please note that you will only receive an official grade on your Final Exam.  In order to “pass” the course, you must receive a grade of 70% or higher on the Final Exam.  Your score on the exam will be tabulated as soon as you complete it.  If you do not pass the exam, you may take it again.

Time Commitment: This course will take approximately 119.75 hours to complete.  Each unit includes a “time advisory” that lists the amount of time you are expected to spend on each subunit.  These should help you plan your time accordingly.  It may be useful totake a look at these time advisories and to determine how much time you have over the next few weeks to complete each unit, and then to set goals for yourself.  For example, Unit 1 takes 19 hours to complete.  Perhaps you could sit down with your calendar and plan to complete subunit 1.1 (a total of 3.5 hours) on Monday and Tuesday evenings; subunit 1.2 (a total of 2.5 hours) on Wednesday evening; etc.

Tips/Suggestions: It may be helpful to take notes for each of the resources presented in this course, organizing your notes based on the structure of the units, and subunits.  These notes will be useful as you study for your Final Exam.

Learning Outcomes  showclose

Upon successful completion of this course, the student will be able to:

  • Explain what an operating system does and how it is used.

  • Identify the various components of a computer system and how they interact with an operating system.

  • Describe the differences between a 32-bit and 64-bit operating system.

  • Explain the different types of operating systems and the major ones in use today.

  • Discuss the importance and use of threads and processes in an operating system.

  • Describe concurrency.

  • Explain the difference between a thread and a process.

  • Discuss context switching and how it is used in an operating system.

  • Describe synchronization.

  • Explain a race condition.

  • Discuss interprocess communication.

  • Describe how semaphores can be used in an operating system.

  • Discuss three of the classic synchronization problems

  • Explain the alternatives to semaphores.

  • Discuss CPU scheduling and its relevance to operating systems.

  • Explain the general goals of CPU scheduling.

  • Describe the differences between pre-emptive and non-preemptive scheduling.

  • Discuss four CPU scheduling algorithms.

  • Explain what deadlock is in relation to operating systems.

  • Discuss deadlock prevention, avoidance, and their differences.

  • Describe deadlock detection and recovery.

  • Explain the memory hierarchy.

  • Discuss how the operating system interacts with memory.

  • Describe how virtual memory works.

  • Discuss three algorithms for dynamic memory allocation.

  • Explain methods of memory access.

  • Describe paging and page replacement algorithms.

  • Describe a file system and its purpose.

  • Discuss various file allocation methods.

  • Explain disk allocation and associated algorithms.

  • Discuss types of security threats.

  • Describe the various types of malware.

  • Explain basic security techniques.

  • Explain basic networking principles.

  • Discuss protocols and how they are used.

  • Explain reference models, particularly TCP/IP and OSI.

Course Requirements  showclose

In order to take this course, you must:

√    Have access to a computer.

√    Have continuous broadband Internet access.

√    Have the ability/permission to install plug-ins (e.g. Adobe Reader or Flash) and software.

√    Have the ability to download and save files and documents to a computer.

√    Have the ability to open Microsoft file and documents (.doc, .ppt, .xls, etc.).

√    Be competent in the English language.

√    Have read the Saylor Student Handbook.

√    Have completed the following courses from “The Core Program” of the Computer Science discipline: CS101 through CS303 with a particular focus on CS301: Computer Architecture.

Unit Outline show close