The Computer Science Department utilizes a system of prerequisites to ensure that students are adequately prepared to succeed in their classes.

Computer Science Curriculum

Most students start by taking either Introduction to Computer Science (csci1101) or Programming with Data (csci1103), both of which provide an introduction to computational thinking via programming.  See the Introductory Courses page for more details.

After the introductory course, students continue with Data Structures (csci2101), which is the gateway into the more advanced courses of the Department.  Most advanced electives are categorized into three topic areas: Systems, Algorithms and Theory, and Artificial Intelligence (see table below).

Students from all departments are welcome in Computer Science. Should you be interested in taking a course, but are not sure how it might fit in with your studies, please feel free to contact any of our faculty with your questions.

Prerequisite Structure

Prerequisite Flow Chart

Courses by Topic Area 

Catalogue Number

Course Title

Algorithm and Theory Area 2210 Theory of Computation
2220 Logic in Computer Science
3210 Computational Game Theory
3225 GIS Algorithms and Data Structures*
3250 Computational Geometry
Artificial Intelligence Area 2400  Artificial Intelligence
3400  Cognitive Architecture
3420  Optimization and Uncertainty
3445  Nature-Inspired Computation*
3455  Machine Learning*
3715  Human-Computer Interaction*
3725  Computational Creativity*
Systems Area 2320 Principles of Programming Languages
3300 Computer Networks
3310 Operating Systems
3325 Distributed Systems*

* Denotes a Projects Course