Software engineering is all about finding practical solutions to real problems. To succeed, employers will want you to be able to produce software that is robust, reliable and attractive to use – all at a reasonable cost and to a certain timeframe. This course could help you develop the skills you need to become a professional software developer.
Computer software is all around us. From commercial activities like shopping on Amazon through to government departments, from manufacturing processes to educational and personal use, it plays a part in so many industries and activities. This course aims to give you an understanding of what’s possible, and where your skills could take you.
As industries develop and change, the possibilities and requirements of software engineering change rapidly too. We aim to give you the knowledge and skills you need to operate and succeed in this fast paced and dynamic environment. You’ll have the chance to explore contemporary methods and techniques in software development. We’ll also encourage you to develop the flexibility and adaptability you’ll need for a long-term career.
On campus we have high-standard and contemporary computing facilities. In our laboratories you’ll find a range of machines running a variety of operating systems and software.
After your second year you’ll be able to take an optional placement year, where you’ll be able to put into practice some of the techniques you’ve learnt. By gaining some real-world experience, you could make yourself more attractive to employers too.
The Software Engineering BSc(Hons) course shares a common first year with a number of other courses: Computing, Computing Science and Software Engineering MEng. That means you have the flexibility to transfer from one course to another during your first year if you feel you have a particular interest in a subject that perhaps you haven’t experienced before. To transfer to the integrated Master’s courses depends on achieving an average mark of 60% in your first year.
You might like to hear what Joseph has to say about studying Software Engineering BSc(Hons) at the University of Huddersfield.
Computing at Huddersfield brings together cutting edge research, industry standard technology, state-of-the-art facilities and passionate and supportive staff. The course is designed to give you the chance to tailor your studies to your own strengths, goals and aspirations. By blending a wide range of study options with a core software engineering program, and not forgetting the opportunity to undertake a placement year, students at Huddersfield find themselves well equipped for graduate employment.
Prof Andrew Crampton, Associate Dean (Teaching and Learning)
In this module we introduce you to basic computing science and mathematical concepts related to software development. Topics covered include set theory, graphs and trees, finite state machines, grammars and languages, propositional logic and searching and sorting algorithms. You’ll put the theory into practice using a programming language, such as Java, and software that lets you directly implement finite state machines.
This module explores how computers and networks function by introducing you to their components and structures, from the basic building blocks to fully functioning systems. The module covers how computers execute programs, how data is stored, recognised and manipulated, and which hardware and software components are used to achieve this. You’ll also get the opportunity to study how networks are constructed and what techniques (eg cryptography, routing and error detection and correction) are used to ensure that data is transmitted correctly and securely through them.
This module is studio based and takes a very practical approach to the work covered. You’ll be offered the opportunity to produce a prototype related to your chosen study path. Through this project based approach you’ll be introduced to the concepts and principles of programming/scripting using an object-based language. You'll be required to plan, design, implement, test and deploy solutions in response to a requirement specification. Ultimately you’re expected to produce a useful software product, whether it is a game, entertainment feature or business or media product. Throughout this module you’ll be supported in acquiring sound development and problem solving skills and be expected to assemble a portfolio of work.
Working as part of a team, this module aims to provide you with an understanding of hardware, software and industry best practices used by businesses. In your teams you’ll be supported in planning, designing and developing a prototype product. This experience has been designed to introduce you to the product development cycle, technology limitations and possible future developments.
This module aims to provide you with an introduction to the design, development, and testing of large scale software systems. The material covered includes introductory programming (in a language such as Java), program testing (using JUnit testing techniques), systems modelling (using unified modelling language- UML), graphical user interface (GUI) development, and rapid prototyping techniques.
In this module you’ll be supported in expanding your programming skills to cover a range of standard data structures (eg shared variables, semaphores, monitors and lists, trees and graphs) and algorithms (eg Dekker's algorithm, bounded buffer algorithms and searching, sorting and traversals) for both sequential and concurrent systems. You’ll also study how to analyse systems in order to determine their correctness and safety, and to calculate their efficiency.
Working as a part of a team, you’ll have the opportunity to design and develop a software application, or explore some aspect of information systems. You’ll be encouraged to explore theories and principles of team working and project management through the development of your chosen application. Alongside your team work you will also explore important legal and professional issues for people working in the IT industry.
This module aims to equip you with the knowledge and skills needed to design, implement and query a relational database. You’ll be supported in gaining an understanding of the functionality necessary to enable web pages to interact with a database. You’ll be given the opportunity to become familiar with web architectures and the design considerations necessary for implementing a database driven web application.
This module allows you to explore the programming language that underpins major operating systems, applications, the Internet and the World Wide Web. Throughout this module you’ll be supported in expanding on the procedural and object based coding skills that you have developed so far. You’ll be supported be given an introduction to 'C' programming leading into C++ programming with a push toward Objective-C. You’ll then be supported in building a client-server system where the client could be a smartphone, tablet or a desktop PC. If you’re keen to challenge yourself you will also have the opportunity to explore mixed language programming. Integrating components written in in C/C++ with Java, Objective-C and C#. Techniques for accessing Object Request Brokers and databases will be covered and the concept of Design Patterns will be introduced.
In this module you’ll study two related areas. Firstly, the modules covers the architectures of computer operating systems, including how they deal with resource allocation, management and security, in both single processor systems and multiple distributed processor systems (networks). Secondly, the module covers language processing, a key operation in modern computer systems. You’ll explore the structure of computer languages and the tools and techniques to automatically analyse them.
Choose one from a list which may include:
One of the key determinants of a computer system’s success is whether or not humans are able and willing to use it. This module aims to provide you with the skills necessary for designing, prototyping and evaluating usable user interfaces. The module explores the subjects of interaction design, information systems, user experience, social media and how computer-based products fit into organisations, societies and culture. As a part of the work on this module you’re expected to develop user requirements for an interactive device, then write up your user testing results, reflecting on what you have learnt from the module.
This module covers the mathematical foundations required for scientific computing. You’ll be introduced to fundamental concepts in algebra and be supported in developing an understanding of both analytical and numerical methods for solving equations in one variable. You'll also be introduced to error analysis and proof.
Embedded systems are used in everyday products such as mobile phones, cars, cameras, printers and toys. These embedded systems contain a small computer on a single integrated circuit called microcontroller. This module introduces the principle of embedded systems which can sense their surrounding environment by receiving signals from a variety of transducers and control attached actuators such as lights and motors according to a specified strategy. You’ll have the opportunity to design and develop efficient ‘C’ programs in practical sessions and download them onto development boards containing many sensors and actuators. This will allow you to see your programs in action.
This module introduces fundamental concepts in computer and network security, enabling the identification of vulnerabilities and the selection and implementation of suitable mitigation technologies. Throughout this module you’ll learn about securing data through the use of cryptography, operating system security and multi-user environments, creating secure programs, state-of-the-art methods for identifying potential threats, and legal and ethical issues surrounding computer security.
This course offers an optional one-year work placement after Year 2.
This module is aimed at providing you with an in-depth understanding of the role of a software engineer. You will explore how to deliver large-scale software development projects to time, budget and specification. This module has been designed to give you the opportunity to develop your abilities and acquire new techniques in problem solving and project management. You’ll have the opportunity to complete team-based tutorial exercises, where you will be presented with a scenario that could potentially take your project off track. This process aims to give you the skills in prioritising and reacting quickly to new developments in order to ensure that you can complete projects on time; especially vital when you are working in this fast-paced industry.
This module provides a detailed analysis of a range of techniques for the development of distributed and client-server systems architectures. It includes socket programming, remote method invocation, CORBA (Common Object Request Broker: Architecture and Specifications), web services, and Tuple-Space based architectures. The module also examines some typical distributed systems, including distributed file systems, distributed databases, and other common architectures.
Can machines (in particular computers) be intelligent? And what does that mean precisely? These are the main questions that we try to answer in this module. We will explore how machines can achieve intelligent tasks in a variety of settings. In term one we consider settings with full observability and determinism, these are like laboratory conditions or puzzle games. In this setting, we will look at knowledge representation, problem solving, and planning. In term two the settings are relaxed, and we will study how to deal with the uncertainties that arise from this. In particular, we will see how to deal with opponents, with incomplete and/or uncertain information, and how intelligent agents can learn.
This module is driven by you. You are asked to select a problem to solve which is relevant to your degree, and of appropriate scope and depth to be tackled within a timeframe of 30 weeks. Carrying out the project enables you to develop and demonstrate your ability to undertake research, manage time, use your initiative, learn independently, discuss and write convincingly on a subject requiring independent learning. A supervisor will support you throughout your project. You’ll use your existing knowledge and be encouraged to acquire additional skills as you carry out your project. The aim of the project is to suggest a solution to an identified problem. Your final report should describe the aims, scope and motivation of the project, the research you have undertaken, and the technical solution provided, including justification for design and development decisions.
Choose one from a list which may include:
By 2020 it is estimated that the digital universe will reach 44 zettabytes of data. As a result, the information needs of modern organisations require a more flexible approach to data management than that offered by traditional relational databases. This module introduces you to alternative approaches to data modelling including hierarchical, network, object-oriented, object-relational.
The module studies some of the more advanced approaches to developing web applications, examining both client and server side technologies. You will explore structured approaches to web development and a modern web framework, together with a range of contemporary development tools. As your understanding of the technologies and approaches develops you will aim to critically evaluate them and assess the benefits and risks of using a given approach or framework for a given task.
In this module you will be introduced to Computer Cluster, Cloud and Grid technologies and applications. Term one focuses on the fundamental components of Cluster environments, such as Commodity Components for Clusters, Network Services/Communication software, Cluster Middleware, Resource management, and Programming Environments. In term two you will study the fundamental components of Grid environments, such as Authentication, Authorization, Resource access, and Resource discovery. The hands-on laboratory exercises will provide the necessary practical experience with Cluster and Grid middleware software required to construct Cluster and Grid applications.
This module aims to provide you with an understanding of computational perspectives of mathematics, with an emphasis on matrix methods and data modelling. You’ll be supported in developing the ability to use both analytical and numerical techniques for solving large systems of linear equations and in analysing the resulting algorithms in terms of robustness, performance, stability and accuracy. You’ll be encouraged to broaden your mathematical understanding by applying your knowledge to real-world problems in developing solutions to a range of computational challenges using industry standard software (such as Matlab).
You’ll have access to inspiring computing facilities, including Windows, and Unix/Linux systems, a wireless network and a wide range of software. The course emphasis is on guiding you in developing hands-on, practical skills in software development, as well as an understanding of the human and social contexts of software systems.
You’ll be taught through a combination of lectures, tutorials and practical sessions and 19.67% of the study time on this course is spent in lectures, seminars, tutorials, practical sessions etc. The course emphasis is on helping you to develop sound practical skills, alongside an understanding of theory.
Assessment is varied and includes coursework, log books, presentations and demonstrations, as well as formal examinations. There are opportunities for group working, in addition to individual assessments. We have varied and experienced teaching staff including internationally recognised researchers as well as staff with many years of industrial experience.
Your module specification/course handbook will provide full details of the assessment criteria applying to your course.
Feedback (usually written) is normally provided on all coursework submissions within three term time weeks – unless the submission was made towards the end of the session in which case feedback would be available on request after the formal publication of results. Feedback on exam performance/final coursework is available on request after the publication of results.
The teaching year normally starts in September with breaks at Christmas and Easter, finishing with a main examination/assessment period around May/June. Timetables are normally available one month before registration. As this is a full-time course, you may have to attend every day of the week.
Your course is made up of modules and each module is worth a number of credits. Each year you study modules to the value of 120 credits, adding up to 360 credits in total for a bachelor’s qualification. These credits can come from a combination of core, compulsory and optional modules but please note that optional modules may not run if we do not have enough students interested.
If you achieve 120 credits for the current stage you are at, you may progress to the next stage of your course, subject to any professional, statutory or regulatory body guidelines.
*Permanent staff, after probation: some recently appointed colleagues will only obtain recognition in the months after their arrival in Huddersfield, once they have started teaching; research degrees applies to those on contracts of more than half-time.
At the University of Huddersfield, you'll find support networks and services to help you get ahead in your studies and social life. Whether you study at undergraduate or postgraduate level, you'll soon discover that you're never far away from our dedicated staff and resources to help you to navigate through your personal student journey. Find out more about all our support services.
We will always try to deliver your course as described on this web page. However, sometimes we may have to make changes as set out below.
We review all optional modules each year and change them to reflect the expertise of our staff, current trends in research and as a result of student feedback. We will always ensure that you have a range of options to choose from and we will let students know in good time the options available for them to choose for the following year.
We will only change core modules for a course if it is necessary for us to do so, for example to maintain course accreditation. We will let you know about any such changes as soon as possible, usually before you begin the relevant academic year.
Sometimes we have to make changes to other aspects of a course or how it is delivered. We only make these changes if they are for reasons outside of our control, or where they are for our students’ benefit. Again, we will let you know about any such changes as soon as possible, usually before the relevant academic year. Our regulations set out our procedure which we will follow when we need to make any such changes.
When you enrol as a student of the University, your study and time with us will be governed by a framework of regulations, policies and procedures, which form the basis of your agreement with us. These include regulations regarding the assessment of your course, academic integrity, your conduct (including attendance) and disciplinary procedure, fees and finance and compliance with visa requirements (where relevant). It is important that you familiarise yourself with these as you will be asked to agree to abide by them when you join us as a student. You will find a guide to the key terms here, where you will also find links to the full text of each of the regulations, policies and procedures referred to.
The Higher Education Funding Council for England is the principal regulator for the University.