UTEP CS 4375: Theory of Operating Systems
(and sometimes EE 4374: Operating Systems Design) 

Quick links: Course description, Course objectives, Text & Email , Labs, Exams, TA, Instructor, Course outline and lecture notes, policy.

Course Description

Printable: Syllabus

Most students enjoy this course because it exposes so much of the "magic" of how programs and resources are managed on modern computer systems. 

 More precisely the learning outcomes of this course enable students describe and analyze

  •  mechanisms and policies that enable the efficient illusion of concurrent execution of multiple programs upon one (or more) CPUs
  • mechanisms and policies that enable a "virtual" address spaces that may be larger than allocated memory
  • security mechanisms and policies that protect processes from unauthorized access to their memory or files
  • data structures and algorithms used to organize persistant storage
  • how resources such as cpu time, memory, and persistent storage are managed and allocated
  • challenges in concurrency and approaches to avoiding race conditions and deadlock
  • the role of device drivers in providing generic programming interfaces to i/o devices
  • the intertwined role of interrupts, traps, paged and segmented memory translation, and supervisor mode in enabling multi-tasking, isolation, system calls, access to i/o devices, and timers
  • coarse estimations of access time to persistent storage devices
These functions of a modern operating system are all based on the application of a few fundamental concepts. This course teaches these key concepts and "makes them real" by engaging students in the creation of small programs that implement their key functionalities.

The course includes frequent quizzes, a super-quiz (that serves as a midterm) and a final exam.  All grading is explicitly mapped to course learning outcomes, which are generally assigned boolean scores indicating whether the students' work indicates an appropriate level of mastery.  In order to appropriately assign credit for skill mastery in the context of clerical errors, "clerical accuracy" is also included as an additional skill  that is graded on all test instruments.  In order to enable the computation of a final grade largely dependent upon a comprehensive final to not be overly sensitive to errors caused by student stress, test and quiz grades are aggregated on a skill basis - which permits skills demonstrated in multiple (prior) quizzes to over-ride corresponding skills that may not be demonstrated on the final exam.   

Operating systems design is an exciting area of computer systems that ties together architecture, language, and real-world constraints. Many solutions to the problem of managing a systems explored in this course involve interesting trade-offs between flexibility, performance, and reliability. In order that students gain a mature appreciation of these trade-offs, this course is conducted in a very interactive manner. Students are encouraged to dialog with each other and the professor to discuss the implications of design options. An email list facilitates student/instructor interaction outside of class.

Since the design of operating systems requires a very practical understanding of computer architecture, algorithms, and software design, most students are not prepared for this course before their senior year.

Few programming languages are as well suited to the implementation of operating systems as "C". For this reason, most labs for this course must be written in C. Students with superficial understandings of the C language will struggle in this course and I strongly encourage all students attending CS4375 to carefully review "The C Programming Language" by Brian Kernigham and Dennis Ritchie.

Course Objectives

Students enrolled in this course will:
  • Learn the role of operating systems.
  • Learn the theory underlying how operating systems are implementer and the implications of resulting design choices.
  • Develop practical skills needed to understand and modify operating system code, feel competent to do so, and understand why it matters
  • Acquire sufficient knowledge to be able to solve problems & know how to learn additional relevant info when needed.

Text & Email list


Teaching assistant

  • TAs will be present for the first 10 minutes of their office hours and depart if nobody is present or expected.
  • If you need to meet a TA at a particular time, please send them email.
TA:  (all addresses are @miners.utep.edu)
  • Adrian Veliz
    • email: aeveliz@...
    • Office Hours: Thursday 11-12
  • David Pruitt
    • email: ddpruitt@...
    • Office Hours: F 2:30 - 3:30
  • Edward Dragone
    • email: edragone@...
    • Office Hours: TBD
  • Edward Hudgins
    • email: eghudgins@
    • Office Hours: F 9:00 - 10:00

Course Content

  • Lecture notes
  • Coarse-grained topic outline
    1. Introduction
      • What is an operating system?
      • History
      • Operating systems for various devices
      • Review of computer architecture
      • Summary of OS concepts
      • System Calls
      • Operating System Structure
    2. Processes and Threads
      • Processes
      • Threads
      • Inter-process communication
      • Classical problems
      • Scheduling
    3. Synchronization (mostly deadlock prevention)
      • Resources
      • Deadlock (another reason why ostriches do not dominate the planet)
      • Detection of deadlock
      • Stopping systems from entering deadlock (avoidance)
      • Designing systems that can not deadlock (prevention)
    4. Memory Management
      • Single address space (both mono- and multiprogramming)
      • better nomenclature than book
        • virtual memory
        • demand v. voluntary systems
        • paged v. segmented systems
      • Managing paged systems
        • exposes a eviction (replacement) problem
        • program behavior (locality)
        • algorithms
        • implementation
        • simulation
      • Managing segmented systems
        • exposes both a placement & eviction problem
    5. Input/Output
      • characteristics of i/o devices
      • how to structure drivers
      • disks
      • terminals, graphical devices
      • networked terminals
      • power mgmt
    6. File Systems
      • files
      • directories
      • implementation
      • special files (/dev, links, /proc)
      • example filesystems
    7. Multimedia
      • File encoding
      • processor scheduling issues
      • disk scheduling issues
      • storage, caching, and transmission issues
      • Multiprocessor Systems
      • Security

Exams, labs, and grading

  • The following is a summary.  Details are in the syllabus.
  • Exams/quizzes:
    • Quizzes
      • Quizzes assess individual students' abilities to demonstrate knowledge, to design solutions to realistic problems, and to present these solutions in a clear and professional fashion.  Quizzes will be graded "by skill" (see below),  can cover any concept or skill previously taught in the course, are generally offered at the rate of once per week, and unannounced (so students must be continuously prepared).  
    • Final Exam
      • The final exam date is scheduled by the university based upon lecture time.  Like quizzes, the final exam will be graded "by skill" (see below) and can cover any concept or skill previously taught in the course.  
    • Rules
      • reference information listing instructions and addressing modes will be provided to students
      • answers must be prepared individually without communication with or assistance from anybody except the instructor or proctor.  
    • Grading by skill
  • Graded assignments (including labs)
    • Intention:
      • Graded assignments provide an opportunity for students to practice and explore concepts presented in class.
      • Students are expected to act professionally 
        • By helping each other select and design problem-solving approaches
        • By reading whatever resources they find relevant
        • By attributing credit to any person or reference materials that substantively contributed to their solutions  
        • By only submitting solutions they fully understand.
        • Professionalism includes honesty, clarity, and accuracy.
    • Types:
      • Most class sessions will conclude with an assignment due at the beginning of the next class session unless otherwise indicated.  I don't collect assignments unless specifically indicated.  
      • Labs will be assigned during the lab course.  Due in 1 week unless otherwise indicated.
    • Honesty: It is academic dishonesty for a student to submit a solution they cannot replicate individually or to not fairly credit their sources.
      • Students must only submit solutions that fairly reflect their own understandings.     
      • Solutions must clearly and fairly attribute credit to  people and resources that contributed to their design or preparation.  
      • Descriptive text included with solutions must be composed by the student submitting it.  
      • Implications
    • Be sure to schedule sufficient time for cleaning up your code, testing, and the writing of documentation. Assignments written in an unprofessional style or lacking clear and useful documentation will suffer severe grading penalties. Students with weak written communication skills may wish to contact the UTEP Teaching & Learning center.
  • Submission policy
    • Labs will only be accepted on the published due date unless other arrangements are made.
    • All lab assignments must be completed to earn a passing grade.
    • All labs must be submitted using the version control system.  Labs will not be accepted via email.

Accommodations for Students with Disabilities and Exceptional Circumstances

Individuals with disabilities have the right to equal access and opportunity. Please contact Dr. Freudenthal or the UTEP Office of Disabled Student Services (DSSO) if you have a special circumstance such that an accommodation would be helpful in permitting you to excel or demonstrate mastery of the material covered in this course.

Standards of Conduct and Academic Honesty

  • Standards of Conduct: Students are expected to conduct themselves in a professional and courteous manner, as prescribed by the Standards of Conduct: http://hoop.utep.edu/Student_Affairs_Chapter_One-HOP.htm Graded work should be unmistakably your own. You may not transcribe or copy a solution taken from another person, book, or other source ( e.g., a web page). Copying other's work will not be tolerated. Professors are required to report academic dishonesty and any other violation of the Standards of Conduct to the Dean of Students.
  • Permitted collaboration: Students may discuss requirements, background information, test sets, solution strategies, and the output of their programs. However, implementations and documentation must be prepared individually.     Students are strongly encouraged to document advice received from others and all other resources utilized in the preparation of their assignments.
  • If academic dishonesty is suspected: You will receive an incomplete for the lab, and your case will be referred to the Dean of Students for adjudication. The Dean of Students has published a website with complete details concerning the UTEP Academic Honesty policy at the following arcane URL: http://studentaffairs.utep.edu/Default.aspx?tabid=4386.

Course Grading Policy

  • Overall course grading: It's posted on this web page: Exams and Grading
  • Expectations of UG/Grad Students

    Both graduate and undergraduate students will may attend this course. Graduate students are expected to demonstrate a higher level of technical competency, analytical maturity, and communication skills than undergraduates as demonstrated by (1) class participation, (2) exams and (3) lab assignments. Some laboratory assignments will have advanced sections that only graduate students will be required to submit. Finally, the official course outcomes specify a range of mastery levels of the topics covered in this course that must be demonstrated by students in order to earn high marks. In order to be assigned similarly high marks, MS candidates are expected to demonstrate higher levels of mastery.


    Getting Started in Linux/UNIX and SVN

    Linux under virtualization

    This is another way to run linux - just pickup a virtualization system such as vmware, configure a virtual machine, and instal linux onto it.

  • ĉ
    Eric Freudenthal,
    Aug 26, 2012, 7:06 PM
    Eric Freudenthal,
    Sep 25, 2013, 9:03 AM
    Eric Freudenthal,
    Sep 25, 2013, 9:03 AM
    Eric Freudenthal,
    Aug 24, 2015, 1:51 AM