The course is structured into three blocks: two semesters with four taught modules in each, followed by a summer-long project. The material in semester one focuses on core understanding and core competence, with topics including Programming Fundamentals, Database Systems, Algorithms and Data Structures, Software Engineering. Modules in the second semester build on this, with topics including Object Oriented Software Development, Web Application Development, Fundamentals of AI, Professionalism, Ethics and Cyber Security. Finally, in the summer you will have the option of completing either an Individual Computing Project or a Collaborative Computing Project.
Compulsory modules
Programming Fundamentals (15 credits)
The aims of this module are to:
- Map fundamental computer science concepts to their realisation in a modern programming
language. - Explain the execution of individual instructions in a modern programming language.
- Explain how a version control repository supports software development.
Database Systems (15 credits)
The aims of this module are to:
- Develop students' ability to reason about data
- Engage in the full lifecycle of a database including abstract modelling, concrete realisation, CRUD interaction, and privilege allocation.
Algorithms and Data Structures (15 credits)
The aims of this module are to:
- Enable students to reason about computational complexity in the context any given computational problem.
- Equip students to interact with the libraries of a modern programming language, in order to harness appropriate algorithms and data structures in the solution of a computational problem.
- Develop students' ability to read and construct pseudo code.
Software Engineering (15 credits)
The aims of this module are to:
- introduce the tools, techniques, terminology and objectives of modern software engineering practice.
- compare and contrast the significant characteristics and features of modern software engineering paradigms.
- provide an environment for students to collaborate on a software engineering development.
Compulsory modules
Object Oriented Software Development (15 credits)
The aims of this module are to:
- provide insight into the important features of the object oriented software development paradigm.
- enable students to design and / or refactor object oriented solutions to realistic problems.
- equip students to use a modern, commercially relevant, object oriented programming language to implement, test, deploy and maintain object oriented software.
Web Application Development (15 credits)
The aims of this module are to:
- sensitise students to the challenges of integrating multiple different networked technologies into a properly functioning web application.
- equip students to develop an effective user interface.
- enable students to reason about trust in the various components of a web application, local and remote, and the traffic that flows between them.
- equip students to design, implement and test a multi-tier web application that satisfies functional and non-functional requirements.
Fundamentals of AI (15 credits)
The aims of this module are to:
- Provide insight into the fundamentals of the various artificial intelligence paradigms.
- Enable students to design, implement, and test artificial intelligence based solutions of realistic problems.
Professionalism, Ethics and Cyber Security (15 credits)
The aims of this module are to:
- Introduce the facets of research from broad research philosophy to detailed data collection.
- Develop critical analysis skills across a range of different sources.
- Introduce ethical thinking into the development of an appropriate research methodology.
Optional modules - choose 1 of 2
Computing Individual Project (60 credits)
The aims of this module are to give each student, the chance to plan, conduct and report a substantial computer science research or development project.
Computing Collaborative Project (60 credits)
The aims of this module are to give students the chance to collaborate with fellow students in the planning, conduct and reporting of a substantial computer science research or development project.