Computer Science Department
First Year
Coding for Problem Solving
This course introduces coding for everyday problem solving. Programming fundamentals are introduced with an intuitive programming language and a simple programming environment. The students will obtain first-hand experience with live coding examples and exercises. Students from all disciplines can learn to develop their programming abilities without any prior knowledge. For computer science major and honours students CSCI 128 may be used only as an approved or open elective. Students who have received credit for CSCI 161 or equivalent are not permitted to enrol in CSCI 128. Three credits.
Comp. Application Technology
This course enables students to use a variety of software tools to assist in their post-secondary studies and future careers. The course covers a broad range of information and communication tools essential for analyzing and presenting data, communicating information, organizing and writing papers, and preparing talks, slide presentations and posters. Webpage management is introduced. Topics covered support students in education, business, humanities and the health/social/physical sciences. For computer science major and honours students CSCI 135 may be available only as an approved or open elective. Three credits.
Intro to Programming
An introduction to computers, algorithms and programming. Topics include problem analysis, algorithm development, data representation, control structures, arrays, and file manipulation. Three credits and two-hour lab.
Programming & Data Structures
Continuing from the material in CSCI 161, this course covers memory management and data abstraction via classes and objects, and introduces the linear data structures lists, stacks, and queues. Structured programming is encouraged via modular development. Prerequisite: CSCI 161. Three credits and two-hour lab.
Second Year
Social Issues: Information Age
This course exposes students to the various impacts of technology on modern society with the goal of further developing their critical thinking and their ability to make informed decisions in this rapidly changing information age. Topics covered include privacy and security, biotechnology, cybercrime, genetic engineering, artificial intelligence, digitization and intellectual property, ethical issues in computing. Other topics and/or their emphasis may vary by semester. Students from every background will benefit from this course. Three credits.
Introduction to Data Science
The course will provide students with the basic understanding of the theory and practice of data science and its applications in different real-world domains. Student will also gain practical skills in handling structured and unstructured data, analyzing and visualizing data, data mining, as well as gain hands-on experience of software tools and apply the basic techniques to their own different scientific, engineering and business applications. Prerequisite: One of CSCI 125, 128, 161 or 225. Three credits.
Advanced Data Structures
This course provides a deep investigation of foundational data structures and algorithms. Criteria for selecting appropriate data structures and algorithms for a given problem are presented. General problem solving is emphasized throughout the course. Specific topics include stacks, queues, lists, trees, searching, sorting, traversals, recursion, graphs, hashing, and complexity analysis. Prerequisite: CSCI 162. Three credits and two-hour lab.
Computer Organization
This course covers basic computer arithmetic, architectures, and instruction sets; in-depth study of the central processing unit, memory and input/output organization; and microprogramming and interfacing. Prerequisite: CSCI 162. Three credits and two-hour lab.
Database Management Systems
An introduction to the theory and practice associated with the design and implementation of databases. Topics include database models (relational model in detail), design, normalization, transactions, SQL, and a DBMS. Credit will be granted for only one of CSCI 275 or BSAD 384. Prerequisite: CSCI 162. Three credits.
Discrete Structures
An introduction to sets, binary relations and operations; induction and recursion; partially ordered sets; simple combinations; truth tables; Boolean algebras and elementary group theory, with applications to logic networks, trees and languages; binary coding theory and finite-state machines. Cross-listed as MATH 277. Prerequisites: MATH 101, 102 or 107 or 127 or 122 or CSCI 162. Three credits.
Third Year
Reinforcement Learning
In this course, you will delve into the practical aspects of reinforcement learning (RL) and deep reinforcement learning, gaining a comprehensive understanding of fundamental algorithms and techniques. Equipping you with essential tools, the curriculum empowers students to effectively address a diverse array of decision problems. Proficiency in Python is highly recommended for optimal engagement with the course content. Prerequisite: CSCI 162. Three credits.
Data Struct & Algorithm Analy
An introduction to the design, analysis, and implementation of algorithms to solve common computational problems. Basic algorithm design techniques such as the greedy strategy, divide-and-conquer, and dynamic programming, as well as network flows, intractability, and NP-completeness will be discussed. Prerequisites: CSCI 255, 277. Three credits and two-hour lab.
Theory of Computing
An introduction to the theoretical foundations of computer science, examining finite automata, context-free grammars, Turing machines, decidability and undecidability, and complexity theory. Strategies will be developed to help categorize problems as tractable or intractable. Prerequisites: CSCI 255, 277. Three credits.
Data Communications & Networks
This course covers communication systems; environments and components; common carrier services; network control, design and management; distributed and local networks. Prerequisite: CSCI 255. Three credits and two-hour lab.
Operating Systems
An overview of operating systems functions: file management, CPU scheduling, process management, synchronization, memory management, and deadlock handling. UNIX will be introduced and used in this course. Prerequisite: CSCI 255 and CSCI 263. Three credits and two-hour lab.
Fourth Year
Cyber Security
Covers the theory and practice of computer and network security, including cryptography, authentication, network security, and computer system security. Topics include secret and public key cryptography; message digests; authentication, including password-based, address-based, and cryptographic; network security; system security, including intruders, malicious software, and firewalls. Students will use and implement algorithms. Prerequisite: CSCI 368, completed or concurrent. Three credits. Offered in alternate years.
Software Design
The course covers techniques for the design and management of large software projects, including structured programming, debugging, and testing methodologies. Examples of large systems will be provided and a programming project will be completed. Prerequisite: CSCI 255. Three credits.
Org of Programming Languages
Topics include structure of language definitions, control structures, data types and data flow, compilers vs interpreters, introduction to lexical analysis and parsing. Prerequisite: CSCI 375 completed or concurrent. Three credits. Offered in alternate years.
Honours Thesis
Students will prepare and present a thesis based on original research conducted under the supervision of a faculty member. Credit will be granted for only one of CSCI 490 or CSCI 493. Restricted to students in the honours program. Required for honours students. Six credits.
Senior Seminar
The purpose of this non-credit course is to assist students in carrying out research, composition, and oral presentation. Students will present a project topic in the fall term and their project in the spring. Attendance at departmental seminars is mandatory. No credit.
Artificial Intelligence
An introduction to the core concepts of artificial intelligence, including state space, heuristic search techniques, knowledge representation, logical inference, uncertain reasoning, and machine learning. Specific methods covered include neural networks, genetic algorithms, and reinforcement learning. Prerequisites: CSCI 255, 263, 277. Three credits.
Graduate Year
Real Time Systems
This course covers analysis techniques and development methodology for real-time systems. Topics include real-time process and control, soft and hard real time systems, real-time scheduling algorithms, schedulability analysis theory, resource access control, real-time operating systems, real-time communications, performance analysis, requirement specification and system specification, verification of real-time systems, and formal development process of time critical real-time systems. Three credits.
Mobile Application Design/Dev
Mobile applications are software applications designed to run on mobile devices. The Android mobile platform has become one of the most popular platforms used by millions of devices around the world. This course introduces App development for the Android OS. The course covers the Android system, fundamental components of Android Apps, how to create user interfaces in Android, and how to create Android Apps that use databases, location, and networking, multimedia and/or other services. Three credits.
Advanced NLP
This course presents students with methods to automatically analyze text written in a natural language and considers ethical concerns on biased data. It explores modern techniques such as embedding-based and neural models. This course presents approaches and their applicability across different tasks, such as, sentiment analysis, language modelling and document classification. Students are expected to code solutions for assignments. Three credits.
Computational Logic
This course focuses on automated theorem proving. We start with a rigorous treatment of propositional and first order calculus (with equality) and the method of natural deduction, giving a thorough investigation of the soundness and completeness proofs and decidability. Then we compare and contrast several automated theorem proving methods such as tableau, resolution, sequent style calculus and rewrite systems. Extensions to other logics will be discussed. Students will implement one of the automated theorem proving methods. Three credits.
Artifical Intelligence
This course covers advanced core concepts in artificial intelligence (AI). Topics covered include intelligent agents, uninformed and informed (heuristic) search, logical and probabilistic knowledge representation, logical and probabilistic inference, essentials of machine learning, neural networks, reinforcement learning, and evolutionary computation. Project requires and in-depth study of a topic related to AI. Three credits.
Approximation Algorithms
An introduction to the study of approximation algorithms, highlighting key algorithm design techniques for approximation algorithms and the complementary study of hardness of approximation. Topics include greedy algorithms and local search, dynamic programming, deterministic and randomized rounding of linear and semidefinite programs, and the primal-dual method. Three credits.
Data Mining & Machine Learning
The course covers the most current techniques used in data mining and machine learning and their background theoretical results. Two basic groups of methods are covered in this course: supervised learning (classification or regression) and unsupervised learning (clustering). The supervised learning methods includes Recursive Partitioning Tree, Random Forest, Linear Discriminant and Quadratic Discriminant Analysis, Neural Network, Support Vector Machine. The unsupervised learning methods include Hierarchical Clustering, K-means, K-nearest-neighbour, model-based clustering methods. Furthermore, the course also covers the dimensional reduction techniques such as LASSO and Ridge Regression, and model checking criteria. Three credits.
Computer & Network Security
The objective of the course is to provide a broad overview of issues and approaches, while exposing students to recent advancements in computer and network security. This course will cover the theory and practice of computer and network security. While covering the theory of computer communication security, the course will focus on using and in some cases implementing various algorithms as well. Three credits.
Adv Database Systems
Explores advanced and evolving issues in database management systems. Topics include advanced database design and normalization, database implementations and optimizations, advanced and embedded SQL, ODBC and JDBC, XML, data warehousing, and emerging database trends. A major project is a key component of the course. Three credits.
Graduate Seminar
This seminar course prepares graduates for industry or academia by developing knowledge and skills that will be applicable in a variety of professional contexts. Among these skills will be professional communication with industry and non-industry audiences, social and ethical issues in the field, grant and proposal writing, job search skills, research skills, and current innovations in research. The course is facilitated by computer science faculty members and includes presentations by invited experts. Pass/Fail. Three credits.