Principles of Programming I
This module introduces programming concepts and techniques, as well as elementary software development principles. Both for absolute beginners and for those with prior programming experience, the module introduces the fundamentals of object-oriented programming, including: classes and objects, variables and assignment, primitive and object types, methods, control structures, collections, iteration and recursion. The module also introduces basic software development issues such as class design, testing, debugging and documentation.
To provide the student with a comprehensive grounding in programming.
On successful completion of this module a student will be expected to be able to:
- Demonstrate knowledge of fundamental imperative programming concepts such as variables and assignment, conditional statements, loops and methods.
- Code an application in a suitable object-oriented programming language, from a detailed software specification.
- Evidence knowledge of basic concepts and principles of object-orientation such as objects and classes, encapsulation, object state, coupling, cohesion and modularity.
- Show awareness of basic principles of software design and development including appropriate naming of variables and classes, code layout, testing and debugging, and documentation.
- To show awareness of working in pairs and groups, and noting when, and where, they are most relevant.
- Core imperative programming ideas:
- sequence, selection, iteration, assignment, and variables.
- Version Control
- Data types
- Automated testing and test driven development (TDD)
- Object-oriented programming
- Encapsulation, Inheritance, Polymorphism, Message passing
- Dynamic data structures
- Linked lists, Queues, and Stacks
- Recursion and recursive data structures
- Exception handling
- Program design in the small and the large
A pass in the relevant admissions test.
All dates and timetables are listed in the programme handbooks of individual programmes.
The module requires the student to successfully complete several programming assignments and graded exercises.
By examination (80%) and programming coursework (20%).