What is the teaching like at Leicester?
We have British Computer Society accreditation and an excellent Quality Assurance Agency for Higher Education report (which praised the high standards of our student project work, and the overall levels of student attainment).
We typically admit around 160 students per year, but split students into smaller groups for lab sessions. This means that you will have plenty of friends taking your subject, but classes and lectures are not so large as to be intimidating.
Find out more about learning at Leicester.
What are the main differences between Computer Science and Software Engineering?
IT is playing an increasing role in all the sectors of the economy and society, as such a one-size-fits-all does not really apply to our discipline.
We distinguish between profiles or classes of activities that IT professionals are normally called to perform, and offer degrees across two different broad profiles:
Software Engineering is being offered for students who are interested in following a career in IT but not necessarily in technical areas that require a deeper understanding of the science underlying IT systems. You will become familiar with a variety of programming languages, and have a solid understanding of the use of computer systems in analysing, managing, processing and communicating information, including large organisations. You will learn the methods and techniques through which software can be developed following rigorous engineering practices, meeting required levels of quality.
Computer Science is the study of the foundations of computational phenomena (why and how do programming languages work) and of the processes and techniques through which new software systems can be built (how do we make sure that programmers will get systems implemented in the way we want them to operate?). This is why you will be offered modules that require more mathematical maturity, which will allow you to learn the underlying principles and experiment with different programming paradigms (imperative, functional and logic), formal methods for specification, verification and validation of software, as well as dominate areas which, like cryptography, require a deeper knowledge of algorithms.
We should add that one degree is not 'easier' or 'better' than another. The difference between our degrees is not one of quality or difficulty, but a mere consequence of the fact that there is more than one profession in IT and that not everyone enjoys doing or learning the same sort of things.
Should I apply if I want to study hardware?
Our programmes concentrate on all aspects of computing software, but we do teach the fundamental principles of hardware. If you really wish to study only hardware, electronics and related topics, you may be better off applying for a different degree programme. However, we will teach you all about the structure of a modern computer, and everything that concerns the lower levels of software and how they relate to the hardware.
Can I switch between the two different classes of degrees (Computer Science, Software Engineering)?
Computer Science and Software Engineering have a common first semester in the first year, and you can request to transfer from one program to the other after that semester.
Can I switch between the different variants (e.g. standard, with year abroad or with year in industry) within the same degree?
Yes, you will be able to change between the three variants until the second year.
If you enter on the Computer Science MComp degree, you can also change to the BSc degree, and vice-versa, throughout the first two years of the degree.
What is 'computational thinking'?
Computational Thinking is an expression coined by Jeannette Wing from Carnegie-Mellon University (USA), which is becoming a way of calling the attention and interest of the general public for the intellectual adventure that there is in Computer Science:
Computational thinking is a way humans solve problems; it is not trying to get humans to think like computers. Computers are dull and boring; humans are clever and imaginative. We humans make computers exciting. Equipped with computing devices, we use our cleverness to tackle problems we would not dare take on before the age of computing and build systems with functionality limited only by our imaginations.
How will these degrees help me develop skills for innovation?
According to NESTA (National Endowment for Science, Technology and the Arts), the following skills are key for developing your potential to innovate and succeed in the most challenging (and profitable) markets: creativity, problem-solving, imagination, resourcefulness, and flexibility. These are ways in which our degrees can help you develop them:
- Creativity: Developing software is very much a creative activity as it requires something new to be produced that will 'make the difference'. Many stages of software production are accomplished mechanically (like compiling into machine code), but finding the best algorithm for the problem at hand, the right interface for the intended user, or the architecture that will best fit the business goals of your organisation are examples of activities that require a creative (and informed) mind. During your studies, you will be given the opportunity to exercise and learn how to channel your creativity in developing projects, both individually and in teams.
- Problem-solving: A lot of programming is about getting a computer to solve a problem (which could be that of a customer or one that you set yourself!). But there is more to IT than learning how to program. For a start, how do you formulate the problem? How do you break down the complexity of your problem and devise a plan for the development of your software (including outsourcing the development of parts of your solution)? What is the best language to program your solution (or your part of the solution)? Finally, how can you make sure that your system solves the problem (or convince others that it does)?
- Imagination: If anything, you will have to learn how to control your imagination and learn that not all that you think a computer can do is actually possible to program! You will also learn methods and techniques that will allow you to model and test solutions that you conceptualise before they are put into production.
- Resourcefulness: Software professionals are expected to be able to build, contribute to and know how to draw from libraries or repositories of algorithms or components (solutions). You will learn methods and techniques (for instance, inheritance in object-oriented programming) through which software can be reused, developed in product families, customised to different domains, or re-engineered to run on new platforms.
- Flexibility: A skill that you will acquire for a lifetime is certainly the capacity to adapt to future advances and changes in technology. The main difference between a university degree like ours and a shorter vocational training course is that you will learn far beyond the usage of a particular language or platform (which would quickly become obsolete). It is not the number of languages and systems that will make you stand out but your ability to learn and work with the ones that come into the market or that you find at your new employer.