Logo of Royal Holloway University of London

BScComputer Science (Software Engineering)

Tuition fee To be confirmed
More information

Expenses, accommodation, working etc.

royalholloway.ac.uk/..are-engineering.aspx 

Overview

Our technological world is creating a huge demand for skilled professionals who can design, build and maintain computer programmes, databases and applications, to help solve problems and drive efficiencies. With a specialist degree in software engineering, you could be one of them. Launched in 2015/16, this three-year programme will give you the knowledge, skills and practical experience you need for a successful career in software, as a developer, an engineer or an entrepreneur. Our software engineering teaching has been hailed as a ‘best practice’ example of computer science education by BCS, The Chartered Institute for IT.

You will learn from software professionals and leading academics in the field to apply engineering principles to the design, development, implementation and maintenance of all kinds of software. Developed in consultation with industry, our curriculum covers all the key areas that employers look for. You will gain a solid grounding in the fundamentals of computing and application development, from programming to software engineering, databases to web development, computer graphics to robotics, and the latest trends in information security. You will also develop a thorough understanding of modern software development methodologies and the practical experience to back it up, as well as transferrable team working, time management, coding and communication skills, and a strong professional ethos. We cover the whole process of software development in a systematic way, from initial client briefs through to costing, scheduling and efficient delivery.

From the outset you will be experimenting with programming games, robots, Gadgeteer kits, Subversion, JUnit testing, Scrum-based Agile software and more, in our well-equipped laboratories. In your final year you will have the flexibility to choose between a range of optional courses. We are a highly respected, research-focused department with a friendly approach and award-winning teaching. We offer a summer work placement programme and a dedicated personal adviser to guide you through your studies. You will also be welcome to join our thriving Computing Society. We are one of only seven departments in the UK to hold the Athena SWAN bronze award for our commitment to increasing female participation in computer science.

Programme structure

Year 1

Computing Lab (Games)
In this module you will develop an understanding of the basic concepts of 2D game design and apply them to the development of simple games using an objected-oriented approach. You will look at the nature of graphics, animation, and motion, considering the usage of vectors in these techniques. You will also examine the fundamentals of game physics, such as collisions, gravity and ballistics.

Computing Lab (Robotics)
In this module you will develop an understanding of the building of computer systems. You will learn about the elementary concepts of robotics, gaining practical experience in programming mobile robots to execute pre-defined movements using Java and Lego NXT. You will also consider the basics of sensors, proportional-integral-derivative (PID) feedback systems, and the principles of localisation.

Internet Services
In this module you will develop an understanding of how the internet works and its key protocols. You will look at the technologies used for web development, including scripting languages and their potential for adding dynamic content to web sites and applications. You will consider the role of web services and related technologies, and will examine the fundamental principles of network security.

Machine Fundamentals
In this module you will develop an understanding of the handling of large and infinite objects within a programming environment. You will learn how to use formal logic to design, reason about and minimise switching circuits, and write basic programs in assembly language. You will consider the binary representations of signed and unsigned integers and how to write regular expressions to describe sets and build deterministic automata to recognise these. You will also examine the use of automata machines in the design and reasoning of sequential flow systems.

Mathematical Structures
In this module you will develop an understanding of the formal resoning for sets, relations, functions and cardinality. You will look at the structures for program data and representation and learn to write and reason recursive definitions and prove results by induction and contradiction. You will consider the representation and reasoning of problems using graphs and the use of vectors and transformations for defining and manipulating graphical objects. You will also examine the usage of probability and statistics in analysing data.

Software Design
In this module you will develop an understanding of software design and engineering processes, including the Waterfall and Agile methodologies. You will learn how to identify common software requirements and see how these have been considered in existing systems. You will look the techniques of software design and how software engineers communicate their design ideas. You will consider the importance of documentation and the usage of current industry-standard notations such as user stories and the unified modeling language (UML). You will also analyse and critique the design of existing sotware looking at the user experience as a measure of its fitness for purpose.

Software Development
In this module you will develop an understanding of programming and object-orientation concepts. You will learn about program basics, control flow, data structures, objects, exceptions and file input and output (I/O). You will consider software development best practices, how to perform small scale software development from a specification, the testing process, and software evaluation. You will develop a simple application based on a design specification and create a test plan to identify faults and errors.

Year 2

Algorithms and Complexity
In this module you will develop an understanding of the design of algorithms, with a focus on time and space complexity. You will examine basic algorithms, looking at the implementation and analysis of linear search, binary search, and basic sorting, including inerstion sort, selection sort, merger sort, quick sort, and heap sort. You will consider alternative data structure representations, such as binary search trees, hash tables, and binary heaps, and will gain an insight into the basics of graph algorithms.

Computer and Network Security
In this module you will develop an understanding of computer and network security. You will look at software vulnerabilities, hands-on hacking-oriented attacks, memory errors, and web and network security. You will learn how to identify such vulnerabilities, and consider the countermeasures that can mitigate their exploitation. You will also examine malicious software (malware) as a typical consequence of a successful software exploitation.

Databases
In this module you will develop an understanding of the basic concepts of database technology, including the need for database integrity and robustness, and the use of a modern database system in a web-based environment. You will look at database design and the theory of the relational view of data, learn to describe the crucial issues concerning database integrity and recovery from failure, and write search query language (SQL) queries. You will also consider the process of designing and implementing a database, from the user specifications to the final design, and implement an interface to an SQL database using an application programming interface (API).

Introduction to Information Security
In this module you will develop an understanding of how information security may be influenced by real world design and implementation decisions. You will will look at the different cryptographic algorithms, considering their use, advantages and disadvantages. You will use these cryptographic primitives to review and evaluate cryptographic protocols, and examine the rational decisions in the design of tokens and secure elements.

Operating Systems
In this module you will develop an understanding of the function and architecture of network operating systems. You will look at the role of an operating system, considering processes, memory and file systems. You will learn to write basic shell scripts, see how services are used at the operating system-level, and evaluate the theory and practice of existing operating systems. You will also examine the UNIX shell, including starting programs, input and output steams, pipes, filters, and utilities.

Small Enterprise Team Project
In this module you will develop an understanding of the role of the computer professional through practical experience. You will work as part of a team, developing medium-scale software for an external customer. You will apply managerial discipline and learn about the software lifecycle, team development, standard industrial software engineering, agile project management, use of version control, and integrated development enironments (IDEs). You will see why project cost and effort is hard to estimate, and consider why project quality is hard to prescribe.

Software Engineering
In this module you will develop an understanding of software engineering techniques and the managerial discipline required to work as part of a team. You will look at basic object-oriented concepts and consider the need for effective program documentation, testing, readability, and modifiability. You will consider the tools used to support software development, such as version controllers, debuggers, and code style checkers, and see how these are integrated into an industry-standard development environment (IDE). You will deliver a small-scale project using test-driven development.

Year 3

Individual Project
In this module you will have the opportunity to plan and organise a large project, analysing complex ideas, identifying problems, and coming up with solutions. You will apply scientific principles and use a range of software and hardware techniques. You will analyse the effectiveness of your solutions and evaluate the results. You will also consider legal, social, ethical and professional issues. You can design your own project or choose a topic from a suggested list.

Human-Computer Interaction
In this module you will develop an understanding of the principles of human-computer interaction (HCI) and the approaches that can be used to create interfaces matching users’ needs and expectations. You will evaluate the usability and suitability of user interfaces, and build simple prototypes using different media and technologies. You will consider how perception and cognition influence HCI, and examine tests, such as web experiments.

Malicious Software
In this module you will develop an understanding of mailicious software and the malware landscape. You will look at the key challenges the antivirus industry has faced in fighting malware threats, considering the traditional methods used by cybercriminals to infect user and enterprise hosts to gain access to their private, financial, and intellectual property data. You will learn how traditional and mobile malware work, how they are analysed and detected, and examine the underground ecosystem that drives this profitable but illegal business. You will also assess the research trends that are likely to influence the future of software security.

IT Project Management

Software Language Engineering

Optional modules

In addition to these mandatory course units there are a number of optional course units available during your degree studies. The following is a selection of optional course units that are likely to be available. Please note that although the College will keep changes to a minimum, new units may be offered or existing units may be withdrawn, for example, in response to a change in staff. Applicants will be informed if any significant changes need to be made.

Career opportunities

Software engineering is a rapidly growing field with impressive starting salaries and global demand. Our students are highly employable, thanks to our innovative curriculum, state-of-the-art facilities and award-winning teaching. This programme will teach you to manage projects from conception through to delivery, with technical precision and a professional ethos. You will learn to analyse and solve problems with creativity and flair, and propose cost-effective, efficient solutions. By the time you graduate you will be skilled at designing, implementing, testing, and maintaining software systems, and you will also have valuable transferrable skills such as: team working, advanced IT skills, critical thinking, data handling, coding, communications, time management and self-motivation.

We work closely with partners in industry who advise us on our curriculum, to ensure that it keeps pace with the latest market needs and trends. This means our graduates are up-to-speed with all the latest developments and technologies in software engineering. We run jobs fairs and a short-term work placement scheme, and your personal adviser and the campus Careers team will be on hand to offer advice on career opportunities. We also maintain strong links with our alumni, who can often provide advice, contacts and networking opportunities. In recent years, our computer science graduates have launched careers in everything from network systems design and web development, to business management and finance. They work in organisations such as: Amazon, American Express, Apple, Bupa, Capita, CGI-Logica, Goldman Sachs, Microsoft, Symantec, among many others.

Apply now! Fall semester 2021/22
This intake is not applicable

We are currently NOT ACCEPTING applications from NON-EU countries, except Georgia and Serbia.

Application deadlines apply to citizens of: United States

Apply now! Fall semester 2021/22
This intake is not applicable

We are currently NOT ACCEPTING applications from NON-EU countries, except Georgia and Serbia.

Application deadlines apply to citizens of: United States