The Student Room Group

Computer Science Req

Scroll to see replies

Reply 20
By liking programming I assume you're good at it, you might not be challenged that much by Computing. I personally found Further Maths more fun and D1/D2 is obviously more mathematical so probably closer to the style uni level CS at one of the top unis who would have more theory.

As for Computing itself, I found the AS to be pretty good. There were loads of hard concepts etc. A2 isn't so good, not counting the coursework (had a terrible experience due to a terrible teacher) comp3 is basically just memory recall which I found boring. The concepts aren't that hard.
(edited 12 years ago)
Original post by Sketch

That's interesting.. how is it taught at university compared with the way it is taught at school? /


The approach we take to programming is different because the emphasis is not so much on learning programming ideas that work, but on giving a systematic explanation - using mathematics - of why it is that they do work. (At Oxford the students have all finished A level Maths with an A grade - many of them with Further Maths too. Computing teachers have to cater for a different range of mathematical experience and ability.)

A particular programming language provides no more than a vehicle for expressing deeper Computer Science ideas. Our course concentrates on teaching the principles that lie behind current computing technology, not the technology as an end in itself. By the time you leave Oxford, you will be able to pick up a new language in half a day and (with a good manual) begin to use it productively straight away. More on that here.

There's a lot of information about all the components of our degree courses on the CS department's website that will give you an idea of what and how we teach.

One of our tutors recently wrote out an example of a simple program and explanation taken from a current A level textbook; contrasted against how he would teach it to undergraduates. I can copy and paste that for you if it's of interest.
(edited 12 years ago)
Original post by Oxford ComLab
One of our tutors recently wrote out an example of a simple program and explanation taken from a current A level textbook; contrasted against how he would teach it to undergraduates. I can copy and paste that for you if it's of interest.
Oooh please do :smile:
Reply 23
Original post by Oxford ComLab

By the time you leave Oxford, you will be able to pick up a new language in half a day and (with a good manual) begin to use it productively straight away.

...

One of our tutors recently wrote out an example of a simple program
and explanation taken from a current A level textbook; contrasted against how he would teach it to undergraduates. I can copy and paste that for you if it's of interest.


Wowwww, i would love to be able to pick up any language in half a day!! That's insane!! :biggrin: I'd do absolutely anything to have that ability!

And it definitely is of interest! would you care to copy and paste it? Thank you for the helpful responses by the way :smile:
Reply 24
Original post by Sketch
Wowwww, i would love to be able to pick up any language in half a day!! That's insane!! :biggrin: I'd do absolutely anything to have that ability!

And it definitely is of interest! would you care to copy and paste it? Thank you for the helpful responses by the way :smile:


They aren't being entirely truthful. Sure, you can pick a language up and start using it in half a day but you won't be very good at it. Every language has its own intricacies and they take time to learn.

For example, if you're adept at Java then you'll be capable of jumping straight over to C# but with only half a day under your belt, everything you write is going to reek of Java until you become more familiar with the language's workings. It takes time - more than half a day, for sure.

Keep in mind that C.S. isn't programming though! :smile:
(edited 12 years ago)
Reply 25
I'm the CS tutor at an Oxford college.

@Yuck: We do seriously mean that you can pick up a language in half a day. Using it productively doesn't necessarily mean writing a program from scratch: it's much more common to want to modify someone else's existing program, and you can certainly do that with very little delay, provided that your computer science background is strong enough to enable you to recognise the ideas behind the program, even if they are expressed in an unfamiliar way. Learning the quirks does take longer, as you say, but the essence of programming is not in the quirks of this or that language.

I was reminded of this not long ago when I needed to modify the way a website worked, and I had to dive into PHP. I will never become an expert in PHP, and will never take the time to learn all of PHP's insane rules. But some knowledge of Computer Science, and the experience of having programmed in a number of other languages (plus maybe having implemented some of them) was enough to make it simple to pick up enough PHP to do the job. If you study a firmly-based CS course, you will be able to do the same.

I want to agree with you that CS is not all about programming. But in another sense, there is very little you can learn under the banner of CS that won't improve your ability to understand and work with computer programs.

Best wishes,

-- Mike
Reply 26
Here's the note I wrote recently about the contrast in style between computing
at school and at university, in
the context of what we do in Oxford. (I'm sorry about the yucky formatting.)
There's a lot of information
about all the components of our degree courses on the CS department's
website, and especially on the pages for prospective students:

http://www.cs.ox.ac.uk/admissions/ugrad/Computer_Science_at_Oxford

In addition, the materials that I myself use for teaching first year
programming can be found on my teaching Wiki at

http://spivey.oriel.ox.ac.uk/corner/Imperative_Programming_I

That is a second course that follows a course on functional
programming; the language used for example programs and practical work
is Oberon, the last in Wirth's sequence of languages Algol W -- Pascal
-- Modula -- Modula 2 -- Oberon. I use it because it is extremely
simple, with a semi-formal defining document under 20 pages long.

To give an example of the way in which explicit explanations play a
part in the way we teach programming, let me quote a simple program
and explanation from a current A level textbook*. The program sums
the
first n natural numbers. I quote verbatim, with the omission of a
comment:

Algorithm SumNaturalNumbers(n)
Sum <- 0
For i <- 1 To n
Do Sum <- Sum + i
Return Sum

A separate argument is given for the correctness of this program; so
far as I am aware, it is the only such argument that is explicitly
given in the book. Again, I quote verbatim:

<<<We must also ensure that an algorithm generates the correct output
for all legitimate inputs, not just for some. Consider the
crucial step in the SumNaturalNumbers(n) algorithm:
Sum <- Sum + i
for n = 1 this step is executed just once, i.e.
Sum <- 0 + 1 = 1
and therefore SumNaturalNumbers(1) = 1. Next
SumNaturalNumbers(n+1) = SumNaturalNumbers(n) + (n + 1)
Setting n = 1 then,
SumNaturalNumbers(2) = SumNaturalNumbers(1) + (1 + 1)
Therefore
SumNaturalNumbers(2) = 1 + 2 = 3
But considering the For loop when n = 2, the loop terminates with
Sum <- 1 + 2
This gives the correct output. Therefore we conclude that the
algorithm is correct.>>>

What this argument has done is show (essentially by tracing it) that
the algorithm works correctly for n = 1 and n = 2. This is not the
same thing as showing that it works for every value of n.

Here is how I would give an account of the same program. I would
first rewrite the program using a WHILE loop -- not because FOR loops
are bad, but because WHILE loops are sufficient and a bit easier to
analyse, and anyway it helps students if they don't have to learn
separate rules of reasoning for different kinds of loop.

i <- 0
Sum <- 0
While i /= n Do
i <- i + 1
Sum <- Sum + i

Now I would point out a relationship that holds between the values of
i and Sum in the program. It is that Sum = sum [1..i], that is,
Sum = 1 + 2 + 3 + ... + i,
with the convention that the sum on the right, and so the value of
Sum, is zero when i is zero.

First, this relationship is made true by the initialising commands
i <- 0 and Sum <- 0.

Second, the formula sum [1..i] satisfies the equation
sum [1..i] = sum [1..i-1] + i
for all i > 0. This explains why, if the relationship holds before
the loop body is executed, it continues to hold afterwards. When i
increases by 1, the value of Sum should increase by the new value of
i.

Third, when the WHILE loop is finished, we know that i = n and we know
that the relationship Sum = sum [1..i] still holds. This tells us
that now Sum = sum [1..n] as we wanted.

Assuming that n >= 0, the relationship 0 <= i <= n is also maintained
in the program, and we can see that i increases from 0 up to n. This
means the loop will eventually stop.

Assuming also that the sums that occur don't overflow the capacity of
the computer, we can conclude that the program computes the correct
answer.

* * *

It may be that there are good reasons why this form of argument in
terms of invariant relationships is not used in the textbook, neither
in the explanation given for this program, nor in discussing other
programs, for which the authors give no general correctness argument.
I expect that some Computing teachers supplement the book with other
explanations of their own, along the lines of the one I've given
here.

But it does seem to me that this is a difference (actually one of
several) between the way programming is approached at school and at
university (or at Oxford anyway). As I've just acknowledged, it may
be that the difference could be reduced to good effect (perhaps with
adjustments on both sides if we are in dialogue), or it may be that
the difference is there for good reasons, not the least of which is
that we are teaching people who have finished A level Maths with an A
grade, and Computing teachers have to cater for a different range of
mathematical experience and ability.

Best wishes,

-- Mike

* The A level tetbook is "AQA Computing A2", Kevin Bond and Sylvia
Langfield, Nelson Thornes, 2009. pp. 14, 16.

For a balanced exploration of these ideas and how they work in
practice, I recommend

* "Programming Pearls" by Jon Bentley, 2nd ed., Addison Wesley, 2000.
Reply 27
Original post by Yuck
They aren't being entirely truthful. Sure, you can pick a language up and start using it in half a day but you won't be very good at it. Every language has its own intricacies and they take time to learn.

For example, if you're adept at Java then you'll be capable of jumping straight over to C# but with only half a day under your belt, everything you write is going to reek of Java until you become more familiar with the language's workings. It takes time - more than half a day, for sure.

Keep in mind that C.S. isn't programming though! :smile:


I have that as well i start learning C# but now as i'm going to university most of my programs i design in java are basically the same in C# :frown: i have to get out of this.

I agree with you though, programming languages take some time to get a hang of. Someone who has been learning in Java can't just start using Pascal within half day. For one they are completely different languages. (Object Oriented Programming vs. Procedural Programming)

Just because its oxford doesn't mean they can make such board statements IMO.
Original post by fluteflute
Oooh please do :smile:


Original post by Sketch

And it definitely is of interest! would you care to copy and paste it? Thank you for the helpful responses by the way :smile:


No problem at all.

As it sounds like it is of use we'll be putting it up on the admissions pages of our website, but in the meantime you can see it on one of our tutor's personal web pages - and yes, it's the same tutor who's also posting on this thread. Thanks Mike!
(edited 12 years ago)
Reply 29
Original post by FinalMH
I have that as well i start learning C# but now as i'm going to university most of my programs i design in java are basically the same in C# :frown: i have to get out of this.

I agree with you though, programming languages take some time to get a hang of. Someone who has been learning in Java can't just start using Pascal within half day. For one they are completely different languages. (Object Oriented Programming vs. Procedural Programming)

Just because its oxford doesn't mean they can make such board statements IMO.


Of course, you are correct. You can't just start from just Java and start using pascal in half a day.
However, I think you'll find the Oxford course is a little more than just Java - being able to edit pascal programs after 1/2 a day of learning after completing CS at Oxford seems in the realm of possibility to me...

Quick Reply

Latest

Trending

Trending