Teaching & Former CNAV Lab Leadership
Since my third semester at Sharif University of Technology, I have been actively involved in teaching and mentoring students. I began as a Teaching Assistant (TA) for the Fundamentals of Programming (C/C++) course, where I assisted students in understanding programming fundamentals. Over the years, I served as a TA for several courses including Automatic Control, Control Lab, Dynamics, and Aircraft Design.
With CNAV Lab students after completing our hands-on robotics control workshop.
At Sharif University, my role as a TA allowed me to work closely with students, guiding them through course material, conducting lab sessions, and providing feedback on assignments and projects. I helped students tackle complex concepts in control theory and dynamic systems while emphasizing the importance of applying theoretical knowledge to real-world scenarios.
Off-duty laughs with Prof. Alireza Sharifi and fellow researcher because even robotics geeks need a break!
In addition to my academic responsibilities, I was deeply involved with CNAV Lab at Sharif University, a center for robotics and autonomous systems research. I joined CNAV Lab as a Researcher and progressed to Lab Leader. During my time there, I worked on numerous research projects involving embedded systems and machine learning for robotic control, including Arduino-based controllers and embedded hardware solutions for various experimental setups. This hands-on experience refined my skills in hardware programming, low-level coding, and system integration.
At CNAV Lab, I also worked on coding for different plant models using Arduino, C/C++, and Embedded C. I was responsible for designing and implementing control systems for various robotic platforms, ensuring real-time operation. These projects gave me a deep understanding of hardware-software co-optimization for resource-constrained embedded systems.
Playing Chrome Dinosaur Game with Image Processing and Servo Control
Below is a snapshot of the hardware platforms used in the lab.
- 3-DoF Quadrotor Attitude Stand – tune LQR / Differential-Game and RL controllers to keep the platform level under step-torque disturbances.
- Suspended Ball (Ball-Beam) Plant – image-based feedback plus PID / RL comparisons for set-point tracking and disturbance rejection.
Ball-Beam Plant with Image Processing Control
- Cubli Reaction-Wheel Cube – reaction-wheel cube that jumps up and balances on one corner; students designed PID/LQR stabilisers and deployed PPO swing-up policies on STM32.
Working with these plants gave students the full-stack perspective – from high-level control design to low-level Arduino / STM32 C/C++ firmware, ROS 2 networking, and real-time data acquisition.
Additionally, I serve as a Section Leader for Stanford University’s Code in Place program, where I mentor international learners in Python programming, guide students through coding challenges, and conduct office hours.
Stanford Code In Place.
My teaching philosophy centers on combining theoretical knowledge with hands-on application, creating an environment where students feel comfortable exploring new ideas and developing their skills through real-world problem-solving.