What is Computer Science?
Modern Computer Science (CS) is a diverse field and although debatably distinct from IT, exactly where the line is drawn is something of a grey area. Subjects most commonly falling under the banner of CS are Artificial Intelligence, Artificial Life, Computer Graphics, Computer Vision, Encryption, Computer Modelling and generally any of the more mathematical or 'low level' aspects including the underpinnings of networking theory, computational logic , compiler design and operating systems. Generally, the term IT is applied more to higher level implementations of the CS disciplines, as well as management of computing projects and higher level programming techniques (databases, web-development, GUIs etc). See FAQs at the bottom of this page.
Make sure you understand the difference between the two degree subjects, and choose the right one! While many Universities offer distinct CS and IT degrees, it is still worth investigating what end of the spectrum a particular department's courses are biased towards - IT focussed or CS leaning? Which will suit your interests best?
What other course subjects are related to Computer Science?
There are also degrees called different things - Computer Studies, Software Engineering, Computing, Computer Engineering, Information Systems, Data Science, Computer Technology - check them all out so that you are certain of your choice, don't just assume you know what the difference is or that 'computer science sounds better'.
Other related fields of study include Cybernetics (which adds formal control and systems theory and generally includes some robotics) and Robotics (which combines with Electronic Engineering and Cybernetics to apply much of CS theory to physical entities - even so far as Artificial Life). Look at entries for these courses as well.
Computer Science departments may have strong links with psychology and medical departments, as the latter like to analyse the effect of CS related systems on humans (for example, haptic devices for retraining stroke victims), while the former appreciate the feed of information on how humans process information as well as the challenge of processing information garnered from medical scanning techniques (for example interpreting MRI scans).
If this all sounds a bit complicated, then you you need to start thinking about what aspects of this subject area really interest you. Do you need a 'general' course where you could choose different areas as they started to appeal to you - or a more focussed/specialised course from the start?
Universities Offering Computer Science
You can use the UCAS course search to find a full list of universities offering Computer Science as an undergraduate subject either on its own as a single subject or in combination. It is often available as a joint honours course with Mathematics.
Another useful site is What Uni. Type in 'Computer' as a subject and add your predicted grades, and you will get a long list of likely Unis/courses. Al Unis will also specify GCSE subjects/grades and preferred subjects at A level/IB/BTEC - so ALWAYS check the exact requirements on the University's own website.
Remember, joint subject degrees (Computer Science and .....) will often be less competitive (simply because fewer people apply for this) and may also give you an additional skill like a language or maths or management - or something more unusual like animation, games design, etc etc. Unis asking for points rather than grades will also tend to be far more flexible about admissions requirements.
A level Maths (or equivalent) is generally considered essential for Computer Science applicants. Usually studying Further Maths or Physics is desirable, and other sciences are also helpful. See FAQs below.
A level Computing or Computer Science is not necessary although it will help cover some of the course material in the first year. It does, however, give you the chance to see if programming is for you. Since Computer Science is a very multi-faceted, problem-solving oriented subject, the majority of A-levels can be justified and used to your advantage (e.g. analytical skills and interest in artificial intelligence with social science subjects).
Grade requirements vary significantly across Universities. A few examples for 2016 entry : Greenwich - 160 points, Kingston - 160 points, Huddersfield - 180 points, Gloucester - BBC, Chester - BBC, Oxford Brookes - BBC Brighton - BBB, Aberdeen - BBB, Loughborough - BBB Essex - ABB, Keele - ABB, Swansea - ABB, Kent - ABB Nottingham - AAB, Liverpool - AAB, Surrey - AAB, Sussex - AAB, Strathclyde - AAB Glasgow - AAA, Newcastle - AAA, Warwick - AAA, Southampton - AAA, Birmingham - AAA, Edinburgh - AAA, St. Andrews - AAA, UCL - A*AA, Imperial College - A*AA, Cambridge - A*A*A
Check the entry requirements carefully - including GCSE subjects and grades.
What do you need to know? Any useful reading?
- If you're new to programming, it's recommended that you pick up a language to gain an understanding of what's involved. A generally accepted good programming language to start with is Python because its structure teaches good habits. Although I think - and plenty agree - that C++ is the best language to begin with; despite its reputation as one of the harder languages, it will teach you to program in several different ways (programming paradigms), reveal some of the underlying hardware intricacies and all using a syntax that has been used in several other common languages. Most universities teach using a wide variety of languages (C, C++, Haskell, Java, Pascal, etc) and often claim that you won't be disadvantaged if you have no prior experience.
- The New Turing Omnibus is a good source of background reading, containing problem solving questions which apply maths and computing knowledge.
- The Pleasures of Counting
- You may also be interested in The British Informatics Olympiad, which is a national competition involving problems to be solved using programming.
In this section we shall introduce some of the more or less interesting subject areas that could be encountered within a CS degree course. (Others are very much encouraged to add to this section ). One institution can have a very different CS syllabus from another, and potential students are very strongly advised to find out what the institutions they are considering actually teach over the duration of the course, including what is compulsory and what is optional, and how that relates to what they want to do at the end of it.
- All CS courses will require some programming, and most will teach at an introductory level in the first year. Fashionable language of the moment is Java, though some will start with their own in-house teaching languages, others will throw C/C++ at you straight off, and some may use the ever effective Pascal/Delphi, or functional languages. Unlike schools that still consider BASIC to be a suitable language for teaching, most CS researchers will mock any knowledge of the language, largely based on its history. Most courses will involve you learning more than one language, in an attempt to demonstrate that they have their individual strengths and weaknesses. While Alan Turing proved that all 'Turing complete' languages can be used to perform any algorithm, some make particular ones much easier than others.
Algorithms and Data Structures
- This is the nuts and bolts of all the other aspects of computer science. This covers how to store and process data as efficiently as possible, as well as considering ways in which to approach the problem at hand. As an undergrad you would expect to cover basic things like linked lists, sorting and recursion in the first year, adding more interesting concepts like trees, divide and conquer strategies, hashing, greedy solutions, graphs and optimising data arrangements in memory before the end of the second year. A strong understanding of these abstract concepts can greatly improve your ability to program effectively.
- The increasing use of multiple processors in the same system means that ensuring algorithms are able to cope is now more important than ever. Some algorithms benefit from being used on more than one processor simultaneously, whereas others suffer - sometimes to the point of failure. What was once limited to incredibly expensive supercomputers is now relevant to the phone in your pocket.
Principles of Computer Hardware
- A fundamental concept in computing is of course the hardware that you operate on. Most courses will include some discussion of processors, memory, machine code, assembly (even if there is little practical implementation of this) and more than likely, Von Neumann and Harvard architectures and similar. Generally, this will also include concepts such as how data is stored in memory, (ASCII coding, floating point encoding/maths, fixed point maths/encoding...) and what the processor is actually doing when it executes a program.
- It's worth noting that IT degrees can gloss over this level of the machine. Modern languages do permit a certain abstraction away from the underlying system, though many CS graduates would argue strongly about the merits of such action.
Compilers and Operating Systems
- Without compilers and operating systems, using a computer would still be a very unsavoury task. As such, an understanding of these concepts is fairly fundamental to a CS degree. Compilers take programs written in high-level languages (such as C) and convert them into a form that the machine can read. Operating systems manage the various pieces of hardware in the system, and allow the user to get on with doing what they want to do without thinking about moving the heads on the hard drive to the right location - in other words, they guard the user from the hardware (or the hardware from the user... :)
- The designs of compilers and operating systems are interesting in and of themselves, but these can be "marmite" courses - you either love them or you detest them.
Artificial Intelligence and Artificial Life
- AI is a famously hyped field, and AL is its slightly less famous cousin. Both are involved with solving large, complicated problems using computers and clever algorithms. Well known "buzz words" include neural networks, genetic algorithms and expert systems. Although this is another case where differentiating between the fields is not obvious, AL could be said to use small, simple systems and study the complex behaviours that emerge, while AI uses complicated symbol systems to achieve specific behaviours.
- A good phrase that sums up the activities of an AI system is "reasoning and representation". The aim is to take any problem and determine some means of representing it within the constraints of a typical computer such that some process can be applied - some reasoning - that extracts a suitable solution.
- Related and of some interest to some readers here may be the links to philosophy via the Computational Theory of Mind and the ongoing debate as to whether or not we as humans are little more than computers. Particularly entertaining and stimulating debate on this can be investigated via the "Chinese Room" argument.
- This heavily mathematical field starts with theories for the representation of colours and ends up with Toy Story and Half-life 2. Knowledge of the physics of light and materials is a must, as well as the maths of homogeneous matrices and a god-like knowledge of data storage, representation and manipulations. One can only expect that a slight touch of artistry and a keen eye can only aid in the development of algorithms and techniques to further the realism, quality or effect of the final result.
- ( Sometimes Computational Vision, and often used as a catch all for Machine Vision and Image Processing )
- Another heavily mathematical field, this one pulls in concepts from AI and AL as well as more IT like areas such as databases and information management and depends heavily on mathematical modelling techniques and statistics. In simplistic terms, the purpose is to "make computers see", which is a phrase that both sums things up and leaves out everything. CV is exploring a particularly difficult field of study, trying to deal with huge quantities of very noisy information, often at real-time.
- Applications of this field span control of industrial equipment up to automated surveillance with a wide variety hidden in the middle.
- Yet another heavily mathematical field, this attempts to create proofs that systems are 'correct' and do not contain any bugs. Using almost any commercial software will show how popular and successful this is outside academia and some safety-critical control systems.
Software Development and Testing
- It has been said that all non-trivial programs contain bugs. These areas of CS attempt to remedy that. For example, testing may include development of test data, automated testing, ensuring all areas of the program are tested, and finding regressions (where a new version fails in something it could previously do).
- Or, 'Codd is not a sort of fish!' :) The efficient - both in time and programming effort - storage and retrieval of data by a program is important almost regardless of the program, especially when there is too much data to hold in fast memory and it needs to work with data stored on a disc or over a network.
University of Manchester : Almost every major challenge in the world turns to the use of computer science to solve problems; from medical research, education, supporting aid work in disaster areas, helping to create a sustainable environment, the logistics of moving products around the world, to the world of business and securing and managing the vast levels of data through visualisation, security and transmission; not to mention the world of media. Being a successful Computer Scientist is not just about solving technical problems, but also collaboration, leadership, and teamwork; which is why our degree courses encourage you to gain these interdisciplinary and interpersonal skills in addition too.
Why do Computer Science graduates top the Unemployment tables ? Article from The Guardian
Careers advice for Computer Science graduates from the University of St Andrews.
Frequently Asked Questions
What is the difference between a Computer Science and IT/ICT Degree?
- IT/ICT concerns the use of computer systems, whereas Computer Science concerns the creation of the systems and theories behind computers.
- IT/ICT is to Computer Science what using a lift is to mechanical engineering.
- ICT is learning to drive a car, whereas Computer Science is learning to build one.
I hate maths. What mathematical concepts will I be expected to understand on a CompSci course?
- Like it or not, computer science is based on a lot of mathematical concepts, many of which need to be at least partially understood to get the most out of the machine. You should expect your course to cover simple Boolean logic, discrete maths and set theory. Many will also teach statistics (which are very powerful for later modelling and data analysis/interpretation/representation), and most introduce linear algebra (especially those with graphics/vision/robotics courses) and at least some calculus. Full understanding of how any program or algorithm works often depends on a good grounding in the mathematical formalisation that it is based on.
- Note however that IT courses can ignore the theory in favour of more "hands on" or practical subjects, and as such, the interesting maths can be glossed over. This is a debatably dubious practice as it leaves many students without a real understanding of what's going on.
I am a girl. Will I be stared at in disbelief if I chose to do computer science?
- See Here for a thread on TSR about this
Am I expected to have any programming experience prior to starting a CompSci degree?
No but it helps, and will obviously give you a little more insight. However, not everyone has the right mindset to be able to program. If you go into a computer science course with no experience, and you don't pick it up quickly, be prepared to transfer onto a more suitable course. Some universities claim they prefer people without prior experience, because they haven't had the possibility of picking up bad programming habits.