This course provides a thorough grounding in the fundamentals of computer science combined with opportunities to specialise in application areas. Core ideas are introduced in years one and two. You will cover the principles of programming and algorithms, how a modern computer works, computational theory, how to design programming languages, concurrent systems and networks, and machine learning and pattern recognition. A key component of year two is a software group project in which you work in teams to deliver an application to a client with help from a mentor from industry. You can also take options in human computer interaction (HCI), complexity theory and the origins of computing, as well as open units from across the University. In year three you specialise in application areas and undertake an individual project, with opportunities to work with industry and research partners.