The *L notation indicates that labs are held on alternate weeks.
The [P] designation is used to identify courses with an extensive computer programming component. Please see the Bachelor of Computer Science degree regulations for further details.
The Timetable should be used to check the term and time a course is offered. Some courses may not be offered every year.
Note: Only undergraduates in their final year and with a CGPA of 3.0 or better are eligible to take 5th level courses.
|CS1003||Programming and Problem Solving for Engineers||4 ch (3C 1T 3*L)|
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 Matlab.
Prerequisite: High School Mathematics.
Corequisites: PHYS 1081 or equivalent, or permission from instructor.
|CS1023||Data Structures and Algorithms for Engineers||4 ch (3C 2L)|
Introduction to the ideas of abstraction of procedures and data. Implementation and handling of the fundamental data types: lists, stacks, queues, and graphs. Basic concepts of discrete mathematics, elements of combinatorics, aspects of complexity and recursion and algorithm development, including estimation of program resource utilization. This course is currently taught in C. Note: This course may not be taken for credit by BCS, BISys, or BScSwE students.
Prerequisite: CS 1003 .
|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.
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.
Prerequisite: CS 1073 .
|CS1203||Overview of Computer Science||3 ch (3C 1T)|
This course surveys many of the fundamental concepts and theories used throughout computer science. Topics include history of computers, computer hardware, system software, programming languages, networking, theory of computation, social issues, and other topics within computer science. Emphasis is also placed on topics relevant to various areas of study within the BCS program.
Prerequisite: None. Note: Intended only for first year computer science students and interested students from other Faculties.
|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 .
Prerequisite: High School Mathematics.
|CS2033||Software Design for Engineers||4 ch (3C 3L)|
An introduction to software design and implementation in the context of a team project emphasizing object-oriented programming and modularization for building reliable and reusable system components.
|CS2043||Software Engineering I||4 ch (3C 2L)|
Introduction to fundamentals of the discipline of software engineering with focus on the software development life cycle. Topics include software development methodologies and processes, requirements analysis, modeling, architecture, design, implementation, testing, and maintenance. Basics of software management are also introduced.
Prerequisite: CS 1083 . Note: Credit is not given for both CS 2013 and CS 2043.
|CS2053||Introduction to Game Development||4 ch (3C 2L) [P]|
Introduces basic concepts and technologies for computer and video game development, including math and physics foundations for games, core technologies and algorithms in game development, game design and implementation, and game development environments and programming. By taking this course, students will understand various elements and phases of game development. Students will develop simple games during the course.
|CS2063||Introduction to Mobile Application Development||4 ch (3C 1.5L) [P]|
|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.
|CS2263||Systems Software Development||4 ch (3C 2L) [P]|
|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 types 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.
|CS2545||Data Science for Big Data Analytics||3 ch (3C)|
|CS2605||A Selected Language for Programmers (O)||1 ch (1C) [P]|
Introduces a selected programming language to students who have already been exposed to at least one programming language. This course is given in 13 1-hour lectures throughout the term.
Prerequisite: CS 1083 or equivalent
|CS2613||Programming Languages Laboratory||4 ch (4L) [P]|
|CS2685||C++ Programming for Programmers (O)||1 ch (1C) [P]|
Introduces the object-oriented features of C++ to programmers who have already been exposed to Java and C. This course is given in 13 1-hour lectures throughout the term.
Prerequisites: CS 2263 or knowledge of Java and C.
|CS2999||Problem Solving for Programmers||3 ch (3L) [P]|
This course entails a hands-on approach to problem solving for computer programmers. Under instructional guidance the students will work on programming problems that represent basic classes of problems found in computer science. Concepts in data structures, algorithms, geometry, and software development and testing are covered.
Prerequisite: permission of instructor.
Corequisite: CS 2263.
|CS3003||Biocomputing in Drug Design I||5 ch (3C 3L)|
Introduction to biocomputing in the pharmaceutical industry. Topics include molecular modeling, rational drug design, high throughput screening and combinatorial chemistry, protein modeling and 3D bioinformatics. Course includes lectures and a computer laboratory component. Note: This course is also cross-listed as CHEM 3003 and may be taken for either Computer Science or Science credit.
|CS3025||Human-Computer Interaction||3 ch (3C)|
Software design for interactive computing. Topics include: human-computer interaction principles, interface design guidelines, the design and execution of usability studies. The characteristics of various styles of interaction are explored. Emphasis is on user-oriented interfaces. Students design, implement, and perform a usability study on an interactive software application.
|CS3043||Software Engineering II (O)||4 ch (3C 3L)|
Examines software development processes and management, visual modeling and Unified Modeling Language, requirements capture, use case analysis, system design and implementation, components, forward and reverse engineering, software engineering tools, testing techniques, configuration management, and project management.
Prerequisite: CS 2043 . Note: Credit is not given for both CS 3013 and CS 3043.
|CS3113||Introduction to Numerical Methods||3 ch (3C)|
Intended for Computer Science and Engineering students. 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. This course will emphasize the understanding of numerical algorithms and stress applications in the applied sciences, as well as the influence of finite precision and arithmetic on computational results. Credit will not be given for both CS 3113 and MATH 3413 .
|CS3383||Algorithm Design and Analysis||4 ch (3C 1T)|
This course examines the characteristics of algorithms that lead to efficient computer solutions for discrete problems. A variety of different algorithm classes and design techniques, including divide and conquer, greedy, dynamic programming, and backtracking, are introduced and compared. Design and analysis of randomized algorithms is introduced, along with strategies for dealing with computationally hard problems. Normally, one or more models of parallel algorithms will be discussed.
|CS3413||Operating Systems I||4 ch (3C 2L) [P]|
This course examines the fundamental role of an operating system in relation to the operation of applications. Essential theory of operating systems is covered, including processes, process synchronization, interprocess communications, process scheduling, storage (primary and secondary) management, resource sharing, security, I/O, and user interfaces. At least one of the major Unix shell languages will be covered.
|CS3503||Systems Analysis, Design and Project Management||4 ch (3C 1T) [W]|
Introduces students to the life cycle of information systems. Covers techniques and tools used in systems analysis and project management. Emphasizes communication skills, both written and oral, as well as team skills.
Prerequisites: INFO 1103 and 60 ch.
|CS3613||Programming Languages||4 ch (3C 1T) [P]|
Building on students' knowledge of procedural and object oriented programming, this course is a comparative study of modern models of programming. Models such as declarative, concurrent, and relational programming are introduced, and relationships between various models are explored. Formal syntax and semantics of programming languages, as well as basic concepts of programming language translation and interpretation are presented.
|CS3703||Multimedia Design||3 ch (3C)|
Introduction to the design and production of multimedia applications. Includes issues in capture, storage, and effective use of images, sound, and video; animation; multimedia and hypermedia design principles; authoring tools.
Prerequisites: CS 1073 and 60 ch.
|CS3853||Computer Architecture and Organization||4 ch (3C 2L)|
Introduction to computer organization and architecture, digital logic, interfacing and I/O strategies, memory architecture, functional organization, multiprocessing, performance enhancements.
Prerequisites: CS 2253. Note: Credit is not given for both CS 3853 and CS 3813 .
|CS3873||Net-centric Computing||4 ch (3C 2*L)|
Introduction to fundamentals of data communication and application programming in a networked environment. Topics include data transmission, data link concepts, networking concepts, network security, application protocols, net-centric computing and web programming.
|CS3997||Professional Practice||3 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 I.S.P. certification through CIPS. 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. Covers technical writing, oral presentation and library skills.
Prerequisites: Enrolment in the BCS or BISys program and 60 ch completed.
|CS4003||Biocomputing in Drug Design II||4 ch (3C 2L)|
A follow-up of CS 3003/CHEM 3003 . Topics include pharmacophore perception, solvation models, free-energy calculations, quantitative structure activity relationship (QSAR), virtual drug libraries, chemical diversity and cheminformatics. Course includes lectures and computer laboratory component. Note: This course is cross-listed as CHEM 4003 and may be taken for either Computer Science or Science credit.
|CS4015||Software Architecture and Design Patterns (Cross-Listed: SWE 4403)||4 ch (3C 2L) [P]|
Prerequisite: CS 2043 or permission of the instructor.
|CS4065||Interactive Human-Centered Systems||3 ch (3C) [P]|
|CS4405||Operating Systems II||4 ch (3C 1L) [P]|
Covers the structure and design of operating systems. Processor management. Storage management, input/output, interprocess communication, and interrupt handling. Real-time systems, centralized systems, multiprocessor and distributed systems.
|CS4415||Network Security||3 ch (3C) [P]|
|CS4545||Big Data Systems||3 ch (3C) [P]|
|CS4725||Introduction to Artificial Intelligence (O)||4 ch (3C 2*L)|
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.
|CS4735||Computer Graphics||4 ch (3C 3L) [P]|
Covers interactive 3-dimensional computer graphics program development using object-oriented tools. Includes keyboard and mouse interaction, callback functions, windows and viewports, drawing parametric curves and surfaces, affine transformations, the camera model and graphics pipeline, geometric modeling using polyhedral meshes, flying a camera, arcball scene interaction, perspective projection, and visual realism via colour, lighting and texture.
|CS4745||Introduction to Parallel Processing (O)||4 ch (3C 2L) [P]|
Parallel computer architectures, design and analysis of parallel algorithms, parallel programming languages, case studies, selected numerical and non-numerical applications.
Prerequisite: CS 3853 .
|CS4765||Natural Language Processing||3 ch (3C) [P]|
|CS4805||Embedded Systems (O)||4 ch (3C 1T)|
This course will give an overview of the characteristics and design of embedded systems. Topics include formal models and specification languages for capturing embedded system behavior; techniques for specification, exploration and refinement; tools for validation, verification, and simulation; and quality and performance metrics.
|CS4905||Introduction to Compiler Construction (O)||4 ch (3C 2*L) [P]|
Introduces the primary concepts and methodologies used to build compilers. Covers lexical analysis, predictive and LR parsing, compiler compilers and error handling. Syntax-directed translation using abstract parse trees, visitors, symbol tables and type checking. Object code generation including the activation record stack, parameter passing, intermediate representation trees, instruction selection, tree tiling and register allocation.
Prerequisite: CS 2333 .
|CS4935||Advanced Algorithmic Techniques||4 ch (3C 1T)|
This course covers advanced algorithmic techniques for analyzing and handling intractable and complicated tractable problems. Topics include NP-completeness and problem reductions, randomization, approximability, special case analysis, and network flow algorithms.
Prerequisite: CS 3383 .
|CS4983||Senior Technical Report||2 ch (2C) [W]|
Builds on the skills developed in CS 3997 through the preparation and presentation of a technical report, which is typically a critical analysis paper.
Prerequisite: CS 3997 .
|CS4995||Topics in Computing (O)||4 ch|
|CS4997||Honours Thesis||4 ch [W]|
This course provides the student with the opportunity to undertake a project at a depth not provided elsewhere in the curriculum. Planning the thesis is done in the term prior to completion. The project topic must have the approval of a supervisor before the start of term. The student submits detailed proposal, schedule, progress reports, and final thesis report to the thesis coordinator with the supervisor's approval. A seminar is required. Detailed guidelines available from coordinator in the preceding term. Offered as an eight month course.
Prerequisite: CS 3997 . Open to all CS students in their final year with a B average in the previous assessment year or a B cgpa. To receive an Honours designation please refer to the CS Curriculum regulations in the program Section of the Calendar.
|CS4998||Open Source Project||4 ch [P]|
An Undergraduate Capstone Open Source Project (UCOSP). Students gain hands-on experience with real-world development practices in a realistic environment while simultaneously learning and applying some core concepts of Computer Science. As part of a national initiative, senior undergraduate students from across Canada work together on open-source software projects. Students work in distributed teams with individuals from other Canadian universities.
Prerequisites: Instructor approval and at least 90 ch completed.
|CS4999||Directed Studies in Computer Science (O)||4 ch|
Students may pursue directed studies in specific areas and topics related to Computer Science. The content and process of each directed study will be through negotiation between a student and the supervising faculty member(s).
Prerequisite: Normally, Faculty approval and at least 90 ch.
|CS5865||Advanced Data Communications and Networking (O)||4 ch (3C 2*L)|
The course covers advanced concepts of the analysis and design of data networks and their operation; architecture, media, communication channel characteristics, routing, protocols and protocol architecture, including modeling and performance analysis. Includes introduction to network simulation.
Prerequisite: CS 3873 .