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.
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.
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.
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.
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
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.
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.
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.
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.
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.
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
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
Software Engineering 611 Q(3-1)
Requirements Engineering I
The elicitation, modelling, expression, and validation of requirements.
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.
Software Engineering 621 Q(3-1)
Software Process Management
Analysis of software process maturity models from repeatability, through definition and management, to optimization.
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.
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.
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.
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.
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.
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.
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.
Software Engineering 693 Q(3S-0)
Trends in Software Engineering
Recent developments in various areas in software engineering.
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.