Software Engineering SENG

Instruction offered by members of the Department of Computer Science in the Faculty of Science and the Department of Electrical and Computer Engineering in the Faculty of Engineering.

Computer Science Department Head - K.Barker

Electrical and Computer Engineering Department Head - J. Leon

Registration in each course requires the consent of the Department teaching the course.

Senior Courses

Software Engineering 311 H(3-1T-2)

Principles of Software Engineering

Introduction to software development problems and to the processes and methods used to address them. Software life cycle models. Goals and methods for requirements analysis and specification, software design, implementation, integration and testing of software. An introduction to one or more informal methods (focusing on object-oriented approaches) currently in widespread use. Techniques are applied in a team project.

Prerequisites: Computer Science 331.

Note: Credit for both Computer Science 333 and Software Engineering 311 will not be allowed.

(Return to Top)

Software Engineering 411 H(3-3T)

Human and Organizational Aspects in Software Engineering

Addresses the human and organizational aspects of software development. Topics will include requirements engineering techniques, formal specifications, human factors, software documentation and manuals, software project management, social, ethical, and professional issues. Emphasizes a large-group project.

Prerequisites: Software Engineering 311 or Computer Science 333.

Note: Credit for both Computer Science 451 and Software Engineering 411 will not be allowed.

(Return to Top)

Software Engineering 421 H(3-2)

Software Metrics

The theory of measurement, experimental design, software metrics collection, statistics for analyzing measurement data, software size and software structure, resource measurement, prediction of software characteristics, planning software measurement, software quality and reliability.

Prerequisites: Software Engineering 311 or Computer Science 333.

(Return to Top)

Software Engineering 443 H(3-2)

Software Architectures

Software architecture, architectural styles, design patterns, software components and reuse, frameworks, distributed system design.

Corequisites: Software Engineering 311 or Computer Science 333.

(Return to Top)

Software Engineering 501 H(3-2)

Advanced Topics in Software Engineering

Aspects of the next generation of software development methods, techniques, and tools. Topics will change as technology changes.

Prerequisites: Consent of the Department.

Note: Consult Department (Computer Science or Electrical and Computer Engineering) for details regarding offerings in the upcoming academic year.

MAY BE REPEATED FOR CREDIT

(Return to Top)

Software Engineering 511 H(3-2)

Software Process Improvement

A study of software development processes from an evolutionary, industrial perspective. Interaction between development principles, software processes, and software quality. Process and product dependencies. Systematic improvement of software process based on empirical evaluation of technologies. Current industrial process improvement models.

Prerequisites: Software Engineering 421 and one of Software Engineering 411 or Computer Science 451.

(Return to Top)

Software Engineering 513 H(3-2)

Web-Based Systems

An overview of software engineering methods and technologies for developing web-based software systems.

Prerequisites: Software Engineering 411 or Computer Science 451.

Corequisites: Computer Science 471.

(Return to Top)

Software Engineering 521 H(3-2)

Software Reliability and Testing

Principles of reliability, software reliability models, techniques to improve and predict reliability, software testing, quality assurance, Cleanroom development.

Prerequisites: Software Engineering 421.

(Return to Top)

Software Engineering 523 H(3-2T)

Formal Methods

Software specification using a mathematically rigorous approach, formal methods concepts, formal specification languages, algebraic and model-based specification, verification and validation.

Prerequisites: Software Engineering 411 or Computer Science 451; and Philosophy 279 or 377.

(Return to Top)

Software Engineering 531 H(3-2T)

Software Evolution

Introduction to state-of-the-art methods in software evolution and maintenance. Topics will be drawn from areas such as design principles, usability vs. usefulness, empirical background, improving modularization, program comprehension, static and dynamic analyses, visualization, reverse engineering, restructuring, refactoring.

Prerequisites: Software Engineering 443.

(Return to Top)

Graduate Courses

Software Engineering 607 H(3-1)

Special Topics in Software Engineering

A study of problems of particular interest to students specializing in Software Engineering.

Note: Consult Department (Computer Science or Electrical and Computer Engineering) for details regarding offerings in the upcoming academic year.

MAY BE REPEATED FOR CREDIT

(Return to Top)

Software Engineering 609 Q(3-1)

Special Topics in Software Engineering

A study of problems of particular interest to students specializing in Software Engineering.

Note: Consult Department (Computer Science or Electrical and Computer Engineering) for details regarding offerings in the upcoming academic year.

MAY BE REPEATED FOR CREDIT

(Return to Top)

Software Engineering 611 Q(3-1)

Requirements Engineering I

The elicitation, modelling, expression, and validation of requirements.

(Return to Top)

Software Engineering 613 Q(3-1)

Requirements Engineering II

Applications of requirements engineering to the management of the lifecycle of software development from requirements elicitation through analysis, design, coding, testing, enhancement and reuse.

Prerequisites: Software Engineering 611.

(Return to Top)

Software Engineering 621 Q(3-1)

Software Process Management

Analysis of software process maturity models from repeatability, through definition and management, to optimization.

(Return to Top)

Software Engineering 623 Q(3-2)

Software Quality Management

Analysis of applicable quality, measures for software processes, the role of reviews, metrics and tools for the automatic derivation of quantitative measures.

Prerequisites: Software Engineering 621.

(Return to Top)

Software Engineering 625 Q(3-1)

Software Decision Support

Provides methodological foundations of software engineering decision-making and how to apply them to make better decisions about processes, products, and resources as well as for selection of tools and techniques.

(Return to Top)

Software Engineering 631 Q(3-2)

Introduction to Dependability in Computing Systems

Principles of hardware and software dependability techniques. Topics include: Faults, errors and failures, probability measures of reliability, availability, MTTF, assessment methods, mechanisms to improve and analyze the dependability of a system, structural view of systems for high availability.

Note: Students are expected to have a background in elementary probability theory.

(Return to Top)

Software Engineering 633 Q(3-2)

Software Fault Tolerance Techniques

Strategies, methods and techniques to tolerate faults that remain in the code after testing, verification and validation. Perspectives on high availability/reliability software systems using fault tolerance techniques.

Prerequisites: Software Engineering 631.

(Return to Top)

Software Engineering 635 Q(3-2)

Software Reliability and Testing

Introduces software reliability growth models and shows techniques to improve and predict software reliability. The principles of software testing, black box testing, white box testing, unit testing, system testing, and integration testing will be explained.

Prerequisites: Software Engineering 631.

(Return to Top)

Software Engineering 651 H(3S-0)

Half-Course Project

A project in either software development or software best practice and experience.

Note: Credit for both Software Engineering 651 and 652 will not be allowed.

Note: This course is only available to students registered in the course-based MSc in Computer Science with the Software Engineering Specialization.

Note: Students should register for this course in the semester when they will complete it.

(Return to Top)

Software Engineering 652 F(3S-0)

Full-Course Project

A project in either software development or software best practice and experience.

Note: Credit for both Software Engineering 652 and either 651 or Electrical Engineering 698 will not be allowed.

Note: This course is only available to students registered in the course-based MSc in Computer Science with the Software Engineering Specialization or to MEng students with a specialization in Software Engineering.

Note: Students should register for this course in the semester when they will complete it.

(Return to Top)

Software Engineering 693 Q(3S-0)

Trends in Software Engineering

Recent developments in various areas in software engineering.

(Return to Top)

Software Engineering 695 H(3-1)

Software Engineering for Internet Applications

Methods and techniques that support the development of Internet-based applications. Life cycle models for developing Internet-based applications, advanced software technologies for Internet applications (e.g. distributed object systems, application servers, web technologies), quality assurance for web applications, design and code inspections.

(Return to Top)