University of Waterloo
200 University Ave W, Waterloo, ON
N2L 3G1
Phone: (519) 8884567
Staff and Faculty Directory
Contact the Department of Electrical and Computer Engineering
Visit our COVID19 information website to learn how Warriors protect Warriors.
GA abbreviations indicated in brackets.
“The institution must demonstrate that the graduates of a program possess the attributes under the following headings.”
The following PIs are harmonized across the Faculty of Engineering (FoE). Differentiation occurs in the details highlighted in the footnotes and the appendices. These PIs were voted into effect for CE and EE by the USC on Nov. 9^{th}, 2017. Note that SE has defined their own set of 19 GAs and from which they have defined a set of corresponding PIs. This approach allows them to meet both CEAB and CSAC accreditation criteria.
GA# 
Attribute 
Attribute Definition 
PI 
ProgramLevel Indicator 
1 
Knowledge Base[1] 
Demonstrated competence in university level mathematics, natural sciences, engineering fundamentals, and specialized engineering knowledge appropriate to the program. 
1a 
Demonstrate understanding of concepts in mathematics 
1b 
Demonstrate understanding of concepts in natural science 

1c 
Demonstrate understanding of engineering fundamentals 

1d 
Demonstrate understanding of specialized engineering knowledge 

2 
Problem analysis 
An ability to use appropriate knowledge and skills to identify, formulate, analyze, and solve complex engineering problems in order to reach substantiated conclusions. 
2a 
Formulate a problem statement 
2b 
Develop models to solve engineering problems including identifying approximations, assumptions, and constraints 

2c 
Critically evaluate solutions of engineering problems 

3 
Investigation 
An ability to conduct investigations of complex problems by methods that include appropriate experiments, analysis and interpretation of data, and synthesis of information in order to reach valid conclusions. 
3a 
Design experiments to investigate complex engineering problems[2] 
3b 
Gather information from relevant sources[3] to address complex engineering problems 

3c 
Synthesize information from multiple sources to reach valid conclusions 

4 
Design 
An ability to design solutions for complex, openended engineering problems and to design systems, components or processes that meet specified needs with appropriate attention to health and safety risks, applicable standards, and economic, environmental, cultural and societal considerations. 
4a 
Define design requirements and specifications for complex, openended engineering problems[4] 
4b 
Generate and refine potential solutions to complex, openended design problems[5] 

4c 
Critically evaluate and compare design choices[6] 

5 
Use of Engineering Tools 
An ability to create, select, apply, adapt, and extend appropriate techniques, resources, and modern engineering tools to a range of engineering activities, from simple to complex, with an understanding of the associated limitations. 
5a 
Select appropriate engineering tools^{4}, considering their limitations[7] 
5b 
Create and/or modify appropriate engineering tools, identifying their limitations[8] 

5c 
Use engineering tools appropriately[9] 

6 
Individual and team work 
An ability to work effectively as a member and leader in teams, preferably in a multidisciplinary setting. 
6a 
Contribute as an active team member or leader to complete individual tasks 
6b 
Collaborate with others to complete tasks effectively as a team 

7 
Communication skills 
An ability to communicate complex engineering concepts within the profession and with society at large. Such ability includes reading, writing, speaking and listening, and the ability to comprehend and write effective reports and design documentation, and to give and effectively respond to clear instructions. 
7a 
Generate appropriate documentation to communicate within the profession and to society at large 
7b 
Orally present information within the profession and to society at large 

7c 
Interpret information, including instructions 

8 
Professionalism 
An understanding of the roles and responsibilities of the professional engineer in society, especially the primary role of protection of the public and the public interest. 
8a 
Articulate the roles and responsibilities of the professional engineer in society with reference to the protection of the public and its interest 
8b 
Describe the importance of codes, standards, best practices, laws, and regulations within engineering 

9 
Impact of engineering 
An ability to analyze social and environmental aspects of engineering activities. Such ability includes an understanding of the interactions that engineering has with the economic, social, health, safety, legal, and cultural aspects of society, the uncertainties in the prediction of such interactions; and the concepts of sustainable design and development and environmental stewardship. 
9a 
Identify the relevance of and uncertainty associated with the different aspects (social, cultural, economic, health, safety, legal, environmental) of an engineering project 
9b 
Analyze the social, health, safety, and environmental aspects of an engineering project, incorporating sustainability considerations in making decisions 

10 
Ethics and equity 
An ability to apply professional ethics, accountability, and equity. 
10a 
Identify ethical and unethical behaviour in professional situations 
10b 
Identify how an engineer is accountable to multiple stakeholders in engineering practice 

10c 
Identify equitable and inequitable situations or behaviours 

11 
Economics and project management 
An ability to appropriately incorporate economics and business practices including project, risk, and change management into the practice of engineering and to understand their limitations. 
11a 
Apply project management techniques in engineering projects, with attention to risk, and change 
11b 
Perform economic analyses of engineering projects with attention to uncertainty and limitations 

12 
Lifelong learning 
An ability to identify and to address their own educational needs in a changing world in ways sufficient to maintain their competence and to allow them to contribute to the advancement of knowledge. 
12a 
Identify gaps in their knowledge, skills and abilities 
12b 
Obtain and evaluate information or training from appropriate sources 

12c 
Reflect on the use of information or training obtained 
The math (1a), natural science (1b), and engineering fundamentals (1c) necessary for the CE, EE, and SE programs are specified in Table 1. Specialized engineering knowledge (1d) is specified in Table 2. Examples of design problems (4c) are specified in Table 3. Tools (5c) are included in Table 4. The SEspecific PIs contain further information for the SE program.
Table 1: Topics corresponding to math (1a), natural science (1b), and engineering fundamentals (1c)
PI 
Topic 
Key concept, algorithm, or subtopic 
1a 
Calculus and related 
Functions, inverse functions, limits, continuity, derivatives, maxmin problems, Mean Value Theorem, antiderivatives, the Riemann definite integral, Fundamental Theorems, methods of integration, approximation, applications, improper integrals 
Approximation methods (interpolation, Taylor polynomials, Newton's method), Landau order symbol, infinite series, Taylor series, geometric series, convergence test, power series, functions of several variables, partial derivatives, linear approximation and differential, gradient and directional derivative, optimization and Lagrange multipliers, vectorvalued functions, parametric representation of curves, tangent and normal vectors, line integrals, polar, cylindrical, other coordinate systems, double and triple integrals 

(a) Fourier series, ordinary differential equations, Laplace transform, intro to partial differential equations (b) Related numerical methods: solving initialvalue problems, the fixedpoint theorem and convergence, numeric differentiation, numeric integration, Heun's method, 4thorder RungeKutta and the DormandPrince method, Systems of IVPs and higherorder IVPs, Boundaryvalue problems and divided differences 

(a) Triple integrals, cylindrical and spherical polar coordinates, divergence and curl, surface integrals, Green's, Gauss' and Stokes' theorems, complex functions, analytic functions, contour integrals, Cauchy's integral formula, Laurent series, residues (b) Related numerical methods: finite difference methods for solving boundary value problems, numerical solutions to the heatconduction/diffusion equation, CrankNicolson method for solving the heatconduction/diffusion equation and insulated boundaries, numerically solving the wave equation, Laplace's equation in two dimensions, heatconduction/diffusion and wave equations in two and three dimensions 

Complex variables 
Basic complex number algebra, polar form, Euler’s formula, DeMoivre’s formula, sines and cosines of complex numbers 

Discrete math 
propositional logic, predicate logic, set theory, finite automata, temporal logic, combinatorics, graph theory, relations 

Linear algebra 
(a) Systems of linear equations and their representation with matrices and vectors; their generalization to abstract vector spaces, determinant, characteristic polynomial, eigenvalues and eigenvectors, rank, and singular values (b) Related numerical methods (Interpolating polynomials, Newton Interpolation and Horner's rule, Iterative methods for solving systems of linear equations, Finding the maximum eigenvalue, PLU Decomposition, Least squares, Root finding, Newton's method in n dimensions) 

Probability, uncertainty, random processes 
Ensemble model of randomness, conditional probability, independence, Bayes' theorem, random variables, probability distribution functions, expected values, collections of random variables, joint and marginal probability distributions, correlation, confidence intervals, random processes, stationarity, power spectral density 

Statistics 
Measurements, basic statistics (mean, median, mode, standard deviation, variance), error propagation, statistical packages, need for ethics in animal and human studies, data collection 

1b 
Dynamics 
Forces in nature, Newton's, dynamics, circular motion, work, energy, conservation of energy, linear momentum, linear impulse, rotational dynamics, oscillations, simple harmonic motion, wave motion, travelling waves, standing waves 
EM fundamentals 
Electrostatics; electric field, flux, Gauss's Law, potential and potential energy, capacitors, dielectric, capacitance, electric energy storage, charging/discharging, resistors, charge flow, current, resistance, KVL, KCL, LR/LC/RC circuits, magnetostatics, magnetic force, magnetic fields, Ampere's Law, inductors, magnetic flux, inductance, magnetic materials, magnetic energy storage, timeVarying fields, Faraday's Law, mutual inductance, simple motors and generators, wave propagation, electrostatic and magnetostatic boundary conditions 

Thermal processes 
Thermal physics, temperature, thermal energy, specific heat, ideal gas heat engines, refrigerators 

1c 
Semiconductor physics 
Waveparticle duality, basic quantum mechanics, Schrodinger equation, energy bands in crystals, basic properties of semiconductors, intrinsic and doped semiconductor, electrons and holes, metals and alloys, superconductivity, phonons and heat capacity, dielectric materials, optical properties, dielectric properties and magnetic properties of materials 
Signals and systems 
Discrete, continuous and periodic signals, timedomain and frequencydomain analysis of continuoustime and discretetime linear systems, periodic signals and Fourier series, nonperiodic signals, Fourier transforms, Laplace transform 
Table 2: Topics corresponding to specialized engineering knowledge (1d)
Subfield 
Topic 
Key concepts 
Circuits 
(a) Linear circuits 
Analysis of linear circuits, voltage, current, resistance, capacitance, inductance, voltage source, current source, dependent sources, Ohm's Law, Kirchoff's Law, nodal analysis, mesh analysis, circuit transformations, operational amplifier circuits, time response, sinusoidal steadystate response 
(b) Electronics 
Electronic signal processing; operational amplifier circuits, diode devices and circuits, MOS and bipolar amplifier biasing networks, loadline analysis, diode, MOS and bipolar smallsignal equivalent circuits, singlestage smallsignal MOS and bipolar amplifiers, transistor switches, electronic circuits and their limitations, including differential pairs, biasing, the cascode configuration and active loads, differential and multistage amplifiers, feedback, stability and compensation, CMOS logic circuits, frequency response 

Communications 
Communications 
Spectral density of deterministic and random analog signals, thermal noise, white noise model, amplitude and angle modulation, generation and detection schemes, effects of noise, techniques for handling digital signals including sampling and reconstruction, quantization, waveform coding, and timedivision multiplexing, overview of digital communications 
Controls 
Analog controls 
Control systems, closedloop feedback systems (handling uncertainty, stabilization, disturbance rejection), system mathematical models, block diagrams, signal flow graphs, control system design, stability, RouthHurwitz stability test, frequency response analysis techniques (Nyquist stability test), rootlocus analysis, elementary leadlag compensation 
Devices 
Devices 
Band theory and doped semiconductors in thermal equilibrium, charge neutrality, mass action law, recombination and transport mechanisms, Boltzmann relations, pn junction diodes, charge storage effects, MOSFETs (threshold voltage, DC characteristics, small signal models), bipolar junction transistors (terminal characteristics and equivalent circuits) 
Digital hardware 
(a) Digital circuits 
Number systems, Boolean arithmetic, Boolean algebra, simplification of Boolean functions, combinational circuits, sequential circuits; hardware description languages, timing analysis, implementation technologies 
(b) Digital computers 
Computer organization, memory units, control units, I/O operations, assembly language programming, translation and loading, arithmetic logic units, microprocessor system architecture, bus systems, memory systems, peripherals, parallel interfaces, serial interfaces, analog interfaces, data transfer, synchronization, arbitration, error detection/correction, testing and debugging 

(c) Digital systems 
Design and modelling of digital hardware systems using a hardware description language, implementation technologies, performance analysis and optimization, functional verification, timing analysis, power analysis and optimization, faults and testability, reliability and fault tolerance 

Power 
Power systems and components 
Basic modelling and analysis techniques in electricity generation, transmission and distribution, including basic concepts in nonlinear system analysis. Functional descriptions and modelling of generators, transformers, transmission lines, motors and other loads. Power flow analysis techniques, from the basic equations to their use in power networks. Fault analysis and basic protection concepts. 
RF & photonics 
EM fields and waves 
Maxwell's equations; plane waves; timeharmonic fields; waves at planar boundaries; boundary conditions; reflection and transmission; transmission lines; electric fields in matter; magnetic fields in matter. 
Software 
(a) Procedural programming in the small 
Software design process in a highlevel programming environment. Programming fundamentals, language syntax, simple data types, control constructs, functions, parameter passing, recursion, classes, arrays and lists, list traversals, introduction to searching and sorting algorithms, basic objectoriented design, polymorphism and inheritance, simple testing and debugging strategies, pointers and references, basic memory management. Introduction to embedded systems, review of engineering design and analysis principles, software development life cycle, integrated development environments, use of software requirements and specifications, unified modelling language and documentation, event handling, simulation, project management, project scheduling, testing, verification, and maintenance considerations. 
(b) Algorithms and data structures 
Data structures, abstract data types, recursive algorithms, algorithm analysis, NPcompleteness, sorting and searching, problemsolving strategies. 

(c) Operating systems and systems programming 
Concepts of operating systems and systems programming; utility programs, subsystems, multipleprogram systems; processes, interprocess communication, synchronization, and concurrency; memory management, segmentation, and paging; loading and linking, libraries; resource allocation, scheduling, performance evaluation; I/O systems, storage devices, file systems; protection, security, and privacy. 

(d) Compilers 
Programming paradigms, compilation, interpretation, virtual machines. Lexical analysis, regular expressions and finite automata. Parsing, contextfree grammars and pushdown automata. Semantic analysis, scope and name analysis, type checking. Intermediate representations. Control flow. Data types and storage management. Data flow. Code generation. Optimization. 

(e) Database systems 
Introduction, data models, file systems, database system architectures, query languages, integrity and security, database design. 

(f) Networks 
Concepts, protocols, and fundamental design principles that have contributed to the success of the Internet. Topics include a history of the Internet, transmission media and technologies, switching and multiplexing, protocols and layering, LAN (wired and wireless), congestion/flow/error control, routing, addressing, internetworking (Internet) including TCP. 
Table 3: Examples of Design problems for the Error! Reference source not found. program (4c)
Design category 
Subcategory 
Examples 
Hardware 
2.1.3 to construct (including troubleshooting) dc and ac analog circuits, including circuits involving RCL components, opamps, other transistor circuits, motors, transformers, and power electronics 
Power supplies, function generators, oscilloscopes, multimeters, and computer data acquisition systems 
2.1.4 to construct (including troubleshooting) digital circuits 
Spectrum analyzers, logic analyzers, semiconductor parameter analyzers, network analyzers 

2.1.5 to interface (including troubleshooting) digital and analog circuits 


Software 
2.2.4 to program at a high level, including the use of standard libraries and the ability to use previously unknown libraries 
Circuit simulator, VHDL/Verilog tools 
2.2.5 to program at a low level, including data handling & memory operations, arithmetic, control flow, interrupts, external I/O 
Maple, Mathematica 

2.2.7 to use standard operating system tools 
Matlab, R 

2.2.8 to use standard database engines 
Text editors, build systems, source code controls, debugging and testing tools, integrated development environments, and crossplatform development tools 
Table 4: Tools for the Error! Reference source not found. program (5c)
Tool category 
Subcategory 
Examples 
Hardwareoriented tools 
Standard instrumentation for analog and digital measurements 
Power supplies, function generators, oscilloscopes, multimeters, and computer data acquisition systems 
Specialized instrumentation for analog and digital measurements 
Spectrum analyzers, logic analyzers, semiconductor parameter analyzers, network analyzers 

Softwareoriented tools 
Standard simulation and design tools in various electrical and computer engineering domains 
Circuit simulator, VHDL/Verilog tools 
Generalpurpose symbolicallyfocused software 
Maple, Mathematica 

Generalpurpose numericallyfocused software 
Matlab, R 

Standard programming tools and libraries 
Text editors, build systems, source code controls, debugging and testing tools, integrated development environments, and crossplatform development tools 
Software Engineering
SE has defined their own set of 19 GAs from which they have defined a set of corresponding PIs. This approach allows them to meet both CEAB and CSAC accreditation criteria. These are then mapped to the ECE PIs to harmonize reporting for accreditation.
SE GA# 
SE Attribute 
SE PI 
Mapped PI 
ProgramLevel Indicators 
1 
Knowledge Base[10] 
1.1 
1d 
Analyze nontrivial data organization and manipulation via: a) data structures, b) algorithms, c) time and space complexity analysis, d) limits of complexity. 
1.2 
1d 
Understand software systems: a) operating systems, b) software security, c) networking, d) distributed systems, e) database design and use, f) human factors. 

1.3 
1d 
Apply theory and practice of software programs: a) procedural, objectoriented and functional coding, b) translation, c) machine execution, d) exception control flow, e) concurrent control flow. 

1.4 
1a 
Apply discrete mathematics to software development: a) set theory, b) combinatorics, c) graphs and trees, d) discrete probability, e) prepositional and predicate logic, f) direct, contradiction, and inductive proofs, g) boolean logic, h) grammars, i) 

1.5 
1c 
Understand digital circuits and systems: a) boolean circuits, b) integer and real number representation, c) instructionset processor design, d) computer organization. 

1.6 
1b 
Remember rudiments of related disciplines: a) natural sciences, b) electronics and linear circuits, c) control systems. 

1.7 
1a 
Understand relevant fundamental continuous mathematics: a) functions, b) series, c) approximation methods, d) limits, e) differentiation, e) integration, f) statistical analysis. 

2 
Investigation 
2.1 
3a 
Conduct (Create) investigations of complex computing problems by methods that include: (a) problem identification, conceptualization, and abstraction; (b) background research; (c) appropriate experiments; (d) data 
2.2 
3b 
Analyze succinct, nonobvious task specifications to interpret goals and identify relevant research materials. 

2.3 
3c 
Apply independent research to complement course materials. 

3 
Problem analysis 
3.1 
2a 
Determine (Analyze) the problem to be solved. 
3.2 
4a 
Elicit (Create) or invent behavioural and nonbehavioural requirements of complex problems. 

3.3 
4a 
Identify and eliminate by negotiation (Evaluate) conflicts among requirements. 

3.4 
4a 
Rank (Evaluate) requirements by priority. 

3.5 
2c 
Evaluate risks, i.e., identify requirements for detecting, avoiding, and mitigating hazards. 

3.6 
4b 
Determine (Create) appropriate algorithms and data structures to solve the problem at hand according to the elicited or invented requirements. 

3.7 
4c 
Evaluate correctness, consistency, completeness, reliability, and availability of requirements. 

3.8 
11b 
Evaluate project duration and costs from requirements. 

3.9 
2c 
Create test cases and test harnesses from requirements. 

3.10 
4b 
Analyze and create user interfaces that adhere to sound humancomputer interface principles. 

4 
Specification 
4.1 
7a 
Document (Apply) behavioural and nonbehavioural requirements using formal and informal notations, including natural language prose, to produce a requirements specification. 
4.2 
4c 
Evaluate correctness, consistency, and completeness of requirements specifications. 

4.3 
11b 
Evaluate project duration and costs from requirements specifications. 

5 
Design 
5.1 
4c 
Define design requirements and specifications for complex, openended engineering problems[11] 
5.2 
4b 
Generate and refine potential solutions to complex, openended design problems[12] 

5.3 
4b 
Critically evaluate and compare design choices[13] 

5.4 
4b 
Determine (Create) appropriate algorithms to solve problems. 

5.5 
4b 
Create (Create) alternatives that explore the design space. 

5.6 
9a 
Evaluate designs for compliance with behavioural and nonbehavioural requirements such as for health, safety, economic, environmental, ethical, legal, and social issues by applying tactics for dealing with nonfunctional 

5.7 
4c 
Select (Evaluate) from alternatives by evaluating multiple objectives and tradeoff analysis. 

5.8 
4b 
Create experimental and evolutionary prototypes. 

6 
Programming Technology 
6.1 
5c 
Understand several programming languages. 
6.2 
5c 
Understand several scripting languages. 

6.3 
5c 
Understand several shell languages. 

6.4 
5c 
Apply at least one programming language through at least one compiler. 

6.5 
5c 
Apply at least one a) scripting language, b) shell language, c) HTML. 

6.6 
5c 
Apply at least one editor. 

6.7 
5c 
Apply at least one debugging tool. 

7 
Implementation 
7.1 
1c 
Understand programming in general. 
7.2 
1d 
Analyze code in many programming languages for understanding. 

7.3 
3c 
Analyze a specification to determine what must be implemented. 

7.4 
4b 
Create algorithms expressed in some programming language. 

7.5 
2c 
Evaluate code in many programming languages and actual output to determine correspondence and track defects. 

8 
Verification and Validation 
8.1 
3a 
Create test cases and test harnesses from requirements specifications. 
8.2 
2c 
Evaluate the extent to which programs satisfy their specifications. 

8.3 
2b 
Investigate (Create) program behaviours to generate working hypotheses about defects. 

8.4 
3c 
Confirm (Evaluate) hypotheses about root causes of defects. 

8.5 
4b 
Resolve (Create) defects. 

8.6 
3c 
Confirm (Analyze) validity of resolutions of defects. 

8.7 
4c 
Evaluate correctness, consistency, completeness, reliability, and availability of requirements. 

8.8 
4c 
Evaluate correctness, consistency, completeness, reliability, and availability of designs. 

8.9 
4c 
Evaluate correctness, consistency, completeness, reliability, and availability of code. 

8.10 
2c 
Evaluate correctness, consistency, completeness, reliability, and availability of test cases. 

8.11 
1d 
Understand a variety of test metrics, methods, and techniques. 

8.12 
5c 
Apply stateoftheart testing tools to complex systems. 

9 
Maintenance 
9.1 
5c 
Apply common software maintenance processes and techniques. 
9.2 
2b 
Analyze the current architecture of a legacy system. 

9.3 
5c 
Report and correct (Analyze) defects in a system. 

9.4 
4b 
Enhance (Create) functionality in a system. 

10 
Individual Work 
10.1 
6a 
Know (Analyze) own productivity rates to be able to make accurate time estimates for own work. 
10.2 
6a 
Manage (Apply) own time. 

10.3 
6a 
Assume (Apply) responsibility for own work. 

10.4 
6a 
Assimilate (Evaluate) constructive criticism. 

10.5 
7c 
Actively listen (Evaluate) and seek expertise of others. 

10.6 
6b 
Function (Evaluate) effectively as an individual in a team. 

11 
Teamwork 
11.1 
6b 
Apply conflict resolution strategies. 
11.2 
7c 
Actively listen (Evaluate) and seek expertise of others. 

11.3 
7b 
Interact (Apply) with stakeholders. 

11.4 
7b 
Interact (Apply) effectively with people in nonsoftware disciplines. 

12 
Communication skills 
12.1 
7a 
Apply grammar, spelling, and style appropriate to written technical communication.1 
12.2 
7b 
Use (Apply) clear and logical organization in written or oral technical communication. 

12.3 
7a 
Use (Apply) figures and tables effectively in written or oral technical communication. 

12.4 
7a 
Use (Apply) rhetoric to inform and persuade in written or oral technical communication. 

12.5 
7b 
Make (Create) effective oral technical presentations. 

13 
Economics 
13.1 
11b 
Understand economics of software projects: a) timevalue of money, b) technical debt, c) costbenefit analysis, d) breakeven analysis. 
13.2 
11b 
Understand cost to fix defects as a function of development lifecycle stage. 

13.3 
11a 
Understand when defects are introduced to systems under development. 

13.4 
11a 
Understand Brooks's law of development team size. 

13.5 
11b 
Understand costestimation techniques, function points and Cocomo to software development projects. 

13.6 
11b 
Evaluate project duration and costs from requirements specification. 

14 
Project Management 
14.1 
11a 
Apply management tools to software project schedules and deliverables. 
14.2 
11a 
Apply configuration management tools to nontrivial software projects. 

14.3 
11b 
Evaluate project duration and costs from requirements specification. 

14.4 
11a 
Make decisions (Evaluate) under uncertainty, including project risks. 

14.5 
3b 
Evaluate software reliability and availability. 

14.6 
 
Create effective business plans. 

15 
Tools 
15.1 
5a 
Select (Apply) appropriate tools. 
15.2 
5b 
Configure (Apply) and deploy tools. 

15.3 
3c 
Analyze (Analyze) and interpret tool results for correctness and completeness. 

15.4 
5c 
Apply configuration management tools for nontrivial software projects. 

15.5 
5c 
Apply management tools to software project schedules and deliverables. 

16 
Professionalism 
16.1 
8a 
Understand the role of professional licensing and regulation to protect the public good. 
16.2 
10c 
Understand the relevance of diversity and equity in engineering practice. 

16.3 
8b 
Remember professional societies relevant to software engineering. 

16.4 
8b 
Remember software standards organizations. 

16.5 
8b 
Understand intellectual property rights with regard to software, e.g., copyright, utility patents, design patents, trade marks, license agreements, trade secrets. 

16.6 
12b 
Apply appropriate knowledge resources. 

16.7 
8b 
Apply relevant software standards and best practices. 

17 
Impact of Engineering on Society and the Environment 
17.1 
8a 
Remember the role of professional licensing and regulation to protect the public good. 
17.2 
8a 
Understand environmentally sound computing practices. 

17.3 
9b 
Evaluate cultural, economic, health, safety, and social implications of software. 

17.4 
8b 
Understand privacy laws and their impact on software requirements and data collection. 

17.5 
8b 
Understand software warranties and liabilities. 

18 
Ethics and Equity 
18.1 
10c 
Understand the relevance of diversity and equity in engineering practice. 
18.2 
8b 
Understand intellectual property rights with regard to software, e.g., copyright, utility patents, design patents, trademarks, license agreements, trade secrets. 

18.3 
8a 
Apply PEO's Code of Ethics. 

19 
LifeLong Learning 
19.1 
8b 
Remember professional and technical societies relevant to software engineering. 
19.2 
12b 
Evaluate information for authority, currency, and objectivity. 

19.3 
12a 
Evaluate knowledge gaps and learning needs. 

19.4 
12b 
Find and apply (Apply) appropriate knowledge resources and best practice guidelines. 
The following is the default set of programlevel objectives for all CSACaccredited programs. Since these refer to what students should know and be able to do following graduation, they are referred to as Graduate Attributes. A graduate of a computer science or software engineering program must be able to:
[1] The math, natural science, engineering fundamentals, and specialized engineering knowledge necessary for the CE and EE programs are specified in Appendix A.
[2] Experimental design includes identifying factors that affect a system, and planning experiments to determine their relationships, see, e.g. http://www.itl.nist.gov/div898/handbook/pmd/section3/pmd3.htm.
[3] Such as experiments, field data, literature, and other sources.
[4] Including health and safety risks, applicable codes/standards, economic, environmental, cultural, and societal considerations as appropriate.
[5] The design process is iterative and may require going back and forth between any of the Design indicators.
[6] Examples of Design problems for CE and EE students are included in Appendix A.
[7] “Tools” is defined broadly, to include physical tools and to include software, hardware, techniques (e.g. factorial design, dimensional analysis), and/or resources (e.g. codes and standards) relevant and current to the discipline.
[8] Including configuration, operation, troubleshooting, and sanity checks, as appropriate.
[9] Examples of Tools for the CE and EE programs are included in Appendix A.
[10] The math, natural science, engineering fundamentals, and specialized engineering knowledge necessary for the SE program are specified in Appendix A.
[11] Including health and safety risks, applicable codes/standards, economic, environmental, cultural, and societal considerations as appropriate.
[12] The design process is iterative and may require going back and forth between any of the Design indicators.
[13] Examples of Design problems for SE students are included in Appendix A.
University of Waterloo
200 University Ave W, Waterloo, ON
N2L 3G1
Phone: (519) 8884567
Staff and Faculty Directory
Contact the Department of Electrical and Computer Engineering
The University of Waterloo acknowledges that much of our work takes place on the traditional territory of the Neutral, Anishinaabeg and Haudenosaunee peoples. Our main campus is situated on the Haldimand Tract, the land promised to the Six Nations that includes six miles on each side of the Grand River. Our active work toward reconciliation takes place across our campuses through research, learning, teaching, and community building, and is centralized within our Indigenous Initiatives Office.