SOFTENG (Software Engineering)

← Back to all subjects

Stage I

SOFTENG 206 - Software Engineering Design 1 (15 pts)🏳

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

SOFTENG 211 - Software Engineering Theory (15 pts)🏳

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 - Introduction to Data Structures and Algorithms (15 pts)🏳

Introduction to the analytical and empirical behaviour of basic algorithms and data structures.

Prerequisite: ENGGEN 131 or COMPSCI 101

Corequisite: ENGSCI 211

SOFTENG 251 - Object Oriented Software Construction (15 pts)🏳

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 - Quality Assurance (15 pts)🏳

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 - Object-Oriented Programming (15 pts)🏳

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

SOFTENG 282 - Software Engineering Theory (15 pts)🏳

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

SOFTENG 283 - Software Quality Assurance (15 pts)🏳

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 and Design 942

SOFTENG 284 - Data Structures and Algorithms (15 pts)🏳

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

SOFTENG 299 - Workshop Practice (0 pts)🏳

Restriction: ENGGEN 299

Stage III

SOFTENG 306 - Software Engineering Design 2 (15 pts)🏳

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

SOFTENG 310 - Software Evolution and Maintenance (15 pts)🏳

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 - Software Architecture (15 pts)🏳

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

SOFTENG 350 - Human Computer Interaction (15 pts)🏳

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

SOFTENG 351 - Fundamentals of Database Systems (15 pts)🏳

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

SOFTENG 364 - Networks and Security (15 pts)🏳

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 - Operating Systems (15 pts)🏳

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

SOFTENG 700A - (15 pts)🏳

SOFTENG 700B - Research Project - Level 9 (15 pts)🏳

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

A and B

SOFTENG 701 - Advanced Software Engineering Development Methods (15 pts)🏳

- 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

SOFTENG 710 - Studies in Software Engineering 1 (15 pts)🏳

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

Prerequisite: Departmental approval

SOFTENG 711 - Studies in Software Engineering 2 (15 pts)🏳

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

Prerequisite: Departmental approval

SOFTENG 715 - Special Topic (15 pts)🏳

SOFTENG 751 - High Performance Computing - Level 9 (15 pts)🏳

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 and Design 943

SOFTENG 752 - Formal Specification and Design - Level 9 (15 pts)🏳

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

SOFTENG 753 - Machine Learning Techniques and Applications (15 pts)🏳

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

SOFTENG 754 - Advanced Software Requirements Engineering - Level 9 (15 pts)🏳

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

SOFTENG 755 - Special Topic (15 pts)🏳

SOFTENG 761 - Advanced Agile and Lean Software Development - Level 9 (15 pts)🏳

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

SOFTENG 762 - Robotics Process Automation (15 pts)🏳

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

SOFTENG 770 - Capstone Project (15 pts)🏳

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 - Project X - Level 9 (15 pts)🏳

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

Prerequisite: Departmental approval

SOFTENG 788 - (30 pts)🏳

SOFTENG 788A - (15 pts)🏳

SOFTENG 788B - Research Project - Level 9 (15 pts)🏳

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

Prerequisite: Departmental approval

and B, or SOFTENG 788

SOFTENG 789 - Project Z - Level 9 (30 pts)🏳

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

Prerequisite: Departmental approval

SOFTENG 795 - (45 pts)🏳

SOFTENG 795A - (15 pts)🏳

SOFTENG 795B - Research Project (Software Engineering) - Level 9 (30 pts)🏳

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

and B, or SOFTENG 795

SOFTENG 796A - (60 pts)🏳

SOFTENG 796B - ME Thesis (Software Engineering) - Level 9 (60 pts)🏳

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

Prerequisite: Departmental approval

A and B Structural Engineering