Course 

Grade 
Introduction to Computer Science 
Abstract data types and data structures for implementing them.
Linked data structures. Encapsulation and informationhiding. Objectoriented programming. Specifications. Analyzing the efficiency of programs. Recursion. 
A 
Introduction to Language 
Introduction to Language is a generalinterest 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. 
A 
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. 
Credit 
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. 
Credit 
Linear Algebra II 
Fields, complex numbers, vector spaces over a field, linear transformations, matrix of a linear transfromation, kernel, range, dimension theorem,
isomorphisms, change of basis, eigenvalues, eigenvectors, diagonalizability, real and complex inner products, spectral theorem, adjoint/selfadjoint/normal linear operators,
triangular form, nilpotent mappings, Jordan canonical form. 
A 
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 problemsolving techniques.
Running time analysis of iterative programs. Formal definition of BigOh. Diagonalization, the Halting Problem, and some reductions. Unified approaches to programming
and theoretical problems. 
A+ 
Software Design 
An introduction to software design and development concepts, methods, and tools using a staticallytyped
objectoriented programming language such as Java. Topics from: version control, unit testing, refactoring, objectoriented design and
development, design patterns, advanced IDE usage, regular expressions, and reflection. Representation of floatingpoint numbers and introduction to numerical computation. 
A 
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. 
Credit 
Probability with Computer Applications 
Introduction to the theory of probability, with emphasis on applications in computer science. The topics covered include random variables,
discrete and continuous probability distributions, expectation and variance, independence, conditional probability, normal, exponential, binomial, and Poisson distributions,
the central limit theorem, sampling distributions, estimation and testing, applications to the analysis of algorithms, and simulating systems such as queues. 
A 
Cumulative GPA: 4.00 
In Process 
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 universitylevel experience with
proof techniques and algorithmic complexity as provided by CSC165H1. 

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. 
