Courses - Faculty of Engineering


Software Engineering

Stage II

SOFTENG 206
15 Points

Software Engineering Design 1

Project work. Skills and tools in systematic development of software, including testing, version control, build systems, working with others.

Prerequisite: SOFTENG 251 or 281

SOFTENG 211
15 Points

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

SOFTENG 250
15 Points

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 213

SOFTENG 251
15 Points

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

SOFTENG 254
15 Points

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

SOFTENG 281
15 Points

Fundamentals of Software Engineering 1

Object-oriented programming: Computer programming using objects as the mechanism for modularity, abstraction, and code reuse. Instance variables, methods, and encapsulation. Review of control structures for conditionals and iteration. Basic data structures including stacks, queues, array lists, linked lists, basic binary trees. Introduction to algorithms including sorting and searching. Interfaces, inheritance, polymorphism, and abstract classes. Exception handling.

Prerequisite: COMPSCI 101 or ENGGEN 131

Restriction: SOFTENG 250, 251

SOFTENG 282
15 Points

Fundamentals of Software Engineering 2

Data structures including complex trees, hash tables; graph representations and algorithms, including minimum spanning trees, traversals, shortest paths; introduction to algorithmic design strategies; correctness and performance analysis.

Prerequisite: COMPSCI 101 or ENGGEN 131

Restriction: SOFTENG 251

SOFTENG 283
15 Points

Fundamentals of Software Engineering 3

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 requirements analysis and engineering of software systems including requirements elicitation, analysis, specification, validation, verification. Modelling paradigms including information, behaviour, domain, function and constraint models. Specification languages.

Prerequisite: SOFTENG 251 or 281

Restriction: SOFTENG 254

SOFTENG 284
15 Points

Fundamentals of Software Engineering 4

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: SOFTENG 251 or 281

Restriction: SOFTENG 211

Stage III

SOFTENG 306
15 Points

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.

Prerequisite: SOFTENG 206, and 254 or 283, and 350

SOFTENG 310
15 Points

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

SOFTENG 325
15 Points

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 283

SOFTENG 350
15 Points

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

Restriction: COMPSCI 345, 370

SOFTENG 351
15 Points

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: COMPSCI 225 or SOFTENG 211 or SOFTENG 284

Restriction: COMPSCI 351

SOFTENG 364
15 Points

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

SOFTENG 370
15 Points

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 250 or 281

Restriction: COMPSCI 340

Postgraduate 700 Level Courses

SOFTENG 700A
15 Points

SOFTENG 700B
15 Points

Research Project

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

SOFTENG 701
15 Points

Advanced Software Engineering Development Methods

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

SOFTENG 702
15 Points

Advanced Human Computer Interaction

Advanced topics in human computer interaction and human aspects of computer systems relevant to commercial solution development and computer science research. Sample topics: advanced evaluation methods; support of pen and touch-based interaction; trends with domain specific user interface design, such as interfaces for enterprise systems.

Prerequisite: COMPSCI 345 or SOFTENG 350

Restriction: COMPSCI 705

SOFTENG 710
15 Points

Studies in Software Engineering 1

Advanced courses on topics to be determined each year by the Head of Department.

Prerequisite: Permission of the Head of Department

SOFTENG 711
15 Points

Studies in Software Engineering 2

Advanced courses on topics to be determined each year by the Head of Department.

Prerequisite: Permission of the Head of Department

SOFTENG 750
15 Points

Software Development Methodologies

Software lifecycle; software process models; examples of software processes; software process improvement; project management; tool support for software development; issues in software engineering.

Prerequisite: SOFTENG 306

Restriction: COMPSCI 732

SOFTENG 751
15 Points

High Performance Computing

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: 15 points from SOFTENG 306, COMPSYS 302, MECHENG 313, or 30 points at Stage III in Computer Science

SOFTENG 752
15 Points

Formal Specification and Design

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, emphasising on their practical application.

Prerequisite: SOFTENG 306

SOFTENG 753
15 Points

Bayesian Machine Learning

Examines classic and state of the art algorithms in the field of machine learning. Topics will include: Bayesian classification, regression and state estimation; clustering and mixture models; kernel-based methods; sequential models; graphical models; neural networks and deep architectures.

Prerequisite: ENGSCI 211 or 213, and SOFTENG 251 or 281

SOFTENG 754
15 Points

Advanced Software Requirements Engineering

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.

Prerequisite: COMPSYS 302 or SOFTENG 251 or 281

SOFTENG 755
15 Points

Special Topic

An advanced course on a topic to be determined each year by the Head of Department. Includes a substantial individual research project.

Prerequisite: Permission of the Head of Department

SOFTENG 761
15 Points

Advanced Agile and Lean Software Development

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: SOFTENG 306 or equivalent

SOFTENG 762
15 Points

Special Topic: Robotics Process Automation

This course 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. Core concepts are extended by a research project where a complex automation problem is analysed and a solution implemented and tested.

Prerequisite: Permission of the Head of Department

SOFTENG 770
15 Points

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

SOFTENG 787
15 Points

Project X

Students are required to submit a report on a topic assigned by the Head of Department.

Prerequisite: Departmental approval

SOFTENG 788A
15 Points

SOFTENG 788B
15 Points

Project Y

Students are required to submit a report on a topic assigned by the Head of Department.

Prerequisite: Departmental approval

To complete this course students must enrol in SOFTENG 788 A and B

SOFTENG 789
30 Points

Project Z

Students are required to submit a report on a topic assigned by the Head of Department.

Prerequisite: Departmental approval

SOFTENG 795
45 Points

SOFTENG 795A
15 Points

SOFTENG 795B
30 Points

Research Project (Software Engineering)

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

SOFTENG 796A
60 Points

SOFTENG 796B
60 Points

ME Thesis (Software Engineering)

Students are required to submit a thesis on a topic assigned by the Head of Department.

Prerequisite: Departmental approval

To complete this course students must enrol in SOFTENG 796 A and B

Top