C Programming language
You must be a competent programmer to take CS7NS2. The module will use the C programming language extensively so you should be familiar with either C or C++ before starting the module.
If your programming experience has been with other languages, you should familairise yourself with C before starting CS7NS2. There are many websites, textbooks, videos and online courses designed for experienced programmers to learn C. For example, C Programming on Wikibooks provides a very concise C tutorial, structed around short examples of the syntax.
Another online tutorial is available on tutorialspoint.com. Learn C Programming provides a comprehensive introduction to C that is particularly suited programmers with experience of other languages.
The Hamilton Library has a number of copies of C programming : absolute beginner's guide (Perry and Miller), although this book is aimed at novice programmers rather than experienced programmers who are learning C as a new language. Similarly, C How to Program (Deitel and Deitel) provides a comprehensive introduction to C proramming, again aimed at novice programmers, although it may still be a useful starting point.
There are a number of C features and concepts that will be particularly relevant in CS7NS2 and you should familiarise yourself with these in particular:
- pointers, referencing and dereferencing (
*
,&
) - scope (local, global)
- storage classes (
static
,extern
) - preprocessor directives
- conditional compilation (
#ifdef
,#ifndef
,#endif
) - macros (\texttt{#define MS_PER_MINUTE 60000})
- macros with parameters (\texttt{#define square(x) ((x) * (x))})
- conditional compilation (
- structures (
struct
) typedef
- pointers as function operands
- unions and bitfields
- bitwise operators (
<<
,>>
,&
,|
,^
,~
)
Telecommunications and the Internet
Familairity with some networking and telecommunication concepts will be required. In the context of the OSI model, the Network and Transport Layers (OSI layers 3 and 4) are most relevant. A good textbook such as Computer Networking: A Top-Down Approach (Kurose and Ross) is a good place to start.
Fundamentals of Computer architecture
A knowledge of the fundamentals of computer architecture would be beneficial to students intending to take CS7NS2. In particular, a knowledge of basic processor architecture and operation (registers, ALU, program counter), memory read and write operations (loads and stores), memory-mapped devices, exceptions and interrupts would be useful.
The second half of Digital Design and Computer Architecture: ARM Edition (Harris and Harris) covers most of the above topics in the context of the ARM architecture.