Principal Software Developer at Microsoft India.
I teach a course on the Principles of Software Engineering.
In the initial half of the course, we discuss the theory for object oriented design, unified modelling language, design patterns, software development lifecycles, and project management and scheduling. In the latter half, students apply the learnings to plan, design, collaborate, develop, and validate a reasonably big distributed software.
The latter half of the course consists of a group project. The class is presented with a large distributed software system to develop. The software that is developed is different every time the course is offered. Students are given roles: Project Manager, Technical Architect, Team Leader, and Team Member. There are five or six development teams. The class then manages the development of this system, using a standard development process model. The instructor acts as the customer, but does not participate in managing the project except, perhaps, for occasional advice. The project has a development process schedule, with formal reviews, and a final qualification test at the end of the semester.
- Aug 2021 - Dec 2021: Student group project , demo
- Aug 2020 - Dec 2020: Student group project, demo
- Jul 2018 - Dec 2018: Student group project