The School of Computer Science aims to teach fundamental principles and practical skills in information technology, and to establish the foundations for an entire career. Units of study in the Computer Science major are available at standard and advanced level.
A major in Computer Science covers the key concepts of computation. You will learn the principles and techniques needed to solve tasks efficiently with computation, and how to express those solutions in software. You will also discover how computation can be modelled and how to reason about the limits of what computation can achieve.
A major in Computer Science will provide you with the knowledge and skills needed to innovate in computer science, and create fundamentally new computer science solutions to future challenges.
The Computer Science major and minor requirements are listed in the Computer Science unit of study table.
Students who graduate from Computer Science will be able to:
|1||Develop a broad and coherent body of knowledge in computer science, including algorithms and one other subfield, and apply an integrated understanding of these concepts to solve relevant problems.|
|2||Construct models of a computational process in appropriate formalisms at appropriate levels of abstraction and relate models in different formalisms to one another.|
|3||Design and code programs that can work with the capabilities of the hardware and software stack; understand and explain to others how the underlying infrastructure affects application performance.|
|4||Evaluate the correctness and efficiency of algorithms, both standard and novel, and communicate the evaluation effectively.|
|5||Communicate concepts and findings in computer science through a range of modes for a variety of purposes and audiences, using evidence-based arguments that are robust to critique.|
|6||Apply key ideas from the theory of computation and its limits, recognise tasks where efficient perfect solutions should not be expected and where approximate solutions are appropriate and communicate the implications for users who want to solve such tasks.|
|7||Design, construct, and explain efficient solutions to a wide range of computational tasks, both by applying known data structures and algorithms, including those found in the literature of the field, and by designing new algorithms using a range of algorithm design techniques to produce runnable implementations of these solutions.|
|8||Work effectively with clients to achieve an efficient computational solution to a task, working individually and as part of collaborative teams, with consideration of differences in social and cultural perspectives.|