contact usfaculty of engineeringfaculty of mathematicssite index
SE homeUW home








 

 

 
curriculum

  course sequencing electives options/minors

The Software Engineering program curriculum encompasses the technical and professional background you will need to engineer large complex software systems.

The curriculum is project-intensive, where students learn by example and by practice. The average Software Engineering student is expected to spend 50-60 hours per week on readings, projects, group meetings, and attending lectures, practicums, and labs. The program is quite challenging, but with hard work, students will acquire the skills and expertise to succeed not only in their classes but in their professional careers.

The curriculum includes: 

  • Mathematical and scientific background that students need to understand computer science fundamentals, to model software systems, and to evaluate software models and designs.
  • Intensive studies and exercises in computer science and engineering design, whereby students experience how to engineer software solutions.
  • Core software engineering courses that promote disciplined development processes, proper technical documentation, software design principles, project management, and systematic and quantifiable analysis techniques.
  • Advanced technical electives that examine domain-specific problems, designs, and solutions. 
  • Complementary electives that reflect on how computing and information technologies affect individuals, organizations, businesses, and society.
Theory and practices are introduced by applying them to relevant software engineering problems and are reinforced through case studies, exercises, and projects. Software engineering philosophy and discipline are taught early and practised throughout the program. Students are expected early on to design and evaluate their programs, as part of successful software development. Through technical documentation, presentations, reports, and peer reviews, students develop strong communication skills. Through project management and teamwork, they develop strong interpersonal skills.
 
course sequencing
Term
Course
Title
C
T
L

1A
Fall

 

Linear Algebra for Engineering
3
2
0
Calculus 1for Engineering
3
2
0
Introduction to Methods of Software Engineering**
1
1
1
Physics of Electrical Engineering 1
3
1
 
Linear Circuits
3
2
1
Programming Principles
2
2
2
         

1B
Winter

Seminar
1
0 0
Calculus 2 for Engineering
3
2
0
Algebra For Honours Mathematics
3
1
0
Functional Programming and Data Abstraction
3
1
2
Physics of Electrical Engineering 2 
3
1
1.5
Digital Circuits and Systems
3
1
1.5
         

2A 
Fall

Seminar
1
0 0
Logic and Computation
3
2
0
Foundations of Sequential Programs
3
1
2
Digital Computers
3
3
3*
Statistics for Software Engineers
3
1
0
Chemistry for Engineers
3
2
+
Elective
See note 1
3
   
 

2B
Spring

Seminar
1
0 0
Data Structures and Data Management
3
..
3
Software Engineering Principles
3
0
3
Advanced Mathematics for Software Engineers
3
1
Introduction to Combinatorics
3
1
 
Managerial and Engineering Economics
3
1
0
Elective
See note 1      
Technical Presentation Milestone 0 0 0
Work Term Report, Engineering 0 0 0
         

3A
Winter

Seminar
1
0 0
Operating Systems
3
1
1.5
Introduction to Feedback Control
3
1
1.5
User Interfaces
3
1
3*
Algorithms
3
+
+
Elective
See note 1
3
+
+

3B
Fall

Seminar
1
0.. 0..
Software Requirements Specification and Analysis ***
3
1
3
Design Project Planning ***
2
..
2
Concurrent and Parallel Programming
3
0
3
Introduction to Database Management
3
1
3
Two Electives
See note 1
3
+
+
Work Term Report, Engineering 0.. 0.. 0..
         

4A
Spring

Seminar
1
0.. 0..
Software Design and Architectures ***
3
1
3
Design Project 1 ***
2
1
9
Computer Networks
3
1
0
Two Electives
See note 1
3
+
+
Work Term Report, Engineering 0 0 0
         

4B
Winter

Seminar
1
0 0
Software Testing and Quality Assurance ***
3
1
3
Design Project 2 ***
2
..
2
Four Electives
See note 1
3
+
+
         

* Alternate weeks
** One hour seminar per week
*** lab is not scheduled and students are expected to find time in open hours to complete their work

Notes:

  1. There are eleven electives.  As detailed above, these electives must include four advanced technical electives, two science electives, and four linkage electives.  For their remaining elective, students may choose to take any of an additional advanced technical elective, an additional science elective, any course from the complementary studies electives lists, a foreign-language linguistics or grammar course, BUS 111W (see WLU calendar), BUS 121W (see WLU calendar), COMM 400, or any other course approved by the SE Program Advisor.  Advanced Technical Electives may not be taken before the 3A term; 400-level Advanced Technical Electives may not be taken before the 3B term. 
  2. Students enrolled in Software Engineering will only be permitted to use the WD and WF provisions used in the Faculty of Mathematics to withdraw from extra courses taken above and beyond the degree requirements.
  3. Foreign-language courses must be approved by the SE advisor.
  4. With the permission of the Program Advisor, ECE 358 may be swapped with a 3A or 3B technical elective if required as a prerequisite for an ATE.
advanced technical electives (ATE)

Four Advanced Technical Electives (ATE): Advanced technical electives expose students to advanced software technologies, domain-specific designs, and large applications, on which they can practice their software-engineering skills. The advanced technical electives comprise primarily third-and fourth-year course offerings in CS or ECE.

One of the following CS courses (CS List):

CS 442 Principles of Programming Languages
CS 444 Compiler Construction
CS 448 Database Systems Implementation
CS 449 Human-Computer Interaction 
CS 450 Computer Architecture
CS 452 Real-time Programming
CS 454 Distributed Systems
CS 457 System Performance Evaluation
CS 458 Computer Security and Privacy   
CS 473 Medical Image Processing
CS 484 Computational Vision
CS 485 Machine Learning: Statistical and Computational Foundations
CS 486 Introduction to Artificial Intelligence 
CS 488 Introduction to Computer Graphics

One of the following ECE courses (ECE list):

ECE 409 Cryptography and System Security
ECE 416 Higher Level Network Protocols
ECE 417 Image Processing
ECE 418 Communications Networks
ECE 419 Communication System Security
ECE 423 Embedded Computer Systems 
ECE 429 Computer Architecture
ECE 454 Distributed and Network Computing
ECE 455 Embedded Software 
ECE 457A  Cooperative and Adaptive Algorithms
ECE 457B Fundamentals of Computational Intelligence
ECE 458 Computer Security
ECE 459 Programming for Performance
ECE 481 Digital Control Systems 
ECE 486 Robot Dynamics and Control
ECE 488 Multivariable Control Systems

One of

An additional course from the CS and ECE lists above

CO 487 Applied Cryptography
CS 462 Formal Languages and Parsing
CS 466 Algorithm Design and Analysis
CS 467 Introduction to Quantum Information Processing
CS 475 Computational Linear Algebra
CS 487 Introduction to Symbolic Computation
CS 489 Advanced Topics in Computer Science
CS 490 Information Systems Management
ECE 406 Algorithm Design and Analysis
SE 498 Advanced Topics in Software Engineering
SE 499 Project - students interested in SE 499 should contact the Director of Software Engineering
SYDE 433 Conflict Resolution
SYDE 475 Image Processing
SYDE 558 Fuzzy Logic and Neural Networks

One of

An additional course from the ATE lists above 

CS 360 Introduction to the Theory of Computing
CS 365 Models of Computation
CS 370 Numerical Computation
CS 371 Introduction to Computational Mathematics 
ECE 207 Signals and Systems
ECE 224 Embedded Microprocessor Systems
ECE 327 Digital Hardware Systems
SYDE 348 User Centred Design Methods

 

science electives (SCE)

Two Science Electives (SCE)
Normally these courses are in the natural sciences, chosen from the list below. Alternate courses may be chosen in consultation with the SE Program Advisors.

Science Elective Courses:
BIOL 130 (including 130L), 239, 240, 273, CHE 161, CHEM 262 (including 262L), EARTH 121 (including
121L)
, ECE 209, PHYS 234, 246, 275, 334, 375

linkage electives (LE)

Four Linkage Electives (LE)
At least one from each of the areas of Societal Issues, Humanities and Social Sciences, and Communications, as specified below. Students should be aware that these courses may have enrolment limits, or may not fit their schedules.

One course on Societal Issues: CS 492, Complementary Studies Elective List A

One course on Communication: ENGL 109, 119, 140R, 210F, 210G, 219, SPCOM 100, 223, 324, 432

Two additional courses on Humanities and Social Sciences: Complementary Studies Elective List C

options/minors

Although Software Engineering students are considered to be both Math and Engineering students, and can thus take advantage of most academic opportunities available to students from either Faculty, BSE students have only three options directly supported by their program:   the Option in Management Sciences (from Engineering), the Business Option (from Computer Science), and the Cognitive Science Option (a university-wide option). 

This does not preclude students from completing the requirements for other eligible degree enhancements, such as other Options, Minors, or Joint programs; but these must be arranged by the students and completed in addition to the normal BSE degree requirements. Students must consult the Software Engineering Associate Director for eligible degree enhancements.

Students should be aware that an option will constrain the choice of elective courses and may require additional courses.  Thus, it is advisable to start planning for options in the first and second years.  Students should also consider the benefits of not pursuing an option, in that they are better able to personalize their curriculum if they have more flexibility in choosing their electives.

Option in Management Sciences

This option consists of six courses (see 'Option in Management Sciences' under Designated Options in the Faculty of Engineering section) designed for those students who are interested in the management of technology.

Note that required course MSCI 331 and the elective course MSCI 431 are not open to Math Faculty students, which means that they are not open to Software Engineering students.  Students enrolled in the option must take CO 250 in lieu of MSCI 331 , and CS 457 can substitute for MSCI 431 .

The successful completion of these courses results in a designation on the transcript 'Option in Management Sciences'.

Business Option

This option consists of ten courses (see 'Business Option' under Computer Science in the Faculty of Math section) designed for those students who are interested in business and marketing.

The successful completion of these courses results in a designation on the transcript 'Business Option'.

Cognitive Science Option

This option consists of eight courses (see 'Cognitive Science Minor' in the Interdisciplinary section) designed for those students who are interested in the nature of thinking and intelligence.

The successful completion of these courses results in a designation on the transcript 'Cognitive Science Option'.

work term report (wkrpt)

Three Work-term Reports (WKRPT)

Work-term reports are listed as part of the Software Engineering curriculum; they are treated as courses that a BSE student must successfully complete to satisfy the program requirements. They appear on all grade reports and transcripts, but they are not used in calculating term averages.

Each work-term report requirement is satisfied by earning a grade of satisfactory or better on a work-term report related to the previous term's co-op employment. Each work-term report must be submitted at the beginning of the academic term in which it is listed as a course; it is due seven days after the first official day of lectures. Reports submitted after the due date will receive a failing grade and will be evaluated the following academic term.

Failed work-term reports contribute to a student's accumulated failed-course count. They also appear on a student's grade reports and transcripts. Failed reports are cleared by retaking them in subsequent terms.  To do this, add the course (WKRPT 200/300/400) and submit the report by the due date.


technical presentation milestone (tpm)
Technical Presentation Milestone (TPM)

Each student registered in Software Engineering is required to satisfy the Technical Presentation Milestone (TPM) during his or her 2B term. If admitted to the Software Engineering program after 2B, then the student must satisfy this requirement before the end of the student's first academic term in the program. The topic of the presentation is expected to be some aspect of the work-term report that the student submits in his or her 2B term. The details of the TPM requirement are provided during the student's 2A term, so that the student can plan appropriately for the presentation during the work term preceding 2B. A student who is interested in formal instruction on how to develop and deliver an oral presentation should consider taking SPCOM 223.


 

Copyright © 2009 University of Waterloo. All rights reserved.