The aim of this module is to introduce engineers to computers and computer programming using an important modern programming language which has applications from small embedded systems to supercomputers.
Syllabus: Lecture material
1. Introduction to Computer Programming a. Key definitions - components of a computer, operating system, embedded computers. b. High-level programming languages - overview and examples c. C programming language - history, current importance and applications d. Compiling and Linking
2. Introduction to C programming a. Variables & Data types b. Assignment and initialisation c. Operators & Input d. Introduction to using the Math library
3. Program control (Iteration & Selection) a. Loops - importance in programming b. Iteration - "for" loops, The "while" loop, The "do - while" loop, and Comparison of for, while and do-while loops c. Conditional statements - the "if" and "if else" statements d. The switch statement e. Logical and relational operators
4. Arrays a. Introduction to arrays - rationale for using arrays in C b. Declaring arrays, Initializing arrays, Multi-dimensional arrays, and Character arrays – strings.
5. Functions and procedural programming a. Basic ideas about functions b. Local, global and static variables c. Function arguments and "call-by-value" d. Function prototypes
6. Introduction to numerical methods and algorithms a. Developing mathematical / numerical applications b. Internal representation of data types and Variable precision - roundoff errors c. Algorithm expression and design
7. Files a. Files - the basics, Using files - the FILE data structure b. String file i/o - fgets() and fputs() and Formatted file i/o - fprintf() and fscanf()
8. Pointers a. Concept of pointers as memory addresses b. Pointer and indirection operators, pointer arithmetic c. Pointers and arrays, Pointers and functions - call by reference d. Dynamic allocation of one-dimensional arrays
9. Real-world applications a. Introduction to program design b. Header files and libraries c. Developing new data types - "structs" and "typedefs" d. Programming on Embedded systems.
Learning Outcomes
By the end of the module students should be able to:
Demonstrate the knowledge and understanding to write programmes in C in order to help them solve problems in engineering.
Demonstrate the ability to interpret and enhance programmes developed by other engineers.
Demonstrate the ability to extract and reformulate real world scenarios into C programing code.
Main assessment: One 2-hour formal written examination (50%) to be held during the January examination period and 50% by assessed laboratory examinations. Reassessment: One 2-hour Canvas-based examination (100%) to be held during the University’s supplementary examination period.