View Options Show: All None Introductory Core Capstone Projects Fundamental Computation Software Design Game Development Artificial Intelligence Computing, Mathematics, and Analytics Data Analytics Computing and the Creative Arts Security Biomedical Computation Uncategorized 100-Level 200-Level 300-Level 400-Level 500-Level Fall Winter Spring Summer Not Offered View: Full Compact Group by: NONE CAT LVL TERM Apply Filters Clear CISC 101 - Introduction to Computer Programming FallWinterSpring Introduction to algorithms: their definition, design, coding, and execution on computers. Intended for students who have no programming experience. CISC 102 - Discrete Mathematics for Computing l FallWinterSpring Introduction to mathematical discourse and proof methods. Sets, functions, sequences, and relations. Properties of the integers. Induction. Equivalence relations. Linear and partial orderings. 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. CISC 121 - Introduction to Computing Science I FallWinterSummer Introduction to design, analysis, and implementation of algorithms. Recursion, backtracking, and exits. Linear data structures (stacks and queues). Elementary searching and sorting. Order-of-magnitude complexity. Documentation, iterative program development, translating natural language to code, testing and debugging. CISC 124 - Introduction to Computing Science II FallWinterSummer Introduction to software design and development with the object-oriented paradigm, and its effect on abstraction and component re-use. Working in groups using incremental development and version management. Test driven development. Numerical computation. CISC 151 - Elements of Computing with Data Analytics Winter 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. CISC 181 - Digital Societies Summer 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. CISC 203 - Discrete Mathematics for Computing II FallWinter Proof methods. Combinatorics: permutations and combinations, discrete probability, recurrence relations. Graphs and trees. Boolean and abstract algebra. CISC 204 - Logic for Computing Science FallWinter 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. CISC 220 - System Level Programming FallWinter Basic concepts of Unix-like systems. Shells and scripting. System-level programming in the C language. Software development tools and techniques. CISC 221 - Computer Architecture FallWinter 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. CISC 223 - Software Specifications FallWinter 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. CISC 226 - Game Design Winter 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. CISC 235 - Data Structures FallWinter Design and implementation of advanced data structures and related algorithms, including correctness and complexity analysis. Tradeoffs among alternative implementations of a module interface. CISC 251 - Data Analytics Fall 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 bi-clustering; attribute selection. CISC 271 - Linear Data Analysis Winter 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. 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. CISC 320 - Fundamentals of Software Development Fall Introduction to management of small and medium-scale software projects. Advanced programming methodology using the programming language C++. Includes a significant programming project. CISC 322 - Software Architecture FallWinter Abstractions and patterns of interactions and relationships among modules. Design recovery; relationship of architecture to requirements and testing. CISC 324 - Operating Systems FallWinter 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. CISC 325 - Human-Computer Interaction Winter 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. CISC 326 - Game Architecture FallWinter 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 CISC 327 - Software Quality Assurance Fall 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). CISC 330 - Computer-Integrated Surgery Fall 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. CISC 332 - Database Management Systems Winter Data models: relational, entity-relationship. Relational query languages: relational algebra and SQL. Relational database design. Application interfaces and embedded SQL. Storage and indexing. CISC 335 - Computer Networks Winter 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. CISC 340 - Digital Systems Combinational circuits; sequential circuits; digital systems design; micro-programming; bus structures; data communications; interface design; microprocessor systems. CISC 351 - Advanced Data Analytics Winter 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. CISC 352 - Artificial Intelligence Winter An introduction to the basic principles and tools of artificial intelligence. Problem solving methods and knowledge representation techniques. CISC 360 - Programming Paradigms FallWinter 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. CISC 365 - Algorithms I FallWinter 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. CISC 371 - Nonlinear Data Analysis Fall Methods for nonlinear data analysis, particularly using numerical optimization. Applications may include: unconstrained data optimization; linear equality constraints; constrained data regression; constrained data classification; evaluating the effectiveness of analysis methods. CISC 372 - Advanced Data Analytics Winter 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. CISC 422 - Formal Methods in Software Engineering Fall 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. CISC 423 - Software Requirements Winter 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. CISC 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. 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. CISC 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. CISC 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. 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. CISC 447 - Introduction to Cybersecurity Fall An introduction to cybersecurity covering a wide range of vulnerabilities, attacks, and defense mechanisms in individual computers, networks, the Internet and the Web and applications that use them, and storage and computational clouds. The human side of cybersecurity, and the legal and ethical constraints on both attack and defense. CISC 448 - Software Reliability and Security Software dependability and other related concepts, software process models and methods for reliable software. Software reliability engineering process, software fault tolerance and run-time monitoring. Software security engineering process, secure software design, program security vulnerabilities and software security testing CISC 451 - Topics in Data Analytics Winter 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. CISC 452 - Neural and Genetic Computing Fall 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. CISC 453 - Topics in Artificial Intelligence Winter Investigation of selected areas of artificial intelligence research. Possible topics include natural language understanding, computational perception, planning, learning, and neurocomputing. CISC 454 - Graphics (A) Winter 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. James Stewart. CISC 455 - Evolutionary Optimization and Learning Winter 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. CISC 457 - Image Processing and Computer Fall 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. CISC 458 - Programming Language Processors (S) Winter 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. 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. CISC 465 - Semantics of Programming Languages Winter Specifying syntax and semantics; operational and denotational semantics. Lambda calculi, type systems and logical foundations. Meta-theoretic properties. Semantics of imperative languages. 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. 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. CISC 468 - Cryptography Winter 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. CISC 471 - Computational Biology Fall 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. CISC 472 - Medical Informatics Winter Current topics in the application of information technology to medical image computing and its use in image-guided medical interventions. 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. CISC 474 - Reinforcement Learning Winter 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. CISC 486 - Game Development Fall 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. CISC 490 - Topics in Computing Science I Content varies. Not offered every year. CISC 491 - Topics in Computing Science II Content varies. Not offered every year. CISC 492 - Topics in Computing III Content varies. Not offered every year. CISC 495 - Software Evolution Winter While working in groups, students will participate in the evolution of a software artifact. Elements of a software life cycle are examined in detail: requirements analysis, design recovery, refactoring, documentation, version, and configuration management. CISC 496 - Game Development Project Winter Team-based project involving the development of a game using modern tools and software engineering techniques. CISC 497 - Social, Ethical and Legal Issues in Computing FallWinter 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. CISC 498 - Information Technology Project FallWinter 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. CISC 499 - Advanced Undergraduate Project Winter Students must make a project proposal and secure a supervisor prior to enrolling in this course. 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. CISC 500 - Undergraduate Thesis FallWinter 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. COCA 201 - Introduction to Computing and the Creative Arts Winter 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. Enrollment is limited. COGS 100 - Introduction to Cognitive Science FallWinterSpring 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. COGS 201 - Cognition and Computation Winter 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. 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. COGS 400 - Neural and Genetic Cognitive Models Fall 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. COGS 499 - Advanced Undergraduate Project Winter Topic selected under the supervision of a faculty member from CISC, LING, PHIL, or PSYC. Emphasis may be on experimental, theoretical, or computer implementation. Independent research, an oral presentation, and a written report are required. The student must make a project proposal and secure a supervisor prior to enrolling in the course.