CS100: Software Construction
FROM
September
2017
TO
December
2017
University of California, Riverside, California, United States

The CS 100 is a course created to teach students one simple principle, “develop twice, code once”. The purpose of this course is to teach students to plan out their development before they begin to code. Additionally, this course will teach common UNIX based tools, design patterns to help them structure their code in an efficient manner, documentation, coding standards, and current industry terms and methodologies. In this course, I was supervising more than 100 students to make sure they use design patterns including composite, strategy, decorator, abstract factory, command, iterator, and visitor patterns efficiently and correctly during their lab sections. During the lab sections, I taught students how to use simple UNIX commands; in addition, I taught students to use GitHub to keep track of the different version of their code and collaborate with each other on the same source code.

C++  Design Patterns  Software Engineering 

CS10: Intro to Computer Science
FROM
March
2017
TO
June
2017
University of California, Riverside, California, United States

In the CS10, students develop a software of a few hundred lines of code to solve real problems. In this course, I was supervising more than 120 students in three lab sections. In the CS 10, students learn to program for the first time, therefore teaching this course can be so challenging and need a lot of patience especially when you deal with a large number of students over simple problems over and over again. Teaching this course helped me to develop a skill to teach any programming language to almost anyone with no basic knowledge of programming.

C++  Software Engineering 

CS12: Intro to Computer Science II
FROM
January
2017
TO
March
2017
University of California, Riverside, California, United States

CS12 covers structured and object-oriented programming in C++. Emphasizes good programming principles and development of substantial programs. Topics include recursion, pointers, linked lists, abstract data types, and libraries. Also covers software engineering principles. I was supervising more than 140 students in this course during three lab sections. In this course, my obligation was to teach students basics of programming like how to debug their code and how to write a clean code. Teaching this course helped me to gain a good knowledge of common bugs that can happen during programming, and I can help people to fix them in future.

C++  Software Engineering 

CS203: Advanced Computer Architecture
FROM
September
2016
TO
December
2016
University of California, Riverside, California, United States

This graduate level course cover topics in microarchitecture such as pipelining, branch prediction, instruction-level parallelism, dynamic scheduling, speculation, memory hierarchies, and parallel architectures. I was supervising more than 60 students in this project-based course.

C++  Computer Architecture 

CS180: Introduction to Software Engineering 
FROM
September
2016
TO
December
2016
University of California, Riverside, California, United States

The CS180 course covers the software engineering principles and techniques for the development, maintenance, and evolution of large software systems. Topics of this course include requirements and specifications, system design and implementation, code analysis and testing, code management, project management; software process, tools, and developing environments. During this course, I was supervising more than 50 students grouped into 10 teams. Each team had a project including a website, a mobile application, and a mobile game. This course challenged my management skills and the output applications showed that I was successful in my duty.

Software Engineering 

CS6: Effective Use of the World Wide Web
FROM
June
2016
TO
September
2016
University of California, Riverside, California, United States

CS 6 is a detailed, non-technical introduction to the Internet, covering Web tools, e-communities, e-commerce, power searching, and verification of information, privacy, and other legal and societal issues. During this course, my obligation was to teach students basics of HTML and CSS to design basic static websites.

CSS HTML  Web Design 

CE203: Digital System Design
FROM
September
2013
TO
January
2014
Sharif University of Technology, Tehran, Iran

In the digital logic design course, students had to use CAD tools like Altera Quartus and Modelsim to design digital systems with employing programmable components like CPLD and FPGA. The course was organized into 10 labs and my obligation was to grade projects.

Digital System Design  Verilog