CPS 106 (1.00) Introduction to Multimedia Computation
Introduction to computing and programming. This course introduces the student to computers and the mindset of computing how to solve problems by developing algorithms and writing programs. The programming language is Python, and the problems are taken from the domain of multimedia (manipulation of images and sounds).
CPS 109 (1.00) Computer Science I
An introductory programming course designed to introduce fundamental Computer Science concepts such as abstraction, modelling and algorithm design. Emphasis is placed on producing correct software. Replaces CPS 513
CPS 213 (1.00) Computer Organization I
This course introduces the students to the principles and fundamentals of digital system design. Topics covered include: Binary numbers, base conversions, signed numbers, Boolean algebra, logic gates, K-map method, combinational circuits, decoders/encoders, multiplexers, sequential circuits, flip-flops, state diagram, registers, counters and addressing techniques. (2 hr Lab every other week).
MTH 110 (1.00) Discrete Mathematics I
This course covers the fundamentals of discrete mathematics with a focus on proof methods. Topics include: propositional and predicate logic, notation for modern algebra, naive set theory, relations, functions and proof techniques.
BLG 143 (1.00) Biology I
This course is an introduction to the cellular and molecular mechanisms in the cell. Topics include macromolecule structure and function, enzymes, cell membrane structure and function, cell cycle control, cell division, metabolism, and photosynthesis. Also included is an introduction to genetics and patterns of inheritance, gene expression and developmental biology. Laboratory exercises complement lectures.
CHY 103 (1.00) General Chemistry I
This foundation course begins with an introduction to types of chemical compounds, chemical reactions and stoichiometry. Subsequent topics include the investigation of the states of matter (primarily liquids and gases), solutions and colligative properties, chemical equilibrium, acids and bases, and thermochemistry. This course acts as the first half of a full year general chemistry sequence and is a precursor to CHY 113 General Chemistry II.
PCS 110 (1.00) Physics
Units and vectors. Motion: linear, projectile, circular and oscillatory motion. Newton's laws: Force, mass and acceleration; work, energy and power; linear and angular momentum. Electrostatics: Electric force and field; potential and potential energy; capacitance. Electric current and DC circuits. Magnetic field and force: magnetic force on currents and charges; Hall effect; torque on current loops; Waves: classification of waves; energy transfer; light and electromagnetic waves; diffraction and interference. MAPLE used for simulation/visualization of physical phenomena and problem solving.
CPS 209 (1.00) Computer Science II
A continuation of CPS 109. Emphasis is placed on code structure, algorithm development, and Object Oriented design principles.
CPS 412 (1.00) Social Issues, Ethics and Professionalism
This course will cover some of fundamental social, legal, and ethical issues inherent in the discipline of computing. Topics include social context, analytical tools, professional ethics, intellectual property, privacy and civil liberties, professional communication, sustainability and equity issues.
MTH 207 (1.00) Calculus and Computational Methods I
Calculus of functions of one variable and related numerical topics. Derivatives of algebraic, trigonometric and exponential functions. Differentiation techniques and applications of derivatives. Techniques of integration.
CMN 300 (1.00) Communication in the Computer Industry
In this workshop course, students learn to present technical information to audiences with a range of technical knowledge. The course teaches students various forms and content strategies relevant to the computer industry so they can communicate clearly and persuasively in online and traditional media. Students analyze and respond to professional situations involving documentation plans, style guides, usability testing and project planning.
CPS 305 (1.00) Data Structures
Introduction to data structures and algorithms. Data structures covered will include stacks, queues, lists, trees, and graphs. Algorithm topics will include searching, sorting, hashing, algorithm design, greedy approaches, dynamic programming, recursion and complexity analysis.
CPS 393 (1.00) Introduction to UNIX, C and C++
The course introduces the UNIX operating system, and the C and C++ languages. UNIX topics include: I/O, redirection, processes, and shell scripts. C and C++ are introduced with an emphasis on differences from previously studied languages. C topics include pointers, structures, memory allocation, and paradigm differences. C++ topics include class formalisms, static and dynamic instantiation, inheritance, constructors and destructors, polymorphism with virtual functions, operator overloading, and time permitting, friends. Stream I/O may be introduced.
MTH 108 (1.00) Linear Algebra
Systems of linear equations, matrices determinants, vectors, geometry, linear transformations, linear independence, basis, dimension, eigenvalues and eigenvectors, complex numbers, applications.
CPS 406 (1.00) Introduction to Software Engineering
This course introduces the study of Object-Oriented software engineering. Topics include software project management, requirements gathering, requirements analysis, modeling, design, implementation and testing. UML diagrams and design patterns are also discussed. A major portion of the course is a team project, taking a system from the initial requirements to the final implementation. (2 hr Lab every other week).
CPS 420 (1.00) Discrete Structures
Introduction to discrete structures as they apply to design and analysis. Review of proof techniques. Induction and recursion. Graphs and trees, and their applications in computing. Finite automata and regular expressions. Counting: arithmetic and geometric progressions, permutations and combinations, modular arithmetic.
CPS 506 (1.00) Comparative Programming Languages
A survey of major programming paradigms, with emphasis on the functional paradigm. Discussion of data typing, program decomposition, scoping rules, control structures parameter passing. Programming languages will likely include commercially important functional languages such as Haskell, Clojure and Erlang, with examples of others as time permits.
CPS 590 (1.00) Operating Systems I
Introduction to O/S (system calls, interrupts, synchronous and asynchronous traps, O/S structure), using processes (process communication and synchronization), primitive communications (signals and signal management calls), pipes, messages, semaphores, shared memory, memory management, file systems, and (time permitting) remote procedure calls.
MTH 380 (1.00) Probability and Statistics I
Probability and Statistics I: Descriptive statistics. Probability (Laws of probability. Conditional probability. Discrete probability distributions (binomial, hypergeometric, Poisson). Continuous probability distributions, Normal, t-exponential, x². Applications of discrete and continuous distributions. Sampling distributions (sample mean, sample proportion, difference between two samples, difference between two sample proportions). Sampling distribution concerning mean variance and proportion for one or two populations. Estimation for large and small samples. Hypothesis testing concerning mean, variance and proportion for one or two populations, (large samples and small samples) including paired data testing.
CPS 510 (1.00) Database Systems I
Advanced file management techniques involving fundamentals of database organization, design and management. Emphasis is given to Relational Database Management Systems including relational algebra, normal Forms, physical Database Structures and their implementation, and Relational Database Languages. Other types of Database Managers are also discussed such as Hierarchical, Network and Inverted Files.
CPS 633 (1.00) Computer Security
History and examples of computer crime. Security policies and mechanisms. Access control models. Implementation and usability issues. Physical security. Authentication technologies. Operating system security. Encryption algorithms and protocols. External and internal firewalls. Software flaws and malware. Ethical issues in computer security. Sample privacy noncompliance litigation cases, Social implications of computing networked communication.
CPS 721 (1.00) Artificial Intelligence I
This course provides introduction to several important AI problems and techniques, including knowledge representation and reasoning, constraints satisfaction, search, natural language understanding, planning, uncertainty, belief networks, learning.
CPS 616 (1.00) Algorithms
Complexity analysis and order notations, recurrence equations, brute force, divide-and-conquer techniques and the master theorem, transform-and-conquer and problem reduction, greedy method, dynamic programming, the knapsack and travelling salesman problems, graph algorithms, text processing and pattern matching techniques, P, NP, and NP-complete classes.
CPS 706 (1.00) Computer Networks I
Internet, the network edge, the network core, delay, loss and throughput, protocol layers. Application Layer: principles of network applications, web. Transport Layer -UDP, connection oriented transport TCP, TCP congestion control. Network layer -The internet protocol (IP): Forwarding and addressing in the Internet. Routing algorithms. The link layer and local area networks.
CPS 40A/B (2.00) Thesis
The student will creatively apply the material learned in core courses to a significant problem.
CPS 501 (1.00) Bioinformatics
Introduction to analysis, management, and visualization of cellular information at the molecular level. The course includes an overview of mathematical modeling and simulation, pattern matching, methods for phylogenetics, gene recognition, distributed and parallel biological computing, designing and managing biological databases (both relational and object-oriented), linking disparate databases and data, data mining, reasoning by analogy, hypothesis formation and testing by machine.
CPS 511 (1.00) Computer Graphics
Software and hardware considerations in computer graphics. Mathematical manipulation of graphical objects; interactive graphics and the user interface; representation of 3-D shapes; fundamental implementation of algorithms.
CPS 521 (1.00) Introduction to Data Science
This course is an introduction to different aspects of data science. The focus is on data collection and management and then applying data analytics, statistical and machine learning models on the collected data. The topics of the course include big data, data models, distributed computing, regression and statistical analysis, neural networks, support vector machines, scalable machine learning models, basics of natural language processing, recommendation systems, and analyzing social graphs. All these topics will be discussed at the introductory level.
CPS 530 (1.00) Web Systems Development
TThis course presents the concepts and applications of the technologies to design and develop creative and successful web services. It covers design fundamentals and also programming languages for both server-side and client-side environments. Responsive design, search engine optimization and monetization strategies are also introduced.
CPS 606 (1.00) Advanced Computer Organization
An advanced overview of computer architecture and organization. A study of the relationship between software and hardware and how this affects the design of architectural features: instruction execution, processor internals (including pipelining, parallelism and microcode). Instruction sets, memory and caches, busses, auxiliary storage (disk) controllers and vector processors.
CPS 607 (1.00) Autonomous Mobile Robotics
An introductory course in the design and implementation of autonomous vehicles. Topics will include the nature of autonomy and autonomous behaviour. Issues involving sensing and actuation will be discussed. Students will be introduced to the constraints and issues involved in building systems designed to interact with an environment independently. Students will be expected to construct working robots.
CPS 610 (1.00) Database Systems II
This course is a continuation of CPS510. Topics include: embedded DB languages (e.g. JDBC class libraries) and Embedded SQL, Transaction management, Distributed Databases, Transaction Concurrency Control, Concurrency Control through Locking/protocol and time stamps, Object-Oriented and Object-Relational Database Systems, non-structured and NOSQL databases (e.g. Mongo DB). Introduction to big data management, Map-Reduce and Hadoop.
CPS 613 (1.00) Human-Computer Interaction
This course introduces the concepts of human-computer interaction and usability testing. Topics include: human information processing, usability principles, models of interaction, user interface paradigms, design of user interfaces. Students will also learn how to develop Graphical User Interfaces using a specific User Interface Management system.
CPS 615 (1.00) Theory of Computation
This course introduces students to the theory of computation. Topics include: regular expressions and languages, finite state automata, context-free languages, pushdown automata, Turing machines, computability, and NP-completeness.
CPS 621 (1.00) Introduction to Multimedia Systems
Multimedia data is becoming increasingly important in many scientific and commercial arenas. In this course, students will be introduced to principles and current technologies of multimedia system design. Topics include: multimedia data representation, processing multimedia visual information, video and audio compression, retrieval of multimedia data, such as text, graphics, colour images and video. In addition, issues related to multimedia hardware and software as well as specific applications will be discussed.
CPS 630 (1.00) Web Applications
This course is a continuation of CPS 530. Students will learn advanced techniques for designing and building (client and server) web applications using modern technologies. Topics include: web application development process, cross browser compatibility issues, responsive design, templating and database connectivity and web security, modular design and various web frameworks. At the end of this course students will be able to design and implement a database application with a commercial grade web interface for desktop and mobile computing platforms. (2 hr. Lab every other week).
CPS 643 (1.00) Virtual Reality
This course describes the underlying concepts and algorithms of Virtual Reality (VR) systems. A review of current VR technology and the fundamental principles of interaction, modelling and simulation for VR are presented. This is a lab-based and project-based course in which students will use VR hardware and a VR software framework to design, model and program an interactive virtual environment for various application areas.
CPS 707 (1.00) Software Verification and Validation
This course introduces the topics of verification and validation of computer software. Material covered may include statistical and functional approaches to testing, test data analysis, testability, static analysis techniques, dynamic analysis techniques, selected state-of-the-art results, and real-world applications.
CPS 710 (1.00) Compilers and Interpreters
Introduction to compiler design: theory, techniques, and tools. Students will develop an interpreter or compiler. Assembler and preprocessors will also be briefly discussed.
CPS 713 (1.00) Applied Cryptography
The notion of secure communication. Classical cryptography. Pseudo-random number generation. The Data Encryption Standard and Advanced Encryption Standard. Cryptographically secure hash functions. Public key crypto system. Digital signature schemes. E-commerce and digital cash. Secret sharing schemes. Authentication applications. Electronic mail security. IP and Web security.
CPS 714 (1.00) Software Project Management
Introduction to issues involved in managing large, complex software projects. Introduction to industry-standard project management techniques and tools needed to use them, as well as their application to software projects.
CPS 716 (1.00) Computer Networks II
Advanced Internet routing algorithms (inter-AS routing, broadcast and multicast routing, switch design). Advanced data link layer topics (virtual local area networks, multi-protocol label switching). Multimedia Networking (streaming, real-time transport protocols, content distribution networks, scheduling and policing algorithms, providing quality of service). Wireless/Mobile Networks, (cellular networks, WiFi, mobility management, routing in MANET). Network Management. Special topics in networking.
CPS 730 (1.00) Web Technology and Performance Measurement
This course focuses on understanding the core technologies underlying the World Wide Web, such as protocols (e.g., HTTP) , software components (i.e., client, server and proxy) and important web applications (e.g., web caching). Another part of this course is introduction to performance measurement and in particular Web Performance Measurement. The course consists of assignments and practical examples (based on Unix/Linux) which helps students to understand the principles of how distributed applications are built.
CPS 731 (1.00) Software Engineering I
Essential methods for the Systematic approach to the development, operation, maintenance, and retirement of Software. Software Life Cycles, process modelling, configuration management, managing Software quality, requirements analysis, specification, verification and validation, Software design, implementation, testing and maintenance. Software Tools, CASE tools and documentation. (2 hr. Lab every other week)
CPS 752 (1.00) Parallel Computer Systems
The topics of this course centre around the concepts of parallel processors and supercomputers with emphasis on processor technology, performance, and software, parallel computer models, program flow control and scheduling, metrics and measures, scalability of parallel algorithms, memory hierarchy technology, pipeline design, multivector and SIMD organizations, scalability and multithreading, software and compliers, case studies of the CRAY Y-MP and CM-5 environments.
CPS 801 (1.00) Operating Systems II
This course covers the principal internal functions of operating systems with particular emphasis on UNIX/Linux and systems programming. Topics covered in this course are: OS structure, process management (including concurrency and synchronization), memory management, file systems, input-output and device management, and elements of distributed systems.
CPS 803 (1.00) Machine Learning
Machine learning involves the study of algorithms capable of learning from data or prior experience. This course develops an aptitude for applying machine learning algorithms to different problem domains while at the same time, understanding the theoretical basis for machine learning algorithms. Machine learning has many applications in medicine, autonomous systems, computational biology, finance, computer vision and other domains.
CPS 811 (1.00) Distributed Systems and Networks
A continuation of CPS 706. This course deals with the concepts of internetworking as an extension of data communications. Topics will include routing and the TCP/IP suite of protocols. An introduction to X Windows programming allows students to investigate the aspects of distributed systems using Remote Procedure Calling, shared files and directories, NFS and NIS, the Internet, and other Distributed Computing Environments. Case studies will involve NFS, Amoeba, Mach and Grapevine. Concurrency aspects will be considered in the topics of collaborating servers and file replication.
CPS 813 (1.00) Human Robot Interaction
From the first time a human picked up a stick and attempted to knock down food from an unreachable branch we have attempted to use technology to extend our influence on the world. This course will examine physical robotic systems designed to extend human presence to remote locations. Topics may include Presence, Situational Awareness, Telerobotics and Agency. The course is designed to provide students with a practical introduction that will involve the design and construction of working robotic systems designed to interact with remote environments.
CPS 815 (1.00) Topics in Algorithms
This course covers advanced methods of algorithmic design and analysis. Topics will be selected from: advanced data structures; amortization; persistence; optimization; approximation; randomization; probabilistic analysis; parallel algorithms.
CPS 822 (1.00) Artificial Intelligence II
The course will focus on the theory and implementation of discreet dynamical systems considered from the perspective of artificial intelligence. Modern logical representations of actions and their effects will be discussed in detail. The emphasis will be on the compromises required to ensure computational tractability of reasoning about effects of actions. The course will show how these research issues are relevant to artificial intelligence and to applications beyond the traditional area of artificial intelligence. Topics may include: logical foundations, reasoning about direct and indirect effects of actions, deductive planning, time and concurrency, causality, stochastic actions, modular representations.
CPS 824 (1.00) Reinforcement Learning
This course focuses on topics related to reinforcement learning. The course will cover making decisions under uncertainty, Markov decision processes, dynamic programming, temporal-difference learning, eligibility traces, value function approximation methods, Monte Carlo reinforcement learning methods, and the integration of learning and planning.
CPS 843 (1.00) Introduction to Computer Vision
This course describes foundational concepts of computer vision. In particular, the course covers the image formation process, image representation, feature extraction, model fitting, motion analysis, 3D parameter estimation and applications.
CPS 844 (1.00) Data Mining
This course introduces the basic data mining concepts, methods, implementations, as well as applications in different areas, especially on the world wide web. Topics covered include the basic data mining techniques, data preprocessing, association rule mining, classification, clustering, web mining, and data mining application (e.g. in web personalization, recommender system, security). At the end of this course, students should be able to implement and use some of important data mining algorithms in practical applications.
CPS 845 (1.00) Extreme Programming and Agile Processes
This course presents the main principles of Extreme Programming (XP) development, including: development methodology; rules and practices; application domains; public resources, such as forums, literature, and supportive tools. Other agile methods are covered as appropriate.
CPS 847 (1.00) Software Tools for Startups
This course will discuss core tools, frameworks, and packages used by modern startups. These areas include but are not limited to source code management, project management, databases, middleware and front-end libraries. The labs and assignments will offer hands-on experience with the software. Sample tools may include: git, ZenHub, GitOps, Terraform, Docker, Ethereum, Django, Vue, MongoDb, and QisKit.
CPS 853 (1.00) Creating Big Data Systems.
This course will discuss how to build Big Data analytic and transactional systems. The course will provide introduction to the theory and practice of large-scale software systems. We will focus on defining Big Data properties and architecting the systems to accommodate these properties. In addition, we will cover quality assurance of such systems, as well as management (risk estimation, planning, team management, etc.)
CPS 865 (1.00) Model-Driven Software Engineering
This course discusses the foundations and technical aspects of Model-Driven Software Engineering (MDSE). Topics include: models and transformations, driving principles, application scenarios, and standards like Model-Driven Architecture (MDA), the integration of MDSE in existing development processes, and the design of domain-specific modeling languages and Model-to-Text and Model-to-Model transformations. The course also introduces tools that support the management of MDSE projects.
CPS 870 (1.00) Applied Natural Language Processing
This course will examine the state-of-the-art in applied Natural Language Processing (NLP), with an emphasis on how well the algorithms work and how they can be used (or not) in applications. Topics will include POS tagging, parsing, language models and classification.
CPS 106 (1.00)
Introduction to Multimedia Computation