Functional Programming: Linear and nonlinear data structures. Recursive data definitions. Abstraction and encapsulation. Generative and structural recursion.
Language: Racket
Level: Hard and Important
ECON101
ECON101
ECON101
Introduction to Microeconomics: This course provides an introduction to microeconomic analysis relevant for understanding the Canadian economy.
Level: Easy
2016 spring
CS136
ECON102
ECON102
Elementary Algorithm Design and Data Abstraction: Iterative and recursive sorting algorithms; lists, stacks, queues, trees, abstract data types and their implementations.
Language: C
Level: Hard and Important
ECON102
ECON102
ECON102
Introduction to Macroeconomics: Topics include national accounts, inflation, interest rates, wages, international balance of payments, business cycles, growth, employment, unemployment, poverty.
Level: Easy
STAT230
ECON102
STAT230
Probability: This course provides an introduction to probability models including sample spaces, mutually exclusive and independent events, conditional probability and Bayes' Theorem.
Level: Medium
2016 fall
CS246
STAT231
CS246
Introduction to object-oriented programming. CS246 was my NIGHTMARE, There was a group project which is A5 and A4 was difficult
Language: C++
Level: Hard and very important
CS251
STAT231
CS246
Computer Organization and Design: some hardware related stuff, Digital logic design, Binary system, Pipelining. Memory hierarchies
Language: MIPS
Level: Easy
STAT231
STAT231
STAT231
Statistics: Maximum likelihood and interval estimates, Confidence intervals and p-values. The Chi-squared and t distributions... Memorize most formulae even there is a cheat sheet.
Level: Medium
2017 winter
CS245
MATH239
CS245
Logic and Computation: Propositional and predicate logic. Soundness and completeness and theirimplications.
Very abstract, but assignments and exams were easy.
Level: Easy
CS241
MATH239
CS245
Basicly this course teach you how to write a compiler. All assignments are based on the previous assignment except the first two assignments.
Language: MIPS and (C++\Racket\probably Scala)
Level: Medium
MATH239
MATH239
MATH239
Introduction to graph theory and introduction to combinatorial analysis.
CS341 uses much graph theory from this course
Level: Medium
2017 fall
CS240
CS240
CS240
Data Structure: Introduction to widely used and effective methods of data organization, focusing on data structures, their algorithms, and the performance of these algorithms.
Level: Medium and important to interviews
CS349
CS240
CS240
User Interface: An introduction to contemporary user interfaces. Assignments were interesting and took long time to finish, but exams focus on definitions. Here is the questions bank.
Language: C++, Java, Android
Level: Medium
CS370
CS240
CS370
Numerical Computation: Principles and practices of basic numerical computation as a key aspect of scientific computation.
Language: Matlab
Level: Depends on the professor
2018 spring
CS341
CS341
CS341
Algorithms: The study of efficient algorithms and effective algorithm design techniques. Use stack allocated memory in programming questions, otherwise it may exceed the time limit.
Language: C++ or Java
Level: Medium to Hard and important to interviews
CS348
CS341
CS341
Introduction to Database Management: assignments take long time to do. Exams mainly focus on definitions and SQL.
Language: SQL and C
Level: Medium
CS350
CS341
CS350
Operating Systems: An introduction to the fundamentals of operating system function, design, and implementation. GDB is very important for debugging.