Here are a collection of courses I've taken in university - just to give you a grasp of what I know!
APS100 - Orientation to Engineering
Fantastic course of stress and time management. I learned note-taking and scheduling techniques that kept my stress levels low throughout university!
APS110 - Engineering Chemistry and Materials Science
Basic relationships between molecular structures and physical phenomena. This course helped me visualize what happens in the world around us.
APS111 - Engineering Strategies and Practice I
First group project course to familiarize ourselves with engineering project management. We worked on an early fire detection program.
CIV100 - Mechanics
Basic course on static physics, which was key to learning how to break up problems into smaller pieces.
MAT186 - Calculus I
Fundamentals of Calculus, such as limits, derivatives, integration, and applications of these principles in engineering problems.
MAT188 - Linear Algebra
Introductory linear algebra course that covers linear equations, vectors, sets, linear transformations, matrices, inverses, subspaces, determinants, eigenvalues, differential equations, dot product, cross product, projections, the Gram-Schmidt process, diagonalization, least squares approximation, and numeric computation - all of which form a basis of control systems and computing.
APS105 - Computer Fundamentals
My first ever exposure to the C language and basic programming problems and solutions. We learned about loops, functions, arrays, strings, pointers, and basic data structures and algorithms, which forms a basis for my programming skills today.
APS112 - Engineering Strategies and Practice II
An extension of APS112, where we could connect with a real client, work on a real project, identify a gap and conjure up a solution!
APS191 - Track One Seminar
Seminar course on the pros and cons of each faculty, and how to make an informed decision when it comes time to choose my program. This course inspired me to choose ECE!
ECE110 - Electrical Fundamentals
Simple theory course on electrical fundamentals, which includes Coulomb's Law, Gauss' Law, Ampere's Law, Faraday's Law, and the physics of capacitors, resistors, and inductors. The second part of the course applied these theories to circuit analysis, which included nodal and mesh analysis, as well as simple 1st order RC and RL transient response and sinusoidal steady-state analysis.
MAT187 - Calculus II
An extension of Calculus 1, which covered advanced integration techniques, modelling with differential equations, sequences and series, Taylor series, parameterization, polar curves, vector-valued functions, and partial differentiation. We learned how to apply recursion to many series in a programming setting, which helped understand how recursion works. (To understand recursion, you must first understand recursion!)
MIE100 - Dynamics
This was an introductory course on Newtonian mechanics on dynamic systems. We learned about kinematics and kinetics of systems, simple harmonic motion, and planetary motion. The theory itself was quite simple, but the applications were difficult and varied. This helped me learn how to problem-solve effectively, but it was also the extent of my mechanical engineering education. Hopefully I can apply these concepts to robotics in the future!
ECE201 - Electrical and Computer Engineering Seminar
This course outlined the career pathways of ECE and how to choose courses in each of the 6 Areas. This course inspired me to pursue computer engineering with a focus in software!
ECE212 - Circuit Analysis
This is an extension of ECE110, which focuses on more advanced nodal and loop analysis and network theorems. We learned about response of RL, RC, and RLC circuits, resonance, poles and zeros, and the Laplace Transform. This was the first application of complex numbers I was exposed to!
ECE241 - Digital Systems
Introduction to logic functions and variables. This course used Verilog to apply theories of combinational logic, propagation delay, timing, latches, clocked flip-flops, static RAM, set-up and hold times, etc. We also designed finite state machines, and how to use binary numbers. Our labs included use of Intel's FPGAs. This was my first exposure to hardware design, and it was quite a difficult course, but it was also fun to see the foundation of which software is built on. There was a final project where our team made a Doodle Jump game by using C and Verilog to create graphics through a VGA connection.
ECE244 - Programming Fundamentals
This was a C++ course that introduced me to object-oriented programming. We learned about classes and objects, inheritance, exception handling, basic data structures, and big-O analysis. Through this course, I was able to learn how to write clean, modular, and readable code. It also showed me how easy it was to learn a new language!
MAT290 - Advanced Engineering Mathematics
This was a differential equations course. We used Laplace Transforms, Cauchy-Riemann equations, Cauchy Integral theorem, Laurent series, residues, Cauchy's integral formula, and using the Laplace Transform as an analytic function. We also learned about complex functions, and applied Calculus theory to it.
MAT291 - Calculus III
This was an extension of MAT187 for ECE students only, which taught us about the gradient, multiple integrals, change of variables, Jacobians, line integrals, divergence and curl of a vector field, surface integrals, parametric and explicit representations, divergence theorem, Stoke's theorem, and Green's theorem. It formed the foundation for higher level circuit analysis and electromagnetic field courses. It also helped with control systems and signal processing.
ECE216 - Signals and Systems
This was an introductory signals and systems course, which shows how discrete and continuous time signals worked. We learned about linearity, the time invariance, convolution, impulse response, and differential and difference equations. We also used Fourier analysis, sampling and aliasing to solve communications problems. This helped in my higher level signals course as well as understanding clock cycles in hardware, and algorithms in Operating Systems.
ECE243 - Computer Organization
This course taught us about the CPU, hardware control, input-output, interrupts and polling, memory, peripherals and interfacing, and system designs. We learned about Assembly and how to read and write it. There was a project where we could use interrupts and polling to make a hardware program. Our team made a Gomoku game!
ECE297 - Communication and Design
This was a major project course that involved intensive programming and design. This was the first direct-yourself programming project I've ever done! We used the OpenStreetMaps API, learned how to use Git to manage our code, and created a map that solved the Travelling Salesman problem. We improved upon Djikstra's algorithm with our own little touches, and added a bunch of fun functionalities to our map for bonus marks.
MGNT2510 - Marketing and Management - Exchange
This was a management course I did during an exchange to the Chinese University of Hong Kong. We talked about Influencer economy in China, and how marketing affects global economies. The first part of the course was general theory on management, which was all introductory.
JRE300 - Fundamentals of Accounting and Finance
This course started off teaching us how to report finances and the fundamentals of accounting. The second half of the course focused on finance, and introduced us to financial positions, equity, cash flows, cost-calculations, financial projections, value of investments, controlling risk, cash flow management, and project valuations. This course inspired me to be an entrepreneur, where I started my own Turo business. It also introduced me to stock trading, credit card churning, and other techniques to build credit and time-value of my funds.
ECE221 - Electrical and Magnetic Fields 2
This was an extension of ECE110 and 212, which covered the electromagnetic fields aspect of electrical engineering. We learned about Coulomb's Law, Gauss' Law, Poisson's and Laplace's equations, the Biot-Savart Law, Ampere's Law, Faraday's Law, and Maxwell's Equations. We used Vector Calculus to apply these theories, and applied them to physical problems. This is the extent of my electromagnetic fields courses.
ECE231 - Introduction to Electronics
This was an introductory course to circuits, using amplifiers, diodes, BJTs, and FETs. This was an extremely difficult course. We used NI Multisim to model circuits and confirm our calculations.
JRE410 - Markets and Competitive Strategies
This course was highly engaging and interactive. We learned about the environments of business, and how to create competitive positions. We focused on delivering customer value, targeting and positioning, tactical decisions, marketing communications, distribution channels and pricing. We also learned about innovation, industry life cycles, disruptive technologies, product renewal, R&D and commercialization. There was a lot of debating, and a group project to market our own brand.
APS360 - Artificial Intelligence Fundamentals
This was my first and only exposure so far to machine learning and AI. We learned about the history of AI, and neural networks, autodecoders and decoders, RNNs, natural language processing, and GANs. We applied this to an image recognition project of our choice. We chose to do facial recognition to identify and predict features of an individual, and group them accordingly. We also investigated ethical issues with facial recognition technology, such as Deepfakes. This was an interesting course, but was quite breadth-focused.
ECE302 - Probability and Applications
This was a fundamental course that helped with machine learning concepts, and will soon help me with computer networks. We learned about events, sample space, axioms of probability, discrete and continuous RVs, distribution sand density functions, Bernoulli trials, expectation, moments, characteristic function, functions of RVs, random vectors, joint distributions, and transformations.
ECE311 - Introduction to Control Systems
This is a control systems course that explores linearization of nonlinear models and transfer functions, the Laplace transform to solve differential equations, conversions between state variable form and transfer function representation, block diagrams and manipulations, time response, transient analysis, feedback control systems, steady state tracking, stability, Routh-Hurwitz stability criterion, root locus, Bode and Nyquist plots and feedback control design. We used MATLAB extensively in labs, and I learned how to use LaTeX in detail as well.
ECE344 - Operating Systems
We learned about concurrency, synchronization, deadlock, CPU scheduling, memory management, and file systems. There were 5 time-consuming labs that were really interesting, which allowed implementation of these theories, such as multithreading libraries, and caching. These were done in the C language, reinforced my understanding of Git, and was the first time I was comfortably coding within terminal. This also familiarized me with the Linux operating system.
ECE345 - Algorithms and Data Structures
Arguably the most important course in ECE. We learned about a bunch of algorithms and data structures. We started with recurrences, asymptotics, and proofs. Then we learned about graphs and trees, sorting, search trees, amortized analysis, hash functions, dynamic programming, greedy algorithms, basic graph algorithms, minimum spanning trees, shortest path, and NP completeness.
JRE420 - People Management and Organizational Behaviour
This was one of my best courses to date, with topics such as leadership, people management and organizational behaviour. We learned about how to design organizations for change and different cultural environments, communication techniques, job designs, managing and motivating people, fostering creativity, and team work. We also discussed the theories of leadership, strategy and ethics. I felt I resonated strongly with this course and it inspires me to become a better leader. I want to pursue management after having a solid technical understanding and experience in the software industry.
APS420 - Technology, Engineering, and Global Development - In Progress
This course will touch on the role of technology and engineering in global development.
ECE361 - Computer Networks - In Progress
This course will touch on TCP/IP protocols, sockets, P2P protocols, TCP reliable stream service, flow control, framing, PPP, HDLC, Aloha, ethernet, WLANs, bridges, packet switching, datagram and virtual circuit switching, shortest path algorithms in networks, distance vectors, and link state diagrams. This course will have a lot of programming labs.
ECE368 - Probabilistic Reasoning - In Progress
This course will review random variables, and first and second order statistics. Then, it will touch on multivariate Gaussian, stationarity and hidden Markov models, factor graphs, hypothesis testing, marginalization, estimation, and message passing. This will have many programming labs to cover applications of machine learning, communications, search, recommendation systems, finance, robotics, and navigation.
ECE421 - Introduction to Machine Learning - In Progress
This course touches on supervised learning, linear models from classification and regression, neural networks, support vector machines, principal component analysis, k-means clustering, Gaussian mixture models, bounds on the generalization error, bias-variance tradeoffs, Vapnik-Chervonenkis dimension, and techniques to control overfitting like regularization and validation. This course is programming heavy and will use TensorFlow.