Despite the name, Computer Science is not really a science of computers at all. Computers are quite remarkable electronic devices, but even more remarkable is what they can be made to do: simulate the flow of air over a wing, manage communication over the Internet, control the actions of a robot, synthesize realistic images, play grandmaster-level chess, learn how to automatically translate between languages, and on and on. Indeed, the application of computers in activities like these has affected most areas of modern life. What these tasks have in common has little to do with the physics or electronics of computers, what matters is that they can be formulated as some sort of computation. This is the real subject matter of Computer Science: computation, and what can or cannot be done computationally.
In trying to make sense of what we can get a computer to do, a wide variety of topics come up. There are, however, two recurring themes. The first is the issue of scale: how big a system can we specify without getting lost in the design, or how big a task can a computer handle within reasonable bounds of time, memory, and accuracy A large part of Computer Science deals with these questions in one form or another. In the area of programming languages and methodology, for example, we look for notations for describing computations, and programming methodologies that facilitate the production of manageable and efficient software. In the theory of computation area, we study resource requirements in time and memory of many basic computational tasks.
The second theme concerns the scope of computation. Computers were originally conceived as purely numerical calculators, but today, we tend to view them much more broadly. Part of Computer Science is concerned with understanding just how far computational ideas can be applied. In the area of artificial intelligence, for example, we ask how the function of the human brain can be expressed in computational terms. In the area of human-computer interaction, we ask what sorts of normal day-to-day activities of people might be supported and augmented using computers.
A Specialist in Computer Science goes beyond the Major, providing a broad and deep foundation to computer science, and exposes you to a broad range of upper-year computer science topics. Artificial Intelligence (AI) is aimed at understanding and replicating the computational processes underlying intelligent behaviour. These behaviours include the perception of one's environment, learning how that environment is structured, communicating with other agents, and reasoning to guide one's actions. This focus is designed to provide students with an introduction to some of the key scientific and technical ideas that have been developed in AI. There are four different sub-areas of AI represented in our department: Computer Vision, Computational Linguistics, Machine Learning, and Knowledge Representation and Reasoning. These areas cover a wide variety of ideas and techniques.