My university courses
I sometimes get asked about what courses I took at school. So I’m publishing this list hoping that it can serve as a starting point for conversations about some topics that I’m familiar with.
| Code | Title | Topics | Remarks |
| CSC150H | Accelerated Introduction to Computer Science | Python, Java, dictionary, recursion, sorting, inheritance, memory model, exception, generics, time complexity, JUnit | Similar to CSC108H + CSC148H. Normally this course only covers one language. |
| CSC207H | Software Design | Java, SVN, regular expression (practical), GUI, XML, BlackBerry, design patterns (singleton, factory, visitor), user story, scrum | Emphasizes teamwork rather than programming. |
| CSC209H | Software Tools and Systems Programming | Unix shell, Bash scripting, makefile, C programming, pointer, signal, fork, pipe, socket, MapReduce | |
| CSC240H | Enriched Introduction to the Theory of Computation | Predicate logic, proof technique (direct, contrapositive, contradiction, cases), quantification, mathematical induction (weak, strong, structural), algorithm correctness (precondition, postcondition, termination, loop invariant), big O notation, DFA, NFA, regular expression (theoretical), regular language and equivalence, pumping lemma | Similar to CSC160H + CSC236H. |
| CSC258H | Computer Organization | Boolean algebra, logic circuit, breadboarding, floating-point representation and arithmetic, assembly language, microcode | |
| CSC265H | Enriched Data Structures and Analysis | Abstract data type, average and worst-case time complexity, quicksort, red-black tree, augmenting data structures, hashing, universal hash function, Bloom filter, binary heap, binomial heap, union-find, amortized analysis, accounting method, potential method, breadth-first search (BFS), depth-first search (DFS), strongly connected components, lower bound on complexity, adversarial argument | Enrichment to CSC263H. |
| CSC290H | Communication Skills for Computer Scientists | Presentation skills, self-critique of presentation, job interview, writing skills, meeting memo, research skills, citation, interpersonal communication, cognitive complexity, cognitive dissonance, perception checking, I-message, empathic listening, nondefensiveness, assertiveness, principled negotiation | It’s an English and communications course, not a computer science course. |
| CSC310H | Information Theory | Entropy, adaptive source modeling, run-length encoding (RLE), Huffman coding, arithmetic coding, LZ77, prediction by partial matching (PPM), binary symmetric channel (BSC), mutual information, maximum-likelihood decoding, syndrome decoding, generator matrix, parity-check matrix, Shannon’s noisy-channel coding theorem, Hamming code, low-density parity-check code (LDPC) | |
| CSC321H | Introduction to Neural Networks and Machine Learning | Hidden layer, softmax, recurrent neural network, Bayesian inference, distributed representation, backpropagation, early stopping, mixture of experts, Hopfield net, restricted Boltzmann machine (RBM), autoencoder, capsule, support vector machine (SVM), MATLAB | Taught by Geoff Hinton. |
| CSC324H | Principles of Programming Languages | Scheme, ML, Haskell, Prolog, context-free grammar (CFG), ambiguous grammar, lexical scoping, tail recursion, continuation passing style (CPS), map, filter, fold, types, pattern matching, currying, lazy evaluation, Horn clause, unification, backtracking, negation as failure, cut | Normally this course covers fewer than 4 languages. |
| CSC343H | Introduction to Databases | Relational algebra (union, intersection, difference, renaming, selection, projection, Cartesian product, theta join, natural join, division), SQL, grouping, aggregation, foreign key constraint, functional dependency, normal forms (1, 2, 3, BCNF) | Other instances of this course may cover relational calculus. |
| CSC350H | Numerical Algebra and Optimization | Numerical error, catastrophic cancellation, condition number of matrix, Gaussian elimination with no/partial/full pivoting, LU decomposition, QR factorization, linear least squares approximation, singular value decomposition (SVD), Newton’s method, Broyden’s method, multidimensional optimization, MATLAB | Enrichment to CSC336H. |
| CSC351H | Numerical Approximation, Integration and Ordinary Differential Equations | Approximation error, Taylor’s theorem, polynomial interpolation, Newton divided differences, B-spline, continuous least squares approximation, numerical integration, Simpson’s rule, Gaussian quadrature, Richardson extrapolation, Euler method, Runge-Kutta, MATLAB | |
| CSC358H | Principles of Computer Networks | Queuing theory, M/M/1 and similar queues, ALOHA, stop-and-wait ARQ, go-back-n ARQ, selective repeat ARQ, Dijkstra’s algorithm for routing, Bellman-Ford algorithm for routing | Covers theoretical network protocols, not actual ones. |
| CSC365H | Enriched Computational Complexity and Computability | Turing machine, decidable, semidecidable, diagonalization, halting problem, many-one reduction, Rice’s theorem, polynomial-time reduction, NP search problem, examples of NP-complete problems, proof of SAT being NP-complete, NL, PSPACE | Enrichment to CSC363H. Later renamed to CSC463H. Taught by Stephen A. Cook. |
| CSC369H | Operating Systems | Process management, scheduling, system call, concurrency, monitor, deadlock, virtual memory, paging, file system, OS security, Harvard’s OS/161, C programming, code reading | |
| CSC372H | Microprocessor Software | Altera DE2 Nios II, C, assembly language, interrupt handling, context switching, hardware interfacing, Lego building (Technic, motors, sensors), video synthesis by pixels, audio synthesis by samples, real-time scheduling, real-time operating system (RTOS), fixed-point arithmetic, linked list for thread management, applications and limitations of embedded microprocessors/microcontrollers | Mostly lab work in programming on the DE2, rather than lectures. |
| CSC375H | Enriched Algorithm Design & Analysis | Approximation ratio, interval scheduling, makespan scheduling, greedy algorithm, Kruskal’s algorithm, Dijkstra’s algorithm, Floyd-Warshall algorithm, Huffman code, dynamic programming, divide-and-conquer algorithm, fast Fourier transform (FFT), network flow, Dinic’s algorithm, min-cut, linear programming, integer programming, randomization | Enrichment to CSC373H. Taught by Allan Borodin. |
| CSC401H | Natural Language Computing | n-gram model, decision tree, hidden Markov model (HMM), Viterbi algorithm, Gaussian mixture model (GMM), expectation-maximization (EM), part-of-speech tagging, statistical machine translation, IBM Model 1, speech production theory, speech synthesis, information retrieval, MATLAB | |
| CSC438H | Computability and Logic | Resolution (theorem-proving), PK (propositional sequent calculus), LK (predicate sequent calculus), soundness, completeness, register machine, primitive recursive function, Church-Turing thesis, recursively enumerable set, recursive set, diagonalization, Peano arithmetic, arithmetic hierarchy, Gödel’s incompleteness theorem | |
| CSC458H | Computer Networking Systems | Latency and throughput, OSI model, line coding, Spanning Tree Protocol (STP), self-learning bridge, Classless Inter-Domain Routing (CIDR), packet forwarding decision, distance-vector routing, link-state routing, autonomous system (AS), peering and transit, path-vector routing, Address Resolution Protocol (ARP), Internet Protocol (IP), Internet Control Message Protocol (ICMP), TCP handshakes, TCP sequencing, congestion control, Stanford’s Virtual Network System (VNS), peer-to-peer (P2P) search, network attacks | |
| CSC494H | Computer Science Project | Erlang, parallelization, fault tolerance, strong scaling, weak scaling, high-performance computing (HPC), Conway’s Game of Life, Mandelbrot set, SciNet | Professor-defined project course. |
| MAT137Y | Calculus! | Absolute value, mathematical induction, limit (epsilon-delta), Dirichlet function, least upper bound, intermediate value theorem, differentiation, chain rule, mean value theorem, curve sketching, implicit differentiation, related rates, Darboux integral (ε, δ), integration by parts, natural logarithm, sequence convergence (ε, δ), series convergence | MAT135Y has no epsilon-delta, MAT157Y has more theoretical problems and less calculations. |
| MAT223H | Linear Algebra I | System of linear equations, row reduction, matrix inverse, span, basis, vector space, null space (kernel), rank, isomorphism, linear map, determinant, Cramer’s rule, inner product, Gram-Schmidt, least squares, eigenvalue and eigenvector | |
| MAT224H | Linear Algebra II | Vector space, field, complex numbers, change of basis, eigenvalue and eigenvector, quadratic form, inner product space, normal linear operator, orthonormal basis, orthogonal complement, isomorphism | |
| MAT237Y | Multivariable Calculus | Open and closed sets (ε, δ), limit (ε, δ), connectedness, partial derivative, chain rule, Jacobian, parametric function, integration, Jordan measure, cylindrical and spherical coordinates, vector field, gradient, curl, divergence, line integral, Green’s theorem, Gauss’s theorem, Stokes’s theorem, extrema | |
| MAT244H | Introduction to Ordinary Differential Equations | First-order linear ODE, separable differential equation, exact differential equation, Wronskian, Abel’s identity, second-order linear constant homogeneous ODE, method of undetermined coefficients, variation of parameters, characteristic equation, phase portrait, fundamental matrix, stable/saddle/unstable/spiral fixed point | |
| MAT301H | Groups and Symmetries | Group, abelian (commutative) group, equivalence relation, disjoint partition, division algorithm (theorem), Euler’s totient function, cyclic group, generator, integers mod n, order of an element, conjugate, subgroup, torsion subgroup, dihedral group, center of a group, external direct product, symmetric (permutation) group, orbit, cycle decomposition, alternating group, left/right coset, Lagrange’s theorem, Euler’s totient theorem, normal subgroup, quotient group, homomorphism, internal direct product | |
| MAT335H | Chaos, Fractals and Dynamics | Logistic map, fixed point, cycle, bifurcation, definition of chaotic, Sharkovskii’s period 3 theorem, fractal dimension | |
| STA257H | Probability and Statistics I | Random variable, event, probability, expected value, probability-generating function (PGF), probability distribution function (PDF), moment-generating function (MGF), distributions (Bernoulli, geometric, exponential, Poisson, gamma, order statistic), central limit theorem | |
| ECO100Y | Introduction to Economics | Supply and demand, marginal cost, elasticity, perfect competition, monopoly, externality, price ceiling/floor, game theory, gains from trade, inflation, GNP and GDP, Keynesian model, monetary policy | |
| LIN100Y | Introduction to General Linguistics | Phonetics, phonology, morphology, syntax, semantics, minimal pair, International Phonetic Alphabet (IPA), phonological rule, X-bar theory |
Notes
- I took these courses at the University of Toronto, St. George (downtown) campus between year 2007 and 2012.
- The course topics are summarized from my own experience, not taken from the course descriptions.