Do you enjoy programming, or are you convinced you would? Do you want to know how to talk to customers and clients, understand their needs, and be able to specify, design, build and test the software they need? How to work by yourself and also in teams? And do you want to know more about the scientific and theoretical foundations of the subject? If you want to do all these things, and also learn about the principles of coding, underpinning mathematics, mathematical models of computation, operating systems and networks, and professional skills, this is the course for you!
The course covers methods for developing software, following rigorous engineering practices. You will learn how to plan and manage software architectures for practical large-scale development projects, while adopting an academic and rigorous approach which will support you throughout your career. Specifically you will learn how to understand customer requirements; specify, design and code a computer solution; and test and release your solution to your customer. You will learn about mathematical models of computation such as automata and register machines, and foundations of coding such as formal language theory.
Modules in computer architecture, operating systems and networking will cover essential aspects of modern computing systems, from personal computers and devices to world-distributed computation. And of course we will also cover databases and information systems. In the optional modules you can learn about a range of advanced topics including user interfaces, web technologies, mobile applications, internet security, distributed systems and applications, concurrency theory and programming paradigms.
Project work is seen as highly desirable by employers. In your second year group project you will learn the demands of working in a professional environment as you endeavour to deliver software that is often commissioned by a real client. In your final year, you will undertake an individual problem-based project, exercising your creativity and innovation to design and implement a software solution to the problem; you can also apply the scientific principles you learned. Previous projects have included 3-D games, mobile phone/tablet apps, security software, internet telephony, programming robots, sheet music editor, theorem provers and processor emulators.
What's the difference?
Interested in a career in IT but not necessarily in the theoretical and scientific aspects? Try the BSc in Software Engineering. You will become familiar with common programming languages, and understand how computer systems help in analysing, managing, processing and communicating information, including large organisations.
Intrigued by computational phenomena, like why and how programming languages actually work? Want to know more about the processes and techniques through which new software systems can be built? The BSc in Computer Science is the course for you. Or, if you want to start your career at a higher level, or study for a PhD, try the MComp which is the BSc with an extra year on the end.
Or take the Major in Computer Science together with a Minor in Management Studies if you want to study computing with management, or together with any other compatible Minor.