+ Computer Architecture
Computer Architecture involves the selection and interconnection of hardware components to create computers that meet functional, performance and cost goals. As a result, the development of effective computer architectures is a central part of technology development, and an understanding of the capabilities of architectures is important for developers of higher-level systems.
+ Information Systems in Business
Information Systems in Business addresses the role and impact of software systems within organisations. Many large scale software development projects fail either because business requirements, organisational structures or inter-organisational relationships are less than fully reflected in the design or deployment of the new software.
+ Mobile Computing and Networks
Mobile Computing and Networks is concerned with the provision of an infrastructure whereby distributed computational devices can co-operate efficiently and securely. Both wired and wireless networks are increasingly ubiquitous, and the importance of networked computing increases with the number and diversity of networked devices and mobile applications.
+ Programming and Algorithms
Algorithms capture the way in which a problem is to be solved. As a result, algorithms are central to software development, and a wide range of techniques have been developed that underpin the design and analysis of algorithms. This theme explores a wide range of algorithms and data structures, investigates how their properties can be analysed systematically, and explores how they can be implemented efficiently.
Algorithm Design and Analysis
+ Software Engineering and Agile Methods
Software Engineering is concerned with all aspects of software production, from the early stages of requirements gathering, through system design and implementation, to maintenance and evolution. Software Engineering is important because software projects may involve large teams of people, diverse or conflicting requirements, tight timescales and limited budgets.
+ Web and Distributed Systems
Web and Distributed Systems are among the most widely used computing systems, and are increasingly central to commercial, educational and leisure activities. As a result, many organisations, and thus their customers, are heavily dependent on the robustness and scalability of their distributed systems.
+ Learning and Search in Artificial Intelligence
Learning and Search in Artificial Intelligence is concerned with constructing intelligent systems that can adapt to a changing and uncertain environment. Applications in which learning and search are central include game playing, financial prediction and mobile robotics.
+ Natural Language, Representation and Reasoning
Natural Language, Representation and Reasoning is concerned with techniques and tools for capturing and making use of knowledge in computer systems, and for using natural language to communicate with users about that knowledge. Knowledge representation is important in many applications, from the description of web pages in the semantic web, to the interpretation of natural language statements in grammar checkers and machine translators.
+ Visual Computing
Visual Computing is concerned with the acquisition, analysis and production of visual data. Visual Computing is ubiquitous; its applications include computer games and virtual environments, scientific data visualisation, face recognition and medical imaging.
+ Computer Languages
Computer Languages are central to the development of software systems. A good understanding of programming languages is important for software developers, and many sub-disciplines of computer science use specialised languages that suit their specific requirements.