See also Adult Basic Education (ABE) Upgrading Courses.

University/Career/Technology Courses

Course offerings vary from year to year. Check Generate a Timetable for available course offerings.

The following courses are offered through the Faculty of Science and Technology.

CSCI 112 (3) Applications Programming

An introduction to the use and customization of application packages. Includes macro programming as well as visual programming. (3:0:2)

Prerequisite: None.

CSCI 115 (3) Introduction to Web Page Development

An introduction to Web page construction for students not majoring in Computer Science. The course focuses on client-side techniques: Hypertext Markup Language (HTML, XHTML), Cascading Style Sheets (CSS), and an introduction to JavaScript. Computer Science students may take this course for credit towards their major in Computer Science. (2:0:2)

Prerequisite: One of Principles of Mathematics 11, Foundations of Mathematics 11, or equivalent.

CSCI 159 (4) Computer Science I

A first year course in computer science. Topics include structured programming, top-down program design, procedures, recursion, and an introduction to dynamic data structures. CSCI 159 was formerly called CSCI 160; credit will not be granted for both courses. Credit will only be granted for one of CSCI 160 or CSCI 159. (3:0:2)

Prerequisite: Pre-calculus 12, MATH 152, or equivalent.

CSCI 160 (4) Computer Science I for Engineering

A first year course in computer science. Topics include structured programming, top-down program design, procedures, recursion, and an introduction to dynamic data structures. (4:0:1)

Prerequisite: Pre-calculus 12, MATH 152, or equivalent.

CSCI 161 (4) Computer Science II

Topics include an introduction to objects, classes, object-oriented programming techniques (encapsulation, inheritance, and polymorphism), dynamic data structures (dynamic arrays, linked lists and trees), and abstract data types (stacks, queues and dictionaries). (3:0:2)

Prerequisite: Min. "C-" in CSCI 160 or CSCI 159.

CSCI 162 (4) Topics in Computer Science

An introduction to applied and theoretical topics, designed to develop an understanding of key concepts in computer science. Topics include digital logic, programming language paradigms including logic and functional programming, computer organization and architecture, system software, software engineering principles, and theory of computation. (3:0:1)

Prerequisite: Min. "C-" in CSCI 159 or CSCI 160.

CSCI 251 (3) Systems and Networks

An introduction to operating systems and computer networks. Topics include network architectures, communications protocols, client / server architecture and file systems. The lab component includes hardware and software installations, upgrades and backups. (3:0:2)

Prerequisite: CSCI 161 and CSCI 162. (The prerequisites may be taken concurrently with CSCI 251 with permission of the chair).

CSCI 260 (3) Data Structures

An examination of various methods of representing and manipulating data, including internal representation of data, stacks, queues, linked lists, trees and graphs. Analysis of algorithms will also be discussed extensively. (4:0:1)

Prerequisite: MATH 123 and min. "C" in CSCI 161.

CSCI 261 (3) Computer Architecture & Assembly Language

An introduction to computer organization, and machine and assembly languages. Topics include data representation, the instruction set and addressing modes of a chosen processor, procedures and parameter passing, and the use of operating system services. (3:0:1)

Prerequisite: Min. "C" in CSCI 161.

CSCI 265 (3) Software Engineering

An exploration of the methods and tools for developing high quality software. The course includes topics in program design, program style, algorithm selection, interface design, debugging and testing, system utilities, version control, regular expressions and an introduction to scripting languages. (4:0:1)

Prerequisite: Min. "C" in CSCI 161.

CSCI 301 (3) Introduction to the Practice of Cyber-Security

An introduction to key cyber-security concepts as applied to information systems in a business environment. Topics include assessing risk in cyber-security, attack vectors, tenets of cyber-security, the human element, operation security, application security, mobile and IoT security, and incident response plans. (3:0:0)

Prerequisite: Second-year standing.

CSCI 307 (1) Preparation for Co-operative Education Employment

Preparation for first co-operative education experience through practical training in areas such as resume writing and interview skills. (0:1:0)

Prerequisite: Min. "B" grade point average in all required first year CSCI and MATH courses.

CSCI 308 (9) Co-operative Work Placement I

Individual students are carefully matched to employers who supervise them and evaluate their performance during paid work experience. University personnel conduct monitoring. Students will write a work placement report. (0:0:0)

Prerequisite: Admission to the Computer Science Co-op Program; completion of CSCI 307 is recommended.

CSCI 309 (9) Co-operative Work Placement II

The second work placement, as described for CSCI 308. (0:0:0)

Prerequisite: Min. grade point average "B" and CSCI 308.

CSCI 310 (3) Introduction to Human-Computer Interaction

An introduction to understanding human behaviour as it applies to interface design, implementation, and evaluation. Topics include: design issues and goals, the limits of the human cognitive system, user-centered design, prototyping, establishing requirements, evaluation techniques, and design implications of emerging technologies. (3:0:1)

Prerequisite: Min. "C" in CSCI 161 and CSCI 162.

CSCI 311 (3) Web Programming

Exploration of languages, tools and techniques to write software for use within the World Wide Web (WWW). The course includes the WWW client/server model and related protocols, web server properties, web markup languages, client/server scripting tools, server side programming, and database access tools. (3:0:2)

Prerequisite: Min. "C" in each of CSCI 265 and CSCI 310. CSCI 115 or familiarity with HTML recommended.

CSCI 320 (3) Foundations of Computer Science

A survey of formal models and results that form the theoretical foundation of computer science. Typical topics include finite automata, Turing machines, simple undecidable problems, context-free languages, grammars and elementary computational complexity. (3:1:0)

Prerequisite: Math 123, and min. "C" in CSCI 260.

CSCI 330 (3) Programming Languages

The fundamental concepts of imperative and applicative programming languages. Topics include the description of data types, variable assignment and sharing, sequencing, iteration and recursion, parameter passing mechanisms, and type checking. (3:0:1)

Prerequisite: Min. "C" in each of CSCI 162, CSCI 260, CSCI 261, and CSCI 265.

CSCI 331 (3) Object-Oriented Software Development

Topics include aspects of object-oriented analysis, design and development; definition and comparison of object-oriented metrics; verification methods for OO-software; maintenance and reuse issues. (3:0:1)

Prerequisite: Min. "C" in each of CSCI 260 and CSCI 265.

CSCI 355 (3) Digital Logic and Computer Organization

The fundamentals of logic design, computer organization, and the structure of major hardware components of computers. Topics include the application of Boolean algebra to switching circuits; the use of MSI, LSI and field programmable devices in digital design; combinatorial and sequential circuits, flip flops, counters, memory organization, CAD tools. (3:0:2)

Prerequisite: MATH 123 and min. "C" in each of CSCI 162 and CSCI 261.

CSCI 360 (3) Intro to Operating Systems

An introduction to the major concepts of operating systems and study of the interrelationships between the operating system and the architecture of computer systems. Topics include operating system structures, concurrent programming techniques, cpu scheduling, deadlocks, memory management, file systems and protection. (3:0:1)

Prerequisite: Min. "C" in each of CSCI 260, CSCI 261, and CSCI 265.

CSCI 370 (3) Database Systems

An introduction to the use and operating principles of database management systems. Topics include data entities and relationships, data modelling using Entity-Relationship Diagrams, hierarchical, network and relational models of databases, query language, physical representation of data in secondary storage, relational algebra and calculus as applied to the design of databases, security and integrity in the context of concurrent use, and basic ethical issues associated with database design and use. (3:0:1)

Prerequisite: Min. "C" in CSCI 260 and CSCI 265.

CSCI 375 (3) Intro to Systems Analysis

The methods and methodologies used in analyzing and designing various types of systems. Topics include project definition, CASE tools, data gathering, structured analysis and design, human-machine interface, database design, system controls, hardware selection and system testing, implementation and operation. Students are assigned to a project team involved in a system study as part of the course. (3:0:1)

Prerequisite: Min. "C" in CSCI 162 and CSCI 265.

CSCI 400 (3) Computers and Society

An introduction to the social, philosophical and ethical issues of technology with an emphasis on computing technology. Topics covered include privacy, social control, information, the changing nature of work and appropriate technology. (3:1:0)

Prerequisite: Min. 3 credits of Computing Science.

CSCI 405 (3) Computer Graphics

The fundamental algorithms and data structures used in generative computer graphics. Topics include structure of interactive graphics programs, raster algorithms, colour, two- and three-dimensional geometric transformations, animation, parallel and perspective projection, hidden line and hidden surface algorithms, cubic curves and surfaces, and shading models. Optional topics include fractals/L-systems, and GPU hardware programming. (3:0:1)

Prerequisite: MATH 141 or MATH 241; min "C" in both CSCI 260 and CSCI 360; and 3 additional credits of upper-level Computing Science courses.

CSCI 408 (9) Co-operative Work Placement III

The third work placement, as described for CSCI 308. (0:0:0)

Prerequisite: Min. "B" grade point average and CSCI 309.

CSCI 409 (9) Co-operative Work Placement IV

The fourth work placement, as described for CSCI 308. (0:0:0 -35)

Prerequisite: Min. "B" grade point average and CSCI 408.

CSCI 422 (3) Advanced Algorithms

A survey of advanced topics in algorithm design and analysis. Typical topics include complexity analysis, strategies for intractable problems, approximation algorithms, random algorithms, advanced data structures for sorting and searching, graph and network algorithms, amortized analysis. (3:1:0)

Prerequisite: Math 123 and min. "C" in both CSCI 260 and CSCI 320

CSCI 429 (3) Advanced Topics in Algorithms and Complexity

This course examines selected emerging and advanced topics in Algorithms and Complexity Theory. Topics may include: advanced techniques for algorithm analysis; complexity classes; algorithmic techniques in graph theory, combinatorics, and optimization; approximation algorithms; distributed and parallel algorithms; probabilistic algorithms; online algorithms; quantum algorithms. May be taken more than once in different topics with permission of Department Chair. CSCI 429 was formerly called CSCI 485C; credit will not be granted for both courses. (3:0:2)

Prerequisite: Min. "C" in CSCI 260 and CSCI 320.

CSCI 439 (3) Advanced Topics in Programming

This course examines selected emerging and advanced topics in programming. Topics may include: a detailed analysis of language design, semantics, verification, resource utilization, language support for concurrency, meta-programming, and compilers. May be taken more than once in different topics with permission of Department Chair. (3:0:2)

Prerequisite: Min. "C" in CSCI 330.

CSCI 460 (3) Networks and Communications

An introduction to computer networks and communications. Topics include local and wide area networks, network architectures, security, communications protocols, routing, and an introduction to distributed computing. (3:0:1)

Prerequisite: Min. "C" in CSCI 251, CSCI 260, and CSCI 265.

CSCI 461 (3) Embedded and Real-Time Software Systems

The theory and practice of developing embedded systems with time and resource constraints. Students design, develop and deploy embedded systems on hardware ranging from bare-metal micro-controllers to systems with a real-time OS to Embedded Linux systems. Time-oriented topics include bare-metal programming, cooperative multitasking and preemptive multitasking. (3:0:2)

Prerequisite: Min. "C" in CSCI 355, CSCI 360, and CSCI 460.

CSCI 465 (3) Advanced Topics in Software Engineering

This course examines selected emerging and advanced topics in software engineering. Topics may include: software verification and validation techniques, techniques to model and analyze software processes, software design for various architectures (service-oriented, component-oriented, message-oriented), automation of software delivery pipelines, case studies of large scale software successes and failures. May be taken more than once in different topics with permission of Department Chair. (3:0:2)

Prerequisite: Min. "C" in CSCI 265 and CSCI 375.

CSCI 469 (3) Advanced Topics in Systems

This course covers selected emerging and advanced topics in Systems. Topics may include: system programming, distributed systems, peer-to-peer systems, clustered systems, distributed file systems, replicated systems, content distribution systems, fault-tolerant systems, multimedia systems, real-time systems, virtualized systems etc. May be taken more than once in different topics with permission of Department Chair. (3:0:2)

Prerequisite: Min. "C" in CSCI 360.

CSCI 478 (3) Advanced Topics in Data Science

This course examines selected emerging and advanced topics in Data Science. Topics may include: big data, data visualization techniques, data mining, statistical modeling and prediction, emerging data analysis techniques. May be taken more than once in different topics with permission of Department Chair. (3:0:2)

Prerequisite: Min. "C" in both CSCI 310 and CSCI 370.

CSCI 479 (3) Advanced Topics in Artificial Intelligence

This course examines selected emerging and advanced topics in Artificial Intelligence. Topics may include: searching strategies, constraint satisfaction, game playing, knowledge representation and reasoning, machine learning, applications to robotics. May be taken more than once in different topics with permission of Department Chair. (3:0:2)

Prerequisite: CSCI 162 and CSCI 370.

CSCI 485 (3) Advanced General Topics in Computer Science

This course covers selected emerging and advanced topics in Computer Science. Topics may include: programming, systems, software engineering, human computer interaction, algorithms, artificial intelligence, data science, robotics. May be taken more than once in different topics with permission of Department Chair. (3:0:2)

Prerequisite: Min. "C" in each of CSCI 265, CSCI 260, and CSCI 261.

CSCI 485C (3) Topics in Systems: Advanced Algorithms

Offered as CSCI 485A, 485B, 485C, 485D. Topics depend primarily on the interests of the instructor. Entry is restricted to third and fourth year students who meet the prerequisite specified for the topic to be offered. May be taken more than once in different topics with permission of department Chair. (3:0:0)

Prerequisite: Dependent on topic, with permission of Chair.

CSCI 485F (3) Topics in Systems: Array Programming

Topics depend primarily on the interests of the instructor. Entry is restricted to third and fourth year students who meet the prerequisite specified for the topic to be offered. May be taken more than once in different topics with permission of department Chair. (3:0:1)

Prerequisite: Dependent on topic, with permission of Chair.

CSCI 490 (3) Independent Project

A one-semester independent research and development project under faculty supervision. Includes required research and development as per an approved project proposal, and preparation of a written report detailing the results. Credit will not be given for both CSCI 490 and CSCI 491 on the same subject. (0:1:0)

Prerequisite: Min. 12 upper-level Computing Science credits.

CSCI 491 (6) Senior Research Project

An opportunity for student experience in research and development under the supervision of a faculty member in Computing Science. Project duration is two academic terms during which time a student must develop an approved project proposal, carry out the required research and development, prepare a written report detailing results, and satisfy any additional requirements as specified in the approved project proposal. (0:0:6 for 30 weeks)

Prerequisite: Min. 12 upper-level Computing Science credits.