WILLIAM PATERSON UNIVERSITY OF NEW JERSEY
COLLEGE OF SCIENCE AND HEALTH
Computer Science Syllabus and Outline
1. Course: CS3450-60  Operating Systems,  3 credits 
2. Department secretary:  Carol Parken (Science Hall East 5021) can be contacted
by telephone at (973)_720-2649  and  by e-mail at  ParkenC@wpunj.edu
3. Semester offered:   Spring 2015
Time:     Wednesday  7:00 PM - 9:40 PM           Location:  Science Hall East 5019

4. Faculty:  Dr.  John Najarian,   Prof. of Computer Science 
Office:    Science Hall East 5022,  Phone: (973)-720-2960,  E-mail:   NajarianJ@wpunj.edu
Office Hours:   Tuesday 2:00PM-4:30PM, Wednesday 6:00PM-6:45PM,  & by appointment.    

5. Required Texts (5):

Anderson_and_Dahlin_2012.jpg

1. Anderson, Thomas and Michael Dahlin, 2014, 
Operating Systems: Principles and Practice
,
Recursive Books. ISBN-10: 0985673524
ISBN-13: 978-0985673529
(main text)  http://recursivebooks.com/

Slides at:     http://homes.cs.washington.edu/
~tom/Slides/slides.html
 

http://ospp.cs.washington.edu/slides.html         
Source code:
http://homes.cs.washington.edu/~tom/code/  

Dahlin's site: http://www.cs.utexas.edu/users/
dahlin/Classes/UGOS/lectures/

Dahlin's Grad OS (useful notes on Threads,
Mesa, and Hoare)    http://www.cs.utexas.edu/users/dahlin/Classes/GradOS/schedule.html   


Matthew_&_Stones___2007
2. Matthew, Neil and Richard Stones,  2007,
Beginning Linux Programming,   WROX (Wiley), 
ISBN-10: 0470147628         
ISBN-13: 978-0470147627
(programming UNIX/Linux text)
http://www.wrox.com/WileyCDA/WroxTitle/
Beginning-Linux-Programming-4th-Edition
.productCd-0470147628,descCd-ERRATA.html

(source code & Errata)  OR:

http://www.wiley.com/WileyCDA/WileyTitle/
productCd-0470147628.html




Harris_&_Cordani___2001__Schaums_OS
3. J. Archer Harris and John Cordani,  2001,
Operating Systems  (Schaum Outline),
McGraw-Hill.
ISBN                 0071364358   /
ISBN13:            9780071364355
(workbook text)








4. Introduction to the New Mainframe z/OS Basics
    IBM Mainframe Initiative
    http://www.redbooks.ibm.com/redbooks/pdfs/sg246366.pdf


5. Unix and Linux Administration and Shell Programming
    IBM Mainframe Initiative
    http://www.osdata.com/programming/shell/unixbook.pdf


Suggested Readings:     (not required) 


Arpaci-Dusseau, Remzi H.< and Andrea C. Arpaci-Dusseau, Operating Systems: Three
          Easy Pieces
,   Arpaci-Dusseau BooksMay, 2014 (Version 0.80)
          http://www.ostep.org/, http://pages.cs.wisc.edu/~remzi/OSTEP/ (*** Superb OS book)

Bic, Lubomir F., and Alan C. Shaw, 2002,  Operating Systems Principles, Prentice Hall.

Comer,  Douglas, 2015 Operating System Design: The Xinu Approach, 2nd ed. 
        Chapman and Hall / CRC Press.

Davis, William, and Rajkumar, T.M. 2001,  Operating Systems: A Systematic View, 5th ed., 
        Addison-Wesley

Dhamdhere, Dhananjay, 2011  Operating Systems, Science Engineering & Mathematics. 

Doeppner, Thomas, 2010, Operating Systems In Depth: Design & Programming,Wiley

Flanagan, David, 2000, JAVA Examples in a Nutshell, 2nd ed., O'Reilly.  (Threads chapter)

Fox, Richard , 2014, Linux with Operating System Concepts, Chapman and Hall/CRC Press.

Galli, Doreen, 2000, Distributed Operating Systems, Concepts and Practice, Prentice Hall 

Glass, Graham, and Ables, King, 2003,  UNIX: For Programmers and Users, 3rd ed.,
        Prentice Hall,  ftp://ftp.prenhall.com/pub/esm/the_apt_series.s-042/glass_ables_unix-3e/Code.zip 

Holcombe, Jane,  and Charles Holcombe, 2014, Survey of Operating Systems, 4th ed.,
        McGraw-Hill / Irwin.
 
Hubbard, John R. 2004,   Programming with Java (Schaum's Outline), (Second Edition),
        McGraw-Hill, (useful as a prelude to  Flanagan).

Kerrisk, Michael,  2010,  The Linux Programming Interface: A Linux and UNIX System
        Programming Handbook,   No Starch Press,  http://www.nostarch.com/tlpi   (support)
        http://man7.org/tlpi/http://man7.org/tlpi/index.html (source code),
        http://man7.org/tlpi/code/index.html, http://man7.org/tlpi/code/online/index.html (indexed)

Khurana,  Rohit, 2011,  Operating Systems,   Vikas Publishing House Pvt Ltd.

Matthew, Neil and Richard Stones, 2007,  Beginning Linux Programming, ; 4th ed.,Wrox.  

McKusick, Marshall Kirk, George V. Neville-Neil, and Robert N.M. Watson,  2014,
        The Design and Implementation of the FreeBSD Operating System,  2nd ed., 
        Addison-Wesley.  

Nutt, Gary, 2001,  Kernel Projects for Linux, Addison-Wesley 

Nutt, Gary, 2000,  Operating Systems: A Modern Perspective, 2nd ed., Addison-Wesley 

Nutt, Gary, 1999,  Operating System Projects Using Windows NT, Addison-Wesley 

Robbins, Arnold, 1999, Unix in a Nutshell, A Desktop Quick Reference for System V 
        Release 4 and Solaris 7, 3rd edition, O'Reilly 

Silberschatz, A., and Galvin. P., 2012, Operating System Concepts, 9th ed., Addison-Wesley.

Silberschatz, A., and Galvin. P., 2001, Operating System Concepts, 6th ed., Addison-Wesley,
       (both Java and XP versions). 

Silberschatz, A., Galvin, Peter B., and Gagne, Greg, 1999,  Applied Operating System 
        Concepts, Wiley. 

Stallings, William, 2014, Operating Systems: Internals and Design Principles, 8th edition, 
        Prentice Hall. 

Tanenbaum, Andrew S., 2015, Modern Operating Systems, 4th ed., Prentice Hall, 
http://www.pearsonhighered.com/educator/product/,   Modern-Operating-Systems/9780136006633.page
http://www.pearsonhighered.com/tanenbaum/

Tanenbaum, Andrew S., 1995, Distributed Operating Systems, Prentice-Hall. 

Tanenbaum, Andrew S. and Woodhull, Albert S., 2006, Operating Systems: Design and
        Implementation, 3rd ed., Prentice Hall

Some Classics to Treasure:
 
Brinch Hansen, P., 1973, Operating System Principles, Prentice Hall.

Coffman, E. G. Jr. and Denning, P. J. 1973, Operating Systems Theory, Prentice-Hall.

Madnick, Stuart E. and Donovan, J. J., 1974, Operating Systems, McGraw-Hill, Inc.  

Alan C. Shaw, 1974, The Logical Design of Operating Systems, Prentice Hall.


New OS texts slides:

     http://ospp.cs.washington.edu/slides.html   Anderson OS slides

     http://pages.cs.wisc.edu/~remzi/OSTEP/   Operating Systems: Three Easy Pieces
     Remzi H. Arpaci-Dusseau and Andrea C. Arpaci-Dusseau's text in chapter PDF form.       
     http://www.ostep.org/

     http://www.scs.stanford.edu/10wi-cs140/notes/    Excellent slides - (Silberschatz text)


Help with Concurrency (You will need these):

Birrel, Andrew, 1989,  An introduction to programming with threads,  DEC Research.
    http://www.cs.cornell.edu/courses/cs4410/2012fa/papers/SRC-035.pdf     
      
Downey,  Allen B.,  The Little Book of Semaphores,
    http://greenteapress.com/semaphores/            

http://www.llnl.gov/computing/tutorials/pthreads/     Posix Threads

http://www.yolinux.com/TUTORIALS/LinuxTutorialPosixThreads.html        Tutorial


Other Material for Study (sorted by descending order of usage):

Old Tanenbaum's Resources: 

    http://www.cs.vu.nl/~ast/books/mos2/      (Old Tanenbaum's PPT-Slides & much more)

    www.cs.vu.nl/~ast/books/book_software.html    (Old Tanenbaum's Slides & 3 Simulators)

    Tanenbaum's Support Material Page at PH    (Old - problematic links)

Other Material for Study:
     http://williamstallings.com/OS/OS5e-student.html (Stallings Super Material)

     http://williamstallings.com/OS/OS5e-inst.html (Stallings Slides & CS sites)

     http://www.bell-labs.com/topic/books/os6-book/ (Silberchatz Slides)

     http://cs-www.cs.yale.edu/homes/avi/os-book/index.html (3 sets of Silberschatz slides)


UNIX Supplements:  
     http://www.tinker.ncsu.edu/LEGO/shell_help.html   (Shell Script Writing)

      http://www.iu.hio.no/~mark/unix/unix.html   (Unix Prog Env from wonderful city of Oslo))

      http://hemsidor.torget.se/users/d/Devlin/shell/sh5a.html (Compiling Prog's in Unix)

      http://cslibrary.stanford.edu/107/ (Unix Prog Tools - make, gdb, ...)

Java based OS-oriented examples (especially threading in Java. which is preferable to C++ in that respect): 
     http://examples.oreilly.com/jenut2/2nd_edition/      (Java Examples book's source code)
6. Course Objectives: 

COURSE OBJECTIVES

  • To provide an insight into operating system development, including historical  information about the development of architectural support and the economic and technical forces that drive operating system development.
  • To introduce the fundamental concepts of modern operating systems.
  • To provide familiarity with an operating system by hands-on examination of significant  pieces of such a system.
DESCRIPTION OF THE COURSE: A course in operating systems with a system  software perspective.  Topics include:  Computer system overview; history, evolution,  and philosophies; tasking and processes; process coordination and synchronization;  scheduling and dispatch; physical and virtual memory organization; device management;  file systems and naming; security and protection; communications and networking;  distributed operating systems; and real-time concerns. 
7. Student learning outcomes: 

Upon completion of the course, students will be able to: 
  a) Describe the history of the development of operating systems. 
  b) Analyze the designing issues for an operating system. 
  c) Describe the management of resources within an operating system and the issues  raised by 
      shared resources. 
  d) Recognize different mechanisms used for interprocess communications. 
  e) Identify the policies involved in process scheduling and virtual memory. 
  f) Identify the algorithms used for process scheduling, memory management, deadlock 
      detection and prevention, and disk arm scheduling. 
  g) Explain the concept of a process, process state, and context switching. 
  h) Explain the design of a file system. 

Through the term paper, the class reinforces the student learning outcomes of the  university: 
  a) Effectively express themselves in written and oral form 
  b) Demonstrate ability to think critically 
  c) Locate and use information 
  d) Demonstrate ability to integrate knowledge and ideas in a coherent and meaningful  manner   

8. Topical outline of the course content (Based on tentative sessions)                           Chapter 

Slides -   1. Introduction:   Definitions & Basic Terms
    The 4 Parts of a Computer (well really 5):  MB/Sys-box, Store, I, O,...& Comm
    History of Operating Systems (Hardware co-evolves with OS)
    Role of OS: 3 ways:   1. Manager of Resources:   Supervisor Octopus 
                                      2. Virtual Machine (& Emulators): Layered View
                                      3. (new view) glue, networks, and clouds
    Types of Operating Systems  (Contrast Lab: UNIX vs Windows)
    Hardware: CPU, Memory, Bus(es), I/O Devices. 
    OS Components and Concepts. 

Harris (Schaums) -    1.  Introduction

Anderson & Dahlin -   1: Introduction

Quiz #1

Harris (Schaums) -    2.  Process Management

Part 1: Kernels and Processes
Anderson & Dahlin -   2: The Kernel Abstraction

Anderson & Dahlin -   3: The Programming Interface

Harris (Schaums) -    3.  Interprocess Communication and Synchronization

Part 2: Concurrency
Anderson & Dahlin -   4: Concurrency and Threads

Anderson & Dahlin -   5: Synchronizing Access to Shared Objects

Anderson & Dahlin -   6: Advanced Synchronization

Anderson & Dahlin -   7: Scheduling

Quiz #2

Harris (Schaums) -    4.  Memory Management

Part 3: Memory Management
Anderson & Dahlin -   8: Address Translation

Harris (Schaums) -    5.  Virtual Memory

Anderson & Dahlin -   9: Caching and Virtual Memory

Anderson & Dahlin -   10: Applications of Memory Management

Quiz #3

Harris (Schaums) -    6.  File System Management

Part 4: Persistent Storage
Anderson & Dahlin -   11: File Systems: Introduction and Overview

Quiz #4

Harris (Schaums) -    7.  Device Management

Anderson & Dahlin -   12: Storage Devices (combo slides for 11 & 12)

Anderson & Dahlin -   13: Files and Directories

Anderson & Dahlin -   14: Reliable Storage

Quiz #5

Harris (Schaums) -    8.  Security

Anderson & Dahlin -   Epilog:     Security
Anderson & Dahlin -   Optional: Conclusion

Quiz #6

Final Exam


Concurrent with the above are lab activities (enumerated below):

Linux Distribution Selection
(Flash based versus Live CD versus embedded)
(Knoppix, Ubuntu, CentOS, or an alternative)


Matthew & Stones -  1: Getting Started 
Matthew & Stones -  2: Shell Programming
Matthew & Stones -  3: Working with Files
Matthew & Stones -  4: The Linux Environment 
Matthew & Stones -  5: Terminals 
Matthew & Stones -  6: Managing Text-Based Screens with curses 
Matthew & Stones -  9: Development Tools
Matthew & Stones -  10: Debugging
Matthew & Stones -  11: Processes and Signals
Matthew & Stones -  12: POSIX Threads
Matthew & Stones -  13: Inter-Process Communication: Pipes 
Matthew & Stones -  14: Semaphores, Shared Memory, and Message Queues 

AND

IBM Alliance   (to be developed as we explore and progress)
IBM Mainframes
IBM Linux
IBM z/OS
IBM JCL  (the old and the new)


9. Teaching methods (e.g., lecture, discussions, presentations, etc.) 

a) Classroom lectures, discussions, and problem solving sessions 
b) Homework reviews 
c) Lab sessions in Unix/Linux and C.  

10. Course expectations: 

a. Reading Assignments 
    Item 8 (above) addresses the reading schedule issue. 
    Read relevant chapters prior to classwork. Every class will be an inquiry-based 
    learning experience for the chapter specified.

b. Tentative timeline for submission of written assignments or other work 
    Classwork/Labs will be collected as scheduled at the end of each class. 

c. Attendance 
    Attendance will be recorded.  Departmental guidelines require 
            that: 3 absences (2 for night) --->  departmental warning letter 
                   7 absences (4 for night) --->  automatic failure in course 
   Only valid excuses (in writing) allay these consequences. 
   Attendance and success coincide. 

d. Examinations (tentative dates, make-up policy, etc.) 
   All exams will be announced at least one full week in advance. 
   If you are absent on the day an exam is announced, you are  responsible for finding out 
   about it from a fellow student or the professor.  No make-up exams will be given except for 
   extraordinary circumstances. 
   Item 8 (above) addresses the examination schedule issue. 
   Refer to:   http://www.wpunj.edu/registrar/finalexamcalendars/
   Final Exam Period: Wednesday  May 6, 2015 at 8:00PM-10:30PM, in Science Hall East 5019.

e. Class participation 
   Bring the specified textbook to each class session. 
   Before lab sessions and lectures, read relevant text to optimize productivity.

11. Grading and other methods for assessing student academic performance:
  • several periodic quizzes (as specified above in the “Topical Outline”) 
  • Final examination is as scheduled by administration (date cited above). 
  • Computation:    Final Grade  =  Average of  Quizzes (60%) + Final  Exam (20%)   +
                                                    Classwork/Homework/Projects (20%)
12. Additional information:  
Last day for course withdrawal   3/3/2015.
Classes will be in session from  1/12/2015  to 4/31/2015, followed by finals week 5/1-5/8.
(refer to:  http://www.wpunj.edu/academics/academic-calendar.dot  ).
Holidays:   1/19/2015 (MLK Day), 2/16/2015 (Pres.),  2/19/2015 (Thursday=Monday schedule),
        3/15/2015 - 3/21/2015 (Spring Break) and Good Friday 4/3/2015 - Easter 4/5/2015.