teachers by linxiaoqin


									Mathematical Sciences at

       Stephen Drape
Who 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@comlab.ox.ac.uk

Four myths about Oxford
   There’s little chance of getting in
   It’s very expensive in Oxford
   College choice is very important
   You have to be very bright

Myth 1: Little chance of getting in
   False!
        Statistically: you have a 20–40% chance

Admissions data for 2007 entry:
                            Applications   Acceptances     %

            Maths              828            173        20.9%
            Maths & Stats      143            29         20.3%
            Maths & CS          52            16         30.8%
            Comp Sci            82            24         29.3%
            Physics            695            170        24.5%
            Chemistry          507            190        37.5%

Myth 2: It’s very expensive
   False!
      Most colleges provide cheap accommodation for
       three years.
      College libraries and dining halls also help you save

      Increasingly, bursaries help students from poorer

      Most colleges and departments are very close to

       the city centre – low transport costs!

Myth 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.

Myth 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.

Myth 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

      A typical offer is 3 A grades at A-Level

Mathematical Science Subjects
   Mathematics
   Mathematics and Statistics
   Computer Science
   Mathematics and Computer Science

All courses can be 3 or 4 years

Maths 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)

Admissions 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

Entrance 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

First Year Maths Course
   Algebra (Group Theory)
   Linear Algebra (Vectors, Matrices)
   Calculus
   Analysis (Behaviour of functions)
   Applied Maths (Dynamics, Probability)
   Geometry

Subsequent 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
   In the fourth year, students have to study 6
    courses from a choice of 40

Mathematics 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

Computer 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

Some 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

Subsequent 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

Some Computer Science Options
   Compilers                  Category Theory
   Programming Languages      Computer Animation
   Computer Graphics          Linguistics
   Computer Architecture      Domain Theory
   Intelligent Systems        Program Analysis
   Machine Learning           Information Retrieval
   Lambda Calculus            Bioinformatics
   Computer Security          Formal Verification

Useful 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

What is Computer Science?
   It’s not just about learning new programming
   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.

Simple Design Methodology
   Try a simple version first
   Produce some test cases
   Prove it correct
   Consider efficiency (time taken and space
   Make improvements (called refinements)

Fibonacci Numbers
The first 10 Fibonacci numbers (from 1) are:

The Fibonacci numbers occurs in nature, for
example: plant structures, population numbers.

Named after Leonardo of Pisa
who was nicked named “Fibonacci”

The rule for Fibonacci
The next number in the sequence is worked out
by adding the previous two terms.


The next numbers are therefore
     34 + 55 = 89
     55 + 89 = 144

Using algebra
To work out the nth Fibonacci number, which
we’ll call fib(n), we have the rule:
       fib(n) = fib(n – 1) + fib(n – 2)

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.

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(a£b) is always a multiple of fib(a)

and fib(b)

Writing a computer program
Using a language called Haskell, we can write
the following function:

> fib(0) = 0
> fib(1) = 1
> fib(n) = fib(n-1) + fib(n-2)

which looks very similar to our algebraic

Working out an example
Suppose we want to find fib(5)

Our program would do this…

What’s 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.

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.

Writing the new definition
We define
> fibtwo(0) = (0,1)
> fibtwo(n) = (b,a+b)
>         where (a,b) =      fibtwo(n-1)

> newfib(n) = fst(fibtwo(n))

The function fst means take the first number

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).

An example of the new function

Algorithm 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
 We may have to try a number of different
  approaches and techniques.
 We should make sure that our algorithms are

Finding the Highest Common Factor
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
3) Find the highest
    Answer = 77

Creating an algorithm
For our example, we had three steps:
1) Find the factors
2) Find those factors in common
3) Find the highest factor in common

These steps allow us to construct an algorithm.

Creating a program
   We are going to use a programming language
    called Haskell.
   Haskell is used throughout the course at
   It is very powerful as it allows you write
    programs that look very similar to
    mathematical equations.
   You can easily prove properties about Haskell

Step 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 d=n.
   We create factor lists for both numbers.

Function for Step 1

Step 2
   Now that we have our factor lists, which we
    will call f1 and f2, we create a list of common
   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).

Function for Step 2

Step 3
   Now that we have a list of common factors we
    now check which number in our list is the
   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).

Function 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.

Putting 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.

Problems 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

Possible 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.

A Faster Algorithm

 This algorithm was
 apparently first given by
 the famous mathematician
 Euclid around 300 BC.

An example of this algorithm
= hcf(308,693)
= hcf(308,385)    The algorithm works
= hcf(308,77)     because any factor
= hcf(231,77)     of a and b is also a
= hcf(154,77)     factor of a – b
= hcf(77,77)
= 77

Writing this algorithm in Haskell

An even faster algorithm

  hcf(1001,308) 1001 = 3 × 308 + 77
= hcf(308,77)        308 = 4 × 77
= hcf(77,0)
= 77


To top