Site Navigation

COMP8033 - System Programming

Title:System Programming
Long Title:System Programming and Inter-Process Communication
Module Code:COMP8033
Duration:1 Semester
Credits: 5
NFQ Level:Advanced
Field of Study: Computer Science
Valid From: Semester 1 - 2012/13 ( September 2012 )
Module Delivered in no programmes
Module Coordinator: Sean McSweeney
Module Author: HELEN FAGAN
Module Description: Develop programs that use Inter-Process Communication mechanism to communicate between processes on a single machines or across a network. Develop multi-threaded client/server solutions to problems, using sockets and RPC.
Learning Outcomes
On successful completion of this module the learner will be able to:
LO1 Use system calls and construct processes that communicate to solve a given problem using an appropriate IPC mechanisms.
LO2 Explain when synchronization is required in a concurrent programming environment and be able to implement it.
LO3 Design and implement a non-trivial client/server application using either sockets or RPC.
LO4 Construct a multi-threaded solution to a given problem that requires thread synchronization.
Pre-requisite learning
Module Recommendations

This is prior learning (or a practical skill) that is strongly recommended before enrolment in this module. You may enrol in this module if you have not acquired the recommended learning but you will have considerable difficulty in passing (i.e. achieving the learning outcomes of) the module. While the prior learning is expressed as named MTU module(s) it also allows for learning (in another module or modules) which is equivalent to the learning specified in the named module(s).

Operating Systems Fundamentals
Incompatible Modules
These are modules which have learning outcomes that are too similar to the learning outcomes of this module. You may not earn additional credit for the same learning and therefore you may not enrol in this module if you have successfully completed any modules in the incompatible list.
No incompatible modules listed
Co-requisite Modules
No Co-requisite modules listed

This is prior learning (or a practical skill) that is mandatory before enrolment in this module is allowed. You may not enrol on this module if you have not acquired the learning specified in this section.

No requirements listed

Module Content & Assessment

Indicative Content
Linux O.S.
The Linux desktop. Overview of the Linux Operating System: users, processes, filesystems. The Linux Development Environment (editor and debugging tools). The Linux bootup procedure. The Linux network services. The Super Server xinetd: what it does.
System Calls
Revision of data structures and pointers, command line arguments, writing command line programs. Using man pages and system include files to explore system data structures. Use of system calls to retrieve system information such as stat, getpwuid, getpid, getuid getenv, gethostbyname, uname.
Inter-process Communication
Creation and termination of processes, process characteristics and relationships. Appropriate use of signal handling using signal and sigaction. The use of IPC mechanisms to pass data from one process to another to solve simple problems: pipes, messages, semaphores, shared memory. An exploration of the use of semaphores and shared memory in solving a complex problem such as the producer/consumer problem.
Distributed Programming using sockets and RPC
Review of networking concepts. Characteristics of different client-server architecture based on connection-oriented and connectionless sockets, concurrent and non-concurrent servers. Implementation of connection-oriented and connectionless servers and clients. Study of the simple implementation of xinetd using the select system call. Understanding RPCs case study, for example, ONC RPC, external data representation. Building clients and servers using RPCGEN. RPC authorization.
Thread Creation and synchronization
Thread creation, synchronization, data transfer between threads, thread programming pitfalls, thread pooling.
Designing Distributed interfaces
Design issues for distributed applications and their interfaces. Application level protocols, user-defined protocols.
Assessment Breakdown%
Course Work100.00%
Course Work
Assessment Type Assessment Description Outcome addressed % of total Assessment Date
Project Develop a solution to a given problem using IPC and other system calls 1,2 25.0 Week 6
Project Design and implement a client server solution to a given problem 3,4 25.0 Week 12
Non-CIT Exam Written examination 1,2,3,4 50.0 Sem End
No End of Module Formal Examination
Reassessment Requirement
Repeat examination
Reassessment of this module will consist of a repeat examination. It is possible that there will also be a requirement to be reassessed in a coursework element.

The institute reserves the right to alter the nature and timings of assessment


Module Workload

Workload: Full Time
Workload Type Workload Description Hours Frequency Average Weekly Learner Workload
Lecture Theory 2.0 Every Week 2.00
Lab Programming Labs 2.0 Every Week 2.00
Independent & Directed Learning (Non-contact) Theory and Assignments 3.0 Every Week 3.00
Total Hours 7.00
Total Weekly Learner Workload 7.00
Total Weekly Contact Hours 4.00
Workload: Part Time
Workload Type Workload Description Hours Frequency Average Weekly Learner Workload
Lecture Theory 1.5 Every Week 1.50
Lab Programming Labs 1.5 Every Week 1.50
Independent & Directed Learning (Non-contact) Theory and Labs 1.0 Every Week 1.00
Independent & Directed Learning (Non-contact) Assignments 3.0 Every Week 3.00
Total Hours 7.00
Total Weekly Learner Workload 7.00
Total Weekly Contact Hours 3.00

Module Resources

Recommended Book Resources
  • Kay A. Robbins, Steven Robbins 2003, Unix™ Systems Programming: Communication, Concurrency, and Threads, Prentice Hall [ISBN: 0-13-042411-0]
Supplementary Book Resources
  • Michael K. Johnson, Erik W. Troan 2004, Linux Application Development, Addison-Wesley [ISBN: 0-321-21914-7]
  • Neil Matthew, Richard Stones, Alan Cox 2004, Beginning Linux Programming,, Third Ed. [ISBN: 978-0-7645-4497-2]
  • Robert Love 2007, Linux System Programming: Talking Directly to the Kernel and C Library (Programming), O'Reilly
This module does not have any article/paper resources
Other Resources

Cork Institute of Technology
Rossa Avenue, Bishopstown, Cork

Tel: 021-4326100     Fax: 021-4545343
Email: help@cit.edu.ie