SYSTEMS PROGRAMMING

SHE Level 3
SCQF Credit Points 20.00
ECTS Credit Points 10.00
Module Code M3I325097
Module Leader Iain Lambie
School School of Computing, Engineering and Built Environment
Subject Computing
Trimester
  • A (September 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. The percentage of Work Based Learning for this module, as represented by the Independent Learning Activity Type, is 73%. There is no Work Based Assessment but reflective learning is encouraged.

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:-1 - Use and program with an industry standard shell script language to automate system administration tasks and tasks related to software development. 2 - Develop programs using an appropriate un-managed low-level compiled programming language. 3 - Program features associated with modern operating systems i.e. files and directories, inter-process communication, processes and threads and network programming.

Teaching / Learning Strategy

Work based education aims to maximise the direct and digitally mediated contact time with students by practicing teaching and learning strategies that use authentic work based scenarios and encourage action learning, enquiry based learning and peer learning. All these approaches aim to directly involve the students in the process of learning and to encourage sharing of learning between students. The module team will determine the level and accuracy of knowledge acquisition at key points in the delivery, inputting when necessary either directly or with the support of external experts who will add to the authenticity, the credibility and application of the education and learning in the workplace. The module material will be introduced through combined classes presented partly as lectures and each containing associated problem-solving programming exercises undertaken by the students. Further lecture material will be provided as online content. 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 class. The practical exercises and courseworks can be completed off campus. 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. The students will be encouraged to reflect upon the learning within the workplace and the application of newly learned concepts to the work environment.

Indicative Reading

Shell Scripting: Expert Recipes for Linux, Bash, and More; 2011; Steve Parker; Wrox; C Primer Plus 6th Ed; 2014; Stephen Prata; Addison Wesley; Advanced Programming in the UNIX Environment 3rd Ed.; 2013; Stevens & Rago; Addison Wesley; The Linux Programming Interface; Michael Kerrisk; 2010; No Starch Press; The Linux Command Line; 2013; W. E. Shotts Jr; Self Published

Transferrable Skills

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

Module Structure

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

Assessment Methods

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