Title: Mathematical Sciences at Oxford
1Mathematical Sciences at Oxford
2Who am I?
- Dr Stephen Drape
- Access and Schools Liaison Officer for Computer
Science (Also a Departmental Lecturer) -
- 8 years at Oxford (3 years Maths degree, 4 years
Computer Science graduate, 1 year lecturer) - 5 years as Secondary School Teacher
- Email stephen.drape_at_comlab.ox.ac.uk
-
3Four myths about Oxford
- Theres little chance of getting in
- Its very expensive in Oxford
- College choice is very important
- You have to be very bright
4Myth 1 Little chance of getting in
- False!
- Statistically you have a 2040 chance
- Admissions data for 2007 entry
5Myth 2 Its very expensive
- False!
- Most colleges provide cheap accommodation for
three years. - College libraries and dining halls also help you
save money. - Increasingly, bursaries help students from poorer
backgrounds. - Most colleges and departments are very close to
the city centre low transport costs!
6Myth 3 College Choice Matters
- False!
- If the college you choose is unable to offer you
a place because of space constraints, they will
pass your application on to a second,
computer-allocated college. - Application loads are intelligently redistributed
in this way. - Lectures are given centrally by the department as
are many classes for courses in later years.
7Myth 3 College Choice Matters
- However
- Choose a college that you like as you have to
live and work there for 3 or 4 years - Look at accommodation facilities offered.
- Choose a college that has a tutor in your
subject.
8Myth 4 You have to be bright
- True!
- We find it takes special qualities to benefit
from the kind of teaching we provide. - So we are looking for the very best in ability
and motivation. - A typical offer is 3 A grades at A-Level
9Mathematical Science Subjects
- Mathematics
- Mathematics and Statistics
- Computer Science
- Mathematics and Computer Science
- All courses can be 3 or 4 years
10Maths in other subjects
- For admissions, A-Level Maths is mentioned as a
preparation for a number of courses - Essential Computer Science, Engineering Science,
Engineering, Economics Management (EEM),
Materials, Economics Management (MEM),
Materials, Maths, Medicine, Physics - Desirable/Helpful Biochemistry, Biology,
Chemistry, Economics Management, Experimental
Psychology, History and Economics, Law,
Philosophy , Politics Economics (PPE),
Physiological Sciences, Psychology, Philosophy
Physiology (PPP)
11Admissions Process
- Fill in UCAS and Oxford form
- Choose a college or submit an Open Application
- Interview Test
- Based on common core A-Level
- Taken before the interview
- Interviews
- Take place over a few days
- Often have many interviews
12Entrance Requirements
- Essential A-Level Mathematics
- Recommended Further Maths or a Science
- Note it is not a requirement to have Further
Maths for entry to Oxford - For Computer Science, Further Maths is perhaps
more suitable than Computing or IT - Usual offer is AAA
13First Year Maths Course
- Algebra (Group Theory)
- Linear Algebra (Vectors, Matrices)
- Calculus
- Analysis (Behaviour of functions)
- Applied Maths (Dynamics, Probability)
- Geometry
14Subsequent Years
- The first year consists of compulsory courses
which act as a foundation to build on - The second year starts off with more compulsory
courses - The reminder of the course consists of a variety
of options which become more specialised - In the fourth year, students have to study 6
courses from a choice of 40
15Mathematics and Statistics
- The first year is the same as for the Mathematics
course - In the second year, there are some compulsory
units on probability and statistics - Options can be chosen from a wide range of
Mathematics courses as well as specialised
Statistics options - Requirement that around half the courses must be
from Statistics options
16Computer Science
- Computer Science
- Computer Science firmly based on Mathematics
- Mathematics and Computer Science
- Closer to a half/half split between CS and Maths
- Computer Science is part of the Mathematical
Science faculty because it has a strong emphasis
on theory
17Some of the first year CS courses
- Functional Programming
- Design and Analysis of Algorithms
- Imperative Programming
- Digital Hardware
- Calculus
- Linear Algebra
- Logic and Proof
- Discrete Maths
18Subsequent Years
- The second year is a combination of compulsory
courses and options - Many courses have a practical component
- Later years have a greater choice of courses
- Third and Fourth year students have to complete a
project
19Some Computer Science Options
- Compilers
- Programming Languages
- Computer Graphics
- Computer Architecture
- Intelligent Systems
- Machine Learning
- Lambda Calculus
- Computer Security
- Category Theory
- Computer Animation
- Linguistics
- Domain Theory
- Program Analysis
- Information Retrieval
- Bioinformatics
- Formal Verification
20Useful Sources of Information
- Admissions
- http//www.admissions.ox.ac.uk/
- Mathematical Institute
- http//www.maths.ox.ac.uk/
- Computing Laboratory
- http//www.comlab.ox.ac.uk/
- Colleges
21What is Computer Science?
- Its not just about learning new programming
languages. - It is about understanding why programs work, and
how to design them. - If you know how programs work then you can use a
variety of languages. - It is the study of the Mathematics behind lots of
different computing concepts.
22Simple Design Methodology
- Try a simple version first
- Produce some test cases
- Prove it correct
- Consider efficiency (time taken and space needed)
- Make improvements (called refinements)
23Fibonacci Numbers
- The first 10 Fibonacci numbers (from 1) are
- 1,1,2,3,5,8,13,21,34,55
- The Fibonacci numbers occurs in nature, for
example plant structures, population numbers. - Named after Leonardo of Pisa
- who was nicked named Fibonacci
24The rule for Fibonacci
- The next number in the sequence is worked out by
adding the previous two terms. - 1,1,2,3,5,8,13,21,34,55
- The next numbers are therefore
- 34 55 89
- 55 89 144
25Using algebra
- To work out the nth Fibonacci number, which well
call fib(n), we have the rule - fib(n)
- We also need base cases
- fib(0) 0 fib(1) 1
- This sequence is defined using previous terms of
the sequence it is an example of a recursive
definition.
fib(n 1) fib(n 2)
26Properties
- The sequence has a relationship with the Golden
Ratio - Fibonacci numbers have a variety of properties
such as - fib(5n) is always a multiple of 5
- in fact, fib(ab) is always a multiple of fib(a)
and fib(b)
27Writing a computer program
- Using a language called Haskell, we can write the
following function - gt fib(0) 0
- gt fib(1) 1
- gt fib(n) fib(n-1) fib(n-2)
- which looks very similar to our algebraic
definition
28Working out an example
- Suppose we want to find fib(5)
29Our program would do this
30Whats happening?
- The program blindly follows the definition of
fib, not remembering any of the other values. - So, for
- (fib(3) fib(2)) fib(3)
- the calculation for fib(3) is worked out twice.
- The number of steps needed to work out fib(n) is
proportional to ?n it takes exponential time.
31Refinements
- Why this program is so inefficient is because at
each step we have two occurrences of fib (termed
recursive calls). - When working out the Fibonacci sequence, we
should keep track of previous values of fib and
make sure that we only have one occurrence of the
function at each stage.
32Writing the new definition
- We define
- gt fibtwo(0) (0,1)
- gt fibtwo(n) (b,ab)
- gt where (a,b) fibtwo(n-1)
- gt newfib(n) fst(fibtwo(n))
- The function fst means take the first number
33Explanation
- The function fibtwo actually works out
- fibtwo(n) (fib(n), fib(n 1))
- We have used a technique called tupling which
allows us to keep extra results at each stage of
a calculation. - This version is much more efficient that the
previous one (it is linear time).
34An example of the new function
35Algorithm Design
- When designing algorithms, we have to consider a
number of things - Our algorithm should be efficient that is,
where possible, it should not take too long or
use too much memory. - We should look at ways of improving existing
algorithms. - We may have to try a number of different
approaches and techniques. - We should make sure that our algorithms are
correct.
36(No Transcript)
37Finding the Highest Common Factor
- Example
- Find the HCF of 308 and 1001.
- 1) Find the factors of both numbers
- 308 1,2,4,7,11,14,22,28,44,77,154,308
- 1001 1,7,11,13,77,91,143,1001
- 2) Find those in common
- 1,7,11,77
- 3) Find the highest
- Answer 77
38Creating an algorithm
- For our example, we had three steps
- Find the factors
- Find those factors in common
- Find the highest factor in common
- These steps allow us to construct an algorithm.
39Creating a program
- We are going to use a programming language called
Haskell. - Haskell is used throughout the course at Oxford.
- It is very powerful as it allows you write
programs that look very similar to mathematical
equations. - You can easily prove properties about Haskell
programs.
40Step 1
- We need produce a list of factors for a number n
call this list factor(n). - A simple way is to check whether each number d
between 1 and n is a factor of n. - We do this by checking what the remainder is when
we divide n by d. - If the remainder is 0 then d is a factor of n.
- We are done when dn.
- We create factor lists for both numbers.
41Function for Step 1
42Step 2
- Now that we have our factor lists, which we will
call f1 and f2, we create a list of common
factors. - We do this by looking at all the numbers in f1 to
see if they are in f2. - We there are no more numbers in f1 then we are
done. - Call this function common(f1,f2).
43Function for Step 2
44Step 3
- Now that we have a list of common factors we now
check which number in our list is the biggest. - We do this by going through the list remembering
which is the biggest number that we have seen so
far. - Call this function highest(list).
45Function for Step 3
- If list is empty then return 0, otherwise we
check whether the first member of list is higher
than the rest of list.
46Putting the three steps together
- To calculate the hcf for two numbers a and b, we
just follow the three steps in order. - So, in Haskell, we can define
- Remember that when composing functions, we do the
innermost operation first.
47Problems with this method
- Although this method is fairly easy to explain,
it is quite slow for large numbers. - It also wastes quite a lot of space calculating
the factors of both numbers when we only need one
of them. - Can we think of any ways to improve this method?
48Possible improvements
- Remember factors occur in pairs so that we
actually find two factors at the same time. - If we find the factors in pairs then we only need
to check up to ?n. - We could combine common and highest to find the
hcf more quickly (this kind of technique is
called fusion). - Could use prime numbers.
49A Faster Algorithm
This algorithm was apparently first given by the
famous mathematician Euclid around 300 BC.
50An example of this algorithm
- hcf(308,1001)
- hcf(308,693)
- hcf(308,385)
- hcf(308,77)
- hcf(231,77)
- hcf(154,77)
- hcf(77,77)
- 77
The algorithm works because any factor of a and b
is also a factor of a b
51Writing this algorithm in Haskell
52An even faster algorithm
-
- hcf(1001,308) 1001 3 308 77
- hcf(308,77) 308 4 77
- hcf(77,0)
- 77