Teaching

-Joseph Joubert
I enjoy teaching and use every opportunity to share what I have learned. I believe in the saying, "To teach is to learn twice" (Joseph Joubert, Pensées, 1842). This belief is reinforced every semester as I end up learning many things, sometimes more than my students. I started teaching as early as my first year of college, serving as a TA for a math course I was taking. It was quite funny at the time, as I had to grade my friends' work while leaving my own grade to be assigned by the course instructor. Here is a list of courses for which I have TAed along my path.
- Lehigh University (LU)
- Ferdowsi University of Mashhad (FUM)
- Guest Speaker
- Programming with C++ and Python
- Programming with VB and JavaScript
- Python GUl packages
- Pygame in python
- Working with Git\Git Actions
- Setup and Usage of Mathematical Solvers
- Apache Spark SQL and DataFrames
- Creating a Database with Microsoft Access
- Feasibility Study with COMFAR III
- Simulation with Arena
- Primavera P6 Professional
Lehigh University (LU)
ISE 406 - Introduction to Mathematical Optimization

Year: 2023 Fall
Level: Graduate
Instructor: Aida Khajavirad
Department: Industrial & Systems Engineering
Reference: Introduction to linear optimization by Bertsimas, Dimitris
Introduces optimization problems whose constraints are expressed by linear inequalities. Develops geometric and algebraic insights into the structure of the problem, with an emphasis on formal proofs. Presents the theory behind the simplex method, the main algorithm used to solve linear optimization problems. Explores duality theory and theorems of the alternatives. The course will conclude by providing a basic overview of integer programming.
ISE 426 - Optimization Models and Applications

Year: 2022 Spring, 2022 Fall, 2023 Fall
Level: Graduate
Instructor: Luis F. Zuluaga
Department: Industrial & Systems Engineering
References:
1- Introduction to Operations Research by By Frederick Hillier and Gerald Lieberman
2- Introduction to mathematical programming. Operations Research Volume 1 by Winston, Wayne L
3- Operations research: applications and algorithms by Winston, Wayne L
Optimization problems arise very often in industry, and the ability to solve them is a competitive advantage. However, modeling an Optimization problem requires special tools and skills. A problem that is not understood or modeled correctly can lead to the wrong solution or can be very difficult to solve. The purpose of this course is to provide you with the tools and knowledge necessary to model practical Optimization problems and solve them efficiently. We will see how to properly formulate a problem, how to choose an adequate solver, and how to solve practical applications with state-of-the-art solvers. The course begins with an introduction to models, convexity and relaxation. Then, it focuses on Linear Programming and Integer Programming. In the final part, we’ll talk about Nonlinear Programming and Stochastic Programming. Most of the problems and models presented will also be specified in a modeling language, and we will solve them with state-of-the-art software.
ISE 172 - Algorithms in Systems Engineering

Year: 2020 Spring, 2023 Spring, 2024 Spring
Level: Undergraduate
Instructor: Martin Takáč, Charalambos Marangos
Department: Industrial & Systems Engineering
This course will introduce students to the principles involved in designing, analyzing, and implementing basic algorithms common in systems engineering applications. The course will be divided into a few units by topic area (see detailed syllabus below). Course meetings will consist of two 75-minute lectures and one 160-minute laboratory each week. The laboratory exercises will consist of case studies in which the students will have to apply the principles discussed during the week’s lectures to solve a given systems engineering problem. This will be accomplished mainly through implementing various algorithms and data structures in Python. Weekly homework based on the laboratory case studies may further reinforce student learning.
ISE 111 - Probability and statistics

Year: 2020 Fall
Level: Undergraduate
Instructor: Robert H. Storer
Department: Industrial & Systems Engineering
Reference: Applied Statistics and Probability for Engineers by Montgomery, Douglas C.; Runger, George C.
This course is an introductory course to the fields of Probability and Statistics designed for engineering students. The course focuses primarily on the study of Probability Theory. Probability Theory is of great use in all branches of Engineering in understanding and modeling phenomena that exhibit random behavior. Probability Theory also provides the theoretical and mathematical basis for Statistics and thus must be studied first. Statistics is probably more immediately useful for most engineers than probability. However, the theory that underlies statistics is probability, which makes its study necessary as well. The study of Probability Theory can be fun and interesting (actually, more so than Statistics), but also at times difficult, confusing and frustrating. In particular, the use of counting methods to compute probabilities, which comes early in the class, is arguably the most confusing and frustrating (but at the same time fun) part of the course.
Ferdowsi University of Mashhad (FUM)
Sequencing and scheduling

Level: Graduate
Instructor: Mohammad Ranjbar
Department: Industrial Engineering
Reference: Scheduling Theory, Algorithms, and Systems by Michael L. Pinedo
This advanced course on scheduling techniques provides an in-depth exploration of both deterministic and stochastic models, beginning with foundational concepts such as framework and notation, classes of schedules, and complexity hierarchies. Students will delve into single machine models, learning about metrics like the total weighted completion time, maximum lateness, and total tardiness, and progress to advanced models addressing total earliness and tardiness, and multiple objectives. The course also covers parallel machine models, flow shops, flexible flow shops, and job shops in both deterministic and stochastic contexts, emphasizing practical applications and advanced concepts like dispatching rules, local search algorithms, and constraint programming. Real-world case studies, including systems like SAP’s production planning and IBM’s independent agents architecture, illustrate the implementation and impact of these techniques. The course concludes with discussions on theoretical and applied research directions and the development of new scheduling systems, equipping students with the skills to tackle complex scheduling challenges in various industries.
Operation Research I

Level: Undergraduate
Instructor: Majid Salari
Department: Industrial Engineering
Reference: Linear Programming and Network Flows by Mokhtar S. Bazaraa, John J. Jarvis, Hanif D. Sherali
This course, based on the extensively revised fourth edition of "Linear Programming and Network Flows," provides a comprehensive exploration of modeling and solving complex problems using linear programming (LP) and network flows. It covers fundamental concepts such as linear algebra, convex analysis, and the geometric structure of polyhedral sets, as well as advanced topics like cycling in the simplex method, interior point methods, and sensitivity analysis. The course also introduces new topics such as cycling phenomena, duality relationships, and stabilized column generation. Emphasizing geometric viewpoints, economic interpretations, and practical implementation strategies, this course is ideal for upper-undergraduate and graduate students, as well as applied scientists seeking to enhance their understanding of LP and network flow techniques.
Operation Research II

Level: Undergraduate
Instructor: Majid Salari
Department: Industrial Engineering
Reference: Optimization Over Integers Hardcover by Dimitris Bertsimas (Author), Robert Weismantel
This course provides a comprehensive and modern treatment of the theory of integer optimization, structured around the book "Linear Programming and Network Flows, Fourth Edition." The curriculum is divided into four parts: Formulations and Relaxations, Algebra and Geometry of Integer Optimization, Algorithms for Integer Optimization, and Extensions of Integer Optimization. Students will learn how to formulate and solve integer optimization problems, delve into the algebraic and geometric foundations, and explore cutting-edge algorithms and applications. The course emphasizes strong formulations, duality, and robust optimization techniques, with practical insights into mixed-integer optimization and dealing with uncertainty. Through numerous examples and exercises, students will gain a deep understanding of the theoretical and practical aspects of integer optimization, preparing them for advanced research and real-world problem-solving.
Managing Information Systems Analysis and Design

Level: Undergraduate
Instructor: Babak Rezaee
Department: Industrial Engineering
Reference: Systems Analysis and Design, 5th Edition by Alan Dennis, Roberta M. Roth, Barbara Wixom
This course is designed to define the role of information systems in organizations, and in particular the roles of IS staff and end-users in developing and maintaining computer systems. The managerial aspects and implications of databases, telecommunications, hardware, software and e-commerce are included. Special attention is given to management information systems theories in the organizational setting including infrastructure, transaction processing, operational reporting, decision support systems and executive information systems. Also included are all phases of the systems development life cycle (SDLC) as well as alternative development methodologies. The course prototypically includes analysis of real-world business cases and post-implementation audit reports of a recently completed management information system.
Discrete-Event Simulation

Level: Undergraduate
Instructor: Mohammad Ranjbar
Department: Industrial Engineering
This course provides an in-depth exploration of discrete-event system simulation. Students will study statistical models, random-number and random-variate generation, and the analysis of simulation data, including input modeling, verification, validation, and output analysis. Practical applications in manufacturing, material handling, computer systems, and networks are emphasized, offering a balanced approach between theoretical concepts and real-world implementations. As part of the course project students need to simulate two or more models with Arena and C++.
Computer Applications for Industrial Engineers

Level: Undergraduate
Instructor: Babak Rezaee
Department: Industrial Engineering
Softwares: Excel, VBA, MATLAB, Minitab, R
This course introduces the practical application of computer software in various engineering domains, highlighting the importance of computational tools for solving engineering problems. Students will learn to handle tasks such as engineering economics, inventory control, project planning, and statistical analysis using different software packages. The curriculum is designed to provide hands-on training, equipping students with essential skills for modern engineering practices. By the end of the course, students will be proficient in applying software tools such as Excel, VBA, Matlab, Minitab, MSP, and Arena for project simulation and modeling, as well as performing statistical analysis and industrial unit evaluation. This combination of theoretical knowledge and practical application ensures that students are well-prepared to tackle complex engineering challenges using computational methods.
Calculus II

Level: Undergraduate
Instructor: Mohammad Ranjbar
Department: Industrial Engineering
References:
1- Modern Calculus and Analytic Geometry by Richard A. Silverman
2- Calculus: A Complete Course by Robert A. Adams
Advanced calculus and linear algebra is designed for college students in engineering, physics, computer science, and applied mathematics. It covers spatial coordinates, vectors in space, dot products, systems of linear equations, matrix operations, linear independence, bases, linear transformations, determinants, eigenvalues, eigenvectors, and vector cross products. The course also includes an exploration of quadratic surfaces, vector functions, velocity, acceleration, curvature, and normal vectors to curves. Students will learn about multivariable functions, directional and partial derivatives, tangent planes, gradients, and the chain rule. Optimization topics include critical points, their classification, and methods for finding maxima and minima, both with and without constraints.
Guest Speaker
Programming with C++ and Python

Level: Graduate and Undergraduate
Location: FUM and LU
References:
1- C++ How to Program 10th Edition by Paul Deitel, Harvey Deitel
In this series of lectures on C++ and Python, we discussed managing project dependencies, automated testing with CMake, and implementing and analyzing algorithms such as graph search, stacks and queues, sorting, and binary search trees. Additionally, we covered mastering pointers and garbage collection. The lectures also addressed classes and inheritance, emphasizing object-oriented programming concepts, and introduced parallel programming techniques to optimize performance.
Programming with VB and JavaScript

Level: Undergraduate
Location: FUM and LU
Generally, spreadsheets are considered a simple kind of database. VB and JavaScript are hugely helpful in automating many processes within them. I often discuss the application of these programming languages for various purposes such as the automation of repetitive tasks, the creation of custom functions, enhanced user interaction, data manipulation and analysis, integration with other applications, the creation of complex macros, custom reporting, dynamic dashboards, workbook and worksheet management, and interaction with external data sources.
Python GUl packages

Level: Graduate and Undergraduate
Location: FUM and LU
I usually cover the essentials of GUI programming with Tkinter and PySimpleGUI. Starting with Tkinter, I demonstrated how to create windows and use basic widgets like labels, buttons, and text entries, along with event handling and layout management techniques, through projects such as a calculator and a text editor. Then, I introduced PySimpleGUI, highlighting its simplicity and ease of use compared to Tkinter, focusing on its basic elements, event loops, and layout definitions. I guided students through hands-on projects to solidify their understanding. Finally, I compared the two libraries, discussing their ease of use, flexibility, performance, and community support, ensuring students could choose the right tool for their future projects.
Pygame in python

Level: Undergraduate
Location: LU
Pygame is widely used for educational purposes, prototyping, and even full-fledged game development due to its simplicity and powerful features. I usually go over the basics of how graphics engines work, introducing the fundamental concepts such as initializing a graphics engine, managing the main loop, and handling user inputs. Through surfaces and blitting, I try to teach how rendering engines draw images, while sprite management and frame rate control teach animation and movement handling.
Working with Git\Git Actions


Level: Graduate and Undergraduate
Location: LU
GitHub Actions is a powerful tool for continuous integration and continuous delivery (CI/CD), which automates workflows directly within your GitHub repository. I usually teach how to define workflows using YAML files to build, test, and deploy our code every time a specific event occurs, such as a push or pull request. This automation ensures that our codebase is always in a deployable state, improving code quality and speeding up the release cycle. I also talk about automating repetitive tasks, like code linting or dependency updates, and integrating with various services, including cloud providers and package managers. One of the significant advantages of GitHub Actions is its ability to run multiple jobs concurrently, which helps us complete workflows faster. It’s highly scalable, meaning it can handle everything from small projects to large enterprise applications.
In addition, I use GitHub Classroom to manage student submissions. It allows for seamless integration with GitHub repositories, facilitating version control and collaborative features. This way, I can automate the distribution of assignments, track progress, and review submissions efficiently. Moreover, GitHub Classroom supports continuous integration and other DevOps practices, improving the learning experience by incorporating many tools and workflows. This platform also offers detailed analytics and feedback mechanisms, enabling personalized student support and effective assessment.
Setup and Usage of Mathematical Solvers


Level: Graduate and Undergraduate
Location: FUM and LU
As an industrial engineer, I have developed a strong proficiency in creating mathematical models for various problems and identifying the best solvers for these models based on their specific properties. Throughout my career, I have gained extensive experience with several General Purpose Solvers, including CPLEX, Gurobi, AMPL, MOSEK, GAMS, MOSEK, and JuMP. During my time as a Master's and Ph.D. student, I also had the opportunity to teach these solvers to many graduate students, further enhancing my knowledge.
Apache Spark SQL and DataFrames


Level: Graduate and Undergraduate
Location: LU
Reference: Spark: The Definitive Guide by Bill Chambers, Matei Zaharia
Apache Spark is a fast and general-purpose cluster computing system. It provides high-level APIs in Java, Scala, Python and R, and an optimized engine that supports general execution graphs. It also supports a rich set of higher-level tools including Spark SQL for SQL and structured data processing, MLlib for machine learning, GraphX for graph processing, and Spark Streaming. Spark SQL is a Spark module for structured data processing. Unlike the basic Spark RDD API, the interfaces provided by Spark SQL provide Spark with more information about the structure of both the data and the computation being performed. Internally, Spark SQL uses this extra information to perform extra optimizations. There are several ways to interact with Spark SQL including SQL and the Dataset API. When computing a result the same execution engine is used, independent of which API/language you are using to express the computation. This unification means that developers can easily switch back and forth between different APIs based on which provides the most natural way to express a given transformation.
Creating a Database with Microsoft Access


Level: Undergraduate
Location: FUM
Reference: Access® 2019 Bible by Michael Alexander, Dick Kusleika
Microsoft Access is a database management system (DBMS) from Microsoft that combines the relational Access Database Engine (ACE) with a graphical user interface and software-development tools. It is a member of the Microsoft 365 suite of applications, included in the Professional and higher editions or sold separately.
Feasibility Study with COMFAR III

Level: Undergraduate
Location: FUM
A feasibility study is a core course in industrial engineering, and there are many software tools available for the complex calculations involved in this course. One such tool is COMFAR III, developed by UNIDO (United Nations Industrial Development Organization). It is a comprehensive software tool for the financial and economic appraisal of investment projects. In my lectures, I discuss the fundamental principles of feasibility studies and how to apply them using COMFAR. I emphasize the importance of feasibility studies in project planning and decision-making, covering key components and methodologies. My aim is to help students gain proficiency in using COMFAR for financial and economic analysis and to develop the ability to interpret and present feasibility study results. Key topics in my lectures include an introduction to feasibility studies, covering their definition, importance, and various types. I also cover the fundamentals of COMFAR, providing an overview of the software, including installation and setup, user interface, and navigation. Financial analysis topics include inputting financial data, cash flow analysis, and financial ratios and performance indicators. Economic analysis covers economic impact assessment, cost-benefit analysis, and sensitivity and risk analysis.
Simulation with Arena


Level: Undergraduate
Location: FUM
Reference: Simulation with Arena, 7th Edition by W. David Kelton, Nathan Ivey and Nancy Zupick
Arena Simulation Software, developed by Rockwell Automation, is a comprehensive tool for modeling, analyzing, and optimizing business processes and systems. With its user-friendly, drag-and-drop interface, users can visually map out processes and workflows, leveraging pre-built templates for various industries like manufacturing, healthcare, and logistics. In my lectures, I typically follow the structure outlined in the book Simulation with Arena by David Kelton. I cover all the modules and the properties of each one. Afterward, I initiate a simple project, guiding students through the logic and structure of the simulations. Arena offers great statistical analysis tools to interpret simulation results, including output reports and charts. It also integrates with optimization tools to find the best system configurations. I ensure to dedicate a significant amount of time to teaching students how to define tailored data collectors within the model using simple and complex modules. Additionally, I instruct them on using general variables defined by the software to extract useful information from the model.
Visualization is another crucial aspect of Arena that I emphasize in every lecture. Through simple monitors and visual tools, students can easily identify main problems and bottlenecks within their simulations. Visualization aids in understanding the dynamic behavior of the system, allowing for quicker identification and resolution of issues. It enhances the learning experience by making abstract concepts more tangible and easier to grasp.
Primavera P6 Professional


Level: Undergraduate and Graduate
Location: FUM
References:
2- Primavera P6 Professional User Guide
Primavera P6 is a robust, high-performance project management software widely used in industries such as construction, engineering, aerospace, defense, utilities, and oil and gas. It offers comprehensive project planning and scheduling capabilities, resource management, cost control, risk management, and advanced reporting and analytics. Primavera P6 facilitates seamless collaboration among project teams, supports integration with other enterprise systems, and provides real-time visibility into project status and performance. By optimizing resource allocation, mitigating risks, and controlling costs, it enhances decision-making and ensures projects are completed on time and within budget. Engineers use it to manage project schedules, resources, and costs for timely and budget-compliant completion. Overall, Primavera P6 is an essential tool for project managers aiming for efficiency and effectiveness in managing complex projects.
I usually start with a comprehensive introduction to project management, covering essential aspects such as installation, navigation, and project creation. It begins with defining the project structure through Work Breakdown Structures (WBS), adding activities, setting relationships and durations, and applying calendars and constraints. The course delves into resource and cost management, including defining resources, assigning them to activities, resource leveling, and monitoring costs. I will continue with project monitoring and control by creating baselines, updating progress, generating reports, and customizing dashboards. In my advanced lectures, I also talk about Earned Value Management (EVM), risk management, and managing multiple projects. Practical applications through real-world case studies and a final project simulation provide hands-on experience.