Official Course Outlines
Department of Computer Science
July, 2011

These outlines were created and reviewed by small groups of appropriate faculty, then approved by the Curriculum Committee and Departmental Council in January, 2007. They have also been used in the accreditation process, and stand as the official course outlines which indicate the approved and expected content for each of our courses.

For higher-level courses (3000 and 4000 level) which do not act as the prerequisites for any other courses, a certain amount of flexibility is reasonable, and ongoing modification and evolution of the curriculum is to be expected. However, the deviations should not be major, and should be kept within the spirit of these outlines. More significant revisions should be approved by the Curriculum Committee using the mechanism outlined below.

For lower-level courses (1000 and 2000 level), and courses which act as the prerequisites to other courses, the outlines should be followed closely. Minor deviations and modifications are to be expected, but any significant changes should be approved by the Curriculum Committee using the mechanism outlined below.

Mechanism for curriculum changes

If a faculty member feels that a course outline is in need of revision, the following steps should be followed. The procedure should be agile enough to permit frequent and ongoing evolution of our curriculum, but is necessary to ensure consistency between courses, and compliance with the accreditation guidelines.

  1. Prepare a revised outline, with changes notes, and rationales given.
  2. Send the proposed changes to the Associate Head (Curriculum Committee Chair), and Head.
  3. The Curriculum Committee will consider the proposal, and approve it if appropriate, perhaps with revisions.
  4. The Department Council will consider the changes passed by the Curriculum Committee.

Official Course Outlines

1010 - Introductory Computer Science 1012 - Computer Programming for Scientists and Engineers
1020 - Introductory Computer Science 2 1260 - Introductory Computer Usage
1270 - Introductory Computer Usage 2 2080 - Analysis of Algorithms
2130 - Discrete Mathematics 2140 - Data Structures and Algorithms
2150 - Object Orientation 2160 - Programming Practices
2190 - Scientific Computing 2280 - Introduction to Computer Systems
3010 - Distributed Computing 3020 - Human-Computer Interaction
3030 - Automata Theory and Formal Languages 3040 - Technical Communication
3090 - Digital Logic 2 3170 - Analysis of Algorithms and Data Structures
3190 - Introduction to Artificial Intelligence 3290 - Introduction to Compiler Construction
3350 - Software Engineering 3370 - Computer Organization
3380 - Database Concepts and Usage 3430 - Operating Systems
3440 - Programming language Concepts <3490 - Computer Graphics /td>
3620 - Professional Practice in Computer Science <3720 - Computer Networks/td>
3820 - Intro to Bioniformatics Algorithms 4020 - Human-Computer Interaction 2
4050 - Project Management 4140 - Introduction to Cryptography and Cryptosystems
4180 - Intelligent Mobile Robotics 4190 - Artificial Intelligence
4200 - Expert Systems 4290 - Compiler Construction 2
  4340 - Graph Theory Algorithms
4350 - Software Engineering 2 4360 - Machine Learning
4380 - Database Implementation 4420 - Advanced Design and Analysis of Algorithms
4430 - Operating Systems 2 4490 - Computer Graphics
4510 - Introduction to Parallel Computation 4520 - Undergraduate Honours Project
  4550 - Real-Time Systems
4560 - Industrial Project 4580 - Computer Security
4690 - Computer Systems and Architecture 4710 - Introduction to Data Mining
4720 - Computer Networks 4740 - Advanced Databases

Revised Feb 27, 2007/ start revision Oct 20, 2010/ July 7, 2011