CSC 246 - Concepts and Facilities of Operating Systems for Computer Scientists

Catalog Description:

In this course, we develop an understanding of the design and operation of an operating system and the kinds of services it provides. This will help us to better understand the execution environment in which our programs operate and how we can make the most effective use of the underlying hardware.

Contact Hours: Prerequisites: CSC230 or ECE209
Co-requisites: None
Restrictions: None
Coordinator: Dr. David Sturgill

Course Outcomes:

By the end of the course, students should be able to do the following.
  1. Processes and Threads. describe states and transitions of processes/threads; explain non-local transfers of control; determine context switching details.
  2. Synchronization. list different synchronization models; explain the operational characteristics of these models; use these facilities in concurrent programming models; contrast these models; utilize synchronization for contemporary architectures; select a suitable synchronization paradigm for a given problem.
  3. Virtual Memory. reiterate the principles of hardware and software support for virtual memory; express operational properties of address translation; perform the calculations of address translation; predict the impact on TLB misses; judge the merits and shortcomings of virtual memory usage. Describe how address translation hardware can be used to implement essential features like shared memory and how and why different programming techniques are connected to locality of reference and performance.
  4. Scheduling. recite different scheduling paradigms; paraphrase qualitative and quantitative properties of these paradigms; derive a schedule for given parameters; model quantitative properties of scheduling paradigms; exploit existing scheduling models supported by systems; contrast different scheduling approaches.
  5. I/O and File Management. reiterate the principles of file systems in terms of data structures; understand access control; interface with directory services on the system API level; judge the merits and shortcomings of contemporary file systems.
  6. Protection and Security. list different protection mechanisms; explain security measures in operating systems such as access control.
  7. Communication and Networking. reiterate basic communication paradigms and networking protocols in terms of their functionality; explain differences and functionalities of communication modes and layers; design and implement communicating client-server applications.
  8. Computer organization.  Enumerate and explain the operation of the functional components of a computer, including CPU (cores, registers & ALU), cache, buses, memory, devices and interrupt processing. Describe and compare non-traditional models of parallel computation, including GPU, TPU, FPGA and ASIC.


See Course Listings

See Course Coordinators