CSU22014 – Systems Programming I

Module CodeCSU22014
Module NameSystems Programming I
ECTS Weighting [1]5 ECTS
Semester TaughtSemester 1
Module Coordinator/s  Prof. David Gregg

Module Learning Outcomes

On successful completion of this module, students will be able to:

  1. Design and construct clear, maintainable, correctly structured programs in C to solve a variety of practical problems;
  2. Develop programs using UNIX development tools such as vi, gedit, gcc, clang and gdb;
  3. Distinguish between good, questionable and bad programming style;
  4. Assess alternative program design decisions;
  5. Effectively use pointers and dynamic memory allocation;
  6. Develop code that performs bit manipulation and bit packing/unpacking.

Module Content

Students taking this module have already successfully completed courses in object oriented Java programming and ARM assembly language programming. This module starts with a new perspective on program construction, with structured programming in C. This part of the module deals with the features of C, sound design principles for structured programming, and the necessary self-discipline required to program in a low-level language like C.

The module also deals with the layout of data in memory, particularly when programming in a low-level language, and building data structures using pointers. Another significant topic is manipulation of data at the bit-level and building bit-level data structures such as bit sets.

Teaching and Learning Methods

Students attend two lectures and one lab each week. There is lab work almost every week, and around three major assignments during the semester.

Assessment Details

Assessment ComponentBrief DescriptionLearning Outcomes Addressed% of TotalWeek SetWeek Due
ExaminationOnline Exam: An exam that will be released to students at a time determined by College and that students will have 2 hours to complete.LO1, LO2, LO3,
LO4, LO5, LO6
Lab WorkWeekly lab work that builds to three pieces of submitted work. LO1, LO2, LO3,
LO4, LO5, LO6

Reassessment Details

Realtime Online (2 hours, 100%).

Contact Hours and Indicative Student Workload

Contact Hours (scheduled hours per student over full module), broken down by:44 hours
Lecture22 hours
Laboratory11 hours
Tutorial11 hours
Independent Study (outside scheduled contact hours), broken down by:72 hours
Preparation for classes and review of material (including preparation for examination, if applicable)36 hours
Completion of assessments (including examination, if applicable)36 hours
Total Hours116 hours

Recommended Reading List

  • The C Programming Language by Brian Kernighan and Dennis Ritchie.
  • The Practice of Programming by Brian Kernighan and Rob Pike.
  • Programming Pearls by Jon Bentley.

Module Pre-requisites

Prerequisite modules: CSU11010, CSU1012, CSU11021, CSU11022.

Other/alternative non-module prerequisites: Two semesters of introduction to programming, and some experience of assembly programming.

Module Co-requisites

CSU22011: Algorithms and Data Structures I

Module Website