|Assessment Type||Assessment length / details||Proportion|
|Semester Assessment||One programming assignment (60 hours)||50%|
|Semester Exam||2 Hours Written Exam||50%|
|Supplementary Assessment||Supplementary examination will take the same form, under the terms of the Department's policy|
On successful completion of this module students should be able to:
analyse a block diagram of a computer and explain how it works at the level of logic gates.
analyse and develop low level programs and describe how they are executed by a CPU.
describe how a computer performs input and output operations.
explain how abstract concepts in high-level languages, such as `function call' or `local variable', are implemented in machine code.
judge the applicability of high and low level language programming.
demonstrate a good understanding of the nature of the computer language "C" including the more challenging aspects of the language.
apply the facilities of the language "C" to technically advanced problems.
describe the differences between object oriented languages (such as Java) and non-OO languages (such as C) and make appropriate choices between such languages to solve a range of realistic problems.
Overall introduction to the module.
2. What is a computer?
Block diagram overview; CPU, memory, I/O, Bus. Memory, Digital Logic; pigeon-hole model, address and contents, bits bytes and words.
Address, data and control buses. Basic data transfer.
4. Inside the CPU
Simple examples of instructions. The fetch-execute cycle and the program counter. Registers. ALU. Control unit. Implementing a machine code in hardware. Digital logic.
5. An example CPU example: Some machine codes and mnemonics
Addressing modes. Assembly code.
6. Executing high-level software
Machine-code equivalents of high-level constructs. Function calls. Stack frames and local variables.
Reading and writing data. Interrupts. Transferring large amounts of data; DMA, block I/O.
Use a CPU simulator to watch instruction execution. Assembly language comprehension (probably, but not necessarily, by writing a program).
9. Linux at the command line
An introduction to the alternative Linux shells. Shell built-in commands and commonly used external commands and editors.
10. Shell Script programming The programming language provided by a selected Linux shell in common usage.
11. Tools of the Unix Environment
Purpose and usage of Linux environment tools such as sed, sort, uniq, awk, grep and so on.
12. Basic Concepts of "C"
History of the C language, philosophical differences between C language design and Java. Basic form of a C program compared with that of a Java program. Using the compiler.
13. Control Structures Sequence, branching and iteration in C compared with that of Java.
14. Basic Data Structures
Review of basic data types and operators in C.
Discussion of ways in which functions are implemented, and used in C, including parameter passing mechanisms. Input/Output.
16. Composite Data Structures
A first discussion of Arrays in C.
17. Software Support Tools
Make, Lint, Debuggers. Libraries and library utilities.
18. C Programming Style and Portability
Language standards. Portability. Programming standards.
19. Arrays, Pointers and Functions
A discussion of pointer data types, how they relate to arrays, and how they contrast with references to Java objects.
20. Dynamic Data Structures
Implementation of various record structures and dynamic structures. Pointers. Malloc. Examples in C. Parallels will be drawn with how the internals of Java do this for you.
Major problem areas. Design rationale of C and of Java in problem areas.
22. Further Features C preprocessor, header files, conditional inclusion, macro substitution, bitwise operators, casts, enumeration, scope, static and external declarations, separate compilation.
|Skills Type||Skills details|
|Application of Number||No|
|Improving own Learning and Performance||The assessed coursework requires students to develop their understanding of issues associated with the module|
|Information Technology||Entire content of module|
|Personal Development and Career planning||No|
|Problem solving||The assignment addresses challenging issues concerned with designing and building C programs|
|Research skills||On-line web exploration and synthesis and application of relevant materials is required both by the assignment and the examination|
|Subject Specific Skills||See learning outcomes|
Reading ListRecommended Text
Daniel J Barrett (2004) Linux Pocket Guide O'Reilly UK Primo search Peter PRinz and Ulla Kirch-Prinz (2002) C Pocket Reference O'Reilly UK Primo search Yale N Patt and Sanjay J Patel (2004) Introduction to Computing Systems 2 McGraw Hill Primo search
This module is at CQFW Level 7