Module Code | CSU22014 |
Module Name | Systems Programming I |
ECTS Weighting [1] | 5 ECTS |
Semester Taught | Semester 1 |
Module Coordinator/s | Prof. David Gregg |
Module Learning Outcomes
On successful completion of this module, students will be able to:
- Design and construct clear, maintainable, correctly structured programs in C to solve a variety of practical problems;
- Develop programs using UNIX development tools such as vi, gedit, gcc, clang and gdb;
- Distinguish between good, questionable and bad programming style;
- Assess alternative program design decisions;
- Effectively use pointers and dynamic memory allocation;
- 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 Component | Brief Description | Learning Outcomes Addressed | % of Total | Week Set | Week Due |
Examination | Online 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 | 80% | N/A | N/A |
Lab Work | Weekly lab work that builds to three pieces of submitted work. | LO1, LO2, LO3, LO4, LO5, LO6 | 20% | Weekly | Three due dates |
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 |
Lecture | 22 hours |
Laboratory | 11 hours |
Tutorial | 11 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 Hours | 116 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: CSU11011, CSU11012, 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