Computer Science


CS1003Introduction to Computer Programming4 ch (3C 1T 2L)

Intended for Science, Applied Science and Engineering students. Introduces the use of digital computers. Includes: problem analysis; algorithm design, and program structure. Use of procedures, loops, and arrays. Debugging and verification of programs. Note: Only students in the BScSwE program can take both CS1003 and CS1073 (or equivalent). 

Co-requisites: (MATH 1003 or MATH 1001) and MATH 1503.

CS1023Data Structures and Algorithms4 ch (3C 2L)

Intended for Science, Applied Science, and Engineering Students. Introductions to the ideas of abstraction of procedures and data. 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. Note: This course may not be taken for credit by CS students.

Prerequisite: CS 1003

CS1073Introduction to Computer Programming I (in Java)4 ch (3C 1.5L 1T)

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: CS 1073, CS 1616, or IT 2773. Also, only students in the BScSwE program can take both CS1003 and CS1073 (or equivalent).

Prerequisite: High School Mathematics 

CS1083Introduction to Computer Programming II (in Java)4 ch (3C 1.5L 1T)

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 with a "C" or better) or (IT 2773 with a "C" or better, and High School Mathematics or MATH 1863 or permission of the instructor).

CS1303Discrete Structures4 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. 

CS2043Software Engineering I4 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. Note: Credit is not given for both CS 2013 and CS 2043.

Prerequisite: CS 1083

CS2113Scientific Computing4 ch (3C)

An introduction to numerical techniques for solving scientific problems. Topics to include sequences, series, structured linear systems, polynomial models, quadrature, differential/difference equations and root finding. Use of existing numerical software packages and a basic introduction to scientific programming using a high-level language. 

Prerequisites: MATH 1013 and one of CS 1073, IT 2773 or CS 1003.

CS2253Machine Level Programming4 ch (3C 2L)

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.

Prerequisites: (CS 1303 or permission of instructor).

Corequisite: CS2263.
CS2263Systems Software Development4 ch (3C 2L)
This course examines program development and supporting tools, using the C language. Topics include: organization of programs into procedural components, multi-file program organization, inter-file type checking, and development, maintenance and performance techniques. Software tools for program development such as compilation/linking, building, debugging, version control, profiling and tracing are included.Prerequisites: CS 1083.
CS2333Computability and Formal Languages4 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.

Prerequisites: CS1073, CS1303, and 30ch.

CS2383Data Structures and Algorithms4 ch (3C 1T)

Presents formal specifications of abstract data and their data structure representations, operations, and algorithms. Include 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.

Prerequisite: CS 1083 and CS 1303

CS2616Java for Programmers1 ch (2C)

Basic language constructs (input/output, variables and types, control structures.) Object oriented concepts, such as classes, objects, attributes and methods. Programming with multiple classes. This course is given over an 8 week period as follows: 2 hours/week for 3 weeks followed by midterm test plus 2 hours/week for 3 weeks followed by final examination. Course drop date is one week after the midterm test. Note: Credit will not be given for both CS 1083 and CS 2616.

Prerequisite: Two term courses (at least 6 ch) in programming, excluding CS 1083.

CS2617C++ for Java Programmers1 ch (2C)

Basic language constructs (input/output, variables and types, control structures), classes, pointers, and preprocessor. This course is given over an 8 week period as follows: 2 hours/week for 3 weeks followed by midterm test plus 2 hours/week for 3 weeks followed by final examination. Course drop date is one week after the midterm test.  

Prerequisite: CS 2253 and (CS 1083 or CS 2616, or equivalent).
CS2803Logic Design4ch (3C 2L*)

Switching algebra and its application in analysis and synthesis of combinational and clocked sequential circuits; minimization and realization methods. Universal logic gates, error detection and correction, register and counter operations, and memory systems. Note: Credit will not be given for both ECE 2214 and CS 2803.

Prerequisites: CS 1003 or CS 1073

CS2998Programming Project4 ch

This individual study course provides an opportunity for students to learn programming languages that are not otherwise part of their degree program. The students first teach themselves a programming language, approved by the department, and then develop a program using this language. This is done under the supervision of a faculty member. A presentation of the program developed is required. Note: the course may not be taken for credit for by BScCS or BCS students.

Prerequisite: Approval of the Department.

CS3033Software Design and Development4ch (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.

CS3113Introduction to Numerical Methods4 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.


Prerequisites: (CS 1003 or CS 1073, MATH 1013 ) or CS 2113, and MATH 1503 or MATH 2213.

CS3123High Speed Computing4ch (3C 2L*)

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

CS3403Operating Systems4ch (3C 2L*)

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.

Prerequisite: CS 2253 , CS 2263 and 70ch completed.

CS3423Data Management (A)4 ch (3C)

Discussion of selected topics at an advanced level concerning the storage and manipulation of large volumes of data outside of a conventional relational database or statistical package.

Prerequisite: INFO 1103 and 70 ch completed.

CS3553Introduction to Bioinformatics (Cross-Listed:BIOL 3553) 4ch (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.Prerequisites: 60 credit hours completed in a BSc (Biology, Marine Biology, Environmental Biology, or Biology-Psychology) or in a BScCS, or permission of the instructor.
CS3773Topics in Web Science4 ch (3C)

Web science integrates computer information sciences with multiple aspects of social sciences. Web Science is concerned with the socio-technical aspects of the World Wide Web. Understanding the web requires analysis of its architecture and applications, the people, organizations, policies and economics that are affected by it and impact it. This course will explore the history of the Web and how evolution of metadata representation standards have resulted in a smarter web. Students will primarily do a hands-on data analytics project using Open Data, Linked Data and SPARQL endpoints available on the web.

Prerequisites: 70ch completed or permission of the instructor.

CS3813Computer Architecture and Organization4ch (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.  

Prerequisite: (ECE 2214 and ECE 2215) or CS 2803, and CS2253. 

CS3893Computer Networking4 ch (3C)

This course provides an in-depth look at the hardware and software behind the Internet and other computer networks. Topics include OSI network architecture, communication protocols, UDP and TCP, socket programming, common application-level protocols, congestion control, routing protocols, Internet Protocol, link layer services, network security.

Prerequisite: CS 2253.

Co-requisite: (ECE 2214 and ECE 2215) or CS 2803.
CS3913Algorithmics4 ch (3C)

Continues the study of algorithms begun in CS 2383. Covers advanced techniques for analyzing recursive algorithms, examines major algorithm-design approaches including greedy, divide and conquer, dynamic programming, and graph-based approaches. Considers randomized algorithms and introduces complexity theory, including NP-completeness. One or more advanced topics will be chosen from the following areas: algorithmic problems arising in artificial intelligence, state spaces and search strategies, parallel and distributed algorithms.

Prerequisites: CS 2383 and CS 2333

CS3983Professional Practice3 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. Covers basic writing, oral presentation and library skills.

Prerequisites: HUM 1021 and 70 ch completed.

CS4033Software Project Management and Quality Assurance4 ch (3C)

Discusses the "umbrella" activities in software development: project planning and monitoring, risk management, quality assurance through reviews and testing (including reliability and safety, and test automation), and the management of technical debt. Emphasis is put on software metrics and their use in quantitative management. Introduces concepts in software process improvement.

Prerequisite: CS2043

CS4083Leading-Edge Technology in Software Development4 ch (3C)

Selected topics in software engineering at an advanced level. Content will vary. Topics will be posted on the department web site at least one month prior to the beginning of the course. One of the goals of this course is for life-long learning, through reading papers from the literature and discussing them in class.

Prerequisite: CS 3033.
CS4093Team Software Development Project4 ch (3C)

The application of sound software engineering techniques to a problem in a practical setting. This course involves a relatively large software project, done in a team (with proper team management). A real "client" shall be involved, from whom the requirements have to be gathered, and to whom quality product and documentation have to be delivered. This course is normally completed during the student's final year of study. 

Prerequisite: CS 3033 and permission of instructor.

CS4103Parallel Programming with MPI4 ch (3C)

Explores the design and analysis of parallel algorithms on distributed and hybrid computing clusters. Development work on local and remote computing platforms with a high level computing language and message passing libraries such as OpenMP and MPI will provide the core of the course. 

Prerequisite: CS 3123

CS4113Advanced Scientific Computing4 ch (3C)

Topics to be discussed include: systems with banded, sparse, diagonally dominant, Toeplitz, positive definite or symmetric coefficient matrices. Methods of solution include both direct and iterative, factorization, perturbation, relaxation and projection. Additional topics may include eigenvalue problems and nonlinear systems with applications taken from differential and integro-differential equations.

Prerequisites: CS 2113 and CS 3113

CS4123Topics in High-Performance Scientific Computing and Visualization4 ch (3C)

Advanced level discussions chosen from current research topics in computation techniques, high-performance computing or visualization. The course will involve presentations and written reports.

 Prerequisites: CS3123 and CS3813.

CS4403Data Mining (O) (Cross-Listed: DA4403)4 ch (3C 1L)
Major issues in data mining. Data warehouse architecture and its implementation. Data processing, cleaning, integration, and transformation. Methods for data reduction and compression. Data mining primitives, languages, and association rules in large databases. Data classification and prediction.Prerequisites: STAT 2793 and INFO 1103.
CS4525Database Management Systems II4ch (3C 2L*)

File systems and structures, advanced query languages, query optimization, concurrency control and recovery, security and integrity. Overview of non-relational database models.

Prerequisites: INFO 1103, CS2383, and 70 ch completed.

CS4613Programming Languages4ch (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. 

Prerequisites: CS 2333, CS 2043, CS 2263, and 90 ch completed.

CS4713Fundamentals of Simulation4 ch (3C 1T)

Systems and model. The simulation process. Random number generation. Introduction to queues, computer modeling of discrete systems using appropriate languages, computer modeling of continuous systems, model validation and experiment planning. Case studies from a variety of disciplines.

Prerequisites: CS 1083, CS 3113, STAT 3083.

CS4783Web: Semantics, Services and Solutions (O)4 ch (3C)

This course outlines the World Wide Web and focuses on the technologies and innovations that are driving its evolution. It introduces the W3C endorsed Semantic Web technologies and looks at the migration of the syntactic web to the semantic web and subsequent generations. Key topics explored are knowledge engineering; OWL ontology reasoning; text mining and natural language processing tools; web services and workflow technology, as well as end-user interaction in web search.

Prerequisite: CS 1083 , CS 2383 and INFO 1103.

CS4843Wireless and Mobile Computing (A)4 ch (3C)

Wireless communication technology, fading and line-of-sight propagation, antennas, signal encoding, spread spectrum and wireless networking. Cellular system, cell coverage, mobile data communication, mobile IP and WAP. The course will also cover IEEE wireless standards, Bluetooth and other related topics for networking. 

Prerequisite: CS 3893

CS4893Network Programming4ch (3C 2L*)

Threads, socket programming (client & server), secure sockets, multicast sockets, protocol handlers, content handlers, RMI, Mail API and social networks. Uses Java programming language.

Prerequisites: CS 1083 and CS 3893

CS4973Independent Study in Computer Science4 ch

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.

CS4983Technical Report2ch (2S)

Builds on the skills developed in CS 3983, through the preparation and presentation of a technical report. A supervisor approved by the Department must normally be chosen before the beginning of the term.

Prerequisite: CS 3983

CS4993Honours Project4 ch (2S)

The student submits a detailed proposal, schedule, progress reports and written report to the thesis coordinator with the supervisor's approval. A seminar is required. Planning of the thesis is done in the term prior to completion. Detailed guidelines are available from the Department.

Prerequisite: CS 3983

CS4998Directed Studies in Applied Computer Science4 ch (3S)

This course permits students and faculty to explore inter-disciplinary areas of research in relation with computers in Arts, Science, and Business programs. 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: Approval of the CSAS department and at least 90 ch completed. Recommended that students have taken courses in CS or IT at 1xxxx/2xxxx level. 

CS4999Directed Studies in Computer Science4 ch (3S)

This course permits Computers 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.