DISCLAIMER: Both the
Official Timetable and Calendar take precedence over the information presented here. It's important that you double-check your course selection, prerequisites, and your program plans.

The graph above displays the prerequisite links connecting courses in our department. Select courses to plan your enrolments for future terms! Courses that you've selected but have missing prerequisites will be highlighted in red.

Check out the different tabs to access helpful features for your planning. Also, here's a printable version of the graph.

Courseography is an ongoing project maintained by Ian Stewart-Binks and David Liu. Ideas for new features, better design, and (especially) bug reports are always welcome! Please send all feedback to this address. If you see a bug, please do let us know which browser and version you're using. And if there's a display issue, giving us your screen display info (e.g., resolution) will be rather helpful. Thanks!

Scientific computing studies the world around us. Known and unknown quantities are related through certain rules, e.g. physical laws, formulating mathematical problems. These problems are solved by numerical methods implemented as algorithms and run on computers. The numerical methods are analyzed and their performance (e.g. accuracy, efficiency) studied. Problems, such as choosing the optimal shape for an airplane (to achieve, for example, minimal fuel consumption), finding the fair price for derivative products of the market, or regulating the amount of radiation in medical scans, can be modeled by mathematical expressions, and solved by numerical techniques.

Students wishing to study scientific computing should have a strong background in mathematics, in particular calculus of several variables, linear algebra and statistics, be fluent in programming, and have a good understanding of data structures and algorithm design.

Required Courses:

- MAT235Y1/MAT237Y1/MAT257Y1
- 1.5 FCE from the following: CSC336H1, CSC350H1, CSC351H1, CSC446H1, 456H1
- 1 FCE from the following: CSC320H1/418H1, CSC321H1/411H1, CSC343H1, CSC384H1, CSC358H1/CSC458H1

- MAT224H1/MAT240H1, MAT244H1, MAT334H1/MAT354H1, MAT337H1/MAT357H1

It is also recommended that students in this focus consider taking a half-course or two from the basic sciences (such as physics, chemistry, biology), as these sciences provide the sources of many problems solved by numerical techniques.

Artificial Intelligence (AI) is aimed at understanding and replicating the computational processes underlying intelligent behaviour. These behaviours include the perception of one's environment, learning how that environment is structured, communicating with other agents, and reasoning to guide one's actions. This focus is designed to provide students with an introduction to some of the key scientific and technical ideas that have been developed in AI. There are four different sub-areas of AI represented in our department: Computer Vision, Computational Linguistics (CL), Machine Learning (ML), and Knowledge Representation and Reasoning (KR). These areas cover a wide variety of ideas and techniques. Students wanting to achieve this focus are required to take courses from at least two of these sub-areas.

Required Courses:

- 1 FCE from the following: MAT235Y1/237Y1/257Y1, APM236H1/MIE262H1/STA248/261H1, CSC350H1, CSC310H1, CSC330H1, CSC438H1, CSC448H1, CSC463H1
- 2.5 FCEs from the following covering at least two of the four areas
- CSC401H1, CSC485H1
- CSC320H1, CSC420H1
- CSC321H1, CSC411H1, CSC412H1
- CSC384H1, CSC486H1

Suggested Related Courses: CSC200Y1, CSC324H1, COG250Y1, PSY270H1, PHL232H1, PHL342H1, STA414H1

How can we build and analyze systems for enabling users to communicate with computers using human language (also called natural language), and for automatically processing the vast amounts of data on the web available in the form of text? The focus covers appropriate material on natural language interfaces, as well as tools such as document summarization, intelligent search over the web, and so on. Students considering this focus are encouraged to consider a second Major in Linguistics. [Note 0.5 FCEs in LIN are in addition to the 12.0 FCEs required to complete the Specialist program]

Required Courses:

- CSC318H1
- CSC401H1, CSC485H1
- LIN200H1
- 1.5 FCE from the following: CSC309H1, CSC321H1, CSC330H1, CSC411H1, CSC428H1, CSC486H
- 0.5 FCE from the following: PSY100H1, COG250Y1

Suggested Related Courses:

Other relevant CSC courses, depending on the student's interests, include other courses in artificial intelligence such as CSC384H1 or CSC420H1. Linguistics, Psychology, and Cognitive Science are all directly relevant to this focus, and we recommend that interested students take additional courses from any or all of them.

Computer vision is the science and technology of machines that can see. As a science, the goal of computer vision is to understand the computational processes required for a machine to come to an understanding of the content of a set of images. The data here may be a single snapshot, a video sequence, or a set of images from different viewpoints or provided by medical scanners.

The computer vision focus introduces students to the study of vision from a computational point of view. That is, we attempt to clearly define computational problems for various steps of the overall process, and then show how these problems can be tackled with appropriate algorithms.

Students who wish to pursue computer vision should have an understanding of linear algebra and calculus of several variables. Moreover, they should be solid programmers and have a good understanding of data structures and algorithm design. These basic tools are required in order to first pose computational vision problems, and then develop and test algorithms for their solution.

Required Courses:

- MAT235Y1/MAT237Y1/MAT257Y1, CSC320H1, CSC350H1, CSC411H1, CSC420H1
- 0.5 FCE from the following: CSC418H1, CSC412H1, CSC2503H (Note: students must petition to take this course.)

Suggested Related Courses:

- ECE216H1

The following are examples of topics and courses that fit naturally with a study of computational vision. The list is meant to be illustrative of the range of cognate topics, but is not necessarily complete. The ordering is alphabetical and not indicative of importance. Note: there are prerequisites for many of these courses that we do not list here.

APM462H1, COG250Y1, CSC384H, CSC485H1, CSC486H1, PHL232H1, PHY385H1, PSL440Y1, PSY270H1, PSY280H1, STA257H1/STA261H1

Software systems are complex and interesting. Poorly done systems can be incredibly expensive: they can cost society billions of dollars, and sometimes make the difference between life and death. Rapid changes in technology and applications means that the underlying systems must continually adapt. This focus takes you under the covers of software systems, laying bare the layers and introducing you to concurrency issues, scalability, multiprocessor systems, distributed computing, and more.

Required Courses:

- CSC324H1, CSC343H1, CSC443H1, CSC469H1, CSC488H1
- 1 FCE from the following: CSC372H1/ECE385H1, CSC358H1, CSC458H1

Suggested Related Courses:

- CSC301H1, CSC309H1, CSC410H1, ECE489H1
- Relevant courses offered at UTM: CSC347H5, CSC423H5, CSC427H5
- Relevant courses offered by Engineering: ECE454H1, ECE568H1

Video game design combines several disciplines within computer science, including software engineering, graphics, artificial intelligence and human-computer interaction. It also incorporates elements of economics, psychology, music and creative writing, requiring video game researchers to have a diverse, multidisciplinary set of skills.

Students who wish to pursue video game design should have an understanding of linear algebra (for computer graphics modeling), computer hardware and operating systems (for console architecture), data structures, and algorithm design. Students will gain a general knowledge of the more advanced topics listed in the courses below.

Required Courses:

- CSC300H1, CSC301H1, CSC318H1, CSC324H1, CSC384H1, CSC418H1, CSC404H1

Suggested Related Courses:

- CSC358H1, CSC458H1, CSC428H1
- MUS300H1, INI222H1, INI465H1, ENG235H1
- ECO326H1, MGT2056H

Human-Computer Interaction (HCI) is the scientific study of the use of computers by people and the design discipline that informs the creation of systems and software that are useful, usable, and enjoyable for the people who use them. HCI students have exciting opportunities for research and graduate school; HCI professionals often have jobs with titles such as user interface architect, user interface specialist, interaction designer, or usability engineer. [Note 3.5 FCEs in SOC and PSY are in addition to the 12.0 FCEs required to complete the Specialist program]

Required Courses:

- CSC300H1, CSC301H1, CSC318H1, CSC428H1
- SOC101Y1, SOC200H1, SOC202H1, SOC302H1
- 1 FCE from the following: CSC309H1, CSC320H1, CSC321H1, CSC343H1, CSC384H1, CSC401H1, CSC404H1, CSC418H1, CSC485H1, CSC490H1/491H1
- PSY100H1, PSY270H1/PSY280H1

Suggested Related Courses:

- CSC454H1, CSC290H1
- At least one half-course in Human Factors or Ergonomics offered by the Department of Mechanical and Industrial Engineering, such as MIE240H, MIE343H, MIE344H, MIE448H, and MIE449H. Human factors is a sister discipline to human-computer interaction that approaches problems in slightly different ways.
- WDW260H1

Why is it easy to sort a list of numbers, but hard to break Internet encryption schemes? Is finding a solution to a problem harder than checking that a solution is correct? Can we find good approximate solutions, even when the exact solutions seem out of reach? Theory of Computation studies the inherent complexity of fundamental algorithmic problems. On one hand, we develop ground-breaking efficient data structures and algorithms. On the other, we have yet to develop good algorithms for many problems despite decades of effort, and for these problems we strive to prove no time- or space-efficient algorithms will ever solve them. While the field has seen some successful impossibility results, there are still many problems – such that those underlying modern cryptography and security – for which we do not know either efficient algorithms or strong lower bounds!

This focus takes a rigorous, mathematical approach to computational problem-solving: students will gain a deep understanding of algorithm paradigms and measures of problem complexity, and develop the skills necessary to convey abstract ideas with precision and clarity. Many of our students go on to graduate studies and sophisticated algorithmic work in industry. This focus has natural ties with many branches of mathematics and is the foundation of many computer science fields. Consequently, our students often apply their theoretical knowledge to other fields of interest. We strongly encourage taking the enriched theory courses (CSC240H1, CSC265H1, CSC375H1) as well as specialist/major versions of the MAT requirements for our focus. [Depending on courses selected for points 4 & 5, students may need to complete 0.5-1.0 FCEs in addition to the 12.0 FCEs required to complete the Specialist program.]

Required Courses:

- MAT137Y1/MAT157Y1/MAT237Y1 Note: if MAT237Y1 is used it cannot be counted in the 2 FCE list below.
- CSC463H1
- CSC336H1/CSC350H1
- 1.5 FCEs from the following:
- CSC310H1, CSC438H1, CSC448H1, MAT443H1
- MAT332H1, MAT344H1
- At UTM: CSC322H5/MAT302H5, CSC422H5
- CSC494H1/CSC495H1 project supervised by a faculty member from the Theory group, or a relevant introductory graduate course in Theory. (Note that students must petition to take a graduate course.)

- 2 FCEs from the following:
- APM236H1/MIE262H1, MIE263H1, APM421H1, APM461H1
- MAT224H1/MAT247H1, MAT237Y1/MAT257Y1, MAT244H1/MAT267H1
- MAT301H1/MAT347Y1, MAT315H1, MAT327H1, MAT334H1/MAT354H1, MAT337H1/MAT357H1
- Any 400-level MAT course (except MAT443H1)
- STA248H1/STA261H1, STA347H1

Recommended Courses:

- Students are strongly encouraged to take the enriched theory courses: CSC240H1, CSC265H1, and CSC375H1, rather than their regular counterparts: CSC165H1/CSC236H1, CSC263H1, and CSC373H1, respectively.

Suggested Related Courses:

- BCB410H1
- CSC320H1/CSC418H1/CSC420H1, CSC321H1/CSC384H1/CSC411H1/CSC485H1, CSC343H1/CSC443H1, CSC351H1/CSC456H1, CSC358H1/CSC458H1, CSC412H1/CSC465H1/CSC486H1, CSC488H1

The Web and Internet Technologies focus introduces students to the systems and algorithms that power today's large-scale web and Internet applications such as search engines, social networking applications, web data mining applications, and content distribution networks. The focus covers both the algorithm foundations of Web and Internet Technologies, as well as the implementation and system architecture.

Students who wish to pursue the Web and Internet Technologies focus should have a solid understanding of statistics, should be good programmers and have a good understanding of data structures and algorithm design.

To get practical experience, students pursuing the web and Internet technologies focus are encouraged to do either a term project or a summer USRA carrying out a project in web and internet technologies.

Required courses:

- STA248H1, CSC309H1, CSC343H1, CSC358H1, CSC458H1, CSC411H1
- 0.5 FCEs from the following: CSC310H1, CSC443H1, CSC469H1

Suggested Related Courses:

- Courses offered at UTM: CSC347H5, CSC423H5, CSC427H5
- ECE568H1

Search through the timetable for a course or instructor.

The "(+5)" caps are extra reserved seats. See official timetable for details.

CSC400+, ECE489, BCB410, BCB420, and BCB430. (Input BCB410/420/430 manually.)

Note: no more than two of CSC490/491/494/495 will be counted.

Note: 400-level courses will fill up "CSC/ECE/BCB 400+" first. No more than 1 FCE from {CSC490, 491, 494, 495, BCB430} will be counted.

Note: you can count at *most* 2 MAT/STA FCEs from...

MAT: 224, 235, 237, 257, 300+ except 329, 390, 391. STA: 249, 261, any 300+. (Input manually. This is currently fragile: it will accept any course starting with "MAT" or "STA".)

Required CSC: | 0.0/5 FCEs |

Required MAT/STA: | 0.0/2 FCEs |

Electives: | 0.0/5 FCEs |

Total: | 0.0/12 FCEs |

Notes: at least 0.5 FCEs must be a 400-level CSC/BCB, and at least 1.0 other FCEs must be CSC/BCB. No more than 1 FCE from {CSC490, 491, 494, 495, BCB430} will be counted.

Required CSC: | 0.0/3.5 FCEs |

Required MAT/STA: | 0.0/1.5 FCEs |

Electives: | 0.0/3 FCEs |

Total: | 0.0/8 FCEs |

Required CSC: | 0.0/2.5 FCEs |

Electives: | 0.0/1.5 FCEs |

Total: | 0.0/4 FCEs |