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. Ethical issues. 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.

Prerequisites: Computer Science 331.

Note: Credit for both Software Engineering 311 and either Computer Science 333 or Management Information Systems 333 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, human factors, software documentation and manuals, software project management, teamwork and professional issues. Emphasizes a large-group project.

Prerequisites: Software Engineering 311 or Computer Science 333.

Note: Credit for both Software Engineering 411 and Computer Science 451 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 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

Tools and techniques to permit and to achieve the modification of large-scale software. Topics may include: construction of software support tools, improving modularization, program comprehension, static and dynamic analyses, refactoring, aspect-oriented programming.

Prerequisites: Software Engineering 311 or Computer Science 333.

Note: Computer Science 313 or 411 is recommended.

(Return to Top)

Graduate Courses

Software Engineering 605 Q(3-1)

Industrial Topics in Software Engineering

A study of practical approaches of industrial relevance 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 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 627 H(3-1)

Software Engineering 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.

Note: Credit for both Software Engineering 625 and 627 will not be allowed.

(Return to Top)

Software Engineering 629 Q(3-0)

Software Engineering Standards and Models

Formal description of and algorithms for current software engineering standards and models. Topics may include: the SEI Capability Maturity Model; ISO 9001; BOOTSTRAP; ISO 15504; SEPRM. Case studies, trends and future development in software engineering standardization.

(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 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 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)

Software Engineering 697 Q(3-0)

Agent-Based Software Engineering

Principles and practices of agent-based software engineering. Agent system architecture and infrastructure from a software engineering viewpoint, including: development process for agent-based systems; agent architecture, communication and knowledge sharing; agent-based software systems standards.

Note: Credit for both Software Engineering 697 and Computer Science 609 will not be allowed for programs offered by the Department of Computer Science.

(Return to Top)