Course Load
Wondering what you should be expecting in terms of course load as a CS student? You can first take a look at the departmental suggested schedules here. This also varies highly in which CS program you are in and how many years you want to complete your program in. If you’re unsure, reach out to your faculty advisor and departmental advisor to make sure you’re on the right track to graduation.
Take advantage of add/drop period where you can feel out different courses. This will allow you get to know the professor and their syllabus better than by looking online. Make sure to keep track of the add/drop deadline!
The McGill website lists COMP ABC as a prerequisite for COMP DEF, but I'd really like to take COMP DEF next semester without having taken COMP ABC. What should I do?
It is generally not recommend taking a course without the necessary prerequisites. Typically, prerequisites are in place for a reason and you should complete courses in order to ensure success. Talking to the professor teaching COMP DEF is a great first step. Other than that, before deciding to "skip" a prerequisite, it is recommended the student take a look at the course syllabus and lecture material to understand why that course is a prerequisite. That being said, the professor teaching COMP DEF can decide to unregister all students without the necessary prerequisite. In certain cases, the professor may request the student fill out a form in order to take the course without its prerequisite.
Professors
The School of Computer Science has a highly reputable faculty; you can find more information about each professor and their area of research here. The most reliable resource for professor reviews are previous course evaluation results on Minerva, where you can get results by course code and/or professor. (Another reason why it’s essential to fill out course evaluation towards the end of the semester!)
If you want something more qualitative, search courses within McGill Computer Science Facebook Group and you can sometimes find detailed reviews from previous/current students. Or, you can post seeking opinions on a course.
Requirements
See all requirements on the McGill School of Computer Science website, here. Please check with your advisor and program advisor before planning your upcoming semester. Here is a visual look at prereqs/coreqs within the department courtesy of CS Undergraduate Student Affairs Coordinator Teresa (Tess) Pian.
200 Level Guide
200 Level courses at McGill represent the foundational basics of a subject. This is no different in the school of computer science. Most students taking a CS Major will be required to take almost all of these classes and minors will need to take the majority. See below for a tree of prerequisite courses.
COMP 202 Foundations of Programming
Foundations of Programming is an introductory course in computer science that aims to teach the very basics of writing computer software. It focuses on Python fundamentals including syntax, types, logic flow, objects, conditionals, loops and very basic data structures like strings. This course is optional for SOCS programs but is recommended for students who have no experience in computer science. Sample Syllabus
COMP 206 Introduction to Software Systems
Intro to software systems is an overview of programming in C, Python and scripting in Bash that helps to connect the different languages and what they are best suited for. Students will gain an overview of version control systems, debugging tools as well as task automation with bash. Sample Syllabus
COMP 250 Introduction to Computer Science
Introduction to computer science gives students the fundamental knowledge required in data structures, algorithm run time, and programming techniques. Material covered in this class includes binary number representation, tree and graph data structures, sorting and search algorithms, as well as runtime analysis. Sample Syllabus
COMP 251 Algorithms & Data Structures
Algorithms and data structures is the direct continuation of COMP 250 and covers similar material in greater depth such as red black trees, greedy algorithms, complex data structures and dynamic programming. Note: there is also an honours variant of this class, COMP252. Sample Syllabus
COMP 273 Introduction to Computer Systems
Introduction to computer systems helps to relate the programming logic seen previously to the hardware it runs on. Students learn basic combinations and sequential circuit design, low level assembler programming as well as virtual memory and addressing schemes. Sample Syllabus
MATH 240 Discrete Structures 1
Discrete structures is an essential math class teaching students proof techniques and logical thinking. Material covered includes elementary number theory, combinatorics, logic, and graph theory. This class is a co-requisite with COMP 250. Sample Syllabus
400/500 Level Guide
Now for the fun part...
Choosing 400/500 courses is very exciting, but can also be daunting. On the one hand, it’s exciting to take smaller, more hands-on courses on specialized topics . On the other hand, it’s daunting to choose between a wide variety of courses on topics you may not be familiar with. It’s a good idea to look at these courses within the sub-field of Computer Science they belong to. This will help if you want to try new topics or dig deeper in a certain topic. **Note that not all 400/500 courses are available each year.**