ECE 150
Fundamentals of Programming

Basics of programming in C++
Awesome course I learned a ton!

- Pointers
- Memory allocation and garbage cleaning
- Object orientated programming
- Polymorphism

Final Project

- Onion Omega microcontroller
- Created a pong game with ultra sonic sensors

ECE 190
Engineering Profession

Amazing course that teaches you what it means to be an engineer. 

- Eng Safety
- Eng Responsibilities 
- Project Management
- Business / Entrepreneurship
- Entering Engineering Society

CHE 102
Chemistry for Engineers

Basically an engineering requirement. Basics in electrochemistry, unit conversion, chemical reactions,  and phase theory. This is not an easy course! I did not enjoy the content that much but our professor was really engaging.

ECE 105
Classical Mechanics

Basically an engineering requirement designed to fail 1/3 of the class since Uwaterloo takes too many students to support in the first year. The course covers dynamics, circular motion, work, energy, momentum, harmonic motion, and rolling motion. I hated every minute of this course.

Math 115
Linear Algebra

Advanced topics that are derived from high school linear algebra courses. 
- Linear equations
- Matrices
- Vector Spaces
- Complex Numbers
It was a tough and enriching course. Concepts that I still use today when creating image recognition engines. Or working with ML algorithmns

Math 119
Calculus and Vectors

A very fast paced course that students outside of Ontario find easy ( I am an Ontario student). 

- Interpolation, Taylor Polynomials, Various methods like newtons method
- Advanced Integrals
This course was very challenging because of how quickly we covered topics. 

ECE 140
Linear Circuits

Introduction and advance topics of designing circuits. Professor Ramadan was  I really enjoyed this course. 

- Finding Voltage, Current, and Capacitance using Ohm's and Kirchhoff's laws
- Nodal analysis, Mesh Analysis
- Circuit Transformation
- Op-Amps
- Time response
- Sinusoidal steady-state

ECE 124
Digital Circuits

A real computer engineering course! We learned about computer hardware and how to program hardware for optimal solutions. We covered number systems, boolean algebra, and timing analysis. We used assembly language to program various computer arithmetical components such as an adder or a multiplexor.

ECE 106
Electromagnitism

Basically another engineering requirement filled with bogus content. Yes we learn a ton of interesting things but the pacing is poor, the professors don't teach well, and then they aggressively make our exams impossible to complete. I am sure I scored a 33% on my final (since I could only fill 1/3 of it ) but ended up with at 70%.  Any course designed to fail students is a bad one. 

ECE 108
Discrete Math

Surprisingly interesting course. We learn about proving mathematical statements and how to think outside the box. We covered Boolean logic, syntax and semantics, proof theory, model theory, set theory, and permissions/combinations. 

ECE 119
Calculus 2

A much more challenging ECE117. This was taught by an amazing professor (Brenda). Taylor series and polynomials, functional partial derivatives, linear approximation, and vectors were covered in this course.

ECE 240
Electronics Circuits 1

Advance topics of designing circuits. Op Amps, diodes, MOS, bipolar amplifier biasing, and transistors were covered. This was one of the hardest courses I have taken as our Professor Levine was adamant to fail his class by giving us exam questions that were unbearably difficult to complete in a short period of time.

ECE 250
Algorithms and Data Structures

An amazing course that covers the essentials of data structures and algorithms. Prof Ladan covered topics of time complexity, sorting, searching, and dynamic problem solving. 

- Hashing
- Search Tree's, Balanced BST's, B-Trees
- Heaps, Priority Queues
- Graphs
- NP- Completeness
- Dijkstra and Bellman Ford

ECE 222
Digital Computers

Professor Gebotys strikes again. One of the best courses taught at this school. This course focuses on memory units, I/O operations, Assembly language labs using VDHL, and arithmetic logic units. We programmed state machines such as a relay unit. 

ECE 290
Engineering Profession, Ethics, Law

An introduction to the engineering profession, standards of safety, code of conducts, legal practices, tort , intellectual property  (patents, copyrights, industrial designs), dispute resolution, , Labour Relations and Employment Law, Environmental Law. I enjoyed this course so much that I have considered to enter patent law after graduation.

ECE 204
Numerical Methods

This course focuses on various computational methods. Number systems, errors and error propagation. Roots of nonlinear equations. Interpolation and numerical integration. Prof Harder helps outside the class and is amazing. I personally did not enjoy the course because it had boring content.

ECE 205
Advanced Calculus

Analysis on ODE's, the harmonic oscillator, the Laplace transform , Fourier series, and PDE's. Fun course hard assignments.

ECE 207
Signals & Systems

Discrete, continuous and periodic signals, time- and frequency-domain analysis of continuous- and discrete-time linear systems, periodic signals and Fourier series, non-periodic signals and Fourier transforms. A very useless course for a computer engineer as most of the concepts covered are usually solved by a programmed computer.

ECE 252
Systems Programming & Concurrency

Using C, this course focuses on programming using processes and threads, utilizing system calls, following concurrency using a semaphore or mutex, user level memory management, deadlock detection, and managing file systems.  

ECE 224
Embedded Microprocessor Systems

Professor BillBishop is amazing. This course covers bus systems of computer hardware, memory systems, peripherals, (parallel, serial, analog) interfaces,  data transfers, synchronization with timing diagrams,  and error detection/correction.

ECE 298
Instrument & Prototyping Lab

Wow. Amazing. Fantastic. Not enough words to describe this course. We were privileged enough to be able to create our own embedded systems design project.  We created an X-Y Controller.
We covered everything from designing and planning a PCB board using Diptrace, getting our circuit board manufactured,  and soldering in various components such as diodes and transistors.  Then we used C to program our board to spin 2 different DC motors. 

ECE 208
Discrete Math & Logic

Continuation of ECE 108 from 1B. This course focused on Boolean logic, proof systems, soundness, completeness, deterministic and non-deterministic finite automata, regular expressions, and NP completeness. It was oddly satisfying to solve problems in this course.

ENGL 109
Intro To Academic Writing

Just a school requirement. This course consists of writing 4 essays throughout the term and doing some small assignments. I wrote a story about my journey to India.

ECE 380
Analog Control Systems

Discrete, continuous and periodic signals, time- and frequency-domain analysis of continuous- and discrete-time linear systems, periodic signals and Fourier series, non-periodic signals and Fourier transforms.

ECE 351
Compilers

Using C, this course focuses on programming using processes and threads, utilizing system calls, following concurrency using a semaphore or mutex, user level memory management, deadlock detection, and managing file systems.  

ECE 327
Digital Hardware Systems

Professor BillBishop is amazing. This course covers bus systems of computer hardware, memory systems, peripherals, (parallel, serial, analog) interfaces,  data transfers, synchronization with timing diagrams,  and error detection/correction.

ECON 140W
Intro to Macroeconomics (WLU)

I have always had a passion in learning about finance. I already a took microeconomics course in my free time so I wanted to learn about macroeconomics. This was a really good course. It covered topics like interest rates, health of an economy, and how banks work. This is a great elective to become more financially aware. 

ECE 306
Probability Theory &Statistics

Continuation of ECE 108 from 1B. This course focused on Boolean logic, proof systems, soundness, completeness, deterministic and non-deterministic finite automata, regular expressions, and NP completeness. It was oddly satisfying to solve 

SCI 238
Introductory Astronomy

When I was a kid I wanted to become an Astronaut. I loved the idea of space travel, discovering new life,  finding mysterious planets, and understanding our origins as humans. This course teaches engineers how to measure far away distances, how the universe came to existence, the various components of the solar system, how we are searching for exo-planets, and the possibility of traveling rapidly using wormholes.   

ECE 495
Autonomous Vehicles

This was a very easy course that taught very difficult concepts. It was poorly organized but the professor and the TA's were amazing. This course covers image recognition with edge detection and filters, logistic regression for optimal estimation, Neural Networks for modeling, image classes, Object detection, system modeling, probabilistic modeling, vehicle modeling, and trajectory modeling.

ECE 405
Quantum Mechanics

A very difficult course that covers Quantum measurements, Matrix Notation, Expectation Values, Uncertainty, Wave mechanics, and Time Dilation. The last unit was rushed but covered interesting applications of quantum mechanics in cryptography and computation. We also created a presentation on Ultra precise clocks and their uses for GPS systems.

ECE 350
Real-Time Operating Systems

This was one of the hardest course I have ever taken, primarily because the time required to do the labs is immense. We developed the components of a Kernel for an Altera processor.
We covered all topics of the OS : Threads, Memory Management, Uni and Multi-processor scheduling, Real-Time Systems, Address translation, caching, and File Systems.

ECE 390
Engineering Design, Economics, and Impact

This course teaches economical analysis, environmental impact,  and social impact of engineering projects. The course was relatively easy but taught me a ton about finance and project planning. We also did a final project that consisted of a video presentation and official report for the Sarnia Photovoltaic Power Plant. 

MSCI 331
Introduction to Optimization

This was very important course that taught the concept of optimization for non-linear problems. Final project was a tough one where we find a real world optimization problem and then present our solution.

GENE 403
Interdisciplinary Design Project 1

The Final Year design project. We designed WeldView, the AR solution for welding precision.

ECE 457A
Cooperative and Adaptive Algorithms

An incredibly interesting course that covers Game Theory, basics of algorithmic problem solving, and wraps up with neural networks.

MUSIC 140
Popular Music and Culture

Fantastic and entertaining. The Professor really knows his stuff. 4 quizzes on music from 1940's to 1980's. Incredible how the history shaped the developtment and influence of music. 

ENGL 108A
The Superhero

A very rewarding English course that covers the history of DC comics, their origins, and cultural influence. There were 10 quizzes, and 2 essay assignments.

GENE 404
Interdisciplinary Design Project 2

Continuing from the previous course, we finally presented our design and shared our findings with out mentor. 

CLAS 104
Classical Mythology

This was a facinating course that covered the various greek mythology stories starting with the world origins. Well organized and the instructor was passionate and cute.

ECE 452
Software Design and Architectures

A rewarding in depth course that covered the high level design of app developtment and services. Many quizes and one final group project where we made a meal planner android app.

ECE 499
Engineering Project

This was a research project I took up with my Adaptive Programing professor, Otman Basir. Using the Ant Colony Method and Genetic Algorithms, I aimed to develop the correct speed cars should travel to reduce fuel consumption and optimize the travel time for all participants of the traffic road system.