Teaching Assistant & Course Developer — CS520: Theory and Implementation of Advanced Software Engineering

Graduate / Upper-level Undergraduate Course, University of Massachusetts Amherst, College of Information & Computer Sciences, 2025

I have been part of the CS520: Theory and Implementation of Advanced Software Engineering teaching team at UMass Amherst across multiple semesters — Spring 2023, Fall 2023, Spring 2025, and Fall 2025 — and served as Course Developer Assistant during Summer 2023.
The course covers advanced topics in software design, testing, and quality assurance, with hands-on assignments focused on automation and reproducibility.


Roles and Responsibilities

  • Head Teaching Assistant (2025):
    Led instruction for 140+ students, managed a team of teaching assistants, and oversaw all course logistics including GitHub Classroom, Gradescope automation, and student communication.
    Provided weekly technical guidance on JUnit testing, coverage analysis, mutation testing, and CI/CD pipelines.

  • Teaching Assistant (2023):
    Conducted lab and office hours, graded assignments, and mentored students on testing frameworks, software architecture, and debugging best practices.
    Supported continuous improvements to the testing framework and grading automation.

  • Course Developer Assistant (Summer 2023):
    Collaborated with the instructor to revamp the course structure, labs, and automated grading pipelines.
    Designed modular testing templates and scripts (statement_coverage.sh, decision_coverage.sh, mutation.sh) that remain part of the current course infrastructure.


Highlights

  • Improved grading turnaround time by 40% through automation of coverage and mutation testing workflows.
  • Designed and maintained reproducible assignments such as IE2-Triangle and Expense Tracker.
  • Coordinated multiple TA teams and ensured consistency in evaluation rubrics and lab materials.
  • Received strong student feedback for clear explanations, structured guidance, and prompt support.

Teaching Focus

  • Topics Covered: Unit testing, software design principles, mutation testing, CI/CD pipelines, and coverage analysis.
  • Technologies Used: Java, JUnit, Ant, GitHub Actions, Gradescope API, and shell automation.
  • Pedagogical Approach: Emphasized reproducibility, automated assessment, and real-world testing practices to help students develop professional-grade software reliability skills.