Courses - Faculty of Engineering
Software Engineering
Stage II
Software Engineering Design 1
Project work. Skills and tools in systematic development of software, including testing, version control, build systems, working with others. Professional issues introduced in ENGGEN 204 (ethics, communication, and teamwork) are reinforced and developed while simulating a client-facing software development process.
Prerequisite: SOFTENG 251 or 281
Software Engineering Theory
Sets. Formal languages, operations on languages. Deterministic and nondeterministic automata, designing automata, determinisation. Regular expressions. Logic. Induction. Recursion. Program correctness. Computability. Counting. Elements of graph algorithms.
Prerequisite: ENGGEN 131 or COMPSCI 101
Introduction to Data Structures and Algorithms
Introduction to the analytical and empirical behaviour of basic algorithms and data structures.
Prerequisite: ENGGEN 131 or COMPSCI 101
Corequisite: ENGSCI 211
Object Oriented Software Construction
An introduction to Object Oriented software development. Programming with classes; objects and polymorphism. Evolutionary and test-driven development. Analysis and design. Modelling with UML. Design patterns. Design for reuse, for testing, and for ease of change.
Prerequisite: ENGGEN 131 or COMPSCI 101
Quality Assurance
Software verification and validation. Static and dynamic QA activities as part of the software lifecycle. Unit, integration, system, and usability testing. Use of visual notations, automation, and tools to support development activities. Metrics to quantify strength of testing and complexity of programs.
Prerequisite: SOFTENG 250, 251
Object-Oriented Programming
Computer programming using objects as the mechanism for modularity, abstraction, and code reuse. Review of control structures for conditionals and iteration. Instance variables, methods, and encapsulation. Interfaces, inheritance, polymorphism, and abstract classes. Exception handling. Introduction to basic data structures and basic algorithms including sorting and searching.
Prerequisite: COMPSCI 101 or ENGGEN 131
Restriction: COMPSCI 230, COMPSYS 202, MECHENG 270, SOFTENG 251
Software Engineering Theory
Theoretical foundations of software engineering, including sets, formal languages, operations on languages, deterministic and nondeterministic automata, designing automata, determinisation, regular expressions, logic, induction, recursion, program correctness, computability, counting, elements of graph algorithms.
Prerequisite: COMPSCI 101 or ENGGEN 131
Restriction: COMPSCI 225, SOFTENG 211
Software Quality Assurance
Software verification and validation. Static and dynamic quality assurance activities as part of the software lifecycle. Unit, integration, system, and usability testing. Metrics to quantify strength of testing and complexity of programs. Techniques for engineering of software systems including requirements, specification, validation, verification. Modelling paradigms including information, behaviour, domain, function and constraint models. Specification languages.
Prerequisite: COMPSYS 202 or SOFTENG 251 or 281
Restriction: SOFTENG 254
Data Structures and Algorithms
Data structures including linked-lists, stacks, queues, trees, hash tables; graph representations and algorithms, including minimum spanning trees, traversals, shortest paths; introduction to algorithmic design strategies; correctness and performance analysis.
Prerequisite: COMPSYS 202 or SOFTENG 251 or 281
Restriction: COMPSCI 220, 717, SOFTENG 250
Stage III
Software Engineering Design 2
Working in project teams to develop software to meet changing requirements for a large application. Project planning. Requirements gathering. Estimating, costing and tracking. Acceptance and unit testing. Evolutionary design and development. Collaborative development tools. Professional issues introduced in ENGGEN 204 and 303 (communication, leadership, teamwork, safety in design) are reinforced and developed.
Prerequisite: SOFTENG 206, and SOFTENG 254 or 283
Software Evolution and Maintenance
Design and maintenance of multi-version software, debugging techniques, design and documentation for software re-use, programme migration and transformation, refactoring, tools for software evolution and maintenance.
Prerequisite: SOFTENG 254 or 283
Software Architecture
Taxonomy of software architecture patterns, including client/server and multi-tier. Understanding quality attributes. Methodologies for design of software architectures. Technologies for architecture level development, including middleware.
Prerequisite: COMPSYS 302 or SOFTENG 254 or 283
Restriction: COMPSCI 331
Human Computer Interaction
Human behaviour and humans’ expectations of computers. Computer interfaces and the interaction between humans and computers. The significance of the user interface, interface design and user centred design process in software development. Interface usability evaluation methodologies and practice. Includes an evaluation project, group design project, and implementation using current techniques and tools.
Prerequisite: SOFTENG 206 or 283
Restriction: COMPSCI 345, 370
Fundamentals of Database Systems
Relational model, Relational algebra, Relational calculus, SQL, SQL and programming languages, Entity-Relationship model, Normalisation, Query processing, Query optimisation, Distributed databases, Transaction management, Concurrency control, Database recovery.
Prerequisite: SOFTENG 251 or 281
Restriction: COMPSCI 351
Networks and Security
Physical networks, TCP/IP protocols, switching methods, network layering and components, network services. Information security, computer and network security threats, defence mechanisms and encryption.
Prerequisite: COMPSYS 201, and SOFTENG 251 or 281
Operating Systems
History of operating systems. Multi-user systems. Scheduling. Concurrent processes, threads and synchronisation. Memory allocation and virtual memory. Managing files, disks and other peripherals. Security, protection and archiving. Engineering distributed systems; location, migration and replication transparency. Real-time programming and embedded systems.
Prerequisite: COMPSYS 201, and SOFTENG 251 or 281
Restriction: COMPSCI 340
Postgraduate 700 Level Courses
Research Project - Level 9
Students are required to submit a report on project work carried out on a Software Engineering topic assigned by the Head of Department.
Prerequisite: SOFTENG 306
To complete this course students must enrol in SOFTENG 700 A and B
Advanced Software Engineering Development Methods - Level 9
Advanced studies in methods and techniques for developing complex software systems including topics in software engineering environments, advanced software design, tool construction and software architectures. The core taught skills are extended by individual projects in which independent research is undertaken to address challenging software system problems.
Prerequisite: COMPSYS 302 or SOFTENG 306
Studies in Software Engineering 1
Advanced courses on topics to be determined each year by the Head of Department.
Prerequisite: Departmental approval
Studies in Software Engineering 2
Advanced courses on topics to be determined each year by the Head of Department.
Prerequisite: Departmental approval
High Performance Computing - Level 9
Advanced parallel and high performance computing concepts and techniques such as parallel system architecture; parallelisation concepts, algorithms and methodology; parallel programming paradigms and technologies. Core concepts and skills are deepened by a hands-on research project in which a challenging parallel computing problem is analysed and solved.
Prerequisite: COMPSYS 302 or SOFTENG 306
Formal Specification and Design - Level 9
Formal specification, design, and (automatic) analysis of software systems. Quality assurance through precise description and rigorous verification on the design. Introduction to the Z, OCL and CSP notations. Comparison of approaches, with emphasis on their practical application. Includes a substantial individual research project.
Prerequisite: COMPSYS 302 or SOFTENG 306
Machine Learning Techniques and Applications
Examines classic and state of the art algorithms in the field of machine learning. Topics may include: Bayesian classification, regression and state estimation; clustering and mixture models; kernel-based methods; sequential models; graphical models; neural networks and deep architectures.
Prerequisite: COMPSYS 302 or 306 or SOFTENG 306
Advanced Software Requirements Engineering - Level 9
Advanced software engineering concepts focusing on techniques for requirements analysis and requirements engineering (RE) of software systems. Topics will include: requirements elicitation, analysis, specification, validation, verification, user experience design, test-driven development and continuous integration. Includes a substantial individual research project.
Prerequisite: COMPSYS 302 or SOFTENG 306
Advanced Agile and Lean Software Development - Level 9
Advanced software engineering concepts focussing on Agile and Lean software development; including hands-on iterative and incremental software development, self-organising teamwork, project management, and an individual research component to explore challenging issues in this discipline.
Prerequisite: COMPSYS 302 or SOFTENG 306
Robotics Process Automation
Covers the fundamentals of Robotic Process Automation (RPA) systems. Students explore what RPA is and where it is useful, how RPA fits into current information technology setups, extracting and manipulating data from both external and internal sources, generating reports and statistics, and orchestrating multi-robot installations.
Prerequisite: COMPSYS 302 or SOFTENG 306
Restriction: INFOSYS 300
Capstone Project
Final year team exercise with students in multi-disciplinary roles, with focus on software engineering, integrating technical learning into realistic design outcomes. Comprehensive investigation of an open ended, complex, real or synthetic computer, electrical and software engineering problem with simulated professional design office constraints. Includes technical, economic and environmental impact components to complete a scheme assessment report.
Prerequisite: 75 points from Part III courses listed in the BE(Hons) Schedule for the Software Engineering specialisation
Project X - Level 9
Students are required to submit a report on a topic assigned by the Head of Department.
Prerequisite: Departmental approval
Research Project - Level 9
Students are required to submit a report on a topic assigned by the appropriate Head of Department.
Prerequisite: Departmental approval
To complete this course students must enrol in SOFTENG 788 A and B, or SOFTENG 788
Project Z - Level 9
Students are required to submit a report on a topic assigned by the Head of Department.
Prerequisite: Departmental approval
Research Project (Software Engineering) - Level 9
Students are required to submit a report on a topic relevant to the specialisation, as assigned by the appropriate Head of Department.
Prerequisite: Departmental approval
To complete this course students must enrol in SOFTENG 795 A and B, or SOFTENG 795