Computer Science
NOTE: The [P] designation identifies courses that involve significant programming work assigned to each individual student. The programming component involves substantive feedback and guidance to develop and improve programming skills. For elective courses, the programming component goes beyond the skills a CS student can be expected to achieve as part of their core courses. See the beginning of Section F for abbreviations, course numbers and coding.
CS1003 | Programming and Problem Solving for Engineers | 4 ch (3C 1.5L*) |
---|---|---|
Intended for Science, Applied Science and Engineering students. Introduction to the use of digital computers for problem solving and communicating solutions. Covers use of procedures, decisions, loops and arrays focusing on scientific and engineering problem analysis, algorithm design, and program structure. Also includes organizing, tabulating, and graphing program output with different software tools to communicate results. This course is currently taught primarily in Python. NOTE: Credit will be granted for only one of the following courses: CMPE 1003, CS1003, CS 1063, CS1073, or IT 2773. This course may not be taken for credit by BCS or BScCS or BScSwE students. |
CS1063 | Introduction to Computer Programming in Python | 3 ch (2C 1L) |
---|---|---|
Prerequisite: High School Mathematics. |
CS1073 | Introduction to Computer Programming I (in Java) | 4 ch (3C 1.5L 1T) [P] |
---|---|---|
Covers fundamental concepts such as decisions, loops, arrays, classes, methods, and inheritance; focusing on problem analysis, algorithm design, program structure and readability. Introduction to the Java API libraries. NOTE: Credit will be granted for only one of the following courses: CMPE 1003, CS 1003, CS 1063, CS 1073, or IT 2773. Prerequisite: High School Mathematics. |
CS1083 | Introduction to Computer Programming II (in Java) | 4 ch (3C 1.5L 1T) [P] |
---|---|---|
Continues CS 1073 focusing on problem analysis, algorithm design, program structure and readability. Covers recursion, sorting and searching, data abstraction, encapsulation, inheritance, polymorphism, simple data structures and files, testing and debugging. NOTE: Credit will not be granted for both CS 1083 and CS 2616. Prerequisite: (CS 1073 with a grade of C or better) or (IT 2773 with a grade of C or better, and High School Mathematics or MATH 1863 or permission of the instructor). |
CS1103 | Introduction to Databases | 4 ch (3C 2L) |
---|---|---|
Prerequisite: CS 1073 |
CS1303 | Discrete Structures | 4 ch (3C 1T) |
---|---|---|
Introduces topics in discrete mathematics important in computer science, including: propositional logic, predicate logic using quantifiers, direct and indirect proofs, summation and product notation, mathematical induction, elementary set theory and counting. Students are expected to write mathematical proofs throughout the course. NOTE: Credit will not be given for both CS 1303 and MATH 2203. Students majoring in Mathematics or Statistics must choose MATH 2203. Prerequisite: High School Mathematics. |
CS2253 | Machine Level Programming | 4 ch (3C 2L) [P] |
---|---|---|
Introduces students to lower-level computer operations and the association with higher-level procedural programming constructs. Topics include binary representation of data, instruction formats and execution, assembler programming, scope, functions, user-defined data types using both low- and high-level programming languages. Prerequisite: CS 1303 or permission of instructor. |
CS2333 | Computability and Formal Languages | 4 ch (3C 1T) |
---|---|---|
This course introduces students to some of the fundamental ideas in theoretical computer science: functions and relations, formal languages, finite automata, regular languages, context-free grammars, context-free languages, push-down automata, pumping lemmas, Turing machines, the Church-Turing thesis, recursive and recursively enumerable languages, the Chomsky hierarchy, the halting problem and other unsolvable decision problems, problem reducibility, and fundamental computational complexity classes. |
CS2383 | Data Structures and Algorithms | 4 ch (3C 1T) [P] |
---|---|---|
Presents formal specifications of abstract data and their data structure representations, operations, and algorithms. Includes priority queues, dictionaries, graphs, heaps, hash tables, binary search trees, balanced trees, and graph adjacency representations. Covers sorting, searching, dynamic storage handling, and fundamental graph algorithms. Asymptotic analysis of time and space complexity are taught and used throughout the course. Students are expected to implement a variety of data structures and graph algorithms. NOTE: Credit is not given for both CS 2383 and CS 3323. |
CS2704 | Data Analytics using Python (Cross-listed: DA 2704) (A) | 4 ch (3C 1L) [P] |
---|---|---|
Prerequisite: STAT 1793 or STAT 2593 or STAT 2263 or BA 1605 or PSYC 2901. |
CS2714 | Text Analytics (Cross-listed: DA 2714) (O) | 3 ch (3C) |
---|---|---|
Prerequisites: DA 2704, CS 1083, CS 1103 |
CS3033 | Software Design and Development (A) | 4 ch (3C) |
---|---|---|
Further coverage of the requirements analysis, software architecture and design phases started in CS2043. Focus on design principles and evaluation, advanced techniques for object-oriented analysis and design, design patterns, component-based and product-line approaches. Prerequisite: CS 2043. |
CS3113 | Introduction to Numerical Methods (O) | 3 ch (3C) |
---|---|---|
Error analysis, convergence and stability. Approximation of functions by polynomials. Numerical quadrature and differentiation. The solution of linear and non-linear equations and the solution of ordinary differential equations. Emphasizes the development of computer algorithms and stresses the influence of finite precision and arithmetic on computational results. NOTE: Credit will be granted for only one of CE 2913, CS 3113, MATH 3414, or ECE 2412. Prerequisites: (CS 1003 or CS 1073, MATH 1013 ) or CS 2113, and MATH 1503 or MATH 2213. |
CS3123 | High Speed Computing (O) | 4 ch (3C 2L*) [P] |
---|---|---|
This course will discuss the building blocks required for undertaking parallel computation on shared memory architectures. Differences between programming on shared memory multiprocessors and distributed memory processors will be discussed. Software will include performance analysis tools and message passing libraries such as OpenMP and MPI. Prerequisite: CS 2263. Co-requisite: CS 3403. |
CS3403 | Operating Systems | 4 ch (3C 2L*) [P] |
---|---|---|
This course examines the fundamental role of an operating system. Topics covered are: processes/threads, process management, process synchronization, CPU scheduling, storage management, I/O management, security and user interfaces. Examples are drawn from contemporary operating systems. Prerequisites: CS 2253, (CS 2263 or CS 2617) and 70 ch completed. |
CS3553 | Introduction to Bioinformatics (Cross-Listed:BIOL 3553) | 4 ch (3C) |
---|---|---|
Even before the completion of the Human Genome Sequencing Project biomedical databases have stored massive amounts of DNA and protein sequence information that have been analysed and reused in biomedical studies. Today the underlying technologies and analytical tools supporting genomic data analysis make up the field known as Bioinformatics. This course will introduce core topics and tools in genomics and bioinformatics explained from a practical perspective. Students taking this course will receive hands on training in many of the following areas of study: Genome Sequencing techniques, Gene Prediction, Sequence Alignment, Sequence Databases, Genome and Protein Structure Annotation, Bioinformatic Visualization Techniques, Gene Ontology, Analysis of Scientific Literature, Biomedical Text Mining, Workflow Management Systems, Bioinformatics Web Services. |
CS3619 | Programming Languages | 4 ch (3C 1T) |
---|---|---|
Structure and major characteristics of programming languages; formal definition, syntax, semantics. Comparative study of principal language concepts and their treatment in imperative, functional, logic, and object-oriented languages. NOTE: Credit will be granted for only one of CS 3619 or CS 4613. Prerequisites: CS 2333, CS 2043, (CS 2263 or CS 2617), CS 2383. |
CS3769 | Knowledge Representation (O) | 3 ch (3C) |
---|---|---|
Prerequisites: CS 1083, CS 1103, CS 2043, CS 2333, CS 3773. |
CS3813 | Computer Architecture and Organization | 4 ch (3C 2L*) |
---|---|---|
Advanced concepts in assembly language programming, functional organization of a computer system, organization of CPU, organization of I/O, interrupts, memory organization, cache and virtual memories, performance enhancements, pipelining, superscalar processors and embedded systems. Prerequisites: (ECE 2214 and ECE 2215) or CS 2803, and CS 2253. |
CS3983 | Professional Practice | 4 ch (3C) [W] |
---|---|---|
Covers social context of computing, professional and ethical responsibilities, risks and liabilities of computer-based systems, intellectual property, privacy and civil liberties, and professional certification by the Canadian Information Processing Society. Instructs students in the preparation of technical reports in Computer Science. Involves an independent study component resulting in a technical report, typically a survey paper. Requires preparation of a project plan that could be used for CS 4980, CS 4982, or CS 4993. Covers basic writing, oral presentation and library skills. Prerequisite: 12 ch of CS courses at the 2000-level or higher and either completion of the BScCS Arts Writing Core Requirement or exemption from the Requirement. |
CS4083 | Leading-Edge Technology in Software Development (O) | 4 ch (3C) |
---|---|---|
Selected topics in software engineering at an advanced level. Content will vary. Topics will be posted on the department website at least one month prior to the beginning of the course. One of the goals of this course is to prepare students for life-long learning, through reading papers from the literature and discussing them in class. |
CS4403 | Data Mining (O) (Cross-Listed: DA4403) | 4 ch (3C 1L) |
---|---|---|
Data mining (aka knowledge discovery) is an interdisciplinary area of computer science with the goal of extracting new knowledge and insights from big and complex data sets. The course introduces essential pattern recognition methodologies leveraging machine learning and rule-based techniques. Supplementary tasks involving processing, cleaning, integration, and transformation of data are also covered. An etymology of data mining is provided to help students compare and contract knowledge discovery with contemporary data analytics and decision support methodologies. |
CS4525 | Advanced Database Management Systems (A) | 4 ch (3C 2L*) |
---|---|---|
Continues the study of databases begun in CS 1103, with a focus on the internal workings of modern relational database systems. Topics include: file systems and structures, advanced query languages, query optimization, concurrency control and recovery, security and integrity, systems for Big Data processing including the Map/Reduce framework and related Apache projects. Prerequisites: CS 1103, CS 2383, and 70 ch completed. CS 2704 is recommended. |
CS4553 | Biomedical Informatics (O) | 3 ch (3C) |
---|---|---|
Prerequisites: CS 3553, DA 4403 or CS 4795. |
CS4795 | Artificial Intelligence | 4 ch (3C 2L*) |
---|---|---|
Introduction to intelligent agent design, problem solving using search techniques, the use of mathematical logic for knowledge representation and reasoning, decision making under uncertainty, machine learning techniques. Applications of AI to health care will be discussed. Note: credit will not be granted for both CS 4795 and CS 4725. |
CS4973 | Independent Study in Computer Science | 4 ch [W] |
---|---|---|
This course will provide the student with practical experience in their area of study. Under the supervision of a faculty member, the student will explore topics not available in the regular course offerings. The course may contain written assignments, written tests, or relevant work experience. A written report and oral presentation are required. Students must identify a faculty member who is willing to supervise the course and apply to the co-ordinator of the course for approval prior to the term in which they wish to undertake the work. Applications are normally approved only for students who are in their final year of the programme, and who have obtained a grade point average of at least 3.0 in work of the second and third years. Prerequisite: Approval of the Department. |
CS4980 | Fourth Year Technical Report | 4 ch (1S*) [W] |
---|---|---|
Prerequisite: CS 3983 |
CS4982 | Technical Report | 4 ch (1S*) [W] |
---|---|---|
Builds on the skills developed in CS 3983, through the preparation and presentation of a technical report. The report normally involves a design or implementation project undertaken as part of the course, and it may be expressed either as a traditional formal written document or, at the instructor's discretion, as an extended slide deck. Students are required to attend certain department and faculty talks, and they must attend sessions on writing and/or library research skills. Additional course regulations are available from the Department. A topic approved by the Department must be chosen before the term begins. Changes to the project plan developed in CS 3983 must be approved before the beginning of the term. Note: Credit will be granted for only one of CS 4980, CS 4982, CS 4983, or CS 4993. Prerequisite: CS 3983. |
CS4993 | Honours Project | 6 ch [W] |
---|---|---|
The student submits a detailed proposal, schedule, progress reports and written report to the thesis coordinator with the supervisor's approval. A formal presentation of the thesis is required. Planning of the thesis is done in the term prior to the beginning of the term. Detailed guidelines are available from the Department. Note: Credit will be granted for only one of CS 4980, CS 4982, CS 4983, or CS 4993. Prerequisite: CS 3983. |
CS4999 | Directed Studies in Computer Science | 4 ch (3S) |
---|---|---|
This course permits Computer Science students and faculty to explore various areas of Computer Science. In some cases, the faculty members will offer directed studies to groups of students. In other instances, individual students will seek this course on a one-on-one basis. Prerequisites: Department approval and at least 90 ch completed. |