Computer Science (CS) courses

CS 100 Introduction to Computer Usage

  • Fall
  • Winter
  • Spring

Introduction to using personal computer hardware and software. Using personal computers as effective problem solving tools for the present and the future. Experience with common application software including word processing, spreadsheets, database management, and electronic communications. Exposure to the Internet and World Wide Web. Programming principles to support the understanding of application software.

CS 115 Introduction to Computer Science 1

  • Fall

An introduction to the fundamentals of computer science through the application of elementary programming patterns in the functional style of programming. Function definition and application. Tracing via substitution. Design, testing, and documentation. Recursive data definitions. Lists and trees. Functional and data abstraction.

CS 116 Introduction to Computer Science 2

  • Fall
  • Winter
  • Spring

This course builds on the techniques and patterns learned in CS 115 while making the transition to use of an imperative language. Generative and structural recursion. Mutation (assignment) and its role in an imperative language. Primitive types and basic I/O. Sequencing, selection, looping. Function definition and use. File and console I/O. Issues in computer science. [Also offered at St. Jerome's University in the Winter term.]

CS 123 Developing Programming Principles

  • Fall

Review of fundamental programming concepts and their application in Java. Arrays of simple types. Objects: encapsulation, instantiation, declaration and use, exceptions. Practical programming: design and life-cycle issues. Arrays of objects. Libraries and interactive programming.

CS 126 Introduction to Software Development

An introduction to basic concepts of computer science, including the paradigms of theory, abstraction, and design. Broad themes include the design and analysis of algorithms, the management of information, and the programming mechanisms and methodologies required in implementations. Topics discussed include iterative and recursive sorting algorithms; lists, stacks, queues, trees, and their application; and the history and philosophy of computer science.

CS 134 Principles of Computer Science

  • Fall
  • Winter
  • Spring

An introduction to basic concepts of computer science, including the paradigms of theory, abstraction, and design. Broad themes include the design and analysis of algorithms, the management of information, and the programming mechanisms and methodologies required in implementations. Topics discussed include iterative and recursive sorting algorithms; lists, stacks, queues, trees, and their application; and the history and philosophy of computer science.

CS 135 Designing Functional Programs

  • Fall
  • Winter
  • Spring

An introduction to the fundamentals of computer science through the application of elementary programming patterns in the functional style of programming. Syntax and semantics of a functional programming language. Tracing via substitution. Design, testing, and documentation. Linear and nonlinear data structures. Recursive data definitions. Abstraction and encapsulation. Generative and structural recursion. Historical context.

CS 136 Elementary Algorithm Design and Data Abstraction

  • Fall
  • Winter
  • Spring

This course builds on the techniques and patterns learned in CS 135 while making the transition to use of an imperative language. It introduces the design and analysis of algorithms, the management of information, and the programming mechanisms and methodologies required in implementations. Topics discussed include iterative and recursive sorting algorithms; lists, stacks, queues, trees, and their application; abstract data types and their implementations.

CS 137 Programming Principles

  • Fall

Review of fundamental programming concepts and their application. Procedures and parameter passing. Arrays and structures. Recursion. Sorting. Pointers and simple dynamic structures. Space and time analysis of designs. Design methodologies.

CS 138 Functional Programming and Data Abstraction

  • Winter

An introduction to software abstractions via elementary programming patterns and abstract data types. Syntax and semantics of a functional programming language. Recursive data definitions. Functional abstraction and encapsulation. Study of lists, stacks, queues, trees as abstract data types. Appropriate choice of abstract data types and their implementations.

CS 145 Design, Abstraction, and Implementation

  • Fall

CS 145 is an advanced-level course that combines CS 135 and 136.

CS 200 Concepts for Advanced Computer Usage

  • Fall
  • Winter
  • Spring

Important concepts underlying major personal computer application categories; methodologies for learning and evaluating software; operating system and hardware design from the user's point of view, with implications for maintaining a personal computer. Students are encouraged to use their own personal computer for assignments. A substantial project is required involving the integrated use of several applications.

CS 230 Introduction to Computers and Computer Systems

  • Winter

Basic computer architecture, operating system services, and programming languages in support of development of software systems.

CS 234 Data Types and Structures

  • Fall
  • Spring

Top-down design of data structures. Using representation-independent data types. Introduction to commonly used data types, including lists, sets, mappings, and trees. Selection of data representation.

CS 240 Data Structures and Data Management

  • Fall
  • Winter
  • Spring

Introduction to widely used and effective methods of data organization, focusing on data structures, their algorithms, and the performance of these algorithms. Specific topics include priority queues, sorting, dictionaries, data structures for text processing.

CS 241 Foundations of Sequential Programs

  • Fall
  • Winter
  • Spring

The relationship between high-level languages and the computer architecture that underlies their implementation, including basic machine architecture, assemblers, specification and translation of programming languages, linkers and loaders, block-structured languages, parameter passing mechanisms, and comparison of programming languages.

CS 245 Logic and Computation

  • Fall
  • Winter
  • Spring

Formal logic. Proof systems and styles. Rudimentary model theory. Logic-based specification. Reasoning about programs. Correctness proofs.

CS 246 Software Abstraction and Specification

  • Fall
  • Winter
  • Spring

Systematic methods for designing, coding, testing, and documenting medium-sized programs. Major topics include formal specification, abstraction, modularity and reusability. Students will become strong apprentice programmers able to write a clear specification for a problem, read a specification and design the software to implement it, use appropriate data structures in a program, write reusable code and reuse existing code when possible, debug a program, and adequately test a program.

CS 251 Computer Organization and Design

  • Fall
  • Winter
  • Spring

Overview of computer organization and performance. Basics of digital logic design. Combinational and sequential elements. Data representation and manipulation. Basics of processor design. Pipelining. Memory hierarchies. Multiprocessors.

CS 330 Management Information Systems

  • Fall
  • Winter
  • Spring

An introduction to information systems and their strategic role in business. Topics include types of information systems, organizational requirements, systems development strategies, decision support systems, data and information management, and information systems management, control and implementation.

CS 338 Computer Applications in Business: Databases

  • Fall
  • Winter
  • Spring

A user-oriented approach to the management of large collections of data. Methods used for the storage, selection and presentation of data. Common database management systems.

CS 341 Algorithms

  • Fall
  • Winter
  • Spring

The study of efficient algorithms and effective algorithm design techniques. Program design with emphasis on pragmatic and mathematical aspects of program efficiency. Topics include divide and conquer algorithms, recurrences, greedy algorithms, dynamic programming, graph search and backtrack, problems without algorithms, NP-completeness and its implications.

CS 343 Concurrent and Parallel Programming

  • Fall
  • Winter

An introduction to concurrent and parallel programming, with an emphasis on language constructs. Major topics include: exceptions, coroutines, atomic operations, critical sections, mutual exclusion, semaphores, high-level concurrency, deadlock, interprocess communication, process structuring, shared memory and distributed architectures. Students will learn how to structure, implement and debug concurrent programs.

CS 348 Introduction to Database Management

  • Fall
  • Winter
  • Spring

The main objective of this course is to introduce students to fundamentals of database technology by studying databases from three viewpoints: those of the database user, the database designer, and the database administrator. It teaches the use of a database management system (DBMS) by treating it as a black box, focusing only on its functionality and its interfaces. Topics include: introduction to database systems, relational database systems, database design methodology, SQL and interfaces, database application development, concept of transactions, ODBC, JDBC, database tuning, database Administration, and current topics (distributed databases, data warehouses, data mining).

CS 349 User Interfaces

  • Winter
  • Spring

An introduction to contemporary user interfaces, including the basics of human-computer interaction, the user interface design/evaluation process, the event abstraction, user interface components, specification of user interfaces, and the architectures within which user interfaces are developed. Implementation and evaluation of a typical user interface is considered.

CS 350 Operating Systems

  • Fall
  • Winter
  • Spring

An introduction to the fundamentals of operating system function, design, and implementation. Topics include concurrency, synchronization, processes, threads, scheduling, memory management, file systems, device management, and security.

CS 360 Introduction to the Theory of Computing

  • Fall
  • Winter
  • Spring

Models of computers including finite automata and Turing machines. Basics of formal languages with applications to the syntax of programming languages. Alternate characterizations of language classes. Proving unrecognizability. Unsolvable problems and their relevance to the semantics of programming.

CS 365 Models of Computation

  • Winter

Finite automata and regular expressions. Pushdown automata and context-free grammars. Turing machines and undecidability. Time and space complexity. Diagonalization and hierarchies. CS 365 covers the material in CS 360 at an accelerated pace plus additional topics in computational complexity.

CS 370 Numerical Computation

  • Fall
  • Winter
  • Spring

Principles and practices of basic numerical computation as a key aspect of scientific computation. Visualization of results. Approximation by splines, fast Fourier transforms, solution of linear and nonlinear equations, differential equations, floating point number systems, error, stability. Presented in the context of specific applications to image processing, analysis of data, scientific modeling.

CS 371 Introduction to Computational Mathematics

  • Fall
  • Winter
  • Spring

A rigorous introduction to the field of computational mathematics. The focus is on the interplay between continuous models and their solution via discrete processes. Topics include: pitfalls in computation, solution of linear systems, interpolation, discrete Fourier transforms and numerical integration. Applications are used as motivation.

CS 398 Topics in Computer Science

See the Course Offerings List for topics available.

CS 430 Applications Software Engineering

  • Fall
  • Winter

An investigation into the role and function of software engineering practice in the construction of computer based systems. Topics include: requirements and specification; documentation techniques; analysis and design; implementation; testing and maintenance; management issues.

CS 432 Business Systems Analysis

  • Fall
  • Winter
  • Spring

Survey of organization and management theory. Systems theory and the systems approach. Systems design. Database concepts. Implementation and evaluation of computer based information systems.

CS 436 Distributed Computer Systems

  • Winter

An introduction to networks and computer systems, reliable communication, layered models, distributed file systems, cryptography, concurrency issues.

CS 437 Computer Simulation of Complex Systems

  • Winter
  • Spring

Building and validation of stochastic simulation models useful in computing, operations research, engineering and science. Related design and estimation problems. Variance reduction. The implementation and analysis of simulation results.

CS 442 Principles of Programming Languages

  • Winter

An exposure to important concepts and issues in contemporary programming languages. Data types, abstraction, and polymorphism. Program structure. Lambda calculus and functional programming, logic programming, object-oriented programming. Semantics of programming languages. Critical comparison of language features and programming methodologies using examples drawn from a variety of programming languages including Lisp, Prolog, ML, Ada, Smalltalk, Icon, APL, and Lucid. Programming assignments involve the use of some of these languages.

CS 444 Compiler Construction

  • Winter

Phases of compilation. Lexical analysis and a review of parsing. Compiler-compilers and translator writing systems. LEX and YACC. Scope rules, block structure, and symbol tables. Runtime stack management. Parameter passage mechanisms. Stack storage organization and templates. Heap storage management. Intermediate code. Code generation. Macros.

CS 445 Software Requirements Specification and Analysis

  • Fall
  • Winter

Introduces students to the requirements definition phase of software development. Models, notations, and processes for software requirements identification, representation, analysis, and validation. Cost estimation from early documents and specifications.

CS 446 Software Design and Architectures

  • Fall
  • Spring

Introduces students to the design, implementation, and evolution phases of software development. Software design processes, methods, and notation. Implementation of designs. Evolution of designs and implementations. Management of design activities.

CS 447 Software Testing, Quality Assurance and Maintenance

  • Winter

Introduces students to systematic testing of software systems. Software verification, reviews, metrics, quality assurance, and prediction of software reliability and availability. Related management issues.

CS 448 Database Systems Implementation

  • Fall
  • Winter
  • Spring

The objective of this course is to introduce students to fundamentals of building a relational database management system. The course focuses on the database engine core technology by studying topics such as storage management (data layout, disk-based data structures), indexing, query processing algorithms, query optimization, transactional concurrency control, logging and recovery.

CS 450 Computer Architecture

  • Winter

The course is intended to provide the student with an appreciation of modern computer design and its relation to system architecture, compiler technology and operating system functionality. The course places an emphasis on design based on the measurement of performance and its dependency on parallelism, efficiency, latency and resource utilization.

CS 452 Real-time Programming

  • Fall
  • Spring

Intended to give students experience with tools and techniques of real-time programming, this course includes not only issues of microcomputer architecture and a real-time programming language and operating system, but also hands-on experience programming a microcomputer for applications such as process control, data acquisition and communication.

CS 454 Distributed Systems

  • Fall
  • Winter
  • Spring

An introduction to distributed systems, emphasizing the multiple levels of software in such systems. Specific topics include fundamentals of data communications, network architecture and protocols, local-area networks, concurrency control in distributed systems, recovery in distributed systems, and clock synchronization.

CS 456 Computer Networks

  • Fall
  • Winter
  • Spring

An introduction to network architectures and protocols, placing emphasis on protocols used in the Internet. Specific topics include application layer protocols, network programming, transport protocols, routing, multicast, data link layer issues, multimedia networking, network security, and network management.

CS 457 System Performance Evaluation

  • Winter

Basic techniques of system performance evaluation. Specific topics include: performance modeling, discrete event simulation, verification and validation of simulation models, analysis of simulation output, analysis of single server queue and queueing networks, modeling of computer systems, networks, and other queueing or non-queueing systems.

CS 458 Computer Security and Privacy

  • Fall
  • Winter

Security and privacy issues in various aspects of computing. Specific topics include: comparing security and privacy, program security, writing secure programs, controls against program threats, operating system security, formal security models, network security, Internet application security and privacy, privacy-enhancing technologies, database security and privacy, inference, data mining, security policies, physical security, economics of security, and legal and ethical issues.

CS 462 Formal Languages and Parsing

  • Fall

Languages and their representations. Grammars --Chomsky hierarchy. Regular sets and sequential machines. Context-free grammars -- normal forms, basic properties. Pushdown automata and transducers. Operations on languages. Undecidable problems in language theory. Applications to the design of programming languages and compiler construction.

CS 466 Algorithm Design and Analysis

  • Fall
  • Spring

Algorithmic approaches and methods of assessment that reflect a broad spectrum of criteria, including randomized algorithms, amortized analysis, lower bounds, approximation algorithms, and on-line algorithms. Particular examples will be chosen from different areas of active research and application.

CS 467 Introduction to Quantum Information Processing

Basics of computational complexity; basics of quantum information; quantum phenomena; quantum circuits and universality; relationship between quantum and classical complexity classes; simple quantum algorithms; quantum Fourier transform; Shor factoring algorithm; Grover search algorithm; physical realization of quantum computation; error-correction and fault-tolerance; quantum key distribution.

CS 473 Medical Image Processing

  • Winter

An introduction to computational problems in medical imaging. Sources of medical images (MRI, CT, ultrasound, PET) as well as reconstruction methods for MRI and CT. Image manipulation and enhancement such as denoising and deblurring. Patient motion correction and optimal image alignment. Tissue classification and organ delineation using image topology.

CS 475 Computational Linear Algebra

  • Fall

Basic concepts and implementation of numerical linear algebra techniques and their use in solving application problems. Special methods for solving linear systems having special features. Direct methods: symmetric, positive definite, band, general sparse structures, ordering methods.

CS 476 Numeric Computation for Financial Modeling

  • Winter

The interaction of financial models, numerical methods, and computing environments. Basic computational aspects of option pricing and hedging. Numerical methods for stochastic differential equations, strong and weak convergence. Generating correlated random numbers. Time-stepping methods. Finite difference methods for the Black-Scholes equation. Discretization, stability, convergence. Methods for portfolio optimization, effect of data errors on portfolio weights.

CS 482 Computational Techniques in Biological Sequence Analysis

  • Fall

Computer science principles and algorithms in biological sequence analysis. Topics include algorithms for sequence comparison, for large-scale database search in biological databases, for sequence assembly, for evolutionary tree reconstruction, for identifying important features in DNA and RNA sequences, and underlying computational techniques for understanding strings and trees and for making probabilistic inferences.

CS 483 Computational Techniques in Structural Bioinformatics

  • Winter

Algorithms and techniques used in the identification and functional characterization of cellular proteins. Topics include: protein databases, gene expression analysis, protein structure prediction, protein function prediction, active site detection and ligand docking, protein-protein interaction, HTCS (High Throughput Conformational Search), and QSAR (Quantitative Structure-Activity Relationships).

CS 486 Introduction to Artificial Intelligence

  • Fall
  • Winter
  • Spring

Goals and methods of artificial intelligence. Methods of general problem solving. Knowledge representation and reasoning. Planning. Reasoning about uncertainty. Machine learning. Multi-agent systems. Natural language processing.

CS 487 Introduction to Symbolic Computation

  • Winter

An introduction to the use of computers for symbolic mathematical computation, involving traditional mathematical computations such as solving linear equations (exactly), analytic differentiation and integration of functions, and analytic solution of differential equations.

CS 488 Introduction to Computer Graphics

  • Fall
  • Winter
  • Spring

Software and hardware for interactive computer graphics. Implementation of device drivers, 3-D transformations, clipping, perspective, and input routines. Data structures, hidden surface removal, colour shading techniques, and some additional topics will be covered.

CS 489 Advanced Topics in Computer Science

  • Fall

See the Course Offerings List for topics available.

CS 490 Information Systems Management

  • Winter

The integration of business and technical considerations in the design, implementation and management of information systems. Topics include: IS planning and development; business, management, executive, and strategic information systems, including case studies of selected large- scale systems; decision support systems; end-user training and development; systems security, disaster planning and recovery. Practical examples of information systems in industry.

CS 492 The Social Implications of Computing

  • Winter

This course is designed to consider the problems encountered by individuals, organizations and society as computer technology is adopted, with a view towards assessing possible courses of action.

CS 499T Honours Thesis

The student will undertake new analysis, synthesis, measurement, or experimentation to produce a document that demonstrates a depth of understanding of a topic that goes beyond what is obtained in a standard undergraduate education.