Module Leader: Dr Suhaib.A. Fahmy
Co-lecturer: Dr Shreejith Shanker
This module is one of the second year modules for:
To provide practical knowledge of how digital computing systems are designed, how they function, and how to program them.
By the end of the module the student should be able to...
1. Convert problems into algorithmic solutions using intrinsic and user-defined data types via high-level imperative programming languages.
2. Understand and explain the basic operation of computer processors and related hardware sub-systems that together form computing platforms.
3. Understand how performance is impacted by programming approaches, and choices in processor architecture, and how this relates to real-time constraints in engineering applications.
4. Write programs using different paradigms, exploiting the capabilities of different languages to meet functional and behavioural requirements of a range of scenarios.
Computational thinking: decomposition of functions, abstraction, algorithms, flowcharts.
Data representation: binary numbers and computations, signed representations, fixed and floating point fractional representations, codes.
High-level programming: Programming language paradigms, interpreters and compilers. ISO C language syntax and semantics: declarations, intrinsic data types, type definitions, expressions and statements, casts, flow control, intrinsic and user-defined functions, parameters by value or reference, arrays and pointers, recursion, bit operations, structures and unions, files. Introduction to concepts of object orientation and polymorphism. Python programming using its more abstract types.
Computer architecture: Basic processor and instruction set architecture, memory and memory hierarchies, input/output, peripherals. Microcontrollers including integrated peripherals and debug support circuits. Assembly code and its correspondence to machine code.
Performance of computing systems: measures of compute performance, OPS, FLOPS, how programming approaches impact performance, what real-time systems are, how processor architecture affects performance.
This module includes 20 hours of lectures, 3 x 1-hour seminars ((programming surgeries), 6 x 2-hour laboratory sessions, 2 x 1-hour examples classes, and 1 x 2-hour computer-based supervised test in programming.
Required self-study: 111 hours
A 15 CATS module: 60% examined via a 2-hour paper consisting of compulsory questions, 20% examined via a 2-hour test and 20% examined via two programming assignments (10% each).
Please see the Reading List