Courses

This page lists the courses Pan Chen took at the University of Toronto, including transfer credits.

1st year at University of Toronto

CSC148 – Introduction to Computer Science

Abstract data types and data structures for implementing them. Linked data structures. Encapsulation and information-hiding. Object-oriented programming. Specifications. Analyzing the efficiency of programs. Recursion. This course assumes programming experience as provided by CSC108H1. Students who already have this background may consult the Computer Science Undergraduate Office for advice about skipping CSC108H1. Practical (P) sections consist of supervised work in the computing laboratory. These sections are offered when facilities are available, and attendance is required. NOTE: Students may go to their college to drop down from CSC148H1 to CSC108H1. See above for the drop down deadline.

CSC165 – Mathematical Expression and Reasoning for Computer Science

Introduction to abstraction and rigour. Informal introduction to logical notation and reasoning. Understanding, using and developing precise expressions of mathematical ideas, including definitions and theorems. Structuring proofs to improve presentation and comprehension. General problem-solving techniques. Running time analysis of iterative programs. Formal definition of Big-Oh. Diagonalization, the Halting Problem, and some reductions. Unified approaches to programming and theoretical problems.

CSC207 – Software Design

An introduction to software design and development concepts, methods, and tools using a statically-typed object-oriented programming language such as Java. Topics from: version control, unit testing, refactoring, object-oriented design and development, design patterns, advanced IDE usage, regular expressions, and reflection. Representation of floating-point numbers and introduction to numerical computation.

CSC236 – Introduction to the Theory of Computation

The application of logic and proof techniques to Computer Science. Mathematical induction; correctness proofs for iterative and recursive algorithms; recurrence equations and their solutions; introduction to automata and formal languages. This course assumes university-level experience with proof techniques and algorithmic complexity as provided by CSC165H1. Very strong students who already have this experience (e.g. successful completion of MAT157Y1) may consult the undergraduate office about proceeding directly into CSC236H1 or CSC240H1.

CSC258 – Computer Organization

Computer structures, machine languages, instruction execution, addressing techniques, and digital representation of data. Computer system organization, memory storage devices, and microprogramming. Block diagram circuit realizations of memory, control and arithmetic functions. There are a number of laboratory periods in which students conduct experiments with digital logic circuits.

STA247 – Probability with Computer Applications

An introduction to probability using simulation and mathematical frameworks, with emphasis on the probability needed for computer science applications and more advanced study in statistical practice. Topics covered include probability spaces, random variables, discrete and continuous probability distributions, probability mass, density, and distribution functions, expectation and variance, independence, conditional probability, the law of large numbers, the central limit theorem, sampling distributions. Computer simulation will be taught and used extensively for calculations and to guide the theoretical development.

MAT224 – Linear Algebra II

Fields, complex numbers, vector spaces over a field, linear transformations, matrix of a linear transformation, kernel, range, dimension theorem, isomorphisms, change of basis, eigenvalues, eigenvectors, diagonalizability, real and complex inner products, spectral theorem, adjoint/self-adjoint/normal linear operators, triangular form, nilpotent mappings, Jordan canonical form.

ECO101 – Principles of Microeconomics

An introduction to economic analysis and its applications: price determination, market structure, decision making by individuals and firms, public policy. NOTE: extensive use of graphical and quantitative analysis.

JGI216 – Globalization and Urban Change

Focusing on the impacts that global flows of ideas, culture, people, goods, and capital have on cities throughout the globe, this course explores some of the factors that differentiate the experiences of globalization and urban change in cities at different moments in history and in various geographic locations.

LIN200 – Introduction to Language

Introduction to Language is a general-interest course on language. Possible topics include: the structure of language; how language changes over time, the social and psychological aspects of language, language and culture, the origin of language, writing systems, and language acquisition. (This course cannot be used as an entrance to programs in linguistics, and cannot be used as a prerequisite to any linguistics courses unless otherwise indicated.)

LIN203 – English Words

English has a rich vocabulary. We will learn how it has developed over time, and investigate aspects of the meaning and pronunciation of words. Most of all, we will study how words are put together, so that students will be able to recognize and analyze unfamiliar words.

2nd year at University of Toronto

CSC209 – Software Tools and Systems Programming

Software techniques in a Unix-style environment, using scripting languages and a machine-oriented programming language (typically C). What goes on in the operating system when programs are executed. Core topics: creating and using software tools, pipes and filters, file processing, shell programming, processes, system calls, signals, basic network programming.

CSC263 – Data Structures and Analysis

Algorithm analysis: worst-case, average-case, and amortized complexity. Expected worst-case complexity, randomized quicksort and selection. Standard abstract data types, such as graphs, dictionaries, priority queues, and disjoint sets. A variety of data structures for implementing these abstract data types, such as balanced search trees, hashing, heaps, and disjoint forests. Design and comparison of data structures. Introduction to lower bounds.

CSC301 – Introduction to Software Engineering

An introduction to agile development methods appropriate for medium-sized teams and rapidly-moving projects. Basic software development infrastructure; requirements elicitation and tracking; estimation and prioritization; teamwork skills; basic UML; design patterns and refactoring; security, discussion of ethical issues, and professional responsibility.

CSC309 – Programming on the Web

An introduction to software development on the web. Concepts underlying the development of programs that operate on the web; survey of technological alternatives; greater depth on some technologies. Operational concepts of the internet and the web, static client content, dynamic client content, dynamically served content, n-tiered architectures, web development processes, and security on the web. Assignments involve increasingly more complex web-based programs. Guest lecturers from leading e-commerce firms will describe the architecture and operation of their web sites.

CSC318 – The Design of Interactive Computational Media

User-centred design of interactive systems; methodologies, principles, and metaphors; task analysis. Interdisciplinary design; the role of graphic design, industrial design, and the behavioural sciences. Interactive hardware and software; concepts from computer graphics. Typography, layout, colour, sound, video, gesture, and usability enhancements. Classes of interactive graphical media; direct manipulation systems, extensible systems, rapid prototyping tools. Students work on projects in interdisciplinary teams.

CSC343 – Introduction to Databases

Introduction to database management systems. The relational data model. Relational algebra. Querying and updating databases: the query language SQL. Application programming with SQL. Integrity constraints, normal forms, and database design. Elements of database system technology: query processing, transaction management.

CSC369 – Operating Systems

Principles of operating systems. The operating system as a control program and as a resource allocator. The concept of a process and concurrency problems: synchronization, mutual exclusion, deadlock. Additional topics include memory management, file systems, process scheduling, threads, and protection.

CSC373 – Algorithm Design, Analysis & Complexity

Standard algorithm design techniques: divide-and-conquer, greedy strategies, dynamic programming, linear programming, randomization, network flows, approximation algorithms. Brief introduction to NP-completeness: polynomial time reductions, examples of various NP-complete problems, self-reducibility. Additional topics may include approximation and randomized algorithms. Students will be expected to show good design principles and adequate skills at reasoning about the correctness and complexity of algorithms.

MAT235 – Multivariable Calculus

Parametric equations and polar coordinates. Vectors, vector functions and space curves. Differential and integral calculus of functions of several variables. Line integrals and surface integrals and classic vector calculus theorems. Examples from life sciences and physical science applications.

MAT344 – Introduction to Combinatorics

Basic counting principles, generating functions, permutations with restrictions. Fundamentals of graph theory with algorithms; applications (including network flows). Combinatorial structures including block designs and finite geometries.

EAS120 – Modern Standard Japanese I

This course is for students with no or a very limited background in Japanese.

3rd year at University of Toronto

CSC399 – Research Opportunity Program

The Research Opportunities Program (ROP) gives undergraduate students in their second and third year the chance to join a professor’s research project and earn course credit towards their degree and program requirements.

Students learn research methods, get to know fellow students and share in the excitement and discovery of acquiring new knowledge. They develop relationships with faculty members who can act as mentors during their undergraduate years and assist them in applications to graduate schools or professional Faculties.

The ROP serves to enhance the fundamental connection between teaching and research in our research-intensive university. Students are welcome to participate in more than one ROP during their undergraduate studies. However, students may not participate in more than one ROP project with the same professor, and may not participate in more than one ROP course per academic year. 

STA248 – Statistics for Computer Scientists

An introduction to statistical inference and practice needed for computer science applications. Statistical models and parameters, estimators of parameters and their statistical properties, methods of estimation, confidence intervals, hypothesis testing, likelihood function, the linear model. Use of statistical computation for data analysis and simulation.

STA302 – Methods of Data Analysis I

Introduction to data analysis with a focus on regression. Initial Examination of data. Correlation. Simple and multiple regression models using least squares. Inference for regression parameters, confidence and prediction intervals. Diagnostics and remedial measures. Interactions and dummy variables. Variable selection. Least squares estimation and inference for non-linear regression.

STA305 – Design and Analysis of Experiments

(Equivalent to graduate course STA1004 – Introductory Experimental Design)

Experiments vs observational studies, experimental units. Designs with one source of variation. Complete randomized designs and randomized block designs. Factorial designs. Inferences for contrasts and means. Model assumptions. Crossed and nested treatment factors, random effects models. Analysis of variance and covariance. Sample size calculations.

Transferred Credits to University of Toronto

CSC108 – Introduction to Computer Programming

Programming in a language such as Python. Elementary data types, lists, maps. Program structure: control flow, functions, classes, objects, methods. Algorithms and problem solving. Searching, sorting, and complexity. Unit testing. No prior programming experience required.

CSC1*1 – Discrete Mathematics

Discrete Mathematics (Part I) is the study of mathematical structures that are fundamentally discrete rather than continuous. It is regarded as the theoretical foundation course for computer science because many concepts and notations from discrete mathematics are useful in studying and describing objects and problems in branches of computer science, such as operating system, data structures, advanced programming languages, cryptography, and database Principles.Topics covered in the course of Discrete Mathematics (1) include Boolean algebra, first-order logic (proposition logic and predicate logic), set theory, binary relation, and function. Mathematical logic (also symbolic logic, formal logic) is a subfield of mathematics with close connections to the foundations of mathematics, theoretical computer science and philosophical logic. The field includes both the mathematical study of logic and the applications of formal logic to other areas of mathematics. Set theory is the branch of mathematics that studies set, which are collections of objects, and the related computations. Mathematical logic, especially first-order logic, and set theory is viewed as the foundation of axiomatic mathematics. Binary relation and function further explore the relations among sets as well as the computation rules and corresponding features under these relations. The course has two major thrusts which complement each other nicely: increasing the mathematical sophistication (proofs and logic) and introducing the mathematical foundation of computer science.

Discrete Mathematics (Part II) is the follow-up course of “Discrete Mathematics 1,” which mainly learns the basic theories and methods in algebra structure and graph theory. It is the advance application part of “discrete mathematics”. In this course, it also will discuss the mathematical base that will be used in the scientific research of computer science and technology. So this course is not only an important theoretical basic course for computer science and technology, but also a backbone course for computer science and technology. Different from “Discrete Mathematics 1”, this course focus more on linking theory with practice. And many contents are derived from practical problems, thus much of its knowledge has strong application prospects. Through this course, students can master not only the basic knowledge in algebra structure and graph theory, but also the logical thinking and logical reasoning abilities, along with the ability of apply the theoretical knowledge to solve practical problems. This is very important for the further learn other theories in computer science and technology.

CSC1*2 – Object Oriented Programming

Object-oriented programming: C++ focuses on object-oriented programming. The purpose of the course is to introduce object-oriented programming approach to students by teaching C++. Through this course, students will know what the three basic features of object-oriented: encapsulation, Inheritance and Polymorphism and so on.

MAT135 – Calculus I

In this first introduction to Calculus, students will be introduced to the tools of differential calculus, the branch of calculus that is motivated by the problem of measuring how quantities change. Students will use these tools to solve other problems, including simplifying functions with straight lines, describing how different types of change are related, and computing maximum and minimum quantities. This course will focus on developing a deep understanding of why the tools of calculus make sense and how to apply them to the social, biological, and physical sciences. It will also emphasize translating between algebraic, graphical, numerical and verbal descriptions of each concept studied.

MAT136 – Calculus II

This second part of the introductory Calculus sequence focuses on integral calculus beginning with the Fundamental Theorem of Calculus, the connection between two seemingly unrelated problems: measuring changing quantities and finding areas of curved shapes. Students will develop a deep understanding of the integral, and use it to: unpack equations involving derivatives; to make sense of infinite sums; to write complicated functions as ‘infinite polynomials’; and to compute areas, volumes, and totals in applied problems. This course will further develop students’ abilities to translate between algebraic, graphical, numerical, and verbal descriptions of mathematics in a variety of applied contexts.

MAT223 – Linear Algebra I

Systems of linear equations, matrix algebra, real vector spaces, subspaces, span, linear dependence and independence, bases, rank, inner products, orthogonality, orthogonal complements, Gram-Schmidt, linear transformations, determinants, Cramer’s rule, eigenvalues, eigenvectors, eigenspaces, diagonalization.