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 Fall CISC 101 - Elements of Computing Science FallWinterSpringIntroduction 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. CISC 102 - Discrete Mathematics for Computing I FallWinterSpringIntroduction to mathematical discourse and proof methods. Sets, functions, sequences, and relations. Properties of the integers. Induction. Equivalence relations. Linear and partial orderings. CISC 121 - Introduction to Computing Science I FallWinterSummerIntroduction 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. CISC 124 - Introduction to Computing Science II FallWinterSummerIntroduction 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. CISC 181 - Digital Societies FallWinterSummerThis 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 FallWinterProof methods. Combinatorics: permutations and combinations, discrete probability, recurrence relations. Graphs and trees. Boolean and abstract algebra. CISC 204 - Logic for Computing Science FallWinterElements 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 FallWinterBasic concepts of Unix-like systems. Shells and scripting. System-level programming in the C language. Software development tools and techniques. CISC 221 - Computer Architecture FallWinterThe 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 FallWinterIntroduction 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 235 - Data Structures FallWinterDesign and implementation of advanced data structures and related algorithms, including correctness and complexity analysis. CISC 251 - Data Analytics FallIntroduction 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 320 - Fundamentals of Software Development FallIntroduction to management of small and medium-scale software projects. Advanced programming methodology using the programming language C++. Includes a significant programming project. CISC 324 - Operating Systems FallWinterLayered 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 327 - Software Quality Assurance FallValidation 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 FallConcepts 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 360 - Programming Paradigms FallWinterReview 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 FallWinterPrinciples 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 FallMethods 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 422 - Formal Methods in Software Engineering FallMathematical 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 447 - Introduction to Cybersecurity FallAn 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 451 - Topics in Data Analytics FallContent 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 FallIntroduction 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 FallInvestigation of selected areas of artificial intelligence research. Possible topics include natural language understanding, computational perception, planning, learning, and neurocomputing. CISC 468 - Cryptography FallFundamentals 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 FallAdvanced 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 474 - Reinforcement Learning FallFormal 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 FallAn 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 FallContent varies. Not offered every year. CISC 497 - Social, Ethical and Legal Issues in Computing FallWinterA 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 FallWinterTopic 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 500 - Undergraduate Thesis FallWinterIndividual 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. COGS 100 - Introduction to Cognitive Science FallWinterSpringA 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 400 - Neural and Genetic Cognitive Models FallArtificial 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.