A course *learning outcome* is a brief statement of a skill, competency, or attitude a successful student will achieve by the end of a course; there are higher-level more abstract learning outcomes for entire programs.

This is a list of all current learning outcomes for courses in the School of Computing. Course websites may list additional learning outcomes for the current specific offering of the course.

**This is the current version of the learning outcomes catalog.** Many originated in the QUQAP Cyclic Program Review in 2014-15. All are under review during 2015-2022 and can be expected to change. This particular version is a DRAFT not yet ready to be made widely available.

## CISC Courses

### CISC 101: Elements of Computing Science

Introduction to algorithms: their definition, design, coding, and execution on computers. Intended for students who have no programming experience. All or most assignment work will be completed during lab time.

**Learning Hours**: 120 (36L;24Lb;60P)**Calendar Note**: Also offered online. Consult Arts and Science Online. Learning Hours may vary.**Exclusion(s)**: (S) APSC 142/3.0; APSC 143/3.0; CISC 110/3.0; CISC 151/3.0ONE-WAY EXCLUSION May not be taken with or after: CISC 121/3.0; CISC at the 200-level or above.

Alternative prerequisite to CISC 271, CISC 282. COCA 201.

These learning outcomes apply to any source of "programming experience," not just CISC 101 and CISC 110.

#### Course Learning Outcomes

CLO | Supports PLO(s) |
---|---|

Design a computational solution to a problem described in natural language, express the solution in an algorithmic way, and convert the algorithm effectively and intelligibly into a procedural program. | 4.1, 4.2 |

Ensure that algorithms produce the correct output and handle edge cases. | 4.1, 4.2 |

Properly use modularity, repetition (both counted and unbounded), conditionals, and simple (rectangular) data structures in problem solutions | 4.1, 4.2 |

### CISC 102: Discrete Mathematics for Computing I

Introduction to mathematical discourse and proof methods. Sets, functions, sequences, and relations. Properties of the integers. Induction. Equivalence relations. Linear and partial orderings.

**Learning Hours**: 120 (36L;84P)ONE-WAY EXCLUSION May not be taken with or after CISC 203/3.0.**Calendar Note**: Also offered online. Consult Arts and Science Online. Learning Hours may vary.

Required in all plans. One of several possible co-requisites to CISC 121. Prerequisite to CISC 203, CISC 204.

#### Course Learning Outcomes

CLO | Supports PLO(s) |
---|---|

Understand standard Mathematics notation used in the field of Computing. | 2.2 |

Recognize comparative magnitudes of functions such as log_{n}, n^{2}, 2^{n}$. |
2.2 |

Read and understand some elementary logical proofs. | 2.2 |

Recognize the difference between a proof and a counter example. | 2.2 |

Formulate elementary proofs using mathematical induction. | 2.2 |

### CISC 110: Creative Computing

Introduction to fundamental programming concepts in the context of visual, interactive media. Students may develop applications in any domain (e.g., fine art, education, commerce, physical or social sciences) while learning about algorithms, program design, logic, program control flow, functions, testing, etc.

**Learning Hours**: 120 (36L;84P)**Calendar Note**: No computing or art background required. Sufficient preparation for CISC 121/3.0. Students without programming experience should take CISC 110/3.0 (orCISC 101/3.0) before CISC 121/3.0. With permission of the instructor, students with programming experience may take thiscourse concurrently with CISC 121/3.0.**Exclusion(s)**: (S) APSC 142/3.0; APSC 143/3.0; CISC 101/3.0; CISC 151/3.0ONE-WAY EXCLUSION May not be taken with or after CISC 121/3.0 or CISC at the 200-level or above.

Alternative prerequisite to CISC 282, COCA 201.

These learning outcomes apply to any source of "programming experience," not just CISC 101 and CISC 110.

#### Course Learning Outcomes

CLO | Supports PLO(s) |
---|---|

Design a computational solution to a problem described in natural language, express the solution in an algorithmic way, and convert the algorithm effectively and intelligibly into a procedural program. | 4.1, 4.2 |

Properly use modularity, repetition (both counted and unbounded), conditionals, and simple (rectangular) data structures in problem solutions | 4.1, 4.2 |

### CISC 121: Introduction to Computing Science I

Introduction to design, analysis, and implementation of algorithms. Recursion, backtracking, and exits. Sequences. Elementary searching and sorting. Order-of-magnitude complexity. Documentation, iterative program development, translating natural language to code, testing and debugging.

**Learning Hours**: 120 (36L;84P)**Corequisites**: CISC 102/3.0 or MATH 110/6.0 or MATH 111/6.0 or MATH 112/3.0 or MATH 120/6.0 or MATH 121/6.0 orMATH 123/3.0 or MATH 124/3.0 or MATH 126/6.0 or APSC 171/3.0 or APSC 172/3.0 or APSC 174/3.0 or COMM 161/3.0 orCOMM 162/3.0.**Calendar Note**: Also offered online. Consult Arts and Science Online. Learning Hours may vary.**Recommendation**: Some programming experience (such as high-school level programming or CISC 101/3.0 or CISC 110/3.0);see Introductory Courses in Departmental Notes.

Required in all plans. Recommended: CISC 101 or CISC 110 or high-school computing. Prerequisite to CISC 124, CISC 203, CISC 204, CISC 271, CISC 282, CISC 330, CISC 333, CISC 458, COCA 201.

#### Course Learning Outcomes

CLO | Supports PLO(s) |
---|---|

Given a natural language problem description, develop (design, construct, debug and test) simple software in a conventional procedural programming language using an interactive IDE. | 4.3 |

Implement the basic searching and sorting algorithms: linear and binary search; bubble, insertion and/or selection, merge, and quick sort. | 6.1 |

Analyse the worst-case computational complexity of small iterative and recursive programs | 2.1 |

### CISC 124: Introduction to Computing Science II

Introduction to object-oriented design, architecture, and programming. Use of packages, class libraries, and interfaces. Encapsulation and representational abstraction. Inheritance. Polymorphic programming. Exception handling. Iterators. Introduction to a class design notation. Numerical computation. Applications in various areas.

**Learning Hours**: 120 (36L;24Lb;60P)**Prerequisites**: C- in CISC 121/3.0.**Corequisites**: CISC 102/3.0 or MATH 110/6.0 or MATH 111/6.0 or MATH 112/3.0 or MATH 120/6.0 or MATH 121/6.0 orMATH 123/3.0 or MATH 124/3.0 or MATH 126/6.0 or APSC 171/3.0 or APSC 172/3.0 or APSC 174/3.0 or COMM 161/3.0 orCOMM 162/3.0.

Required in all plans. Corequisite to: CISC 220. Prerequisite to: CISC 221, CISC 223, CISC 226, CISC 235, CISC 260, CISC 325, CISC 332, CISC 457.

#### Course Learning Outcomes

CLO | Supports PLO(s) |
---|---|

Design and construct object oriented programs of 500 lines or less, including graphical user interfaces. | 4.3 |

Apply the programming practices of good style, documentation, testing, encapsulation, inheritance. | 4.2, 4.3 |

Show the consequences of numeric representation on computers. | 7.1 |

### CISC 151: Elements of Computing with Data Analytics

Introduction to algorithms: their definition, design, coding, and execution on computers, with applications drawn from data analytics, including simple prediction and clustering. Intended for students who have no programming experience. All or most assignment work will be completed during lab time.

**Learning Hours**: 120 (36L;36Lb;48P)**Exclusion(s)**: (S) APSC 142/3.0; APSC 143/3.0; CISC 101/3.0; CISC 110/3.0ONE-WAY EXCLUSION May not be taken with or after CISC 121/3.0; CISC; SOFT at the 200-level and above.045

#### Course Learning Outcomes

CLO | Supports PLO(s) |
---|---|

Design a computational solution to a problem described in natural language, express the solution in an algorithmic way, and convert the algorithm effectively and intelligibly into a procedural program | |

Properly use modularity, repetition (both counted and unbounded), conditionals, and simple (rectangular) data structures in problem solutions | |

Plan ways to build simple models from data and interpret the meaning of the results |

### CISC 181: Digital Societies

This introductory course provides a broad overview and ethical implications of technological topics and trends in the digital world such as the Internet of Things (IoT), Social Networks, Security and Privacy, Data Analytics, and Artificial Intelligence (AI). No programming experience is required.

**Learning Hours**: 120 (36L;84P)**Equivalency**: CISC P81/3.0

#### Course Learning Outcomes

CLO | Supports PLO(s) |
---|---|

Identify, describe and discuss current and evolving technologies relevant to digital societies | |

Specify how these technologies are or could be used for business and personal use | |

State the impact of these technologies on society | |

Critically analyse these technologies in terms of their legal, ethical and social implications |

### CISC 203: Discrete Mathematics for Computing II

Proof methods. Combinatorics: permutations and combinations, discrete probability, recurrence relations. Graphs and trees. Boolean and abstract algebra.

**Learning Hours**: 120 (36L;84P)**Prerequisites**: Level 2 or above and C- in [CISC 121/3.0 and (CISC 102/3.0 or MATH 110/6.0)].

Required in all plans. Prerequisite to: CISC 235, CISC 322, CISC 330, CISC 365.

#### Course Learning Outcomes

CLO | Supports PLO(s) |
---|---|

Critique and construct moderately sophisticated mathematical arguments such as proof by contradiction, proof by induction, proof by minimal counterexample, counting arguments, and recognition of orderings | 2.2 |

Apply discrete mathematical tools and models such as graph theory, probability, group theory and modular arithmetic to problems such as modelling relational data and networks, scheduling and resource allocation, network design, predicting expected performance, motion planning, cryptography | 2.2 |

Apply basic discrete probability techniques to computational tasks | 2.2 |

Build a foundation for further learning by exposure to multiple computer languages, development tools, and methodologies. | 7.1 |

### CISC/CMPE 204: Logic for Computing Science

Elements of mathematical logic with computing applications. Formal proof systems for propositional and predicate logic. Interpretations, validity, and satisfiability. Introduction to soundness, completeness and decidability.

**Learning Hours**: 120 (36L;84P)**Prerequisites**: Level 2 or above and C- in [CISC 121/3.0 and (CISC 102/3.0 or MATH 110/6.0)].

#### Course Learning Outcomes

CLO | Supports PLO(s) |
---|---|

Construct a syntactic proof as a series of rigorous inference steps in a logical deduction | 1, 2.2 |

Represent logical statements and descriptions declaratively in a logical language | 2.2, 4.1 |

Analyze the semantics of a set of logical statements in a logical framework | 2.2 |

Synthesize a rigorous human-understandable English description of a set of logical statements | 2.2, 5.1 |

### CISC 220: System-Level Programming

Basic concepts of Unix-like systems. Shells and scripting. System-level programming in the C language. Software development tools and techniques.

**Learning Hours**: 120 (36L;84P)**Prerequisites**: Level 2 or above and C- in CISC 121/3.0.**Corequisites**: CISC 124/3.0.

Required in all plans except COGS and COMA. Recommended for: CISC 221, though this isn't currently listed in the Arts and Science Courses of Instruction for 2016-17. Prerequisite to: CISC 320, CISC 326, CISC 327.

#### Course Learning Outcomes

CLO | Supports PLO(s) |
---|---|

Explain the distinctions among operating system kernel, system software, and applications. | 1.2 |

Explain the basics of a Unix-like file system and answer questions about the effects of hard and symbolic links | 1.2 |

Design and construct moderately complex scripts using a Unix-like shell | 4.3 |

Use a Unix or Unix-like command line system to create files and run programs, including the use of multiple processes, pipes and I/O redirection. | |

Write short scripts (up to 30 lines) using a Unix-like shell, including the use of variables, conditionals, loops, arithmetic, pipes and command substitution | |

Design and construct moderately complex software in a second procedural programming language | 4.3 |

Write small C programs (up to 100 lines) including the use of pointers, strings, structs and file I/O | |

Demonstrate good memory management in C programming, avoiding both dangling pointers and memory leaks | |

Make simple use of multiple processes in C programs, including sending and receiving signals | |

Use "make" or a similar tool to build and maintain programs involving multiple modules and scripts | |

Choose suitable software development tools for managing packages, editing text, etc. | |

Build a foundation for further learning by exposure to multiple computer languages, development tools, and methodologies. | 7.1 |

### CISC 221: Computer Architecture

The descriptive levels of computer architecture. Instruction-set architectures. Assembly Language. Data representation. Support for operating-system management and high-level languages. Input/output and interrupts. Designing for performance. Digital Logic.

**Learning Hours**: 120 (12L;24G;84P)**Prerequisites**: Level 2 or above and C- in CISC 124/3.0.**Recommendation**: CISC 220/3.0.

Required in all plans except COCA. Recommended: CISC 220. Prerequisite to: CISC 324, CISC 340, CISC 458.

#### Course Learning Outcomes

CLO | Supports PLO(s) |
---|---|

Create, analyze and debug short C and assembly language programs using Unix (linux) tools | 4.2 |

Identify the equivalence between blocks of assembly language and a higher level procedural language | 1.2 |

Create and/or analyze program segments involving the representation, manipulation, and identification of the limitations of computer data. | 6.1 |

Create and/or analyze program segments focusing on the performance differences of alternative programming choices that are affected by a computer's architecture. | 4.2, 4.3 |

Explain how a computer's hardware resources are managed by the Operating System. | 1.2 |

Discuss and resolve in a team environment, case studies and issues relating to computer architecture and make defensible programming choices to best satisfy given requirements. | 5.1 |

Demonstrate interpersonal and team interaction skills in the development of two team programming projects. | 5.1 |

### CISC/CMPE 223: Software Specifications

Introduction to techniques for specifying the behaviour of software, with applications of these techniques to design, verification and construction of software. Logic-based techniques such as loop invariants and class invariants. Automata and grammar-based techniques, with applications to scanners, parsers, user-interface dialogs and embedded systems. Computability issues in software specifications.

**Learning Hours**: 120 (36L;84P)**Prerequisites**: Level 2 or above and C- in (CISC 124/3.0 and CISC 204/3.0).

Required in all plans except COGS and the Arts General. Prerequisite to: CISC 322, CISC 327, CISC 458, CISC 462, CISC 465.

#### Course Learning Outcomes

CLO | Supports PLO(s) |
---|---|

Design specifications for the functional behaviour of algorithmic code fragments; | 4.1 |

Formally verify the correctness of simple code fragments involving conditional statements and loops using logic based techniques; | 2.1, 4.1 |

Design regular expressions, state transition diagrams and context-free grammars for formal languages; | |

Appraise the limitations of regular expressions and context-free grammars and to demonstrate that a language is nonregular; | 6.1 |

Appraise the limitations of algorithmic computation and prove that the halting problem is unsolvable. | 6.1 |

### CISC 226: Game Design

An introduction to techniques for designing elementary computer games. Topics will include game development tools and processes, principles of game design, game prototyping and game evaluation.

**Learning Hours**: 120 (36L;60G;24P)**Prerequisites**: Level 2 or above and C- in CISC 124/3.0.

Required in SODE (Game Design). Prerequisite to: CISC 486, CISC 496.

#### Course Learning Outcomes

CLO | Supports PLO(s) |
---|---|

Apply a development process to design, evaluate and implement a digital game | 4.3 |

Apply creative techniques for stimulating the generation of game design ideas | |

Perform early-stage evaluation of games using paper prototyping | |

Discuss the elements contributing to the design of a game and use these elements to critique existing designs | |

Discuss controversial aspects of game design such as game addiction and violence in games |

### CISC 235: Data Structures

Design and implementation of advanced data structures and related algorithms, including correctness and complexity analysis.

**Learning Hours**: 120 (36L;84P)**Prerequisites**: Level 2 or above and C- in (CISC 124/3.0 and CISC 203/3.0).046

Required in all plans. Prerequisite to: CISC 320, CISC 322, CISC 324, CISC 325, CISC 326, CISC 352, CISC 365, CISC 432, CISC 452.

#### Course Learning Outcomes

CLO | Supports PLO(s) |
---|---|

Choose among alternative data structures to solve specific data-representation and algorithmic problems. | 2.1, 4.3 |

Be familiar with common data structures, including: trees and graphs; stacks and queues; binary trees; AVL trees; Red-Black Trees; Heaps; Tries; Hash Tables; Bloom Filters; Skip Lists | |

Be familiar with the fundamental algorithms for manipulating these structures | |

Have practical experience implementing these structures | |

Understand the use of complexity analysis to determine which data structure is most efficient and appropriate for use in a particular application | |

Be able to determine the computational complexity for algorithms related to data structures (both upper and lower bounds) |

### CISC 251/CMPE 333: Data Analytics

Introduction to data analytics; data preparation; assessing performance; prediction methods such as decision trees, random forests, support vector machines, neural networks and rules; ensemble methods such as bagging and boosting; clustering techniques such as expectation-maximization, matrix decompositions, and biclustering; attribute selection.

**Learning Hours**: 120 (36l;36Lb;84P)**Exclusion(s)**: (S) CISC 333/3.0; CMPE 333/3.0**Recommendation**: Prior exposure to problem solving in any discipline.

#### Course Learning Outcomes

CLO | Supports PLO(s) |
---|---|

Design inductive model building algorithms appropriate for datasets of moderate size and complexity | |

Evaluate the modelling performance of such algorithms, and the implications for the real-world system that the data describes |

### CISC 260

There is no corresponding calendar entry for this course.

#### Course Learning Outcomes

There are no learning outcomes defined for this course.

### CISC 271: Linear Data Analysis

Elements of linear algebra for data analysis, including: solution of linear equations; vector spaces; matrix decompositions; principal components analysis; linear regression; hyperplane classification of vectorial data.

**Learning Hours**: 120 (36L;84P)**Prerequisites**: Level 2 or above and C- in {[CISC 101/3.0 or CISC 121/3.0] and [MATH 110/6.0 or MATH 111/6.0 or MATH112/3.0] and [MATH 120/6.0 or MATH 121/6.0 or (MATH 123/3.0 and MATH 124/3.0) or MATH 126/6.0]}.**Exclusion(s)**: (S) MATH 272/3.0; PHYS 213/3.0; PHYS 313/3.0.

Required in BMCO. Alternative to CISC 340 in SODE. Prerequisite to: CISC 330, CISC 471.

#### Course Learning Outcomes

CLO | Supports PLO(s) |
---|---|

Select and implement algorithms for vectorial data | |

Synthesize data and solution methods for principal-component analysis | |

Implement, test and evaluate methods for linear regression | |

Interpret and explain methods and solutions in data classification | |

Evaluate and critique performance of algorithms in data classification |

### CISC 282: Fundamentals of Web Development

This course surveys current best practices for implementing attractive, usable, secure and maintainable web applications. Other issues considered include: accessibility, platform and browser independence, licensing of intellectual property, scalability, user privacy, and using web technologies in mobile development.

**Learning Hours**: 120 (36L;48O;36P)**Prerequisites**: Level 2 and C- in CISC 124/3.0.**Equivalency**: CISC P82/3.0.

#### Course Learning Outcomes

CLO | Supports PLO(s) |
---|---|

Write and make available to the public well formulated HTML pages with appropriate styling through CSS | 5.1 |

Identify when it is appropriate to use server-side programming such as PHP and to write simple PHP code to perform some functionality for a web application | 4.2 |

Identify when it is appropriate to use client-side programming such as JavaScript and to write simple JavaScript code to make a web application interactive | 4.2 |

### CISC/CMPE 320: Fundamentals of Software Development

Introduction to management of small and medium-scale software projects. Advanced programming methodology using the programming language C++. Includes a significant programming project.

**Learning Hours**: 120 (36L;24T;24G;36P)**Prerequisites**: Registration in a School of Computing Plan and C- in CISC 235/3.0.

Required in BMCO.

#### Course Learning Outcomes

CLO | Supports PLO(s) |
---|---|

Design and construct medium-sized console and GUI programs in both procedural and object-oriented paradigms. | 4.3 |

Design and construct 500 to 1000 line console and GUI C++ programs using both Object Oriented and procedural C++ code. | |

Contribute to the design and construction of a larger software project as a member of an agile programming team. | 5.1, 7.1 |

Use software engineering techniques and tools to aid in the development of larger scale software projects. | 4.2 |

### CISC/CMPE 322: Software Architecture

Abstractions and patterns of interactions and relationships among modules. Design recovery; relationship of architecture to requirements and testing.

**Learning Hours**: 120 (36L;24T;36G;24P)**Prerequisites**: Registration in a School of Computing Plan and C- in (CISC 223/3.0 and CISC 235/3.0).**Exclusion(s)**: (S) CISC 326/3.0.

Alternative to CISC 326 in the major, COMA, CSCI, and SODE (Software Development). Prerequisite to: CISC 423, CISC 498.

#### Course Learning Outcomes

CLO | Supports PLO(s) |
---|---|

Recognize and describe the various architecture styles and design patterns | |

Analyze the tradeoffs between competing software architecture styles and design patterns | 4.2 |

Recover, document, present, and discuss the architecture of a pre-existing software system using high level diagrams (such as UML and basic box and arrow diagrams). | |

Specify, design and possibly implement a feature in a pre-existing code base. | 4.2 |

Work effectively in a group setting | 7.1 |

### CISC/CMPE 324: Operating Systems

Layered operating systems for conventional shared memory computers: concurrent processes. Synchronization and communication. Concurrent algorithms. Scheduling. Deadlock. Memory management. Protection. File systems. Device management. Typical layers.

**Learning Hours**: 120 (36L;84P)**Prerequisites**: Registration in a School of Computing Plan and C- in (CISC 221/3.0 and CISC 235/3.0).

Required in the major, COMA, CSCI, and SODE. Prerequisite of: CISC 426, CISC 434, CISC 435, CISC 437, CISC 486.

#### Course Learning Outcomes

CLO | Supports PLO(s) |
---|---|

Describe the representation of processes and threads, and the concepts of inter-process communication and synchronization. Assessed on programming assignments. | |

Describe the steps in a context switch: process control blocks, the role of interrupts, the ready queue, CPU scheduling algorithms. Assessment is via short answer questions on assignments and exams. | |

Design, code and analyse concurrent programs using semaphores or monitors, with awareness of pitfalls such as race conditions, deadlock and starvation. Assessment is via programming assignments and programming questions on exams. | 4.2 |

Understand and apply memory management concepts including address spaces, sharing and protection, paging, segmentation, translation lookaside buffer, and page replacement algorithms. Assessment is via short answer questions on assignments and exams. | 1.2 |

Describe organizational principles for operating systems: layers, kernel. Assessment is via short answer questions on assignments and exams. | 1.2 |

Explain how a computer's hardware resources are managed by the Operating System. (Also listed in ) | 1.2 |

### CISC/CMPE 325: Human-Computer Interaction

Developing usable software requires that human factors be considered throughout the design and development process. This course introduces a series of techniques for development and evaluating usable software, and shows how these techniques can be integrated into a process for software development.

**Learning Hours**: 120 (36L;84P)**Prerequisites**: Registration in a School of Computing Plan and C- in (CISC 124/3.0 and CISC 235/3.0).

Required in SODE. Preequisite to: CISC 425, CISC 498. Currently being revised.

#### Course Learning Outcomes

There are no learning outcomes defined for this course.

### CISC/CMPE 326: Game Architecture

An introduction to software architectural design through the application domain of game development. Abstractions and patterns of interactions and relationships among modules. Design recovery. Relationship to requirements and testing

**Learning Hours**: 120 (36L;24T;60P)**Prerequisites**: Registration in a School of Computing Plan and C- in (CISC 223/3.0 and CISC 235/3.0).**Exclusion(s)**: (S) CISC 322/3.0047**Recommendation**: CISC 226/3.0

Required in SODE (Game Design). Alternative to CISC 322 in the major, COMA, CSCI, and SODE (Software Development). Recommended: CISC 226. Prerequisite to: CISC 423, CISC 486, CISC 496, CISC 498.

#### Course Learning Outcomes

CLO | Supports PLO(s) |
---|---|

Describe the various architectural styles and design patterns and analyze tradeoffs among them. | 4.2 |

Specify, design, and possibly implement a feature in a pre-existing code base. | 4.2 |

Work effectively in a group setting. |

### CISC/CMPE 327: Software Quality Assurance

Validation of software throughout the life cycle. Comparative effectiveness in defect removal of formal methods (proofs of correctness), inspection (walkthroughs and reviews), and testing (unit, integration, and system testing; white box versus black box).

**Learning Hours**: 120 (36L;84G)**Prerequisites**: Registration in a School of Computing Plan and C- in (CISC 220/3.0 and CISC 124/3.0).

Required in SODE. Prerrequisite to: CISC 422, CISC 426, CISC 437, CISC 498.

#### Course Learning Outcomes

CLO | Supports PLO(s) |
---|---|

Choose appropriate software process models | 4.3 |

Describe the inspection process, and the advantages of inspection. | |

Compare and contrast different testing methods, including black and white box approaches | 4.3 |

Explain different metrics used to evaluate software complexity | |

Outline and implement quality requirements at different phases of the software life-cycle | 4.1 |

Build a foundation for further learning by exposure to multiple computer languages, development tools, and methodologies. | 7.1 |

### CISC/CMPE 330: Computer-Integrated Surgery

Concepts of computer-integrated surgery systems and underlying techniques such as medical-image computing, robotics, and virtual reality, learned through real-life applications and problems. Techniques learned in class will be applied in a hands-on surgery session where students perform minimally invasive surgery with virtual-reality navigation tools.

**Learning Hours**: 120 (36L;84P)**Prerequisites**: Registration in a School of Computing Plan and C- in (CISC 121/3.0 and CISC 271/3.0).**Exclusion(s)**: (S) COMP 329/3.0; COMP 230/3.0.**Equivalency**: COMP 230/3.0.

Required in BMCO. Prerequisite to: CISC 472.

CISC 330 is designed to introduce the concept of assisting medical interventions by computing; a field in the intersection of computer science, electrical engineering, mechanical engineering, life sciences, and medicine.

Learning outcomes are assessed in assignments and an examination (in-class or take-home), each covering the design, implementation and analysis of system examples derived from real-life medical applications; as well by performance in hands-on laboratory session.

#### Course Learning Outcomes

CLO | Supports PLO(s) |
---|---|

Design and partly implement conputer-integrated surgery systems | 4.4 |

Analyze the mechanism of computer-integrated surgery systems | 1.2 |

Produce high level design of computer-aided surgery systems | 4.2 |

Implement key components in software. |

### CISC/CMPE 332: Database Management Systems

Data models: relational, entity-relationship. Relational query languages: relational algebra and SQL. Relational database design. Application interfaces and embedded SQL. Storage and indexing.

**Learning Hours**: 120 (36L;84P)**Prerequisites**: Registration in a School of Computing Plan and C- in (CISC 124/3.0 and CISC 204/3.0).**Exclusion(s)**: (S) COMM 392/3.0.

Prerequisite to: CISC 432.

#### Course Learning Outcomes

CLO | Supports PLO(s) |
---|---|

Apply database design techniques and tools to create a database schema and database instance for an application. | |

Apply an application design method and development tools to create a web application to support users in querying and manipulating the database for an application. | |

Compose queries on a database in both SQL and the relational algebra. | |

Assess the quality of database schemas and queries. | |

Apply methods to improve the performance and security of a database application. |

### CISC 333

There is no corresponding calendar entry for this course.

#### Course Learning Outcomes

There are no learning outcomes defined for this course.

### CISC 335

There is no corresponding calendar entry for this course.

#### Course Learning Outcomes

CLO | Supports PLO(s) |
---|---|

Perform basic analysis of networking protocols | |

Use inter-process communication to develop networking protocols and applications | |

Design and implement simple communication protocols | |

Critically assess computer networks protocols and their applications |

### CISC 340: Digital Systems

Combinational circuits; sequential circuits; digital systems design; micro-programming; bus structures; data communications; interface design; microprocessor systems.

**Learning Hours**: 120 (12L;24G;84P)**Prerequisites**: Registration in a School of Computing Plan and C- in CISC 221/3.0.

Required in CSCI. Alternative to CISC 271 in SODE.

#### Course Learning Outcomes

CLO | Supports PLO(s) |
---|---|

Design, implement, and verify the operation of simple digital circuits, using manual design, synthesis, and verification methods. | 1.2 |

Model, design, simulate, and verify the operation of digital logic circuits using current EDA (Electronic Design Automation) software tools used by industry. | |

Create a RTLab (Register Transfer Level) design of a complex digital logic function, starting with a model of the functional behaviour of a digital electronic circuit written in a high level programming language and ending with a functioning FPGA (Field Programmable Gate Array). | |

Evaluate and defend design choices relating to the distribution of hardware versus software implementation to satisfy speed, complexity, and labour criteria. | 4.2 |

Interface common sensors, switches, display devices, and servo motors to an embedded processor | 1.2 |

### CISC 351: Advanced Data Analytics

Design and implementation of complex analytics techniques; predictive algorithms at scale; deep learning; clustering at scale; advanced matrix decompositions, analytics in the Web, collaborative filtering; social network analysis; applications in specialized domains.

**Learning Hours**: 120 (36l;36Lb;84P)**Prerequisites**: C- in CISC 251/3.0 and [C- in (3.0 units in STAT or 3.0 units from STAT_Options)].**Exclusion(s)**: (S) CISC 371/3.0; CISC 372/3.0

#### Course Learning Outcomes

CLO | Supports PLO(s) |
---|---|

Design inductive model building algorithms appropriate for datasets of substantial size and complexity with ill-defined requirements | |

Plan ways to collect data, build models, and interpret results in network datasets | |

Evaluate the modelling performance of such algorithms, and the implications for the real-world system that the data describes |

### CISC 352: Artificial Intelligence

An introduction to the basic principles and tools of artificial intelligence. Problem solving methods and knowledge representation techniques.

**Learning Hours**: 120 (36L;84P)**Prerequisites**: Registration in a School of Computing Plan and C- in CISC 235/3.0.**Recommendation**: CISC 360/3.0 or CISC 260/3.0.

Required in BMCO, COCA, and COGS. Recommended: CISC 260. Prerequisite to: CISC 453, CISC 471.

#### Course Learning Outcomes

CLO | Supports PLO(s) |
---|---|

Represent knowledge using state-space search techniques, rules, expert systems, frames, semantic nets, and propositional and first-order predicate logic in order to solve complex problems based on the intelligent behavior of humans and other animals. | 4.1 |

Explain the relationship between probability theory and logic by discussing probabilistic reasoning, with a focus on Bayes� Theorem. | 4.1 |

Apply search to game-playing and to solve Constraint Satisfaction Problems. | 4.3 |

Apply inference and resolution in propositional and first-order predicate logic to prove theorems. | 4.3 |

Apply the intelligent agent paradigm as an underlying model for exploring AI problem domains, tools, and techniques. | 4.3 |

### CISC 360: Programming Paradigms

Review of imperatives programming features. Introduction to other widely used programming paradigms. Functional programming languages, such as LISP and Haskell. Higher order functions, lazy evaluation, abstract and recursive types, structural induction, symbolic expressions. Logic programming languages, such as PROLOG. Operational interpretation of predicates and terms, proof search, unification, backtracking. Typical applications.

**Learning Hours**: 120 (36L;84P)**Prerequisites**: Registration in a School of Computing Plan and C- in (CISC 124/3.0 and CISC 204/3.0).048**Equivalency**: CISC 260/3.0.

Required in all plans except the Arts General. Prerequisite to: CISC 465. Recommended for: CISC 352.

#### Course Learning Outcomes

CLO | Supports PLO(s) |
---|---|

Design and construct simple software in both a functional language and a logic programming language. | 4.3 |

Write short programs (approximately 50 lines) in a functional language such as Haskell or LISP, including the use of recursion, lists, higher-order functions | |

Explain the difference between lazy and eager evaluation | |

Use structural induction to prove simple assertions about functional programs | |

Write short programs (up to 50 lines) in a logical language such as Prolog, including lists, arithmetic, cuts and negation | |

Predict the behavior of small programs written in either paradigm | |

Compare and contrast the imperative, functional and logical paradigms and applications for which each is suited | |

7.1 |

### CISC/CMPE 365: Algorithms I

Principles of design, analysis and implementation of efficient algorithms. Case studies from a variety of areas illustrate divide and conquer methods, the greedy approach, branch and bound algorithms and dynamic programming.

**Learning Hours**: 120 (36L;84P)**Prerequisites**: Registration in a School of Computing Plan and C- in (CISC 203/3.0 and CISC 204/3.0 and CISC 235/3.0).

Required in all honours plans except COGS. Prerequisite to: CISC 466, CISC 497, CISC 499. Recommended for: CISC 462.

#### Course Learning Outcomes

CLO | Supports PLO(s) |
---|---|

Possess a strong understanding of computational complexity, up to and including: Polynomial time Reducibility; classes P and NP; NP-Completeness; Proofs of NP-Completeness | |

Be able to recognize classical NP-Complete problems | 6.1 |

Be able to prove that new problems are NP-Complete using polynomial time reductions from known NP-Complete problems | 6.1 |

Apply key algorithm paradigms, both in the abstract and through concrete examples: Divide and Conquer; Greedy Algorithms; Dynamic Programming; Branch and Bound | 2.1 |

Have some understanding of an advanced topic, which varies from year to year. Recent choices have included: Linear Programming; Computational Geometry; String Matching |

### CISC 371: Nonlinear Optimization

Methods for computational optimization, particularly examining nonlinear functions of vectors. Topics may include: unconstrained optimization; first-order methods; second-order methods; convex problems; equality constraints; inequality constraints; applications in machine learning.

**Learning Hours**: 120 (36L;84P)**Prerequisites**: Registration in a School of Computing Plan and C- in CISC 271/3.0 .**Exclusion(s)**: (S) CISC 351/3.0

#### Course Learning Outcomes

CLO | Supports PLO(s) |
---|---|

Formulate given problems as optimization functions | |

Synthesize data and solution methods for optimization | |

Implement, test and evaluate optimization methods | |

Interpret and explain methods and solutions of given problems | |

Evaluate and critique performance of algorithms |

### CISC 372: Advanced Data Analytics

Inductive modelling of data, especially counting models; ensemble approaches to modelling; maximum likelihood and density-based approaches to clustering, visualization. Applications to non-numeric datasets such as natural language, social networks, Internet search, recommender systems. Introduction to deep learning. Ethics of data analytics

**Learning Hours**: 120 (36L;84P)**Prerequisites**: Registration in a School of Computing Plan and C- in [CISC 371/3.0 and 3.0 units from (STAT orSTAT_Options)].**Exclusion(s)**: (S) CISC 351/3.0

#### Course Learning Outcomes

CLO | Supports PLO(s) |
---|---|

Design inductive model building algorithms appropriate for datasets of substantial size and complexity with ill-defined requirements | |

Plan ways to collect data, build models, and interpret results in non-tabular datasets | |

Evaluate the modelling performance of such algorithms, and the implications for the real-world system that the data describes |

### CISC 422: Formal Methods in Software Engineering

Mathematical methods for describing software behaviour and structure. Topics include (but are not limited to) the following: Requirements specification. Module specification: axiomatic, algebraic, and trace specifications. Abstract models. Verification. Specification-based validation.

**Learning Hours**: 120 (36L;84P)**Prerequisites**: Level 4 and registration in a School of Computing Plan and C- in CISC 223/3.0.

Required in SODE.

#### Course Learning Outcomes

CLO | Supports PLO(s) |
---|---|

Formalize declarative statements in propositional or predicate logic and reason about them by constructing formal proofs manually or with the help of a tool proof assistant tool | 4.1 |

Formalize structural aspects of software systems using relational logic (as offered by the Alloy tool from MIT) and reason about them using a satisfiability checker (as offered by Alloy's analyzer) | 4.1 |

Formalize behavioural aspects of software systems (such as protocols) using NuSMV's language for expressing finite state machines and reason about them using temporal logic and model checking (i.e., exhaustive state space exploration) with the NuSMV model checker. | 4.1 |

Discuss the scope and limitations of propositional logic, predicate logic, relational logic, temporal logic and finite state machines to express software systems and their properties | 6.1 |

Discuss the advantages, disadvantages, and limitations of formal proofs, satisfiability checking, and model checking to analyze software systems | 6.1 |

### CISC 423: Software Requirements

An integrated approach to discovering and documenting software requirements. Identification of stakeholders; customer, operator, analyst, and developer perspectives. Requirements elicitation. Transition from initial (informal) requirements to semi-formal and formal representations. Requirements analysis process; analysis patterns. Requirements specification techniques. Relation to architecture and user interface design; traceability of requirements.

**Learning Hours**: 120 (36L;84P)**Prerequisites**: Registration in a School of Computing Plan and C- in (CISC 322/3.0 or CISC 326/3.0).**Corequisites**: CISC 325/3.0.

Required in SODE.

#### Course Learning Outcomes

CLO | Supports PLO(s) |
---|---|

Explain techniques for eliciting natural language requirements from non-technical clients. | 4.1 |

Analyse natural-language requirements, resolving omissions, ambiguities, and inconsistencies. | |

Identify both direct and indirect stakeholders for a system | |

Elicit requirements information about the system from a variety of sources using a variety of techniques | |

Analyze requirements information for conflict, completeness and consistency | |

Formally model the requirements | |

Prepare validation plans to validate the final product against the requirements | |

Understand how requirements change over time |

### CISC/CMPE 425: Advanced User Interface Design

Advanced user-interface styles such as eye-tracking input, digital desks, wearable computing, ubiquitous and context-aware computing, and tangible interfaces.

**Learning Hours**: 120 (36L;84P)**Prerequisites**: Registration in a School of Computing Plan and (C- in CISC 325/3.0) or permission of the School.

#### Course Learning Outcomes

There are no learning outcomes defined for this course.

### CISC 426: Real-Time Systems

Design and implementation of real-time embedded applications. Specifying timing properties: formal and semi-formal methods; soft real-time versus hard real-time. Design notations; language constructs. Real-time operating systems. Abstract device interfaces.

**Prerequisites**: Registration in a School of Computing Plan and C- in (CISC 324/3.0 and CISC 327/3.0).

#### Course Learning Outcomes

There are no learning outcomes defined for this course.

### CISC/CMPE 432: Advanced Data Management Systems

Storage and representation of �big data�, which are large, complex, structured or unstructured data sets. Provenance, curation, integration, indexing and querying of data.

**Learning Hours**: 120 (36L;84P)**Prerequisites**: Registration in a School of Computing Plan and C- in (CISC 235/3.0 and CISC 332/3.0).049

#### Course Learning Outcomes

CLO | Supports PLO(s) |
---|---|

Create distributed storage structures for complex datasets | |

Organize, integrate and process data from distributed storage systems | |

Create metadata for complex datasets. | |

Articulate issues in data provenance and curation | |

Build workflows and query the results |

### CISC/CMPE 434: Distributed Systems

Distributed systems goals, characteristics, and architectures. Processes: models, inter-process communication and coordination. Name services. Consistency and replication. Fault tolerance: design for reliable communication and recovery. Security. Development paradigms based on data types: object, file, and web-based systems.

**Learning Hours**: 120 (36L;84P)**Prerequisites**: Registration in a School of Computing Plan and C- in CISC 324/3.0.

This course needs all the learning outcomes from its prerequisite.

#### Course Learning Outcomes

There are no learning outcomes defined for this course.

### CISC 435: Computer Communications and Networks

Fundamental concepts in the design and implementation of computer communication networks, protocols, and applications. Overview of network architectures; applications; network programming interfaces (e.g., sockets); transport; congestion; routing and data link protocols; addressing; local area networks; wireless networks, mobility management; security.

**Learning Hours**: 120 (36L;84P)**Prerequisites**: Registration in a School of Computing Plan and C- in CISC 324/3.0.

#### Course Learning Outcomes

There are no learning outcomes defined for this course.

### CISC 437: Performance Analysis

Analytic and empirical evaluation of the performance of software systems. Performance modeling. Experimental design and statistical techniques for empirical performance analysis.

**Learning Hours**: 120 (36L;84P)**Prerequisites**: Registration in a School of Computing Plan and C- in (CISC 324/3.0 and CISC 327/3.0).

#### Course Learning Outcomes

There are no learning outcomes defined for this course.

### CISC 447

There is no corresponding calendar entry for this course.

#### Course Learning Outcomes

CLO | Supports PLO(s) |
---|---|

Design cybersecurity attacks and defences for systems and networks | |

Analyse the threat surface of a computer system or network, and design remediation mechanisms that will be effective | |

Discuss the relationship between cybersecurity issues and wider human factors, social, political and legal frameworks |

### CISC 448

There is no corresponding calendar entry for this course.

#### Course Learning Outcomes

CLO | Supports PLO(s) |
---|---|

Assess, prevent, and predict failures in sample software | |

Identify and mitigate security properties of software | |

Design, implement, and maintain failure-free software | |

Design and implement security-aware software |

### CISC 451: Topics in Data Analytics

Content will vary from year to year; typical areas covered may include: tools for large scale data analytics (Hadoop, Spark), data analytics in the cloud, properties of large scale social networks, applications of data analytics in security.

**Learning Hours**: 120 (36l;36Lb;48P)**Prerequisites**: C- in (CISC 333/3.0 or CISC 351/3.0 or CISC 372/3.0).

#### Course Learning Outcomes

CLO | Supports PLO(s) |
---|---|

Design inductive model building algorithms appropriate for of any scale and complexity, using cutting edge technologies | |

Plan ways to collect data, build models, and interpret results in large distributed (cloud) datasets | |

Evaluate the modelling performance of such algorithms, and the implications for real-world system that the data describes |

### CISC/CMPE 452: Neural and Genetic Computing

Introduction to neural and genetic computing. Topics include associative memory systems, neural optimization strategies, supervised and unsupervised classification networks, genetic algorithms, genetic and evolutionary programming. Applications are examined, and the relation to biologic systems is discussed.

**Learning Hours**: 120 (36L;84P)**Prerequisites**: Registration in a School of Computing Plan and C- in CISC 235/3.0.**Exclusion(s)**: (S) COGS 400/3.0

This course is identical to COGS 400.

#### Course Learning Outcomes

CLO | Supports PLO(s) |
---|---|

Explain the concepts behind the operation of biological neurons and the evolution of artifical neural network (ANN) to model connections as a representation of information. | 4.5, 1.1, 1.3 |

Design and implement different types of ANNs using a variety of design techniques and learning algorithms for prediction, clustering, classification, storage, and function approximation | 2.1, 4.2, 4.3 |

Apply optimization techniques such as simulated annealing and genetic algorithms with ANN training algorithms | 4.2 |

Describe with reference to recent research work how ANNs are used to simulate human cognition, vison, and memory, and are applied to intelligent systmes for language and image processing, decision support systems, and predictive systems. | 5.1, 7.1 |

Explain the power and limitations of neural network systems. | 6.1 |

### CISC 453: Topics in Artificial Intelligence

Investigation of selected areas of artificial intelligence research. Possible topics include natural language understanding, computational perception, planning, learning, and neurocomputing.

**Learning Hours**: 120 (36L;84P)**Prerequisites**: Registration in a School of Computing Plan and C- in CISC 352/3.0.**Exclusion(s)**: (S) CISC 474/3.0

#### Course Learning Outcomes

CLO | Supports PLO(s) |
---|---|

Apply artificial intelligence techniques to planning and reasoning problems. | 4.5 |

Explain systems for reasoning over categories and with default information | |

Identify representation and reasoning techniques associated with probability models | |

Employ the full joint distribution for inference and explore the inferential advantages of knowledge of independence | |

Apply Bayes' rule to calculate diagnostic probabilities from known causal relationships, and use Bayesian networks for exact and approximate inference | |

Select, research, and present an advanced topic from among possibilities in Decision Making, Learning, Natural Language, Perception | |

Research, and present an advanced topic in artificial intelligence. | 5.1 |

Formulate classical planning problems as state space search using PDDLabaction schemas | 4.1 |

Identify complexity controlling heuristics, developing them from a planning graph formulation | |

Generalize classical planning problems to propositional logic, constraint satisfaction and first-order logic formulations | |

Investigate relaxation of classical planning assumptions, including: time and resource constraints; limited observability; non-determinism in a Job Shop Scheduling paradigm | |

Analyse efficiency gains through hierarchical planning approaches | |

Summarize variations on multiactor planning scenarios, exploring related tools and techniques | |

Extrapolate the knowledge engineering approach to include ontological issues - represent and manipulate hierarchical category representations, event calculus, modal logic for mental events and objects |

### CISC/CMPE 454: Computer Graphics

Introduction to computer graphics, including a review of current hardware; modelling and transformations in two and three dimensions; visual realism: perspective, hidden surface elimination, and shading; colour models; applications in several fields.

**Learning Hours**: 120 (36L;84P)**Prerequisites**: Level 3 or above and registration in a School of Computing Plan and C- in [CISC 235/3.0 and (MATH 110/6.0or MATH 111/6.0 or MATH 112/3.0)].

#### Course Learning Outcomes

There are no learning outcomes defined for this course.

### CISC 455: Evolutionary Optimization and Learning

Building, applying and studying algorithms based on the Darwinian principles of natural evolution. A creative approach to AI able to create novel solutions. Genetic algorithms, evolution strategies, and genetic programming. Application to optimization and learning problems.

**Prerequisites**: C- in (CISC 365 and STAT263) and registration in a Computing plan

#### Course Learning Outcomes

CLO | Supports PLO(s) |
---|---|

Apply evolutionary concepts to continuous optimization problems | 2.2 |

Evaluate and choose among evolutionary computing solutions for combinatorial optimization problems | 2.1, 2.2 |

Formulate and implement evolutionary algorithms for under-specified problems | 2.1, 4.2 |

Present and defend designs of evolutionary algorithms | 5.1 |

Justify limitations of evolutionary concepts | 6.1 |

### CISC/CMPE 457: Image Processing and Computer Vision

Introduction to fundamental concepts and applications in image processing and computer vision. Topics include image acquisition, convolution, Discrete Fourier Transform, image enhancement, edge detection, segmentation, image registration, human contrast perception, colour perception and reproduction, stereo vision.

**Learning Hours**: 120 (36L;84P)**Prerequisites**: Registration in a School of Computing Plan and C- in [(MATH 110/6.0 or MATH 111/6.0 or MATH 112/3.0)and (MATH 120/6.0 or MATH 121/6.0 or MATH 123/3.0 or MATH 124/3.0 or MATH 126/6.0) and CISC 124/3.0].050

#### Course Learning Outcomes

There are no learning outcomes defined for this course.

### CISC/CMPE 458: Programming Language Processors

Introduction to the systematic construction of a compiler: grammars and languages, scanners, top-down and bottom-up parsing, runtime organization, symbol tables, internal representations; Polish notation, syntax trees, semantic routines, storage allocation, code generation, interpreters.

**Learning Hours**: 120 (36L;36Lb;48G)**Prerequisites**: Registration in a School of Computing Plan and C- in (CISC 121/3.0 and CISC 221/3.0 and CISC 223/3.0).

#### Course Learning Outcomes

CLO | Supports PLO(s) |
---|---|

Use real software engineering tools to maintain and enhance existing software systems. | |

Apply component-based software engineering and table-driven programming to multi-phase software systems. | |

Follow standard practices for software quality assurance and testing in a small-team project. | |

Employ domain-specfic languages and model-driven engineering to develop software. |

### CISC 462: Computability and Complexity

Turing machines and other models of computability such as �-recursive functions and random-access machines. Undecidability. Recursive and recursively enumerable sets. Church-Turing thesis. Resource-bounded complexity. Complexity comparisons among computational models. Reductions. Complete problems for complexity classes.

**Learning Hours**: 120 (36L;84P)**Prerequisites**: Registration in a School of Computing Plan and C- in CISC 223/3.0.**Recommendation**: CISC 365/3.0.

#### Course Learning Outcomes

CLO | Supports PLO(s) |
---|---|

Use diagonalization to prove undecidability | |

Use informal and formal reductions to establish algorithmic unsolvability | |

Appraise the complexity difference between finding a solution to an algorithmic problem and verifying a solution to an algorithmic problem | |

Use mapping reductions to establish hardness of computational problems | |

Use hierarchy theorems to establish separation between complexity classes |

### CISC 465: Semantics of Programming Languages

Specifying syntax and semantics; operational and denotational semantics. Lambda calculi, type systems and logical foundations. Meta-theoretic properties. Semantics of imperative languages.

**Learning Hours**: 120 (36L;84P)**Prerequisites**: Registration in a School of Computing Plan and C- in [CISC 204/3.0 and CISC 223/3.0 and (CISC 360/3.0 orCISC 260/3.0)].

#### Course Learning Outcomes

CLO | Supports PLO(s) |
---|---|

Interpret and modify syntactic descriptions of programming languages. | |

Interpret, modify and create rules for programming language semantics. | |

Demonstrate connections between semantics and logics. | |

Explain and extend standard proofs of meta-theoretic properties such as type preservation and progress. |

### CISC 466: Algorithms II

A continuation of CISC 365/3.0. Lower bound theory. Average-case analysis of algorithms. Approximation algorithms. Probabilistic algorithms. Parallel algorithms.

**Learning Hours**: 120 (36L;84P)**Prerequisites**: Registration in a School of Computing Plan and C- in CISC 365/3.0.

#### Course Learning Outcomes

There are no learning outcomes defined for this course.

### CISC 467: Fuzzy Logic

History of fuzzy theory; fundamental concepts of fuzzy theory: sets, relations, and logic operators. Approximate reasoning, fuzzy inference, possibility theory. Separation from probability. Fuzzy control systems. Fuzzy pattern recognition. Advanced topics may include fuzzy expert systems, financial systems, graph theory, optimization.

**Learning Hours**: 120 (36L;84P)**Prerequisites**: Level 4 and registration in a BCMP or COCA Plan and C- in CISC 204/3.0.

#### Course Learning Outcomes

CLO | Supports PLO(s) |
---|---|

Identify problems where fuzzy logic is an appropriate solution paradigm | |

Design fuzzy-logic based algorithms, including fuzzification and de-fuzzification phases | |

Determine appropriate t-norm, s-norm and negation operators for fuzzy algorithms | |

Determine appropriate fuzzy implication operators for fuzzy algorithms | |

Implement a fuzzy-logic based system |

### CISC 468: Cryptography

Fundamentals of cryptographic algorithms: secure pseudorandom number generators, hash functions, symmetric-key cryptography (stream ciphers, block ciphers); public-key cryptography (encryption and decryption, digital signatures, key agreement). Applications of cryptography to secure communication protocols and systems.

**Learning Hours**: 120 (36L;84P)**Prerequisites**: C- in (CISC 235 and CISC 335), and registration in a School of Computing plan

#### Course Learning Outcomes

CLO | Supports PLO(s) |
---|---|

Describe underlying mathematical concepts and properties of modern cryptographic algorithms and describe their limitations. | 2.2, 6.1 |

Critically evaluate the use of cryptographic algorithms in real-world computer protocols and systems to determine security objectives achieved. | 4.3, 5.1 |

Demonstrate practical attacks to break vulnerable applications of cryptographic algorithms. | 4.2, 5.1, 6.1 |

### CISC/CMPE 471: Computational Biology

Advanced computational approaches to the problems in molecular biology. Techniques and algorithms for sequence analysis and alignment; molecular databases; protein structure prediction and molecular data mining.

**Learning Hours**: 120 (36L;84P)**Prerequisites**: Registration in a School of Computing Plan and C- in [CISC 271/3.0 and CISC 352/3.0 and CISC 365/3.0]

Required in BMCO.

#### Course Learning Outcomes

CLO | Supports PLO(s) |
---|---|

Describe state-of-the-art algorithms in Bioinformatics with emphasis on the strengths and limitations of these techniques. | 4.4 |

Distill information provided by a biologist and discern appropriate and effective algorithmic solutions. | 4.4 |

Critically assess an algorithm for its correctness and efficiency, and argue about the algorithms correctness, performance bounds, and approximation ratio as appropriate. | |

Make sensible pragmatic algorithmic choices of standard packages or implementations for specific applications. | 4.3 |

### CISC/CMPE 472: Medical Informatics

Current topics in the application of information technology to medical image computing and its use in image-guided medical interventions.

**Learning Hours**: 120 (36L;84P)**Prerequisites**: Registration in a School of Computing Plan and C- in CISC 330/3.0.

Required in BMCO.

#### Course Learning Outcomes

CLO | Supports PLO(s) |
---|---|

Analyze the inner workings of medical image manipulation and registration methods for use in image-guided computer-assisted intervention systems. | |

Design solutions in which modern information technology is used to solve applied problems in the medical field. | 4.4 |

Analyze the specifics and limitations of dataflow in a medical environment, especially in the area of medical image analysis. | |

Design and develop basic medical image analysis and image registration methods for use in typical computer-assisted surgery and intervention applications. | 4.3 |

### CISC 473: Deep Learning

Design of deep neural networks based on leading-edge algorithms such as Restricted Boltzmann Machines, Recurrent Neural Networks, Convolutional Neural Networks, Long-Short Term Machines. Autoencoding as a clustering technique. Applications to prediction problems in natural language and images.

**Learning Hours**: 120 (36L;84P)**Prerequisites**: Registration in a School of Computing Plan and C- in CISC 371/3.0.051

#### Course Learning Outcomes

CLO | Supports PLO(s) |
---|---|

Design deep neural network predictive and clustering algorithms appropriate for natural language and image datasets of substantial size and complexity | |

Evaluate the performance of such algorithms, and the implications for the real-world systems that the data describes |

### CISC 474: Reinforcement Learning

Formal and heuristic approaches to problem-solving, planning, knowledge representation and reasoning, Markov decision processes, dynamic programming, temporal-difference learning, Monte Carlo learning, function approximation, integration of learning and planning. Implementing simple examples of logical reasoning, clustering or classification.

**Learning Hours**: 120 (36L;12G;72P)**Prerequisites**: Registration in a School of Computing Plan and C- in CISC 352/3.0.**Exclusion(s)**: (S) CISC 453/3.0.

#### Course Learning Outcomes

CLO | Supports PLO(s) |
---|---|

Understand the fundamental concepts of reinforcement learning. | |

Apply optimization techniques to reinforcement learning. | |

Explain applications of RL in AI. | |

Implement RL for applications in AI, game and robotics. | |

Understand concepts of deep RL. |

### CISC 481

There is no corresponding calendar entry for this course.

We have not offered this course for many years.

#### Course Learning Outcomes

There are no learning outcomes defined for this course.

### CISC 486: Game Development

An introduction to 'engines' used in networked 3-dimensional games. Topics include game-engine architecture and components providing 3-dimensional rendering, physics simulation, sound, artificial intelligence and networking services.

**Learning Hours**: 120 (36L;15G;69P)**Prerequisites**: Registration in a School of Computing Plan and C- in [CISC 226/3.0 and (CISC 322/3.0 or CISC 326/3.0) andCISC 324/3.0 and (MATH 110/6.0 or MATH 111/6.0 or MATH 112/3.0)].

Required in SODE (Game Design).

#### Course Learning Outcomes

CLO | Supports PLO(s) |
---|---|

Develop a simple game engine | |

Design the software architecture of a game engine | |

Develop engine-level algorithms supporting artificial intelligence in games | |

Develop engine-level algorithms supporting networking in games | |

Develop engine-level algorithms supporting physics in games |

### CISC 490: Topics in Computing Science I

Content varies. Not offered every year.

**Prerequisites**: Registration in a School of Computing Plan and permission of the instructor.**Calendar Note**: Learning Hours will vary.

#### Course Learning Outcomes

There are no learning outcomes defined for this course.

### CISC 491: Topics in Computing Science II

Content varies. Not offered every year.

**Prerequisites**: Registration in a School of Computing Plan and permission of the instructor.**Calendar Note**: Learning Hours will vary.

#### Course Learning Outcomes

There are no learning outcomes defined for this course.

### CISC 492: Topics in Computing Science III

Content varies. Not offered every year.

**Prerequisites**: Registration in a School of Computing Plan and permission of the instructor.**Calendar Note**: Learning Hours will vary.

#### Course Learning Outcomes

There are no learning outcomes defined for this course.

### CISC 496: Game Development Project

Team-based project involving the development of a game using modern tools and software engineering techniques.

**Learning Hours**: 129 (9L;120G)**Prerequisites**: Level 4 and registration in a School of Computing Plan and a GPA of 1.90 and C- in [CISC 226/3.0 and (CISC 326/3.0 or COCA 201/3.0)] or permission of the School of Computing.**Exclusion(s)**: (S) CISC 499/3.0; CISC 500/6.0; COGS 499/3.0

Required in SODE (Game Design).

#### Course Learning Outcomes

CLO | Supports PLO(s) |
---|---|

Design and implement a game | 4.3 |

Collaborate and communicate with colleagues to cooperatively develop a substantial software system. | 5.1, 7.1 |

Schedule intermediate milestones to plan and track progress through the development process. | 7.1 |

### CISC 497: Social, Ethical and Legal Issues in Computing

A wide range of topics of current importance in computing, including technical issues, professional questions, and moral and ethical decisions. Students make presentations, deliver papers, and engage in discussion.

**Learning Hours**: 120 (36S;84P)**Prerequisites**: Level 4 and registration in a COMP Major or Specialization Plan and a GPA of 1.90 and a GPA of 2.60 inCISC; COCA; COGS; SOFT and 30.0 units of CISC; COCA; COGS; SOFT and C- in (CISC 352/3.0 or CISC 365/3.0).

Required in all honours plans except COCA and COGS.

The prerequisites are the closest SOLUS could check for "successful completion of 3rd year" and "admission to honours."

#### Course Learning Outcomes

CLO | Supports PLO(s) |
---|---|

Critically analyse legal, ethical and social issues related to computing | 4.2 |

Evaluate information as a guide to beliefs and action | |

Explain cogently their position with regard to any legal, ethical or social issues | 5.1 |

Communicate effectively in writing, discussing, and presenting | 5.1 |

Evaluate social, ethical, and legal issues in computing using ethical systems and professional codes of conduct | 7.1 |

### CISC 498: Information Technology Project

Topic selected under the supervision of a faculty member. Emphasis is on the application of software engineering techniques to the development of a substantial software system. Group work, oral presentation, participation in design and code review meetings, and delivery of complete software specification and design are required.

**Learning Hours**: 258 (18S;240G)**Prerequisites**: Level 4 and registration in a SODE Specialization Plan and a GPA of 1.90 and a GPA of 2.60 in CISC; COCA;COGS; SOFT and 30.0 units in CISC; COCA; COGS; SOFT and [C- in (CISC 322/3.0 or CISC 326/3.0) and (CISC 325/3.0 or CISC 327/3.0)].**Exclusion(s)**: (S) CISC 499/3.0; CISC 496/.30052

Required in SODE (Software Development) except for internships.

#### Course Learning Outcomes

CLO | Supports PLO(s) |
---|---|

Collaborate and communicate with colleagues to cooperatively develop a substantial software system. | 5.1, 7.1 |

Elicit and document customer requirements and develop external interfaces that satisfy them. | 4.1 |

Apply software architecture principles to divide the system into modules. | |

Implement, validate, and deploy software in a form useful to the customer. | |

Schedule intermediate milestones to plan and track progress through the development process. | 7.1 |

### CISC 499: Advanced Undergraduate Project

Topic selected under the supervision of a faculty member. Emphasis may be on the development of a large program, or on more theoretical issues. Independent research, an oral presentation, and a written report are required.

**Learning Hours**: 120 (120P)**Prerequisites**: Level 4 and registration in a COMP Major or BMCO or COMA or CSCI Specialization Plan and a GPA of 1.90and a GPA of 2.60 in CISC; COCA; COGS; SOFT and 30.0 units in CISC; COCA; COGS; SOFT and C- in CISC 365/3.0.**Exclusion(s)**: (S) CISC 496/3.0; CISC 498/6.0; COGS 499/3.0; CISC 500/6.0

Required in the major, BMCO, COMA, and CSCI except for internships.

#### Course Learning Outcomes

CLO | Supports PLO(s) |
---|---|

Demonstrate the potential for independent research and/or development via a term-long project under the supervision of a faculty member. | 7.1 |

Describe the process and results of their independent project via a written report. | 5.1 |

Summarize the key ideas of their independent project via an oral or poster presentation. | 5.1 |

7.1 |

### CISC 500: Undergraduate Thesis

Individual research project under the supervision of a School of Computing faculty member. Evaluation is based on an oral presentation and a written thesis. It is the responsibility of the student to make a research proposal and secure a supervisor prior to enrolling in the course.

**Learning Hours**: 240 (24I;216P)**Prerequisites**: Permission of the Department. Minimum cumulative GPA of 3.5 and Level 4 and registration in a COMPMajor or BMCO, COGS, COMA, CSCI, or SODE specialization plan.**Exclusion(s)**: (S) CISC 496/3.0; CISC 499/3.0; COGS 499/3.0053

#### Course Learning Outcomes

CLO | Supports PLO(s) |
---|---|

Demonstrate the potential for independent research via a two-term research project under the supervision of a faculty member. | |

Describe the process and results of their independent project via a written dissertation. | |

Summarize the key ideas of their independent project via an oral presentation. |

### CISC P82

There is no corresponding calendar entry for this course.

#### Course Learning Outcomes

There are no learning outcomes defined for this course.

## COCA Courses

### COCA 201: Introduction to Computing and the Creative Arts

A multidisciplinary studio-oriented overview of computer-based applications in Art, Music, Drama and Film. History of human-computer interaction. Critical and philosophical issues. Animation. Virtual reality. Computer-aided design. Computer games. Enrolment is limited.

**Learning Hours**: 120 (36L;84P)**Prerequisites**: Level 2 or above and (C- in 6.0 units in ARTF or ARTH or DRAM or FILM or MUSC at the 100-level.**Corequisites**: CISC 101/3.0 or CISC 110/3.0 or CISC 121/3.0 or CISC 151, or APSC 142 or APSC 143 or permission of theSchool of Computing.060

#### Course Learning Outcomes

CLO | Supports PLO(s) |
---|---|

Schedule intermediate milestones to plan and track progress through the development process. | 7.1 |

Design real-time interactive algorithms for user input and output. | 2.1 |

Identify user requirements for an interactive art exhibit. | 4.1 |

Communicate non-verbally with the user through the exhibit | 5.1 |

Design, implement, and critically evaluate an electronic art exhibit. | 4.2 |

Design and construct simple real-time software and hardware systems for an effective interactive electronic arts exhibit | 4.3 |

Understand the limitations of communication with participants through art exhibits | 6.1 |

Enable effective shifting of perspective by users interactive with the art piece. | 6.1 |

Understand the role of unpredictability in user input/output; particularly as it relates to artistic concept of discovery | 6.1 |

Understand limitations of real-time and of interactive systems. | 6.1 |

## COGS Courses

### COGS 100: Introduction to Cognitive Science

A multidisciplinary approach to the study of the mind combining approached from philosophy, psychology, linguistics, neuroscience, anthropology, and artificial intelligence. Logic, rules, concepts, and other mental representations used to generate thought and behaviour. Implementation of computational and cognitive models of mental processes.

**Learning Hours**: 120 (36L;84P)**Calendar Note**: Also offered online. Consult Arts and Science Online. Learning Hours may vary.

#### Course Learning Outcomes

CLO | Supports PLO(s) |
---|---|

Identify cognitive science as an interdisciplnary paradigm of study of cross-cutting areas such as Philosophy, Psychology, Neuroscience, Linguistics, Anthropology, and Artificial Intelligence | 4.5, 1.1, 1.3 |

Explain various processes of the mind such as memory and attention, as well as representational and modeling techniques that are used to build computational models of mental processes. | |

Illustrate cognitive models such as IAM and modeling techniques such as logic programs and neural networks. | |

Design simple automata and develop logical deductions for problem solving that serve as the foundation of intelligent computer programs such as natural language processing applications (e.g. ALICE and ELIZA). | |

Read, understand, and summarize scientific articles in the different related areas of Cognitive Science | |

Collaborate, communicate, and negotiate with peers as a team to produce a joint outcome. | 5.1 |

### COGS 201: Cognition and Computation

Introduction to the computational aspects of the mind. Implementation of computer programs for reasoning, decision making, and problem solving to understand these mental processes. Information theory and behaviourism; computational models of cognition, perception and memory processes demonstrating modeling approaches, and cognitive architectures.

**Learning Hours**: 120 (36L;84P)**Prerequisites**: Level 2 or above and a minimum grade of a C- (obtained in any term) or a 'Pass' (obtained in Winter 2020) in (COGS 100 or PSYC 100)**Exclusion(s)**: COGS 200; PSYC 220

Some programming experience can be helpful (such as CISC 101).

#### Course Learning Outcomes

CLO | Supports PLO(s) |
---|---|

Illustrate theory of cognition through computational aspects such as logic propositions, reasoning, constraint satisfaction, information theory, and observable quantitative behavioural measures. | 4.5, 1.1, 1.3 |

Explain the two main modeling approaches: the physical symbol systems and artificial neural networks. | 4.5 |

Implement simple logic programs as physical symbol systems to simuilate human cognition and thought process in the areas of problem solving, language, and decision making | 4.5, 2.1 |

Collaborate with peers to summarize and present research papers on major cognitive architectures used for modeling human cognitive processes. | 5.1, 6.1 |

### COGS 300: Programming Cognitive Models

Importance and challenges of building cognitive models; steps of model building, programming simple models using computational and statistical techniques and tools such as Matlab. Recent models from research publications.

**Learning Hours**: 120 (36L;84P)**Prerequisites**: A minimum grade of a C- (obtained in any term) or a 'Pass' (obtained in Winter 2020) in ([COGS 201 or PSYC 221] and [PSYC 202 or STAT_Options])

Alternative prerequisite to: CISC 497.

#### Course Learning Outcomes

CLO | Supports PLO(s) |
---|---|

Explain the challenges in model building, identifying the parameters, refining and cleaning the data, developing the numerical model to suport the theoretical concepts, calculating errors and measuring the fitness, and optimizing and refining the model. | 1.1, 2.1 |

Apply a variety of mathematical modeling and optimization techniques to build or extend and optimize simple quantitative models of human cognition based on a given dataset. | 4.5, 2.2 |

Implement or extend some well-known cognitive model in parts and compare the results with expected outcomes using different programming tools and languages. | 4.5 |

Summarize and present both well reputed and recent cognitive models from the literature with a primary focus on the modeling techniques. | 6.1, 7.1 |

### COGS 400: Neural and Genetic Cognitive Models

Artificial Neural Networks (ANN) and Genetic Algorithms (GA) for problem solving and prediction tasks such as classification, clustering, optimization and data reduction and modeling human cognition, with application to real world problems. Ongoing research in this area in various application domains.

**Learning Hours**: 120 (36L;84P)**Prerequisites**: Registration in a COGS Plan and a minimum grade of a C- (obtained in any term) or a 'Pass' (obtained in Winter 2020) in (CISC 235 or ELEC 278)**Exclusion(s)**: CISC 452; CMPE 452

#### Course Learning Outcomes

CLO | Supports PLO(s) |
---|---|

Explain the concepts behind the operation of biological neurons and the evolution of artifical neural network (ANN) to model connections as a representation of information. | 4.5, 1.1, 1.3 |

Design and implement different types of ANNs using a variety of design techniques and learning algorithms for prediction, clustering, classification, storage, and function approximation | 2.1, 4.2, 4.3 |

Apply optimization techniques such as simulated annealing and genetic algorithms with ANN training algorithms | 4.2 |

Describe with reference to recent research work how ANNs are used to simulate human cognition, vison, and memory, and are applied to intelligent systmes for language and image processing, decision support systems, and predictive systems. | 5.1, 7.1 |

Explain the power and limitations of neural network systems. | 6.1 |

### COGS 499: Advanced Undergraduate Project

Topic selected under the supervision of a member of one of the faculties of CISC, LING, PHIL, PSYC. Emphasis may be on experimental, theoretical, or computer implementation topics. Independent research, an oral presentation, and a written report are required.

**Prerequisites**: Level 4 or above and registration in a COGS Specialization Plan and a cumulative GPA of 1.90 or higher and a (GPA of 2.60 in CISC; COCA; COGS; SOFT) and (30.0 units in CISC; COCA; COGS; SOFT) and a minimum grade of a C- (obtained in any term) or a 'Pass' (obtained in Winter 2020) in (CISC 352 or CISC 365)**Exclusion(s)**: CISC 499; CISC 500

Topic selected under the supervision of a CISC, LING, PHIL, or PSYC faculty member. Emphasis may be on the development of a large program, or on more theoretical issues.

#### Course Learning Outcomes

CLO | Supports PLO(s) |
---|---|

Demonstrate the potential for independent research and/or development via a term-long project under the supervision of a faculty member. | 7.1 |

Describe the process and results of their project via a written report. | 5.1 |

Summarize the key ideas of their project via an oral or poster presentation. | 5.1 |

## COMP Courses

### COMP 329: Introduction to Computer-Integrated Surgery

An introduction to concepts and novel technologies used in computer-integrated surgery, including image based navigation, medical robotics and virtual reality. Concepts and techniques learned in class will be applied in a hands-on surgery session where students perform minimally invasive surgery with virtual-reality navigation tools.

**Learning Hours**: 120 (36L;84P)**Prerequisites**: Level 2 or above.EXLUSION(s) CISC 330/3.0; COMP 230/3.0.**Calendar Note**: MATH P06/3.0 or one Mathematics 4U level course is required. Not available for credit towards a BCMP/BCMPH program. Computing students should take CISC 330/3.0.

#### Course Learning Outcomes

There are no learning outcomes defined for this course.

### COMP 390: Computing Internship I

A Computing Internship involves spending twelve to sixteen months in a paid internship position in the private or public sectors. Students in a 12-month internship register in COMP 390/6.0 and either COMP 391/3.0 or COMP 392/3.0, or all of COMP 393/3.0, COMP 391/3.0 and COMP 392/3.0. Students in a 16-month internship register in COMP 390/6.0, COMP 391/3.0 and COMP 392/3.0. The Internship Coordinator must be satisfied that the work carried out has educational merit. Successful completion of the course requires submission of a satisfactory report on the experience within thirty days of completion of the work period. The Internship Coordinator is responsible for evaluating the report. The QUIP program includes prior workshops on interviewing, résumé preparation and work performance. Career Services manages the non- academic aspects of the program.

**Prerequisites**: GPA of 1.90 and Level 2 or 3 and registration in a Bachelor of Computing internship plan (BMCO-I-BCH orCOGS-I-BCH or COMA-I-BCH or COMP-I-BCH or CSCI-I-BCH or SODE-I-BCH).

#### Course Learning Outcomes

There are no learning outcomes defined for this course.

### COMP 391: Computing Internship II

A Computing Internship involves spending twelve to sixteen months in a paid internship position in the private or public sectors. Students in a 12-month internship register in COMP 390/6.0 and either COMP 391/3.0 or COMP 392/3.0, or all of COMP 393/3.0, COMP 391/3.0 and COMP 392/3.0. Students in a 16-month internship register in COMP 390/6.0, COMP 391/3.0 and COMP 392/3.0. The Internship Coordinator must be satisfied that the work carried out has educational merit. Successful completion of the course requires submission of a satisfactory report on the experience within thirty days of completion of the work period. The Internship Coordinator is responsible for evaluating the report. The QUIP program includes prior workshops on interviewing, résumé preparation and work performance. Career Services manages the non- academic aspects of the program.

**Prerequisites**: GPA of 1.90 and Level 2 or 3 and registration in a Bachelor of Computing internship plan (BMCO-I-BCH orCOGS-I-BCH or COMP-I-BCH or CSCI-I-BCH or SODE-I-BCH).

#### Course Learning Outcomes

There are no learning outcomes defined for this course.

### COMP 392: Computing Internship III

A Computing Internship involves spending twelve to sixteen months in a paid internship position in the private or public sectors. Students in a 12-month internship register in COMP 390/6.0 and either COMP 391/3.0 or COMP 392/3.0, or all of COMP 393/3.0, COMP 391/3.0 and COMP 392/3.0. Students in a 16-month internship register in COMP 390/6.0, COMP 391/3.0 and COMP 392/3.0. The Internship Coordinator must be satisfied that the work carried out has educational merit. Successful completion of the course requires submission of a satisfactory report on the experience within thirty days of completion of the work period. The Internship Coordinator is responsible for evaluating the report. The QUIP program includes prior workshops on interviewing, résumé preparation and work performance. Career Services manages the non- academic aspects of the program.

**Prerequisites**: GPA of 1.90 and Level 2 or 3 and registration in a Bachelor of Computing internship plan (BMCO-I-BCH orCOGS-I-BCH or COMP-I-BCH or CSCI-I-BCH or SODE-I-BCH).

#### Course Learning Outcomes

There are no learning outcomes defined for this course.

### COMP 393: Computing Internship IV

**Prerequisites**: GPA of 1.90 and Level 2 or 3 and registration in a Bachelor of Computing internship plan (BMCO-I-BCH orCOGS-I-BCH or COMA-I-BCH or COMP-I-BCH or CSCI-I-BCH or SODE-I-BCH).062

#### Course Learning Outcomes

There are no learning outcomes defined for this course.