These courses are very important to pay special attention to as the knowledge gained in these courses are used in future years and you may have to spend extra study time in future years in order to catch up if you forget key concepts from these courses. I am not including any first year courses as they give a background into computer science but I expect that you are already past those courses if you are reading this.

**Math 1P98 Statistics -** The concepts in this course will give you background in statistical reports that you will write in later years.

**Math 1P12 Linear Algebra(matrices) -** The concepts in this class will give you a background in the matrices that you will find useful in later year classes such as Artificial Intelligence(3P71 required) / Machine learning(4P76 AI concentration), Computer Graphics(3P98).

**COSC 2P03 Advance Data Structures -** This is the course that weeds most students out, it teaches you the fundamentals of every useful data structure that you will use for the rest of your life if you continue in any branch of computing. Do not miss a class. Yes that means you. It is referenced in every class that takes place after this class. Especially important for Algorithms(3P03), Theory of Computation(4P61) and writing efficient code in general. It will teach you how to write the data structures in the java.util packages.

**COSC 3P03 Algorithms -** This class with prepare you for the rest of algorithm writing in any other computer science class. It is some what of a successor in importance to Advance Data Structures as it will explain how to write solutions to new problems efficiently. You'll spend a lot of time analyzing algorithms for complexity.