SYSTEMS PROGRAMMING

SHE Level 3
SCQF Credit Points 20.00
ECTS Credit Points 10.00
Module Code M3I324183
Module Leader Brian Hainey
School School of Computing, Engineering and Built Environment
Subject Computing
Trimesters
  • C (May start)
  • A (September start)
  • B (January start)

Pre-Requisite Knowledge

Fundamentals of Computing, Programming 2, Data Structures and Algorithms

Summary of Content

This module investigates the knowledge and skills necessary to program multi-module application and systems programs using operating system and API libraries. The syllabus covers Linux shell script programming, programming operating system features using standard libraries and basic network programming. The material is supported by systems programming exercises including the coding of operating systems utilities and the use of sockets programming to code a client-server application.

Syllabus

Operating System Commands and Shell Script Programming -360b7 Overview of mainstream operating system commands available from a command shell on Linux. Commands to access system documentation, administer file systems, administer processes, administer users and groups and search for data in files and a file-system. b7 Programming with a mainstream operating system command shell to write system management utilities e.g. Bash. Constructs including wildcards, redirection, piping, signals, variables, command line variables, control structures Low-Level Programming in C -360b7 Pointers and memory management b7 Unmanaged data-structures b7 Use of GNU C standard library b7 GNU C compiler options including linking API libraries Operating Systems Programming -360b7 files and directory management b7 inter-process communication b7 process and thread management Network Programming -360b7 TCP synchronous sockets for a client-server architecture b7 Approaches to the message boundary problem

Learning Outcomes

On completion of this module, students should be able to:-Use and program with an industry standard shell script language to automate system administration tasks and tasks related to software development. Develop programs using an appropriate un-managed low-level compiled programming language. Program features associated with modern operating systems i.e. files and directories, inter-process communication, processes and threads and network programming.

Teaching / Learning Strategy

The module material will be introduced through lectures, while problem-solving practical exercises, based on the lecture material, will be given to students for their laboratory sessions. Continuous formative feedback will be provided through issuing solutions to exercise material. Students will receive structured ongoing support during the development of the coursework in the labs. The module will be additionally supported using appropriate industry videos, blogs, directed reading and example programming material. The courseworks will involve the development of solutions reflecting real world problems i.e. scripting common system administration and/or software development tasks using the Linux operating system; and the low-level development of an appropriate application using operating system and/or network programming features.

Indicative Reading

Blum, R. & Bresnahan, C. (2011) Linux Command Line Scripting Bible 2nd. ed., Wiley Prata, S. (2013) C Primer Plus 6th ed., Addison-Wesley Love, R. (2013) Linux System Programming 2nd. ed., O'Reilly Kerrisk, M. (2011) The Linux Programming Interface: A Linux and UNIX System Programming Handbook, No Starch Press

Transferrable Skills

D1 Specialist knowledge and application D2 Critical thinking and problem solving D3 Critical analysis D7 Computer literacy D8 Self confidence, self discipline & self reliance (independent working) D18 Commercial awareness

Module Structure

Activity Total Hours
Lectures (FT) 24.00
Practicals (FT) 24.00
Assessment (FT) 18.00
Independent Learning (FT) 134.00

Assessment Methods

Component Duration Weighting Threshold Description
Coursework 2 n/a 50.00 35% C-based operating systems/sockets programming development deliverable
Coursework 1 n/a 50.00 35% Shell Script programming development deliverable