This page is a repository of relevant courses I have taken at UofT St. George. Click on a course for more details.

UG = Undergraduate courses

G = Graduate courses

- G Yr 1
- UG Yr 4
- UG Yr 3
- UG Yr 2
- UG Yr 1

Spring 2013

Reconfigurable Computing and FPGA Architecture, ECE1756

Study the architecture of FPGAs: what are the building blocks of FPGAs, how are they interconnected, and what makes a good vs. a bad architecture? Students will learn how to model the area and delay of key circuitry such as RAM blocks and programmable routing, how the ability of Computer-Aided Design (CAD) tools to target different structures affects FPGA architecture, and how to experimentally evaluate new FPGAs. Finally, we will discuss emerging architectures and possible future directions for FPGA evolution.

Parallel Computer Architecture and Programming, ECE1755

This course explores the evolution of modern parallel architectures and programming models. In the first phase we will investigate in detail the design and operation of modern parallel architectures, with a brief look at how they are programmed. In the second phase we will study current research and development of emerging parallel architectures including multicore processors, helper threads, and speculative multithreading; in this phase we will read research papers, and through the class project implement and evaluate new ideas.

Fall 2012

Dependable Systems, ECE1724

This graduate-level course focuses on dependability in software systems and examines current research that aims to address challenges caused by software defects, intrusions and software misconfiguration.

Parallel Programming, ECE1747

In the first part of the course we will briefly introduce the architecture of parallel systems and the concept of data dependencies/races. The three most commonly used parallel programming paradigms (shared memory, distributed memory and data parallel) will then be examined in detail. An overview of automatic parallelization of programs and the use of parallel processing in related domains such as parallel and distributed database transaction processing will also be given. In the second part of the course selected research topics will be examined. This consists of student-lead discussions of relevant research papers. A research-intensive group project in an area related to program parallelization is a fundamental part of the course.

Interconnection Networks for Parallel Computer Architectures, ECE1749

This course will explore the architecture and design of interconnection networks including topology, routing, flow control and router microarchitecture. This course will also look into the impact on communication requirements of various parallel architectures and cache coherence mechanism. This graduate-level course will focus on interconnection network architectures used in multiprocessor systems and many-core designs with emphasis on recent research innovations in these areas.

*Course descriptions taken from UofT Engineering Course Catalogue.

Spring 2012

Internetworking, ECE461

This course will cover the fundamentals of protocols for packet switching networks with emphasis on Internet type of networks including the following topics: the Internetworking concept and architectural model; data link layer (Ethernet and PPP); service interface; Internet addresses; address resolution protocol; Internet protocol (connectionless datagram delivery); routing IP datagrams; Internet control message protocol (error and control messages); subnet and supernet address extensions; ping program; traceroute program; user datagram protocol; reliable stream transport service (TCP); the socket interface; routing (GGP, EGP, IP, OSPF, HELLO); Internet multicasting; domain name system; applications such as HTTP, electronic mail, and SNMP; Internet security and firewall design; Ipv6, RSVP, flows, and ISIP.

Engineering Economic Analysis & Entrepreneurship, ECE472

The economic evaluation and justification of engineering projects and investment proposals are discussed. Cost concepts; financial and cost accounting; depreciation; the time value of money and compound interest; inflation; capital budgeting; equity, bond and loan financing; income tax and after-tax cash flow; measures of economic merit in the private sector; sensitivity and risk analysis. Applications: evaluations of competing engineering project proposals; replacement analysis; economic life of assets; lease versus buy decisions; break-even analysis; decision tree analysis. Entrepreneurship, the Canadian business environment and the business plan for a new venture will be discussed.

Computer Architecture, ECE552

Performance analysis and metrics and cost. Instruction set architectures. Instruction-level parallelism: pipelining, superscalar, dynamic scheduling, VLIW processors. Data-level prallelism: vector processors, GPUs. Thread-level parallelism: multiprocessors, multi-core, coherence, simultaneous multi-threading. Memory hierarchies: caches and virtual memory support. Simulation tools and methods.

Fall 2011

Computer Hardware, ECE342

Arithmetic circuits, cubical representation of logic functions, digital system design, timing analysis, design of asynchronous circuits, testing of logic circuits.

Distributed Systems, ECE419

Design issues in distributed systems: heterogeneity, security, transparency, concurrency, fault-tolerance; networking principles; request-reply protocol; remote procedure calls; distributed objects; middleware architectures; CORBA; security and authentication protocols; distributed file systems; name services; global states in distributed systems; coordination and agreement; transactions and concurrency control; distributed transactions; replication.

Computer Networks II, ECE466

Traffic modeling; network calculus; traffic classification; traffic regulation: shaping, filtering, policing, leaky bucket; queueing systems; scheduling; quality of service: Diffserv and IntServ/RSVP; multi-protocol label switching; call admission control / congestion control; switching; pricing; optical networks.

Computer Security, ECE568

As computers permeate our society, the security of such computing systems is becoming of paramount importance. This course covers principles of computer systems security. To build secure systems, one must understand how attackers operate. This course starts by teaching students how to identify security vulnerabilities and how they can be exploited. Then techniques to create secure systems and defend against such attacks will be discussed. Industry standards for conducting security audits to establish levels of security will be introduced. The course will include an introduction to basic cryptographic techniques as well as hardware used to accelerate cryptographic operations in ATM's and webservers.

*Course descriptions courtesy of UofT Engineering Course Calendar 2011-2012.

Spring 2010

Communication Systems, ECE316

An introductory course in analog and digital communication systems. Analog and digital signals. Signal representation and Fourier transforms; energy and power spectral densities; bandwidth. Distortionless analog communication; amplitude, frequency and phase modulation systems; frequency division multiplexing. Sampling, quantization and pulse code modulation (PCM). Baseband digital communication; intersymbol interference (ISI); Nyquist's ISI criterion; eye diagrams. Passband digital communications; amplitude-, phase- and frequency-shift keying; signal constellations. Performance analysis of analog modulation schemes in the presence of noise. Performance analysis of PCM in noise.

Computer Networks I, ECE361

Layered network architectures; overview of TCP/IP protocol suite. Introduction to sockets; introduction to application layer protocols. Peer-to-Peer Protocols: ARQ; TCP reliable stream service; flow control. Data Link Controls: Framing; PPP; HDLC. Medium access control and LANs: Aloha; Ethernet; Wireless LANs; Bridges. Packet Switching: Datagram and virtual circuit switching; Shortest path algorithms; Distance vector and link state routing algorithms.

Environmental Chemistry, CHE230

The chemical phenomena occurring in environmental systems are examined based on fundamental principles of organic, inorganic and physical chemistry. The course is divided into sections describing the chemistry of the atmosphere, natural waters and soils. The principles applied in the course include reaction kinetics and mechanisms, complex formation, pH and solubility equilibria and adsorption phenomena. Molecules of biochemical importance and instrumental methods of analysis relevant to environmental systems are also addressed.

Fall 2009

Probability and Random Processes, ECE302

Basic principles and properties of probability. Random variables, distribution and density functions. Expectation, moments, characteristic function, correlation coefficient. Functions of random variables. Bernoulli trials, Binomial, Poisson and Gaussian distributions. Introduction to random processes. Applications will be chosen from reliability theory, estimation and hypothesis testing, linear models for data, noise in devices, random number generation and simulation.

Fields and Waves, ECE320

Voltage and current waves on a general transmission line, reflections from the load and source, transients on the line, and Smith's chart. Maxwell's equations, time retarded scalar and vector potentials, electric and magnetic fields wave equations, boundary conditions, plane wave propagation, reflection and transmission at boundaries, constitutive relations, dispersion, polarization; and Poynting vector.

Operating Systems, ECE344

Operating system structures, concurrency, synchronization, deadlock, CPU scheduling, memory management, file systems. The laboratory exercises will require implementation of part of an operating system.

Algorithms and Data Structures, ECE345

Design and analysis of algorithms and data structures that are essential to engineers in every aspect of the computer hardware and software industry. Review of background material (recurrences, asymptotics, summations, trees and graphs). Sorting, search trees and balanced search trees, amortized analysis, hash functions, dynamic programming, greedy algorithms, basic graph algorithms, minimum spanning trees, shortest paths, introduction to NP Completeness.

*Elective courses irrelavant to my professional engineering development are not listed, such as Arts and Science courses.

*Course descriptions courtesy of UofT Engineering Course Calendar 2009-2010.

Spring 2009

Signals and Systems, ECE216

Fundamental discrete- and continuous-time signals, definition and properties of systems, linearity and time invariance, convolution, impulse response, differential and difference equations, Fourier analysis, sampling and aliasing, applications in communications.

Intro. to Microelectronics, ECE231

An introduction to electronic circuits using operational amplifiers, diodes, bipolar junction transistors and field-effect transistors.

Computer Organization, ECE243

Basic computer structure. Design of central processing unit. Hardwired and microprogrammed control. Input-output and the use of interrupts. Arithmetic circuits. Assembly language programming. Main memory organization. Peripherals and interfacing. Microprocessors. System design considerations. The laboratory will consist of experiments involving logic systems and microprocessors. Design activity constitutes a major portion of laboratory work.

Electricity and Magnetism, ECE221

The fundamental laws of electromagnetics are covered. The topics include: Forces due to Electric Fields, Coulomb's Law, Bauss's Law, Polarization in Dielectrics, Boundary Conditions, Poisson's and Laplace's Equations, Biot-Savart Law, Forces due to Magnetic Fields, Farady's Law, Maxwell's Equations.

Communication and Design, ECE297

An introduction to electrical and computer engineering design processes illustrated by the design and implementation of software systems. Creative development with appropriate organizational and reporting and recording activities, both oral and written, is emphasized. The general design cycle and pragmatic strategies used in the creation of small designs and larger systems are presented. These methods are implemented in pactical lab work done in teams. Oral skills are developed in seminars and team discussions, by learning to handle questions, and by making formal presentations. Written skills are developed in reports related to the lecture and lab activities.

Fall 2010

Calculus III, MAT291

The chain rule for functions of several variables; the gradient. Maxima and minima, Lagrange multipliers. Multiple integrals; change of variables, Jacobians. Line integrals, independence of path, Green's theorem. The gradient, divergence and curl of a vector field. Surface integrals; parametric representations, applications from electromagnetic fields, Gauss' theorem and Stokes' theorem.

Advanced Engineering Mathematics, MAT290

An introduction to complex variables and ordinary differential equations. Topics include Laplace transforms, ordinary higher-order linear differential equations with constant coefficients; transform methods; complex numbers and the complex plane; complex functions; limits and continuity; derivatives and integrals; analytic functions and the Cauchy-Riemann equations; power series as analytic functions; the logarithmic and exponential functions; Cauchy's integral theorem, Laurent series, residues, Cauchy's integral formula, the Laplace transform as an analytic function. Examples are drawn from electrical systems.

Digital Systems, ECE241

Digital logic circuit design with substantial hands-on laboratory work. Algebraic and truth table representation of logic functions and variables. Optimizations of combinational logic, using "don't cares". Multi-level logic optimization. Transistor-level design of logic gates; propagation delay and timing of gates and circuits. The Verilog hardware description language. Memory in digital circuits, including latches, clocked flip-flops, and Static Random Access Memory. Set-up and hold times of sequential logic. Finite state machines - design and implementation. Binary number representation, hardware addition and multiplication. Tri-state gates, and multiplexors. There is a major lab component using Complex Programmable Logic Devices (CPLDs) and Field-Programmable Gate Arrays (FPGAs) and associated computer-aided design software.

Circuit Theory, ECE212

Nodal and loop analysis and network theorems. Natural and forced response of RL, RC, and RLC circuits. Sinusoidal steady-state analysis. Frequency response; resonance phenomena; poles and zeros; applications of the Laplace transform.

Programming Fundamentals, ECE244

Provides a foundation in programming using an object-oriented programming language. Topics include: classes and objects, inheritance, exception handling, basic data structures (lists, tree, etc.), big-O complexity analysis, and testing and debugging. The laboratory assignments emphasize the use of object-oriented programming constructs in the design and implementation of reasonably large programs.

*Course descriptions courtesy of UofT Engineering Course Calendar 2008-2009.

Spring 2008

Calculus B, MAT197

Techniques of integration, introduction to second order differential equations, sequences and series, vector-valued functions, functions of several variables, partial differentiation. Applications to mechanics and other engineering problems.

Introduction to Materials and Chemistry, APS104

This is an introductory course in materials science and physical chemistry. Topics include: fundamentals of atomic, structure, the nature of bonding, crystal structure and defects, the laws of chemical thermodynamics (including a discussion of enthalpy and entropy), reaction equilibrium, and phase equilibria. These basic principles provide the foundation for an exploration of structure-property relationships in metals, ceramics, and polymers, with emphasis on mechanical properties.

Dynamics, MIE100

This course on Newtonian mechanics considers the interactions which influence 2-D, curvilinear motion. These interactions are described in terms of the concepts of force, work, momentum and energy. Initially the focus is on the kinematics and kinetics of particles. Then, the kinematics and kinetics of systems of particles and solid bodies are examined. Finally, simple harmonic motion is discussed. The occurrence of dynamic motion in natural systems, such as planetary motion, is emphasized. Applications to engineered systems are also introduced.

Engineering Strategies and Practice II, APS112

This course introduces and provides a framework for the design process, problem solving and project management. Students are introduced to communication as an integral component of engineering practice. The course is a vehicle for practicing team skills and developing communications skills. Building on the first course, this second course in the two Engineering Strategies and Practice course sequence introduces students to project management and to the design process in greater depth. Students work in teams on a term length design project. Students will write a series of technical reports and give a team based design project presentation.

Intro. to Electricity and Magnetism, Circuit Analysis, ECE110

An introduction to the physics of Electricity and Magnetism: electric field, work in the electric field, electrostatic potential, capacitor, electric current, power, resistor; magnetic field, force on charge in magnetic field, electromagnetic induction, inductor, transformer. DC linear circuit analysis: Kirchhoff's laws, voltage and current division, superposition, Thevenin and Norton equivalents, nodal analysis. Transient response of linear circuits: RC circuit, RL circuit, single time constant circuits. AC circuits: sinusoidal source, RMS values, time domain analysis, phasors, power in AC circuits, the transformer. Introduction to operational amplifiers.

Fall 2007

Calculus A, MAT196

Limits and continuity, differentiation, maximum and minimum problems, definite and indefinite integrals, application of integration to geometry, mechanics, and other engineering problems, introduction to first order differential equations.

Linear Algebra, MAT188

Systems of linear equations; matrices; determinants; vectors, lines and planes in 3 dimensions; Rn; vector spaces; eigenvalues and eigenvectors; introduction to products; applications.

Engineering Strategies and Practice I, APS111

This course introduces and provides a framework for the design process. Students are introduced to communication as an integral component of engineering practice. The course is a vehicle for understanding problem solving and developing communications skills. This first course in the two Engineering Strategies and Practice course sequence introduces students to the process of engineering design, to strategies for successful team work, and to design for human factors, society and the environment. Students write team and individual technical reports and give presentations within a discussion group.

Fundamentals of Programming, APS105

An introduction to computer systems and problem solving using computers. Topics include: the representation of information, programming techniques, programming style, algorithms and program organization using objects, array and pointer-based data structures (including stacks, queues and linear lists) searching and sorting basic computer organization, operating systems, and applications. The laboratories reinforce the lecture topics and develops essential programming skills.

*Course descriptions courtesy of UofT Engineering Course Calendar 2008-2009.