Teaching

  • Fall 2016-2017, Software Architecture and Product Lines
  • Spring 2016-2017, Software Requirements and Architecture
  • Spring 2015-2016, Software Architecture and Product Lines
  • Fall 2014-2015, Software Modeling
  • Fall 2014-2015, Software Requirements and Architecture

  • Prior Joining RIT

  • Software Engineering Principles
  • Compiler Construction
  • Advanced Topic in Software Engineering
  • Introduction to Object Oriented Programming in C++

  • Educational Research

    • Mehran Mozafari Kermani, Mehdi Mirakhorli, “Multidisciplinary Approaches and Challenges in Integrating Emerging Medical Devices Security Research and Education”, ASEE Conferences: American Society for Engineering Education (ASEE), 2016.
    • Scott Hawker, Robert Kuehl, Mehdi Mirakhorli, Merged Software Requirements and Architecture Course, ASEE Conferences: American Society for Engineering Education (ASEE), 2016.
    • Jane Cleland Huang, Muhammad Ali Babar, Mehdi Mirakhorli, “An Inverted Classroom Experience: Engaging Students in Architectural Thinking for Agile Projects”, Software Engineering Education and Training (SEET) Track, 36th International Conference on Software Engineering (ICSE), 2014.

    Architecture Prototyping Activites

    In SWEN-755 course I have developed the concept of architecture-prototyping to teach common industrial practices as they relate to software design. In this activity, each week the students learn a tactic or design concept, followed by an architecture-prototyping activity in which students,
    1. design a system using that tactic
    2. implement the tactic and system with minimal functions. In this step many of the business components are mocked, they are structured and named based on the domain but many of them do not implement the business functions unless necessary for the tactic. However, the tactic functionality is fully implemented.
    3. Students are encouraged to use any existing coding framework to implement the design concepts. Each architecture-prototyping activity is followed by a retrospective (post-mortems) meeting in which students discuss what went right and wrong on that activity, and what they learned from tactic which they did not know that before. We collectively document and share the lessons learned from the activity.
    Click here to see the github page of this activity.

    Role-Playing in an Improv-Technical Shows

    Architecture is more than design and coding. Students also need to practice rationalizing different architectural choices, communication with other stakeholders, and managing conflicts between stakeholders. I have designed an improv-technical show which simulates a Joint Application Design session, and helps the students gain and practice the skills required by an architect. In this activity we work on the case study of Healthcare.gov system. Each student play the role of a stakeholder. I have developed a persona for each of the stakeholder describing their win and loss scenarios for the system. Through the joint application design we collectively identify requirements for the system, prioritize them, design a baseline architecture, negotiate conflicts and reason abot the cost of the sytem.