Study for a Computer Science Degree
Computers and Information Technology are everywhere in the modern world. People using cars, mobile phones, washing machines, digital radios and televisions may not be aware that they are depending on advanced computing technology, but they are.
It follows that the demand for computer scientists extends well beyond what one might at first suppose. All market surveys show huge and continuing demand for well-trained computer science graduates in Europe and the US. This demand comfortably exceeds the current supply available from top universities, one reason for this being that applications to do these subjects were hit by the dot-com collapse early in this decade. The market for graduates has recovered far faster than the number of them being produced. It is therefore important that more students from all countries study computer science for the health of our economies.
Computer Science at a good university is completely unlike the subject studied in many secondary schools, which often concentrates on making sure that school-leavers are IT-literate and can use PCs and various word-processing, web publishing and spreadsheet packages.
At university Computer Science is intellectually challenging. You learn the principles of how computers and the languages that run on them are designed, and how to write good and well-structured programs. Depending on the course you choose, you might learn about the theory of what it is possible to compute: it might come as a surprise to you to learn that there are some easily-posed problems that are provably impossible to solve on a computer! You will learn about how to design programs and algorithms that run fast and reliably, and how to analyse how fast a problem can be solved.
For example, the long multiplication method you learned at school for numbers with n and m digits takes time proportional to n times m to run, because the table you write down in the multiplication is that size. However, it is possible to find ways of solving this problem that are much faster for large numbers: most people find this quite surprising!
As well as being of vital practical importance, computer security is an intensely fascinating topic on several levels since, whether you are designing ciphers, protocols or operating systems, you constantly have to imagine the hostile opponent you are attempting to combat. One of the most interesting areas in modern computer science is developing new security techniques to keep up with the ever-expanding reach of IT. An example of this is the development of national and international medical databases of patient information: these will provide many advantages to doctor and patient, but there are vital privacy issues. Most good computer science courses will give you an introduction to security.
Parallel supercomputers have been available for many years, but have been used mainly in niche applications such as weather forecasting. The wider use of parallel computing has been unnecessary because of "Moore's Law", i.e. the capacity of computers roughly doubles every 18 months. In most applications, if computers were not fast enough, all one had to do was wait a while! In the last few years, however, the clock speeds of microprocessors have remained relatively constant. You will probably have seen television advertisements for processors with multiple (e.g. Duo) processing cores: this is the main direction in which microprocessors are now becoming more powerful. For good performance all applications will have to use parallel computing - often on a single chip. Using this effectively creates a whole new challenge for the industry - and will need people well trained in how to exploit this technology.
Other areas that you are likely to have the opportunity to study include
- Object-oriented programming: the proper use of languages like Java. Here data, or some source of data, is encapsulated together with implementations of the operations that programs will want to perform on it. This type of coding makes code significantly more reusable and modular.
- Databases: how to structure and interrogate data for queries.
- Data mining: querying large and often unstructured collections of data such as the web.
- Artificial intelligence: this covers a wide range of areas from interpreting visual images, speech or text, to methods of making decisions.
- Graphics and animation: how to render perhaps moving images on screen, as well as how to represent these things within a computer.
- Foundations: understanding the mathematical structures that can be used to model and understand computing.
- Scientific computing: modelling real-life systems on computers, often using numerical models of continuous physical systems. At present there is an explosion of interest in applying this - as well as other ideas from computer science - in biology and medicine.
- Computational finance: the use of computer modelling and predictive techniques in the finance industry.
- Requirements capture: methods for making sure you design the system that your clients actually want rather than the one you think they want!
- Formal methods: ways of specifying, and proving, that programs do what is intended of them. These are very important in microchip design and in creating safety critical software (as found in parts of cars and aircraft, for example).
- Quantum Computer Science: this promises to use the mysterious properties of quantum mechanics to solve problems in algorithms and computer security that are beyond the "classical" model of computing.
Most, if not all, good computer science degrees will give you a wide exposure to practical work - typically writing your own programs in connection with taught courses. They will also allow you to undertake a project, in which you will usually work on some larger piece of programming or analysis over several months and write up a dissertation on it.
A good computer science degree will prepare you for the cutting edge of technology as well as training you in the principles that are certain to underlie future technologies just as they underlie today's. It will train you to think, solve problems methodically, and to do a large piece of work and present it well. For these last reasons many people find that computer science is also an ideal general numerate degree for those wanting to go into financial, management consulting and similar areas.