Computer Science at Oxford
Computer Science and Philosophy Options 2
From Computer Science at Oxford
In the third year students have more flexibility in their choice of programme. Students must take two, four or six Computer Science courses and three, two or one (respectively) Philosophy papers. (Each Philosophy paper has twice the weight of a Computer Science course.)
Computer Science Options
The development of "intelligent" software systems is an area that is becoming increasingly important in applied Computer Science. It is easier to give examples such systems than to define the word "intelligent". Some instances are programs that assist users or adapt to their behaviour; identify interesting patterns in databases like those generated by the Human Genome Project; and predict stock-market movements. It is possible to abstain from any controversy on what does, or does not, constitute "intelligence and concentrate instead on the primary mathematical and computational tools necessary to develop systems capable of adaptive behaviour in complex real-world environments. The course teaches the principal issues that arise in the theory, implementation and application of intelligent software systems. Here "intelligent systems will be taken to mean those that have the ability to represent and reason with real-world tasks given limited computational resources. You will be made aware of recent developments in the fields of probabilistic modelling, machine learning and natural language processing. Some or all of these will be unavoidable requirements in the development of complex intelligent systems.
Knowledge Representation and Reasoning
Students attending this course are expected to acquire a good understanding of the logical foundations of Knowledge Representation and Reasoning as well as to become familiar with current research trends in the field. The course requires some familiarity with propositional and first order logic. Special emphasis is placed on decidable fragments of first order logic, which are suited for Knowledge Representation. These include, for example, the logics underlying ontology-based technologies and the Semantic Web. The course will also discuss logics that depart from first order logic, such as non-monotonic logics.
The development of intelligent systems is an area that is becoming increasingly important in applied Computer Science. The most popular view of such systems postulates that truly intelligent machines must include the ability to learn from experience and observation. This is an advanced course that focuses on multiple machine learning approaches including neural networks, fuzzy systems, evolutionary algorithms. The course will also discuss general issues and challenging problems in machine learning, as model selection, feature selection, computational complexity of learning. The practicals will be concerned with the application of machine learning techniques to a range of real-world problems, with particular preference for problems from the Bioinformatics area.
Reasoning about Information Update
This course explores and compares various logical approaches to information flows based on the use of modal logics, on formal languages for the specification of knowledge-related features of a system, and on the use of Kripke models (or transition systems), as abstract models for information systems. A range of important mathematical techniques (such as completeness and decidability proofs, definability and expressivity results etc.) and concepts (bisimulation, canonical models, filtration etc.) are introduced and explained. The course presents applications of these notions to the analysis of information update and communication, and of the role of beliefs and belief-changing actions, in the overall dynamics of any "society" of intelligent agents (e.g. the Internet, the market, communicating networks of robots, cryptographic communication between unreliable or adversary agents over un-secure channels etc.). Implementation of these applications are studied by presenting a range of practical theories of agency in Computer Science and focusing on one of them: the Belief-Desire-Intension (BDI) model that uses modal logic to implement rational agents.
This course is an introduction to the theory of computational complexity and standard complexity classes. One of the most important insights to have emerged from Theoretical Computer Science is that computational problems can be classified according to how difficult they are to solve. This classification has shown that many computational problems are impossible to solve, and many more are impractical to solve in a reasonable amount of time. To classify problems in this way, one needs a rigorous model of computation, and a means of comparing problems of different kinds. We introduce these ideas in this course, and show how they can be used.
Computer-Aided Formal Verification
Computer-aided formal verification aims to improve the quality of digital systems by using logical reasoning, supported by software tools, to analyse their designs. The idea is to build a mathematical model of a system and then try to prove properties of it that validate the system's correctness – or at least help discover subtle bugs. The proofs can be millions of lines long, so specially-designed computer algorithms are used to search for and check them. This course provides a survey of several major software-assisted verification methods, covering both theory and practical applications. The aim is to familiarise students with the mathematical principles behind current verification technologies and give them an appreciation of how these technologies are used in industrial system design today.
Computers in Society
Computing takes place in a social context which can affect the ways in which technology develops and in turn may be affected by those developments. In this course, we study these influences, and examine questions that must be answered by computing professionals, policy makers, and members of the public, in relation to the potential uses and abuses of computing technology. The course is illustrated by a number of case studies, and students are encouraged to draw upon a number of perspectives to address the issues raised by the case studies.
Security aspects of computer systems have far-reaching implications in an increasingly networked world. In this course we will cover the principles underlying computer security, the problems that must be solved, and some of the solutions that are used in implementing secure systems. The course includes the use of formal models based on logic to model security problems and to verify proposed solutions.
Lambda Calculus and Types
As a language for describing functions, any literate computer scientist would expect to understand the vocabulary of the lambda calculus. It is folklore that various forms of the lambda calculus are the prototypical functional programming languages, but the pure theory of the lambda calculus is also extremely attractive in its own right. This course introduces the terminology and philosophy of the lambda calculus, and then covers a range of self-contained topics studying the language and some related structures. Topics covered include the equational theory, term rewriting and reduction strategies, combinatory logic, Turing completeness and type systems. As such, the course will also function as a brief introduction to many facets of theoretical computer science, illustrating each (and showing the connections with practical computer science) by its relation to the lambda calculus.
Candidates choose from a variety of options including:
This course introduces you to some of the deepest and most beautiful results in logic, many of which have fascinating implications for other areas of philosophy. There are three sections. The first, Propositional and Predicate Logic, is the most closely related to the material covered in the Prelims/Mods course. The other two sections are: Set Theory, which includes the rudimentary arithmetic of infinite numbers; and Metamathematics, which includes some computability theory and various results concerning the limitations of formalization, such as Gödel's theorem. Candidates will be permitted to select questions from any of the three sections, and will be required to answer three questions in all.
Philosophy of Mathematics
What is the relation of mathematical knowledge to other kinds of knowledge? Is it of a special kind, concerning objects of a special kind? If so, what is the nature of those objects and how do we come to know anything about them? If not, how do we explain the seeming difference between proving a theorem in mathematics and establishing something about the physical world? The purpose of this subject is to enable you to examine questions such as these. Understanding the nature of mathematics has been important to many philosophers, including Plato, Aristotle, and Kant, as a test or as an exemplar of their overall position, and has also played a role in the development of mathematics at certain points. While no specific knowledge of mathematics is required for study of this subject, it will be helpful to have studied mathematics at A-level, or similar, and to have done Logic in Prelims/ Mods.
Philosophy of Cognitive Science
This paper covers some of key questions about the nature of the mind dealt with by a variety of cognitive scientific disciplines: experimental psychology, cognitive neuroscience, linguistics and computational modelling of the mind. Studying this paper will provide insight into the ways that contemporary scientific advances have improved our understanding of aspects of the mind that have long been the focus of philosophical reflection. It will also introduce you to a range of theoretical issues generated by current research in the behavioural and brain sciences. The core topics include: levels of description and explanation; cognitive architecture, modularity, homuncular functionalism; conceptual foundations of information processing; nature and format of representations; and the scientific study of consciousness. The lectures will also cover philosophical issues raised by some areas of cutting-edge research, such as: agency and its phenomenology; attention and neglect; cognitive neuropsychology; concepts; delusions; dual-process theories; dynamical systems, embodied and embedded cognition; evolutionary psychology and massive modularity; forward models and predictive coding; imagery; implicit processing (e.g. blindsight, prosopagnosia); innateness (e.g. concept nativism); language processing and knowledge of language; perception and action (e.g. dorsal vs. ventral visual systems); spatial representation; theory of mind / mindreading; unity of consciousness. Lectures may also cover some historical background (e.g. the cognitive revolution).
The Philosophy of Logic and Language
This course encourages you to examine some fundamental questions relating to reasoning and language. The philosophy of logic is not itself a symbolic or mathematical subject, but examines concepts of interest to the logician. If you want to know the answer to the question 'What is truth?', this is a subject for you. Central also are questions about the status of basic logical laws and the nature of logical necessity. What, if anything, makes it true that nothing can be at the same time both green and not green all over? Is that necessity the result of our conventions or stipulations, or the reflection of how things have to be independently of us? Philosophy of language is closely related. It covers the very general question how language can describe reality at all: what makes our sentences meaningful and, on occasion, true? How do parts of our language refer to objects in the world? What is involved in understanding speech (or the written word)? You may also investigate more specific issues concerning the correct analysis of particular linguistic expressions such as names, descriptions, pronouns, or adverbs, and aspects of linguistics and grammatical theory.