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