Course Descriptions

CS 051 - Computer Science Co-op Work Term
Four-month co-op work term approved by the department and arranged by the co-op co-ordinator.

CS 052 - Computer Science Co-op Work Term
Four-month co-op work term #2 approved by the department and arranged by the co-op coordinator. *** Prerequisite: CS 051 ***

CS 053 - Computer Science Co-op Work Term
Four-month co-op work term #3 approved by the department and arranged by the co-op coodinator. *** Prerequisite: CS 052 ***

CS 054 - Computer Science Co-op Work Term
Four-month co-op work term #4 approved by the department and arranged by the co-op coordinator. *** Prerequisite: CS 053 ***

CS 055 - Computer Science Co-op Work Term
Four-month co-op work term #5 approved by the department and arranged by the co-op coordinator. *** Prerequisite: CS 054 ***

CS 100 - Introduction to Computers
Introduction to the development of computers and computer applications. Topics will include: impact of computers on society, computer organization and operation, construction and representation of algorithms, and applications of computers in the problem-solving process. *Note: This class may not be taken for credit if credit has been received for any course numbered above CS 100*

CS 110 - Programming and Problem Solving
An introduction to problem-solving techniques, the fundamental concepts of programming, and the software design process. Topics will include: data types, control structures, scope rules, functions, files, and the mechanics of running, testing and debugging. Problems will be drawn from various science disciplines. ***Prerequisite: Precalculus 30, Calculus 30, or Math 102*** *Note: CS majors who have mastered the course material in CS 110 through other means are eligible to write the CS 110 bypass exam.*

CS 115 - Object-Oriented Design
This course focuses on the concepts of object-oriented programming. Topics include data abstraction, classes, composition and inheritance, subtyping, dynamic binding, polymorphism and dynamic memory management. Other topics include type systems, two-dimensional arrays, records, references, searching and sorting algorithms, language translation. Software engineering: comprehensibility, correctness, efficiency, refactoring. ***Prerequisite: CS 110 with a minimum grade of 65% and one of MATH 110 (may be taken concurrently) or MATH 103 with a minimum grade of 80%.***

CS 165 - Introduction to Programming with Python
An introduction to problem-solving techniques using Python. This course will introduce fundamental programming principles and topics: data types, expressions, control structures, elementary data structures, functions, files, and the mechanics of running, testing and debugging. These concepts will be applied to problem solving and applications in data analysis. ***Prerequisite: Foundations of Mathematics 30, Precalculus 20, Math B30, Math C30, or PMTH 092.*** *Note: Students may receive credit for one of CS 165 or STAT 165.*

CS 201 - Introduction to Digital Systems
Hardware paradigms, logic minimization, sequential and combinational circuits, register transfer notation. Numerical data representation, number bases, floating-point and two’s-complement representation, representation of non-numeric data, records and arrays. Von Neumann architecture, control units, instruction sets, assembly language programming, addressing modes, subroutines, basic building blocks, computer components. ***Prerequisite: CS 110***

CS 203 - Java Programming and Applications
Learn to program in the Java programming language. Topics will include the basic building blocks of procedural programming, object-oriented programming, event-oriented programming, graphical user interfaces, simple data structures including arrays and linked lists, and advanced topic including recursion and threads. Problems will be drawn from various science and engineering disciplines. *** Prerequisite: CS 115. ***

CS 205 - Introduction to Multimedia Systems
Multimedia is the use of computers to integrate texts, graphics, video, animation, and sound in an interactive experience. The course introduces these elements of multimedia and their associated technologies. Students will gain an appreciation of each element and be able to combine them into a finished work. ***Prerequisite: CS 110*** *Note: Students may not receive credit for more than one of CS 205, CS 325, CS 390AI, CS 490BM, and FILM 385AB*

CS 207 - Building Interactive Gadgets
An introduction to building and controlling interactive devices for multimedia art and DIY projects. Build robots, new musical instruments, wearable computers and more. Learn about sensots and actuators: WiFi, Bluetooth, GPS; hardware platforms such as the Arduino; and software platforms such as Processing and MaxMSP. ***Prerequisite: CS 100 or CS 110 or completion of 30 credit hours.***

CS 210 - Data Structures and Abstractions
This course introduces data abstraction, data structures and their implementations, the basics of algorithmic analysis, and the fundamental computing algorithms. Topics include stacks, queues, heaps, recursion, Master Theorem, asymptotic notation, computational complexity, empirical performance measurement, recursion based sorting algorithms, hashing, and trees (including binary trees, B-trees, and AVL trees). *** Prerequisite: CS 115 and MATH 110 ***

CS 215 - Web and Database Programming
This course shows how interactive database-driven web applications are designed and implemented. Appropriate protocols and languages for web and database programming will be discussed, with a focus on client-server architectures, interface design, graphics and visualization, event-driven programming, information management, data modeling, and database systems. ***Prerequisite: CS 210***

CS 261 - Methods in Numerical Analysis
Topics will include number systems and errors, solutions of polynomial and other nonlinear equations, interpolation, numerical differentiation and integration, and the cubic spline. ***Prerequisite: CS 110 or 115, MATH 111 and 122*** *Note: Students will receive credit for only one of CS 261 or MATH 261*

CS 265 - Introduction to Data Science
This course introduces data science including current programming languages and libraries for performing data analysis. Topics include data exploration and preparation, data visualization and presentation, computing with data, and an introduction to data modeling and predictive analysis. Technical and communication skills used by data scientists will be introduced. ***Prerequisites: CS 110 and STAT 160.***

CS 280 - Risk and Reward in the Information Society
Social context of computing. Case study: human-computer interfaces and their evaluation. Methods and tools of analysis. Professional and ethical responsibilities. Risks and liabilities of computer-based systems. Intellectual property, privacy and civil liberties. Professional communication. Sustainability. Cybercrime. ***Prerequisite: ENGL 100 and CS 110 ***

CS 290AE - Intro to Digital Multimedia
This course will focus on digital graphic and website design students will learn industry standard and motion graphic software packages: Adobe Photoshop & Premiere, Flash MX, Dreamweaver MX. Students will participate in problem-solving environment using timelines. Projects will require good design concepts and an understanding of multimedia software packages. *** Prerequisite: CS 100 ***

CS 290AF - Java Programming Language
Introduction to Java (based on an instructor-led Sun course offered in industry). The course covers topics such as arrays, exceptions, GUI interfaces, GUI event handling, Threads, I/O streams and Networking. *** Prerequisite: CS 210 with a minimum grade of 65% ***

CS 290AG - Topics in Societal and Ethical Considerations
This course will involve exploration of various considerations of computerized society and what it means to be a professional therein. The student will examine the history of computing, the history of the computing profession, Ethics of professional conduct, intellectual property, and computer crime, among other topics of interest. ** Written permission from the Instructor is required to register. **

CS 290AH - Online Lab Design and Development
The student will make an independent study of Web-based delivery of labs and tutorials. Project work will be required. The student and supervisor must present a detailed outline of the proposed study to the head of the department for approval before registration. ** NOTE: Written permission of instructor required. **

CS 290AI - Computer Technology for Live Performance
Exploration of the way computer technology can impact various aspects of the performing arts (specifically live theatre, dance, and concert environments for the performing arts (specifically live theatre, dance, and concert environments) including lighting, sound, props and set design as well as projection mapping, virtual/augmented reality, and interactive performance.

CS 290AJ - Interactive Simulation Methods
In this course students will use the Blender 3D modelling suite to develop visually stimulating - yet physically accurate - models in domains such as classical mechanics, chaos theory, and complex systems and bring learning to life in interactive 3D simulations. ***Prerequisite: CS 100 or CS 110 or completion of 30 credit hours***

CS 290AK - Topics in Data Acquisition and Analysis
Introduced to data collection techniques by developing their own sensor modules, running experiments and verifying the results. Students will learn microcontroller programming for data collection as well as regression techniques and error analysis for calibration and verification. Potential modules developed range from simple light sensors to fully functioning geiger counters. ***Prerequisite: CS 100 or CS 110 or completion of 30 credit hours.***

CS 290AL - Introductory Topics in Artificial Intelligence
A course in special topics in which the student makes an independent study in Artificial Intelligence at the second-year level under the supervision of a faculty member in the department. ***Permission of the Instructor is required to register***

CS 301 - Digital Systems Architecture
Latency and bandwidth, cache memory, virtual memory, data compression, fault handling. Fundamentals of I/O, interrupts, external storage, buses, networks, multimedia support. Multiprocessor and parallel architectures, parallel decomposition, pipelining, shared memory systems, interconnection networks, cache consistency, memory consistency. Computational paradigms, performance evaluation, and effect of proximity. *** Prerequisite: CS 201 ***

CS 310 - Discrete Computational Structures
Finite and discrete algebraic structures relating to computers; sets, functions, relations. Machine-oriented logic. Combinatorial problems and algorithms. Finite automata and formal language theory. *** Prerequisite: MATH 110 or 105, 122, 221, and CS 210 *** * Note: It is recommended that students take STAT 160 or STAT 200 in addition to the prerequisite before attempting CS 310. *

CS 315 - Introduction to Computer Graphics
Introduction to graphics hardware and software. Two-dimensional graphics rendering algorithms. Basic three-dimensional modeling, transformations, viewing geometry, lighting and shading, hidden surface removel, and texture mapping. *** Prerequisite: CS210 and MATH 122 ***

CS 320 - Introduction to Artificial Intelligence
Foundations and main methods of Artificial Intelligence. Problem characteristics and spaces. Search and optimization techniques with a focus on uninformed and heuristic algorithms. Two player games and constraint satisfaction. Modelling and simulation. Comparison of logic-based, fuzzy, and probabilistic reasoning and knowledge representation methodologies. Machine learning: learning tasks, inductive learning, statistical-based learning, over-fitting, accuracy. ***Prerequisite: CS 210, STAT 160 or 200, and MATH 221*** *Students cannot receive credit for both CS 320 and ENSE 411 (ENSE 496AC).*

CS 330 - Introduction to Operating Systems
Overview of operating systems: functionality, and design issues. Operating system principles: structures, abstractions, APIs, resource allocation, proximity, virtualization. Concurrency: process state, context switches, process communication, synchronization. Scheduling: preemption, schedulers, processes, and threads. Memory management. Security and protection. File systems. User interface. Distributed algorithms: consensus, termination, and fault tolerance. *** Prerequisite: CS 210 ***

CS 335 - Computer Networks
Network architectures and protocols, networked applications, reliable data delivery, routing and forwarding, local area networks, resource allocation, mobility, reliability through redundancy. Security: secure design, defensive programming, threats and attacks, network security, cryptography. *** Prerequisite: CS 210 (may be taken concurrently), and STAT 160 or 200 (may be taken concurrently) ***

CS 340 - Advanced Data Structures and Algorithm Design
Fundamental algorithms: depth- and breadth-first traversals, pattern matching, and graph algorithms. Algorithmic strategies: brute-force, greedy, divide-and-conquer, backtracking, branch-and-bound, dynamic programming, and randomized. Algorithm analysis, complexity theory, performance evaluation. Parallelism: fundamentals, algorithms, communication. *** Prerequisite: CS 210 ***

CS 350 - Programming Language Concepts
Programming language genealogy and design. Imperative, functional, and object-oriented language paradigms. Context-free grammars and syntax trees. Data types, control structures, exception handling, data abstraction, information hiding, and non-determinism. Program representation, translation, and execution. Functional programming: advantages, constructs, closures, and higher-order operations. Parallel programming. *** Prerequisite: CS 210 ***

CS 361 - Numerical and Symbolic Computing
Least squares and other approximations. Difference equations. Solutions of algebraic systems. Symbol manipulators. ***Prerequisite: CS 261 or MATH 261 and MATH 213 with grades of at least 60%***

CS 365 - Data Wrangling
Introduction to the fundamentals of data wrangling including processes of data acquisition, integration, transformation, and cleaning throughout the data life cycle. Emphasis on the importance of data quality with topics in data integrity, security, and social responsibility. Techniques for effective visualization and communication through project work. ***Prerequisite: CS 215 and CS 265.***

CS 372 - Software Engineering Methodology
Fundamental principles of designing programs and developing large software systems that meet specifications and that are safe, secure, reliable and maintainable. Software process models, software project management, requirements engineering, software design, software construction, software verification and validation, software tools and environments, software evolution, software reliability. *** Prerequisite: CS 215 ***

CS 375 - Database and Information Retrieval
Information management: concepts and applications. Motivation for database systems. Components of database systems. Data modeling: conceptual, spreadsheet, relational, object-oriented, and semi-structured models. Querying and database query languages. Caching and transaction processing. Other topics include distributed databases, physical database design, and information retrieval systems. *** Prerequisite: CS 215 ***

CS 390AK - Web Content Development and Production
Explore various leading-edge technologies for digital multimedia content creation and production for web-based delivery. Examine issues for media conversion and compression, and their effect on communication. Students will demonstrate these ideas in a web-based project.

CS 390AL - Business Analyst for the Web
It has become imperative for successful businesses and organizations to have presence on the World Wide Web.Students will take on a website concept or an existing underperforming website as the basis of a project.Students will study and employ techniques for requirements: planning and management, elicitation, analysis and documentation, communication, and implementation. Students will document their analysis and create a prototype of their designs.

CS 390AM - User Interface Implementation and Evaluation
User Interfaces are an essential part of any interactive software application. Ideally. the interface will accommodate users from beginners to experts by providing a low threshold and a high ceiling to interactions with the software. Students will implement a user interface with existing tool kits and then evaluate their interface with users. ** Written permission of instructor is required. **

CS 390AO - Mobile Computing
Developing software applications (called apps) for mobile computing platforms such as smart phones, tablets and personal media devices. Topics may include touch-screen interfaces, power management, graphics optimization, communication, location, and mobile browsers. App marketplaces and network carrier policies will also be discussed. For each term, the course will concentrate on a single platform, such as iOS, Android, or Windows Phone 7, and culminate in a large-scale project. ***Prerequisite: CS 115***

CS 390AP - Special Topics in Virtual Reality
Introductory topics in virtual reality. Environments, Platforms, Locomotion, Physiology, Applications.

CS 390AR - Intermediate Topics in Artificial Intelligence
A course in special topics in which the student makes an independent study in Artificial Intelligence at the third-year level under the supervision of a faculty member in the department.

CS 401 - Advanced Digital Systems Architecture
Advances in computer architecture. Topics will be selected from performance enhancements, digital signal processing architectures, architectures for networks and distributed systems, architectures for mobile devices, and recently proposed architectures. *** Prerequisite: CS 301 ***

CS 405 - Computer Graphics
Advanced topics in computer graphics, including special modeling techniques for natural phenomenon, advanced illumination models and rendering algorithms. *** Prerequisite: CS 315 ***

CS 408 - Animation Software Design
This course teaches the design and implementation of software for creating animations. Topics include history of animation, technical background, motion control, keyframe-based animation, kinematics, physically based animation, fluid animation, modelling and animating human figures, facial animation, modelling behavior, and special models for animation. ***Prerequisite: One of CS 315, CS 320, CS 330, or CS 340***

CS 409 - Interactive Entertainment Software
This course teaches the design and implementation of interactive entertainment software, including computer games. Topics include history of interactive software, social factors, principles of interactive entertainment, hardware platforms, current software development tools, game design, game architecture, game physics, collision detection, game graphics, artificial intelligence for games, audio, game production and business aspects. ***Prerequisite: One of CS 315, CS 320, CS 330, or CS 340. ***

CS 410 - Inroduction to Compiler Design
High-level programming language specification. Lexical and syntactic structure, regular expression, finite automata, and lexical analyzer. Context-free grammars and parsing. LR parsers. Symbol tables. Storage allocation. Code optimization and generation. *** Prerequisite: CS 310 and 340 ***

CS 411 - Computability and Formal Languages
The notion of effective procedure and Turing machine. The universal Turing machine. Nondeterministic Turing machine. Recursive functions and other computable functions. The halting problem and unsolvability. Grammar and formal language. Finite automata and regular grammars. Context-free grammars and push-down automata. Post correspondence problem. The Chomsky hierarchy of languages and context-sensitive language. *** Prerequisite: CS 310 ***

CS 412 - Algorithm Analysis
A formal algorithmic language. Measures of complexity for time and space. Worst-case, average-case, and best-case analysis. Lower and upper bounds of algorithms (techniques include comparison trees, adversary arguments, and reduction). P and NP classes. NP-hardness and NP- completeness. Introduction to parallel computational models and algorithms. *** Prerequisite: CS 310 and 340 ***

CS 421 - Advanced Artificial Intelligence
Advanced Artificial Intelligence approaches to approximate reasoning and machine learning. Decision trees and other selected data-based knowledge models. Topics may include logic programming and PROLOG, LISP, Artificial Intelligence in games, data mining, natural language processing, pattern recognition, and planning. *** Prerequisite: CS 310, 320, and 340 ***

CS 425 - Image Processing
Introduction to image processing systems. Image transformation. Image enhancement. Image coding and compression. Feature extraction and image segmentation. *** Prerequisite: CS 340, MATH 111 and 122 ***

CS 427 - Introduction to Computer Audio
The purpose of this course is to provide a broad overview of many areas of computer audio, including: Digital representation and compression; Psychoacoustics; Surround Sound; Speech recognition and Music Information Retrieval; MIDI and New interfaces for music; and video game sound. We will also explore modular interactive software environments such as Max/MSP and PD. ***Prerequisite: CS 315, or CS 320, or CS 340*** *Note: Students may not receive credit for more than one of CS 327, CS 427, and CS 490BX*

CS 428 - Human Computer Communications
This course stresses the importance of good interfaces and the relationship of user interface design to human-computer interaction. Other topics include: interface quality and methods of evaluation; interface design examples; dimensions of interface variability; dialogue genre; dialogue tools and techniques; user-centered design and task analysis; prototyping and the iterative design cycle; user interface implementation; prototyping tools and environments; I/O devices; basic computer graphics; color and sound. ***Prerequisite: CS 215 and CS 280*** *Note: Students may not receive credit for more than one of CS 305 and CS 428*

CS 430 - Advanced Topics in Operating Systems
Advanced operating system concepts. Topics include one or more of the following: distributed systems, real-time operating systems, intelligent networks, communications protocols, and database process control within a client-server framework. *** Prerequisite: CS 330 ***

CS 435 - Cryptography and Network Security
Classical cryptosystems, data encryption standards, advanced encryption algorithms, public key cryptosystems, digital signatures, IP security, and web security. *** Prerequisite: CS 335 ***

CS 437 - Information Visualization
Focuses on design, development, and study of interactive visualization techniques for the analysis, exploration, and explanation of abstract information. Topics covered: principles of visual perception, information data types, visual encodings of data, representations of relationships, interaction methods, evaluation techniques. ***Prerequisite: CS 215 and one of CS 205 or CS 315***

CS 455 - Mobile Computing
Mobile Computing focuses on the design and implementation of software in a networked mobile environment. The primary topics to be covered in the course include software development practices, network computing, graphics programming, and human-computer interaction, all focused on the challenges and opportunities afforded by modern mobile computing devices. ***Prerequisite: CS 340 and one of CS 205, CS 315, or CS 335***

CS 458 - Virtual and Augmented Reality
Design and implementation of software in virtual and augmented reality environments. Development practices, assets and avatars, interaction, locomotion, psychological effects, audio, multiplayer considerations, applications. Limitations and future developments. ***Prerequisite: CS 340.*** *Additional Fee: $10.*

CS 461 - Advanced Topics in Numerical Analysis
Numerical solutions of ordinary differential equations. Numerical solutions of partial differential equations. Linear and non-linear problems. ***Prerequisite: CS 361 or MATH 361 with a grade of at least 60%***

CS 465 - Data Mining
Knowledge Discovery from Data (KDD). Topics include knowledge discovery, data preparation, data warehousing, pattern mining, classification and regression, cluster analysis, outlier detection, mining complex data types. ***Prerequisite: CS 340, CS 365, and CS 375.***

CS 473 - Management Support Systems
Strategic and tactical rewards resulting from the effective use of corporate information systems will be presented. Topics include techniques and tools for developing management support systems. Case studies on development and use of the systems will be discussed. *** Prerequisite: CS 372 ***

CS 475 - Advanced Topics in Database Systems
Advanced database systems concepts. Topics include one or more of the following: in-depth study of topics covered in CS 375; inclusion dependency and semantic data models; object-oriented databases; probabilistic databases; Web databases; data mining. ***Prerequisites: CS 375***

CS 476 - Software Development Project
Software development projects following all the phases of the software process. Project planning and scheduling. Surveys on architectural styles, design patterns and components. Semester-long group projects with real-world applications. Projects will be integrative, require evaluation of potential solutions, and require work on a larger scale than typical course projects. ***Prerequisite: CS 372***

CS 490AB - User Interfaces for Databases
A course in special topics in which the student makes an independent study in computer science under the supervision of a faculty member in the department. ** The student and the supervisor must present a detailed outline of the proposed study to the head of the department for approval before registration. **

CS 490AD - Parallel Computer Architecture
A course in special topics in which the student makes an independent study in computer science under the supervision of a faculty member in the department. ** The student and the supervisor must present a detailed outline of the proposed study to the head of the department for approval before registration. **

CS 490AJ - User Inter Constru VisualBasic
A course in special topics in which the student makes an independent study in computer science under the supervision of a faculty member in the department. ** The student and the supervisor must present a detailed outline of the proposed study to the head of the department for approval before registration. **

CS 490AL - Special Topics: Computer Graph
Special topics in computer graphics: 3D viewing transformation and perspective projection, ray-tracing and radiosity rendering techniques, multiresuolution surface models, special advanced modelling techniques.

CS 490AP - Emerging User Interface Design
Discover new and emerging principles of UI design. Derive guidelines directly applicable to industrial applications from research in the fields of Psychology, HCI, and Software Engineering Methodologies. ***Prerequisite: CS 428.***

CS 490AT - Adv. Obj. Oriented Prog.in C++
The student will investigate topics related to object oriented programming in C++ and will implement a class hierarchy for several data structures and algorithms. As well, the student will develop several demonstration applications to illustrate the use of the class hierarchy.

CS 490AV - Topics in Data Comm & Network
Topics in Data Communications and Networks: Protocol Concepts, Local Area Networking, Wide Area Networking, Network Programming. ***Prerequisite: CS 335***

CS 490AY - Designing Animation With Flash
Learning the basics of multimedia animation design. Learning how to use Macromedia's Flash software.

CS 490BF - Soc. &Eth. Impl. of Computing
To study the social and ethical implications of computing and telecommunications. Topics include computerization, quality of life, unemployment, personal privacy and freedom.

CS 490BH - Natural Language Processing
Natural Language Processing: Principles of Natural Language Processing, Grammars Language Formalisms, Declarative Cause Grammars, Project. *Note: Students may receive credit for one of CS 490BH or CS 890AG.*

CS 490BK - Server-side web applications
Students will study the concepts and competing technologies involved in web-based application development and will use JSP, servlets, HTTP, and JDBC in the development of their own server-side applications. ***Prerequisite: CS 215***

CS 490BO - Advanced Database Design
Review database schema design using FDs. Examine various methods of using MVDs to design acyclic databases. Investigate why these methods fail when using EMVDs. Examine the use of sematntic models in database schema design.

CS 490BQ - Computer Game Programming
Principles of Computer Games. History. Simulation and Modelling, graphics, artificial intelligence, real-time processing, game theory, and web based games. Project.

CS 490BS - Applied Image Processing
Study of basic image processing algorithms. Applications of selected techniques to practical problems. A term project is required. ** Written permission of instructor is required to register. **

CS 490BW - Bayesian Networks
Uncertain reasoning. Modeling probabilistic knowledge using directed acyclic graphs. Directed separation and its relationship with probabilistic conditional independence. Inference algorithms for processing queries given evidence.

CS 490BX - Computer Audio Topics
Representation of audio, compression, spatialization and surround sound, analysis and synthesis, speech, music, temporal and spectral processing. ** Written permission of instructor required to register. **

CS 490BZ - Principles and Techniques of Augmented Reality and Virtual Reality
In this directed readings course, the goal will be to designan Augmented Reality (AR) application in Unity. The main contribution to the project will be the creation of realistic holograms and the incorporation of objectrecognition using libraries such as OpenCV. Feedback from the users will be an important part in the designing process of the app, as it will influence the decisions made about UI design and the features to be implemented. The app will be tested on a Microsoft HoloLens using its Mixed Reality Toolkit for Unity, or on other devices capable of doing AR if they are found to be more suitable for the users. *Note: Permission of the instructor required to register.*

CS 490CA - Constraint Processing
Search Techniques. Constraint Satisfaction. Constraint Logic Programming. Constraint Solvers. Applications. *** Prerequisite: CS 340 with a min. grade of 70% ***

CS 490CD - Robot Motion Planning
Configuration Space, Cell Decomposition Methods, Roadmap Methods, Manipulation Planning, Multiple Robots, Moving Objects. Non holonomic Constraints, Planning with Uncertainty. *** Prerequisite: CS 340 with a minimum grade of 75% ***

CS 490CE - Introd to Rough Set Theory
Classification of knowledge; set approximations; reduction of knowledge; knowledge representation; applications; probabilistics approaches to rough sets.

CS 490CF - Implementing Probabilistic Expert Systems
This course examines the effects on computational efficiency in practice by implementing various techniques for constructing probability distributions in probabilistic expert systems. Topics include Bayesian networks, join tree propagation, and direct computation techniques. ** Written permission of the Instructor is required to register. **

CS 490CG - Game Theory
The study of the fundamental concepts and applications of game theory.

CS 490CH - Topics in Rough Sets
The course explores selected topics related to the theory and applications of rough sets. In particular, methods of decision table analysis and rule computation will be explored in the context of machine learning and data mining applications.

CS 490CI - Robot Motion Planning
Configuration space, Cell Decomposition Methods, Roadmap Methods, Manipulation Planning, Multiple Robots, Moving Objects, Non holonomic Constraints, Planning with Uncertainty.

CS 490CJ - Electronic Commerce and Web Applications
This course investigates fundamental and research topics on electronic commerce and Web applications.

CS 490CK - Web Personalization
Investigation on Web personalization, particularly on elearning. Using rough set to study Student Modelling. Develop a prototype system to test and evaluate the model.

CS 490CL - Software Architecture and Frameworks
This course covers such technology as architecture styles, component frameworks, design patterns, software reuse, JAVABEANS, COM, DCOM, and CORBA.

CS 490CM - Topics in Compiler Design
Topics in lexical analysis, parsing, semantic analysis, activation records, intermediate representations, code optimization, code generation, and compilation of non-procedural languages. ** Written permission of the Instructor is required to register. **

CS 490CN - Open Source Software Development
This course will introduce students to software development in an open source environment, including methodology and philosophy. Students will gain hands-on experience with the tools used in open source development, leading to contributions to an active open source software development project. Students will also have the opportunity to enhance their general programming skills in a very practical way. ** Permission of the instructor required. **

CS 490CO - Wireless Technologies
Study and analysis of several wireless communications, such as Bluetooth, RFID and Wi-fi-by including case studies.

CS 490CP - Web Service Design
This course will explore issues around the design, coding, and deployment of web-based services for public use. Topics of study will include various architectures for web-based systems, including their programming. Mash-ups of existing services will also be considered. Students will develop and test a web-based service. *** Prerequisite: Written permission of instructor is required. ***

CS 490CQ - Computational Models in Meaning of Music
This course will investigate existing and new models of music analysis, including cognitive, affective, expectational, and self-referential models. Topics will be drawn from pattern recognition, cognitive science, and musicology. *** Prerequisite: Written permission of instructor required. ***

CS 490CR - Foundations and Applications in Data Mining
Foundations and applications of data mining. Topics include one or more of the following: data preparation and transformation, review of relevant quantitive methods, data characterization, generalization, classification and prediction, clustering, association, on-line analytical processing, data warehousing, data analysis, model development, interpretation. ***Prerequisite: CS320 and CS340, or written permission of instructor is required to register. ***

CS 490CS - Topics in Interactive Entertainment
This course investigates one or more topics in interactive entertainment in depth. Topics may include: game studies, game design, game programming, graphics and animations for games, artificial intelligence for games, game physics, game audio, game production, and recent advances in interactive entertainment.

CS 490CT - Visual Analytics
Visual analytics is a multi-disciplinary field that facilitates analytical reasoning through interactive visual interfaces. The student will therefore study aspects of visualization, human factors, and data analysis in aid of conducting an analysis of available data. *** Prerequisite: Permission from Instructor Required ***

CS 490CU - Computational Learning Theory
Selected topics in computation learning theory and applications. Example modes of interactive machine learning privacy preserving learning, statistical learning recursion theoretic models of learning, complexity analysis of learning algorithms. Reading materials include 2 book chapters and 10-15 research articles. A term project is required.

CS 490CV - Interactive Hardware for Computing Applications
Embedded and mobile hardware design for physical computing; wireless sensor networks, electronic circuit theory; circuit board design and fabrication and in-circuit programming; robotics, computer vision, audio, sensing and interaction; Software systems such as Processing and OpenFrameworks; hardware systems such as ARM and AVR (Arduino).

CS 490CW - Mobile Application Development and Deployment
Programming for mobile deployment platforms such as smartphones and tablets. Views, models, navigation, interfaces, graphics. Development environments, app stores, cross-platform deployment.

CS 490CX - Mobile Computing
Mobile Computing focuses on the design and implementation of software in a networked mobile environment. The primary topics to be covered in the course include software development practices, network computing, graphics programming, and human-computer interaction, all focused on the challenges and opportunities afforded by modern mobile computing devices. ***Prerequisite: CS 335 and one of CS 305, CS 315, or CS 325 ***

CS 490CY - Information Visualization
Information Visualization focuses on the design, development, and study of interactive visualization techniques for the analysis, comprehension, exploration, and explanation of large collections of abstract information. Topics to be covered include principles of visual perception, information data types, visual encodings of data, representations of relationships, interaction methods, and evaluation techniques. *** Prerequisite: one of CS 305, CS 315, or CS 325 ***

CS 490CZ - Topics in Animation Software Design
This course investigates one or more topics in animation software design indepth. Topics may include: interpolation, kinematics, motion capture, physically based animation, implicit surfaces, fluids, animating human figures, facial animation, modeling behaviour and plants.

CS 490DA - Topics in Mobile Computing
This course investigates one or more topics in mobile computing design in depth. Topics may include: touch interfaces, mobile networking, graphics, development environments, location-aware computing, wearable and sensor-based computing, ambient intelligence, ubiquitous computing.

CS 490DB - Applications in Natural Sciences
This course investigates one or more topics related to the application of Computer Science in research in the natural sciences, such as astronomy, biology, chemistry/biochemistry, geology, physics, etc. Projects may include: problem definition, requirements analysis, software design, implementation, experimental design, summarization of results, data analysis. Project presentation, demonstration, and report.

CS 490DE - Topics in Cloud Computing
This course investigates one or more topics in cloud computing in depth. Topics may include: definition, service models (infrastructure as a service, platform as a service, software as a service), deployment models (private, public, hybrid), architecture, scalability and elasticity, security and privacy, implementation and applications.

CS 490DF - Quantum Computing & Info Processing
Introduction to quantum error correcting codes; entanglement assisted communication; elements of quantum information theory and quantum cryptography. Geometric Algorithms.

CS 490DG - User Interface Evaluation Methods
Methods for evaluating user interfaces with human subjects. Topics include research ethics, research methods, experimental design, data collection, and data analysis.

CS 490DH - Topics in Machine Learning
In this course, the student makes an independent study in Machine Learning under the supervision of a faculty member in the department. Topics may include classification, regression, clustering, decision trees and random forests, deep learning, time-series forecasting, and anomaly detection. *Note: Students who have successfully completed one of CS 713, CS 830, or CS 890EN may not register in this course.*

CS 490DI - Knowledge Representation and Reasoning
The course examines some of the techniques used to represent knowledge in artificial intelligence, and the associated methods of automated reasoning. The emphasis will be on the compromises involved in providing a useful but tractable representation and reasoning service to a knowledge-based system. ***Prerequisite: CS 310.***

CS 490DJ - Topics in Cybersecurity
This course will introduce a broad spectrum of cybersecurity topics including security principles, incident response and recovery, access control, network security, data security and privacy, and security operations.

CS 490DK - Topics in Advanced Networks
Software-Defined Networking (SDN), Network Virtualization, Network Functions Virtualization (NFV), and 5G and beyond Mobile Networks. ***Prerequisite: CS 335.***

CS 490DL - Topics in Computer Simulation
This course investigates one or more topics in computer simulation in depth. Topics may include: discrete-event simulation, queuing systems, queuing models, population models, random variate generation, verification and validation, and evaluation. Project. ***Prerequisite: CS 215***

CS 491AA - Scientific Visualization
A course in special topics in which the student makes an independent study in computer science under the supervision of a faculty member in the department. ** The student and the supervisor must present a detailed outline of the proposed study to the head of the department for approval before registration. **

CS 491AI - Adv Human Computer Interaction
The student will design a survey and conduct an experiment that involves people testing a website and a prototype software package made for an augmented reality device in Unity. There are two target demographics to design for: elderly people who are cognitively impaired and their caretakers.

CS 491AL - Operating Systems Programming
Study of the UNIX operating system. Topics include virtual memory, threads, context switches, kernels, interrupts, system calls, interprocess communication, coordination, and the interaction between software and hardware. Assignments involve advanced programming in C and x86 assembly to implement enhancements to a small, but fully functional UNIX-like operating system. ***Prerequisite: A background in operating systems and computer system architecture comparable to the senior undergraduate level*** **Permission of the instructor to register**

CS 496 - Data Science Capstone
This is a capstone course for data science majors. This course aims to enhance students’ competencies by applying data scientific methodologies to the challenges imposed by real data and skills to effectively communicate project requirements and findings. This course also covers ethical issues and responsible practices in data science. ***Prerequisite: STAT 300, STAT 301, STAT 354, CS 280, and one of CS 412 or CS 465.***

CS 497 - Digital Media Project
To be taken in the final semester of the Digital Content Development program. An individual digital content development project will be completed under the direction of a faculty member. **Written approval of Department Head (or designate) is required to register. **

CS 498 - Honours Oral
All honours computer science students are required to register for this course in the semester in which they plan to do their oral examination. The course will be graded C (credit) or N (no credit).

CS 499 - Honours Seminar
This course is to be taken by all honours computer science students in both semesters of their fourth year. The student is required to attend all seminars and, in addition, to present a topic that will be determined in consultation with a faculty member in Computer Science.