OPERATING SYSTEMS - 2023/4

Module code: COM1032

Module Overview

The module covers the main concepts of modern operating systems (OS). The module has three main parts.


  • The first part of the course provides a short history of operating systems and their purposes. It also introduces the student to multiprocessing and multithreading, i.e. how an OS manages multiple tasks that execute at the same time (concurrently) and share resources.

  • The second part of the course addresses the problem of memory management.

  • The final part of the course introduces file systems and Input/output handling.



Throughout the module, case studies of various operating systems are presented with high level concepts that students explore as exercises or deploy their functionality during labs. All taught material is compatible with existing Operating Systems and is suitable to run on a platform such as Raspberry Pi.

 

 

Module provider

Computer Science and Electronic Eng

Module Leader

LAM Joey (CS & EE)

Number of Credits: 15

ECTS Credits: 7.5

Framework: FHEQ Level 4

Module cap (Maximum number of students): N/A

Overall student workload

Independent Learning Hours: 96

Laboratory Hours: 22

Guided Learning: 10

Captured Content: 22

Module Availability

Semester 2

Prerequisites / Co-requisites

None

Module content

Indicative content includes the following:

Introduction to Operating Systems
Process Management: allocation of resources, context switching
Process Scheduling
Threads vs Processes
Threads Programming
Concurrency Mechanisms such as synchronization, scheduling, and deadlock
Memory Management Concepts such as linking, dynamic memory allocation, dynamic address translation, virtual memory, and demand paging
Memory Management programming and profiling
File Management Concepts: storage devices, disk management and scheduling, directories, protection, and crash recovery
File Management Programming
I/O Concepts and Programming

Assessment pattern

Assessment type Unit of assessment Weighting
School-timetabled exam/test Invigilated class test (2hrs) 40
Coursework Individual Coursework 60

Alternative Assessment

N/A

Assessment Strategy

The assessment strategy is designed to provide students with the opportunity to demonstrate that they have achieved the module learning outcomes.

Thus, the summative assessment for this module consists of:


  • A open-book mid-term class test, to be done on computer in the Lab session. This addresses LO1 and LO2.

  • An individual coursework the require programming skills and ability to solve problems. This addresses LO3 and LO4. The feedback on the coursework will be given to the students within 3 weeks after the submission deadline.





Formative assessment and feedback
Lecture slides are used extensively in the lectures with each lecture consisting of a number of slides explaining the theory and showing the examples. Solutions to lab exercises are explained during the lab session and provided to the students as part of preparation for the test and coursework.

Module aims

  • Introduce the basic principles of Operating Systems and computer architectures coupled together with aspects like process management, memory management, file systems, I/O subsystems, etc.
  • Practical application of OS principles by examining case studies in a chosen platform
  • Develop the students' knowledge of programming to support an interest in lower level programming to contribute to OS development, or use the acquired skills to be highly skilled programmers in higher level user application development

Learning outcomes

Attributes Developed
001 Understand the operations managed by the OS and design strategies: micro-kernel vs monolithic KC
002 Execute and implement multiprocessing and multithreaded applications using various concurrency and messaging mechanisms KPT
003 Understand Memory Management functionalities implemented by OS, and the various partition schemes. Execute memory profiling to various programming examples KPT
004 Critically evaluate the design of file system and I/O managers in various OS case studies and interface with them from higher level applications. KPT

Attributes Developed

C - Cognitive/analytical

K - Subject knowledge

T - Transferable skills

P - Professional/Practical skills

Methods of Teaching / Learning

The learning and teaching strategy is designed to:


  • help students understand the distinctive features of various operating systems design decisions;

  • demonstrate the fundamental applications of OS features in programming higher level user applications;

  • provide the foundations on which students can build in order to be able to participate in OS development subsequently;

  • enable students to design higher level applications more efficiently by being aware of the impact the OS has on managing the access to the underlying hardware and other resources.



The learning and teaching methods include:


  • Lectures (11 weeks at 2 hours) using detailed lecture slides and interactive quizzes (e.g., Poll Anywhere) to gauge the students’ understanding.

  • Labs/Tutorials (11 weeks at 2 hours) applying learnt knowledge from lectures to solve related problems.



Students are expected to spend time outside of the contact hours on self-study to prepare and revise lecture, lab and tutorial material

Indicated Lecture Hours (which may also include seminars, tutorials, workshops and other contact time) are approximate and may include in-class tests where one or more of these are an assessment on the module. In-class tests are scheduled/organised separately to taught content and will be published on to student personal timetables, where they apply to taken modules, as soon as they are finalised by central administration. This will usually be after the initial publication of the teaching timetable for the relevant semester.

Reading list

https://readinglists.surrey.ac.uk
Upon accessing the reading list, please search for the module using the module code: COM1032

Other information

Digital Capabilities
This module teaches students how the Operating System functions. Low level theory on foundational OS concepts such as memory management, processes, threads, and scheduling are complemented with a practical exploration of the topic where students will learn these concepts by building programs that exploit them in the labs.  The foundational computer science skills taught in this module provide students digital skills that are fundamental to being a computer scientist. 
Employability
This module provides low level software skills that allow them to build programs that work with the low-level software and hardware components of a computer system. This is foundational knowledge for computer scientists and will allow them to work comfortably with concepts such as multithreaded programs. These skills are highly valuable to employers.
Global and Cultural Skills
Computer Science is a global language and the tools and languages used on this module can be used internationally. The same set of Operating Systems exist on computers worldwide and the foundational concepts taught in this module can be applied throughout the world.
Resourcefulness and Resilience
Operating Systems are hugely complex pieces of software. This module provides the first steps towards understanding how they function at a low level. Using a platform such as the Raspberry Pi. The lab sessions are a mix of tutorials problem solving tasks and programming exercises that teach how the different components of an Operating System works through practical exploration.

Programmes this module appears in

Programme Semester Classification Qualifying conditions
Computer Science BSc (Hons) 2 Compulsory A weighted aggregate mark of 40% is required to pass the module
Computer Science MEng 2 Compulsory A weighted aggregate mark of 40% is required to pass the module

Please note that the information detailed within this record is accurate at the time of publishing and may be subject to change. This record contains information for the most up to date version of the programme / module for the 2023/4 academic year.