Teaching Assistant
Taught and mentored undergraduate CS students across multiple courses including Imperative Programming, Algorithms & Data Structures, and Concurrent Programming.
- ▸Mentored 100+ students across Imperative Programming, Algorithms & Data Structures, and Concurrent Programming
- ▸Designed and graded practical assignments and exams
- ▸Held weekly tutorial sessions and office hours, consistently receiving positive student feedback
- ▸Adapted teaching approaches for students with diverse backgrounds and learning styles
Context
During my Bachelor's degree at the University of Groningen, I served as a Teaching Assistant (TA) for the Computer Science department across multiple courses over a 15-month period. This role combined technical depth with communication and mentoring skills.
What I Did
Courses assisted:
-
Imperative Programming (C): Introductory course covering pointers, memory management, data structures in C. I ran lab sessions helping first-year students debug segfaults and understand pointer arithmetic.
-
Algorithms & Data Structures: Core CS course covering sorting, graph algorithms, dynamic programming, complexity analysis. I graded assignments, led tutorial sessions working through problem sets, and held office hours.
-
Concurrent Programming (Java): Advanced course on threads, synchronization, locks, concurrent data structures. I helped students reason about race conditions, deadlocks, and design thread-safe programs.
Key responsibilities:
- Led weekly tutorial sessions (15–25 students per session)
- Designed practical programming assignments with test suites
- Graded exams and assignments with detailed written feedback
- Held regular office hours for individual student support
- Contributed to course material updates
Impact
- Consistently received positive feedback in student evaluations
- Several students I mentored went on to TA roles themselves
- Contributed assignment improvements that were adopted in subsequent course iterations
What I Learned
Teaching is the best way to deepen your own understanding. Explaining concepts like pointer arithmetic, graph traversal, or thread synchronization to students with diverse backgrounds forced me to understand these topics at a fundamental level.
Key takeaways:
- Communication clarity: Technical communication is a skill that transfers directly to code reviews, documentation, and team discussions
- Patience and empathy: Understanding that confusion is a natural part of learning, and meeting students where they are
- Content design: Creating assignments that are challenging but fair, with clear specifications and meaningful feedback
- Time management: Balancing TA duties with my own coursework and research