Software Engineering

Degree structure

What Will You Do?

The courses you will take in the four or five years of your programme will usually combine some lectures, practical tutorials and formal laboratory sessions.  In general, theoretical course content will be backed up by practical exercises that you will go over with your tutor in the tutorials and that you will solve in the labs. Tutorials and labs will typically be carried out in a group of 10-15 students with a permanently-assigned tutor for each course.

In years three and four, you will undertake large scale projects, running throughout the year, that will involve developing  software including requirements gather and analysis, system design, testing and coding, deployment and evaluation. In the third year this project will be carried out in a group of five students while in the fourth year you will do your project on your own. In both cases, you will be supported by a member of academic staff who will meet with you regularly to provide supervision and advice.  Previous projects by our students have won several national awards.   They address very diverse topics ranging from 3D evacuation simulations for sports stadiums to applications for mobile phones through to scheduling systems for healthcare applications.

Find out more about our courses in the Course Catalogue, including detailed aims and intended learning outcomes.   The typical curriculum for this programme is available below and may be subject to change.‌

The Software Engineering Placement (Summer or Full Year)

Every software engineering students carries out a placement in a software organisation. Students on the BSc programme take a placement that lasts a minimum of 10 weeks during the summer between years three and four. Students on the MSci with Work Placement programme will take a placement that lasts for the whole of year 4, before returning to take advanced courses in their fifth year.

In either case placement involves paid employment, working as a junior member of a software development team. You can expect to be involved in a variety of challenging tasks, with line management support within the company. A member of academic staff will visit you during the placement to find out how you are doing and to interview your manager and work colleagues. MSci students will be visited several times, be required to maintain a diary of their experiences and periodically return to University during their placement to participate in workshops.

Often, a placement is viewed by the company as an extended “interview”. Promising students may be offered a job at the end of the placement, subject to satisfactory completion of the Honours degree.

Access to labs

Each year group has its own laboratory. All labs are located on levels 6 and 7 of the Boyd Orr Building. You will be expected to attend timetabled lab sessions in your year’s laboratory. In year 1, there is one two-hour Computing Science lab session each week.

In addition, you will be allowed to use the machines in your year’s lab any time that they are open during the week and on weekends. Typically, the lab is open during the week until 9pm. It is also open on Saturdays.   The software and hardware is upgraded on a rolling basis to ensure that you have access to up to date systems and programming environments.


In level 1 you will learn to program in Python, a popular modern multi-purpose language. Lab workstations run the Windows operating system.

In level 2, we teach you how to program using Java. The focus in level 2 is on object-oriented programming techniques. You will continue to use Windows workstations in the lab.

In level 3, you will learn the C programming language and, perhaps, another programming language via your team project. All work in level 3 is carried out using the Linux operating system.

By the end of level 3, you should be able to pick up a new programming language or operating system that you haven't seen before and become sufficiently skilled to be a productive user of it in a couple of weeks.

In levels 4 and 5, you will use a variety of programming languages in your elective courses and in your individual project. Amongst the languages you might use are Haskell, C#, C++, Objective C, and Smalltalk. In addition, you might gain experience of an additional operating system, such as Android.