Course structure

As a rough guide, the first year course is roughly 50% Computer Science, 25% Logic (taught within Philosophy), and 25% Philosophy. The second year is equally divided between Computer Science and Philosophy, with considerable choice on both sides, after which the third year can be divided between the subjects in any proportion from 75%-25%, 50%-50%, or 25%-75%, depending on your options. If you go on to the fourth year, then you can focus entirely in one of the subjects if you wish, or divide your work between them.

First year courses in Computer Science are: Functional Programming, Imperative Programming, Algorithms, Discrete Mathematics, and Probability; and in Philosophy: General Philosophy, Elements of Deductive Logic, and a bridging course on Alan Turing's work on Computability and Intelligence. In subsequent years, Computer Science options include Models of Computation, Concurrency, Advanced Data Structures and Algorithms, Object-Oriented Programming, Databases, Intelligent Systems, Knowledge Representation and Reasoning, Computational Complexity, and Computers in Society. Philosophy options include Knowledge and Reality, Philosophy of Mind, Ethics, Formal Logic, Philosophy of Science, Philosophy of Mathematics, Philosophy of Cognitive Science, and Philosophy of Logic and Language. But there are many more, and for a detailed outline of the structure of the degree, see the relevant pages on the University website or the Computer Science Department website.