Programme Aims & Outcomes
About 50-70 undergraduates each year read for Honours Degrees in Computer Science; others take modules in the School as part of other degree programmes; and about 70-90 students each year study in the School for an MSc degree in some branch of Computer Science or Information Technology.
Most of our teaching staff are active researchers, and their work is often reflected in Honours and MSc modules and projects.
Our programmes are designed with the following aims:
- to provide students with a thorough grounding in the theoretical and practical principles of computer science, and to show how these can be used to analyse problems that may be solved by computational techniques;
- to provide students with knowledge of computer science, as well as equipping them with a range of transferable skills; and
- to encourage students to explore rigorously the core principles of the subject and to give them an understanding of its intellectual frontiers.
Thus, the programmes offered by the School not only provide specialist knowledge over a wide range of subjects but also foster analytical thought, independent study, self-motivation and communication skills. In particular, project work and the delivery of oral presentations develop the last of these, while team projects give students experience of team collaboration.
At the end of their programmes, students should:
- have knowledge both of the basic skills in computer science and of a range of more specialised topics;
- have the ability to master the essentials of a new topic through independent study;
- have enhanced their general skills in logical and analytical thought;
- have developed their skill in written and oral communication.
In particular, the programmes are designed to provide students with the following transferable skills:
Abstraction: students learn how to abstract from particular solutions to general ones. For example, paradigms of programming and problem solving are identified as useful in particular but generic contexts. This goal differentiates the computer scientist from other scientists who use computers. The skill is demonstrated at every level in the theoretical and practical components of all the courses.
Analysis: students learn how to use the theory of computer science for careful and logical reasoning to deduce the implications of technology. This skill is essential if individuals are to make sensible forecasts on the performance and the cost of construction of computer systems as well as in the specification and design of large programs. Our courses stress the analytical framework within which computer systems and algorithms may be rigorously studied.
Numeracy and Programming: students learn to work with mathematically expressed ideas and to use them to structure data in an intelligent way. Students also learn how to write computer programs from designs and specifications such that programs are as error-free as possible. These skills are delivered via programming projects that require both specification and implementation.
Communication: students learn how to communicate ideas and arguments concisely and effectively. These communication skills are both written, developed by essays and project reports, and oral, developed through tutorial discussions and project talks and presentations at Honours and MSc level.
Criticism: students are encouraged to take a critical view of the subject material and so learn to recognise the limitations of particular methods of problem solving. The verification and validation of computing systems depends on this critical analysis. This skill is achieved by case analysis in lectures, tutorials and coursework.
Teamwork: students acquire the ability to work as part of a team. This is essential for the computer scientist since most computer companies are organised in teams. The skill is developed in the curriculum in various modules, including team projects where the specification, design, implementation, testing and report writing are all conducted by teams supervised by experienced members of staff.