This module introduces imperative computer programming, which is a fundamental building block of computer science. The process of constructing a program for solving a given problem, of editing it, compiling (both manually and automatically), running and debugging it, is covered from the beginning. The aim is to master the elements of a programming language and be able to put them together in order to construct programs using types, control structures, arrays, functions and libraries. An introduction to object orientation will be given. After completing this module, the student should understand the fundamental elements of a program, the importance of good program design and user-friendly interfaces. Students should be able to conduct basic program analysis and write complete elementary programs.