We teach programming to all our students. We teach it from first principles, so if you have never programmed before this is not a problem. If you are a skilled programmer we make sure that we have plenty of other diversions in the form of practical work and competitions to make sure that you stay interested. And anyway, you will find the bits on design, specification and testing very absorbing....

We teaching using the language C#. If you have not heard of C# (pronounced C Sharp) it is a programming language which is very similar to Java but contains a number of enhancements which make it easier to use and teach.

You can get the entire text of our First Year Programming course, along with lots of other programming resources here.

We like to think that we teach "programming" rather than a particular language. All of the staff are very used to the way that the tools of our trade change from year to year. We have all had to change our programming language several times since we first started in the field. Life for our graduates is just the same.

This means that the programming language that we teach is secondary to the fact that we teach programming itself. We hope that the skills we give you will stand you in good stead whatever programming language you end up using.

Having said that, I reckon that when people in your cohort graduate there will be a healthy demand for programmers with a good background in C#.

Learning to program is like nothing else. You can read as many books as you like about the subject, but until you start to do it you have not really learnt anything. It is tricky because it makes you think about things at a level where you probably haven't thought much in the past. Everything has to be broken down into tiny steps in a way that we just don't do when we solve problems as people.

As an example, if I gave you a list of numbers to sort into order you would quite happily do this, but at the end you might not be able to explain in detail what you actually did to get the result. When you want to get a computer to do the same job you have to think very hard about just what you do when you sort things and then express this in the form of a program. In our course we concentrate very hard on the practical nature of programming. Everything is taught strictly in relation to a problem which needs to be solved. We find that this helps our students, in that it provides a very strong context in which particular programming features are used. We also put a lot of emphasis on testing. It is all very well to create a program which is supposed to solve a problem, but you have to get to a good level of confidence in your solution - and this means testing the program as you write it.

Only when we are sure that students have a good grasp of these aspects of the programmers craft do we move on to consider things like object orientation and graphical user interfaces, which are the really fun parts...