COMP20200 UNIX Programming

Academic Year 2022/2023

This course focuses on introducing students to the core concepts of the Unix operating system and how to programme this system. Today, Unix and Unix-like operating systems are ubiquitous; they are widely used in servers, embedded devices and have a growing desktop and mobile market (Linux, Mac OS X, Android etc.). This module will teach students how to develop applications for such systems, assuming no other software layer but OS. Students will improve their existing C programming language skills and will learn some key POSIX APIs to support designing and writing programs in a portable, maintainable fashion. They will learn how to write mutlithreaded and multi-process applications as well as some basics of Unix networking. All this will be done through the Unix command line, and students will learn basic tools and how to write shell scripts to automate common tasks.
Students will need a version of Unix installed on their own laptop (ideally Linux), help with this will be provided in the first lab.

Show/hide contentOpenClose All

Curricular information is subject to change

Learning Outcomes:

On completion of this module students should be able to: (i) Understand the concepts and structure of the Unix operating system; (ii) Be able to use the core utilities and perform administrative tasks; (iii) Write and understand advanced C programmes; (iv) Write shell scripts; (v) Know how to use source-code packaging tools (GNU build system).

Indicative Module Content:

History, the origin and the current state of Unix
Introduction to Unix shell
Intro to kernel, virtual memory, process image
File system, I/O, I/O in C
Virtual memory, process image and memory management in C
Shell, command arguments, program arguments in C
Kernel and system calls in C
Compilation, debugging, make
Threads and multi-threaded programming
Processes, signals, inter-process communication, networking
Shell scripting

Student Effort Hours: 
Student Effort Type Hours
Autonomous Student Learning










Approaches to Teaching and Learning:
The logic and basic concepts of each topic will be presented and explained at lectures. Lab exercises will be used to acquire basic practical skills. In addition, students will work on individual practical assignments, each requiring the development and implementation of a Unix program or script and developing advanced Unix programming skills. 
Requirements, Exclusions and Recommendations
Learning Recommendations:

Students taking this course should have already successfully completed an introductory C programming course.

Module Requisites and Incompatibles
UNIX Programming (COMP20150)

Assessment Strategy  
Description Timing Open Book Exam Component Scale Must Pass Component % of Final Grade
Assignment: Assignments per major topic Varies over the Trimester n/a Standard conversion grade scale 40% No


Examination: Written examination 2 hour End of Trimester Exam No Standard conversion grade scale 40% No


Lab Report: Weekly lab exercises Varies over the Trimester n/a Standard conversion grade scale 40% No


Carry forward of passed components
Resit In Terminal Exam
Autumn Yes - 2 Hour
Please see Student Jargon Buster for more information about remediation types and timing. 
Feedback Strategy/Strategies

• Feedback individually to students, post-assessment
• Online automated feedback

How will my Feedback be Delivered?

Assignments' marks are released to students with comments. Student can ask TA and demonstrators for additional individual feedback on their assignments.

Timetabling information is displayed only for guidance purposes, relates to the current Academic Year only and is subject to change.
Lecture Offering 1 Week(s) - 20, 21, 22, 23, 24, 25, 26, 29, 30, 31, 32, 33 Mon 11:00 - 11:50
Practical Offering 1 Week(s) - 20, 21, 22, 23, 24, 25, 26, 29, 30, 31, 32, 33 Tues 16:00 - 17:50
Lecture Offering 1 Week(s) - 20, 21, 22, 23, 24, 25, 26, 29, 30, 31, 32, 33 Wed 12:00 - 12:50