Computer Science courses are designated by COMP.

1510

An Introduction to Programming for Scientific Computing

introduces students to basic programming in the context of numerical methods with the goal of providing the foundation necessary to handle larger scientific programming projects. Numerical methods to solve selected problems from Physics, Chemistry, and Mathematics will be covered.

CR: COMP 2602, the former Mathematics 2120

LH: 2

PR: Mathematics 1000

1550

Introduction to Multimedia Application Development

is an introduction to programming and computer science with an emphasis on the development of multimedia applications. The course introduces the fundamental principles of programming, including object-oriented and event-driven programming, how to use and create classes and methods and combine them with multimedia libraries to produce animations, handle input from keyboard and mouse, and import sounds and videos to produce multimedia applications which can be directly deployed on the Internet.

LH: 3

1600

Basic Computing and Information Technology

offers an overview of computers and information technology. It provides students with the knowledge necessary to answer questions, such as: What is a computer system? How does it work? How is it used? This is done through the use of popular spreadsheet, word processing and database software packages and the Internet. Social issues and implications will also be included.

CR: Business 2700, COMP 2650 or COMP 2801

LH: 3

1700

Introduction to Computer Science

lays the foundation for the art and the science of computing. The course contains fundamental and topical issues in computers, languages, programming and applications. This course is designed for potential Computer Science majors without a background in programming, but is also available for non majors.

LH: 3

1710

Object-Oriented Programming I

is an introduction to fundamental programming techniques, primitive data types and operations, program control structures and the use of objects, classes and methods.

CR: if previously completed or currently registered for COMP 2710

LH: 3

2000

Collaborative and Emergent Behaviour

is a survey of computation as a means of understanding, modelling, and describing artificial and natural systems. The emergence of complex behaviour from the interaction of simple rules governing individual components is illustrated and discussed, as well as the role of communication between system components. Selected systems to be studied will be drawn from different topic areas which may include the worldwide web, the mind (cognitive science), formal logic, autonomous robotics, chaos and fractals, and bioinformatics. Each topic will incorporate an associated laboratory experience.

LH: 3 hours bi-weekly

2500

Data Analysis with Scripting Languages

introduces the use of scripting languages to solve common data analysis tasks. The control structures and expressions of the language are first discussed. Script solution to storing/retrieving data sets, searching data sets, and performing numeric and statistical calculation are covered. Plotting and visualization for data sets are also presented.

PR: COMP 1510 or COMP 1700 or COMP 1710 or COMP 2602 (or equivalent)

2510

Programming in C/C++

is a comprehensive treatment of the C/C++ programming languages. It is intended for students with some first programming experience. This course starts with a discussion of fundamentals of C and C++, moves on to the object-oriented aspects of C++, and introduces some advanced topics. It is an essential course for mastering the power of this rich programming language.

CR: Engineering 3891

LH: 3

PR: COMP 1510 or COMP 1550 or COMP 1700 or COMP 1710 or Engineering 1020, or equivalent

2602

Computer Programming in FORTRAN

- inactive course.

2650

Problem-Solving with Personal Computers

is an overview of tools and techniques that current computer technology offers in a PC based networked environment. The emphases are on conceptual understanding of the software, from exploring capabilities of the existing software tools to learning methods of extending these capabilities. The key topics include problem-solving strategies, visual programming, macro-language operations, object linking and embedding, digital communication, and developing interactive web pages. The course has a practical flavour. In structured laboratory sessions, students gain proficiency in using personal computers for solving common problems.

CO: Mathematics 1000

CR: COMP 1600, COMP 2801, or the former Business 2700

LH: 3

PR: Level III Advanced Mathematics or Mathematics 1000 or Mathematics 1090 (or equivalent)

2710

Object-Oriented Programming II

continues from Object-Oriented Programming I, and studies object-oriented and event-driven programming. Additional topics include: recursion, basic analysis of algorithms, fundamental data structures such as simple linked structures and stacks, and fundamental computing algorithms such as binary search and quadratic time sorting. A brief overview of programming languages, virtual machines and language translations is also provided.

LH: 3

2711

Introduction to Algorithms and Data Structures

includes the study of standard ways of organizing and manipulating data in computer storage. Fundamental concepts in the design and analysis of algorithms are also discussed.

LH: 3

PR: COMP 2710. It is recommended that students complete COMP 2742 prior to registering for COMP 2711

2718

Development Tools, Work Flows and Concepts

covers tools, work flows and concepts used in software development in a concentrated introductory set of topics. The essential work flows (with their underlying concepts) used to edit, build, test, combine with existing software and find existing software are introduced. The tools covered include text editors, programming language translators, file management tools, debuggers, scripting tools, source control tools, and building, testing and deployment tools. The architecture and use of an Integrated Development Environment are discussed.

LH: 3

PR: COMP 1510 or COMP 1550 or COMP 1700 or COMP 1710 or COMP 2650

2742

Logic for Computer Science

is an introduction to propositional and predicate logic with applications. The use of the system of boolean logic in reasoning and circuit design, as well as basic proof techniques and the resolution principle, for both propositional and predicate logic, will be covered. Concepts involving sets will be used to illustrate different types of proof techniques. The probable intractability of boolean logic and Goedel's incompleteness theorem will be presented.

2752

Introduction to Business Data Processing

- inactive course.

2760

Encountering the Computer: Society and the Individual

examines social, ethical, legal and cultural issues surrounding the use of computers in modern society. These broader social issues are followed by an examination of the use of social and individual psychology in user interface design. Students will be expected to demonstrate an understanding of these issues both directly (through verbal and written discourse) and practically, as applied to the creation of actual software artifacts.

CO: COMP 2710

PR: two 1000-level English courses, or equivalent

2801

Introductory Computing for Business

introduces students to computer applications in business, document processing, application development, decision support, and information management. A three hour laboratory is required.

CO: Mathematics 1000

CR: COMP 1600, COMP 2650, or Business 2700

LH: 3

PR: Level III Advanced Mathematics or Mathematics 1000 or Mathematics 1090 (or equivalent)

3550

Introduction to Bioinformatics

(same as Biology 3951) deals with the development and application of computational methods to address biological problems. The course will focus on the fundamental concepts, ideas and related biological applications of existing bioinformatics tools. This course will provide hands-on experience in applying bioinformatics software tools and online databases to analyze experimental biological data, and it will also introduce scripting language tools typically used to automate some biological data analysis tasks.

CR: Biology 3951

LH: 3

PR: Biology 2060 or Biochemistry 2101, and one Computer Science course at the 1000-level or above excluding COMP 1600 and COMP 2000; or COMP 2500 or COMP 2710, and one Biology course at the 1000-level or above excluding Biology 2040 and Biology 2041; or permission of the course instructor

3700

Industrial Experience

is a course for students who are admitted to CIIO. Students are required to register for this non-credit course every semester during their internship. This course is open only to students who have been accepted into the Internship Program and provides an opportunity for qualified students to obtain rewarding job experience of 8, 12 or 16 months of continuous duration, during the course of their studies.

CH: 0

PR: admission to the Computer Industry Internship Option (CIIO)

3710

Vocational Languages

is a study of several programming languages of vocational significance. The use of appropriate programming paradigms to solve some significant problems will be illustrated.

PR: COMP 2711

3714

Programming Languages and their Processors

reviews typical elements of (imperative) programming languages, and then discusses language implementations in the form of compilers and interpreters. The topics include specification of syntax and semantics of programming languages, discussion of expressions and assignments, side effects, control structures, data and procedural abstractions, parameter passing mechanisms, bindings, scopes, and type systems. The recursive-descent technique is used for illustrations of different aspects of syntax analysis, code generation and error recovery. Language interpreters are discussed for both low-level and high-level languages.

3715

Network Computing with WEB Applications

studies how distributed applications (e.g., client/server Web applications) are constructed using the Internet. Topics covered include: the socket interface for network communication, client/server applications, browser scripting using Javascript, content generation for web applications (e.g., jsp, php), html/css documents, and the use of cryptography to handle security.

PR: COMP 2711

3716

Software Methodology

studies the development of software by gathering the requirements of the software program, analysing the requirements to create a development model, and creating the software and documents for the software product. This course studies techniques for all three software development activities.

PR: COMP 2711

3717

Symbolic Computation and Recursion

- inactive course.

3718

Programming in the Small

demonstrates the tools and techniques used in the construction of small software systems. The software tools and techniques to be covered include analysis and design of software components, software construction tools (e.g. linkers, builders, debuggers), software library use and design, and system integration.

PR: COMP 2711

3719

Theory of Computation and Algorithms

is an introduction to formal algorithmic problem solving. Various algorithm design techniques that sometimes yield efficient solutions are studied. Deterministic and nondeterministic machines (finite state automata, pushdown automata and Turing machines) are discussed and used to efficiently solve problems such as the String Matching Problem, the parsing of Context-free Languages, and to introduce the theory of NP-completeness. In addition, Turing machines are used to prove the unsolvability of certain problems. Tractable, intractable and undecidable problems are contrasted. Basic issues related to parallelization are discussed as well.

CR: the former COMP 3711 and the former COMP 3740

3723

Logic Design

- inactive course.

3724

Computer Organization

can be studied at the digital logic implementation level, the instruction set architecture level, and the translation of programming languages to the underlying machine instruction level. This course studies computer organization at these levels.

CO: Mathematics 2320

3725

Computer Architecture and Operating Systems

covers system design and the architectural implementations of these designs. The objective is to develop the basic concepts of processor design, memory management, operating systems, and I/O devices and their interactions.

PR: COMP 3724

3731

Introduction to Scientific Computing

main objectives are the development of algorithms for the numerical solution of mathematical problems and the study of the numerical stability of these algorithms. The efficiency of these algorithms with respect to speed and storage requirements is considered as well. Emphasis is also placed on the study of the sensitivity of selected problems to perturbations in the data. There is also a brief introduction to the development of numerical algorithms that take advantage of advanced computer architectures, such as pipeline processors, array processors and parallel processors.

CR: Mathematics 3132

PR: Mathematics 2000 and Mathematics 2050, and one of COMP 2602 or COMP 2710

3751

Computational Aspects of Operations Research

- inactive course.

3753

Computational Aspects of Linear Programming

is an introduction to the Linear Programming Problem (LPP). The emphasis is placed upon developing the most recent and numerically reliable algorithms for the solution of the Linear Programming Problem. The numerical stability of these algorithms will be examined as well. Geometric understanding of the LPP. Simplex method for the LPP. Sparse matrix LPP. Duality and postoptimality analysis. Extensions to the simplex algorithm. Principles of interior algorithms for the LPP.

3754

Introduction to Information and Intelligent Systems

introduces students to application areas that are away from usual number-based and text-based processing. Students will learn the basic concepts and become aware of the historical developments and social and ethical issues related to the application areas such as intelligent systems and information management. This exposure will help students to become knowledgeable about managing large volumes of data and dealing with problems that are well defined but whose algorithmic solutions are not feasible or problems that are fuzzily defined.

3790

Directed Readings

- inactive course.

4550

Bioinformatics: Biological Data Analysis

(same as Biology 4606) provides students with the basis to analyse a variety of biological data within an integrated programming environment for data manipulation, calculation and graphical display. Students will learn to extract meaningful information from data generated by high-throughput experimentation. The course will introduce one such integrated programming environment and will explore the computational and statistical foundations of the most commonly used biological data analysis procedures.

CR: Biology 4606

LH: 3

PR: Biology 3951 or COMP 3550, and Statistics 2550 (or equivalent), or permission of the course instructor

4711

Structure of Programming Languages

covers programming language design considerations; syntactic and semantic structure; survey of typical features and operations; analysis of facilities for control and data structuring; language extensibility; execution models; formal specification of programming languages.

4712

Compiler Construction

studies properties of formal grammars and languages; syntax-directed parsing and code generation; top-down and bottom-up parsing methods; LL(k) and LR(k) grammars and parsers; Code optimization; compiler writing tools.

4715 and 4717

Special Topics in Programming Languages

4718

Survey of Software Engineering

surveys the major topics of software engineering. Areas covered include: requirements capture, system design and design approaches, verification and validation (including formal methods and testing), and management of the software development process.

PR: COMP 3716

4719

Software Specification

- inactive course.

4721

Operating Systems

studies the design and implementation of an operating system’s kernel. The main components used in operating system implementations include: context switches, process management, memory management, interprocess communication, file systems and system calls. The data structures and algorithms used in implementing the above components are studied. The different architectural styles of kernel implementation are also considered. Real-time operating systems are also discussed.

CR: Engineering 8894

PR: COMP 3725

4723

Introduction to Microprocessors

examines the architecture and instruction sets for several microprocessors. The use of microprocessors as device controllers; comparisons of hardware and programmed techniques; microprocessor interfacing with external devices; methods of I/O; bus structures; modern microprocessor support devices are discussed.

LH: Minimum of three hours per week. Practical experience with basic principles will be obtained through laboratory experience.

PR: COMP 3724

4725

Introduction to LSI Design

- inactive course.

4726-4729

Special Topics in Computer Systems

4734

Matrix Computations and Applications

is an introduction to linear algebra; solution to linear systems; scaling, improving and estimating accuracy; the linear least squares problem; the eigenvalue problem; singular value decomposition of a matrix; the generalized eigenvalue problem.

PR: COMP 3731

4735

Advanced Matrix Computations and Applications

- inactive course.

4736-4739

Special Topics in Numerical Computations

will have topics to be studied announced by the Department.

4740

Design and Analysis of Algorithms

will give an overview of techniques for the design of efficient optimal-solution and heuristic algorithms. It will include an introduction to various advanced data structures for set and string processing that are used to further optimize algorithm efficiency.

PR: COMP 3719

4741

Formal Languages and Computability

is an in-depth study of various types of formal machines and their associated languages. Effective computability and other formalisms, such as lambda calculus will be studied as well.

CR: the former COMP 3740

PR: COMP 3719

4742

Computational Complexity

is an in-depth discussion of computational complexity theory. Topics covered in the course include: models of computation (for both serial and parallel computations); complexity measures; reducibility; complexity classes (NP, PSPACE, NC, LOGSPACE and P); and randomized computations.

PR: COMP 3719

4743

Graph Algorithms and Combinatorial Optimization

discusses classical problems in combinatorial optimization and graph algorithms, including matching, colorability, independent sets, isomorphism, network flows and scheduling. Special families of graphs are discussed and algorithms that would otherwise be NP-hard or complete are shown to be polynomial time when restricted to such families.

PR: COMP 3719

4745-4749 (Excluding 4748)

Special Topics in Theoretical Aspects

4748

Introduction to the Science of Complexity

is an exploration of the use of computers in the simulation of complex systems. Some theories and models, such as cellular automata, artificial life, fractals, genetic algorithms, chaos, and evolution will be discussed and will be used in the modelling of "real-life" systems. The approach in this course is practical. Students have to write a number of programs of different levels of sophistication including a final project.

PR: COMP 3719

4750

Introduction to Natural Language Processing

covers tasks involving human languages, such as speech recognition, text understanding, and keyword-based information retrieval which underlie many modern computing applications and their interfaces. To be truly useful, such natural language processing must be both efficient and robust. This course will give an introduction to the algorithms and data structures used to solve key NLP tasks, including utterance understanding and generation and language acquisition, in both of the major algorithmic paradigms used today (rule-based and statistical). The emphasis will be primarily on text-based processing though speech-based processing will be addressed where possible.

4751

Computer Graphics

examines display devices, display processors, display file compilers, display transformations, structured display files, graphical input devices, perspective, hidden line elimination, languages and graphics systems.

LH: 3

4752

Introduction to Computational Intelligence

provides an introduction to four of the fundamental computational intelligence methods: artificial neural networks, evolutionary computation, swarm intelligence and fuzzy systems. The integration of these techniques for problem solving will also be introduced.

4753

Artificial Intelligence

has selected topics from AI programming languages; heuristic searching; problem solving; game-playing; knowledge representations; knowledge-based systems; reasoning in uncertainty situations; planning; natural language understanding; pattern recognition; computer vision; and machine learning.

4754

Database Systems

introduces students to database processing, database management systems and database design considerations. It will cover the theory and methodologies essential for the relational database design, implementation, manipulation, optimization and management.

4756

Image Processing

will centre on the key analytical and algorithmic tools and concepts of digital image processing. Topics will include Transformations, Enhancement, Encoding, Data Bases, Segmentation and Description.

LH: 3

PR: COMP 3719

4759

Computer Networks

looks at how the operation of computer networks requires the following: a) communication between two computers, b) information transfer between two computers not directly connected, and c) services that need computer communication. This course focuses on the standard solutions and services used to fulfill the previous requirements. These include: physical transmission of signals, reliable communication based on unreliable communication channels, the routing of messages between connected computers to reach computers that are not directly connected, e-mail, file transfer, name servers, remote terminal access and the World Wide Web. Particular attention will be placed on the workings of the Internet.

4761

Human-Computer Interaction

- inactive course.

4762

Introduction to Computational Molecular Biology

will give an overview of computational problems and algorithms for these problems associated with a variety of analyses of biological molecular data.

PR: COMP 3719

4766

Introduction to Autonomous Robotics

examines the fundamental constraints, technologies, and algorithms of autonomous robotics. The focus of this course will be on computational aspects of autonomous wheeled mobile robots. The following topics will be covered: major paradigms in robotics, methods of locomotion, kinematics, simple control systems, sensor technologies, stereo vision, feature extraction, modelling uncertainty of sensors and positional information, localization, SLAM, obstacle avoidance, and 2-D path planning.

LH: 3

PR: COMP 2711, Mathematics 2000, Mathematics 2050, and Statistics 1510 or 2550 or the former Statistics 2510

4767

Information Visualization and Applications

focuses on the design and implementation of interactive visualization techniques for the analysis, comprehension, exploration, and explanation of large collections of abstract information. Topics to be covered include principles of visual perception, information data types, visual encodings of data, representation of relationships, interaction methods, understanding user goals and tasks, and evaluation techniques. Case studies of accepted techniques and the current state-of-the-art in information visualization will be presented.

4768

Software Development for Mobile Devices

focuses on the design and implementation of software in a mobile networking environment. The primary topics to be covered in this course include software engineering, network computing, graphics programming, and human-computer interaction for mobile devices. A modern mobile device with advanced networking and graphic features, including multi-touch interaction and motion sensors will be used as the primary platform for development in this course.

LH: One and one-half hours per week

4770

Team Project

has as its main objective to develop a working prototype of a software system as a team effort. A group of students will work on a project for a term, experiencing the advantages and difficulties of team projects.

AR: attendance is required

4780

Honours Project

introduces computer science honours students to research activities, familiarizes them with a special problem in computer science, and provides independent study on an advanced topic under the direct supervision of a member of the computer science faculty. The topic is decided in consultation with the supervisor. The student is required to produce a written report on the project, to include the literature search on the topic, and to present this work at a departmental seminar prior to the last week of the semester.

PR: admission to the honours program and permission of the Head of Department

4800-4825

Special Topics

will be offered as departmental resources permit.

CO: Special topics courses are not offered on a regular basis, but whenever departmental resources permit. For these reasons, the co-requisites can vary each time the courses are offered.

PR: Special topics courses are not offered on a regular basis, but whenever departmental resources permit. For these reasons, the prerequisites can vary each time the courses are offered.