COMS 327: Advanced Programming Techniques

Taught as a TA at Iowa State University (Fall 2016, Spring 2017, Fall 2019)

This is one of the largest computer science classes taught at Iowa State. The course was extensive in teaching advanced programming through unmanaged languages, which allowed students to learn memory management, concurrent and network programming, etc. I taught the course for three semesters and invested most of the time with students in problem-solving, live coding, debugging, and testing.

I conducted long programming sessions (~4 hours), helped the instructor in designing tests, and grade programming assignments. Being heavy on the practical side, I taught many of the abstract programming paradigms in live coding sessions with examples. I taught students to explain the coding steps of brainstorming, writing the simpler solution and then optimizing, while they solve a problem.


  • Differences between managed (Java) and unmanaged languages (C/C++)
  • Design and build large programs from specification
  • Memory management in C and C++
  • Templates and standard library
  • Concurrent and network programming

My responsibilities

  • Assist students with large programming projects and assignments
  • Long programming sessions (~4 hours)
  • Debugging and pair programming
  • Prepare and grade tests
  • Teach usage of the tools and technologies

Technologies used

  • GDB
  • Valgrind
  • Ncurses
  • Build systems e.g., Make