Due to various reasons, I am a TA for CS503 Operating Systems in 15fall. I’ve learned a lot in this procedure, but it is VERY VERY time-consuming!

Although this is my first time being a TA, either in undergrad or graduate school, I feel I’ve done a not-bad job. Hopefully I am not the only one to think so. :D

Things I am proud of

  1. After weeks of PSO sessions, now I can finally confirm that my English is more than sufficient for class scenarios. :D And I did give some useful guidance to students’ questions!

  2. I redesigned the handout web page for each lab I prepared. Now it’s “adaptive” to some extent.

    Because I just cannot stand texts in a web page stretching to its full width all the time!! (See my shaking head there in front of a big screen?) And this was easy, just a few lines of CSS.

  3. I prepared Lab2-Lab5, delivering a handout, a code base, as well as a master solution for each!

    When I was taking the course, I’ve done similar labs then. So I am not doing all labs from scratch. Otherwise I doubt if I’d have time making a solution tar ball for each lab.

  4. I replied almost all piazza questions with respect to labs.

    // I feel piazza is sometimes like the supreme court, where students raise questions just for clarification, whether something is allowed / will be punished..

  5. I automate the grading process, using my written scripts and test cases. Here I want to thank Wei-Chiu Chuang, Bo Sang, Shouyu Luo, and other previous semesters’ TAs for their helps. Wei-chiu is my TA when I was taking the course. He shared his scripts with me, upon which I build my own scripts. Part of the test cases I’ve integrated are from previous semesters, I’ve also designed a bunch new cases myself.

Some side notes for such scripts:

  • I’ve seen quite a few versions of scripts. Perl version, Python version, shell version, etc. The core of all these is to use “Expect” to interact with XINU back-end in command line. (Run man expect to know more)

  • I’ve modified the shell version of expect setting file, to make it automatically stop after no output for 10 seconds (configurable). The old version I saw just stops after, say, 1 minute.

  • All the rest are fully up to the programmer. My scripts are in shell, and can uncompress / grab submitted PDFs / inject test cases / build and run automatically / restore all files automatically.

  • The scripts and solutions should be available somewhere under /u/u3/cs503/ (i.e. /homes/cs503/)

Some lessons

  1. There are valuable resources in the cs503 directory on department servers!

    There was a script to set ACL permissions for each student to only access their own grades/feedbacks. But I didn’t see it until 2nd lab or so.. Hence, we just generate texts for each student, and post it on blackboard’s grade feedback.

  2. I also learned to set up the “turnin” system for code submission. And use crontab to turn off submission after deadline. We asked student to send late submission to us via email.

    But next time, probably I could set something like lab1, lab1late1, lab1late2, lab1late3, in which lab1late3 means submitting using 3 late days. (thus no need to collect by email, or check ls -tl to see submission time)

  3. Always put everything student must know into a single handout file!

    In Lab2-B, I put some part in TA-notes, assuming students will read that web page as well. It turns out some student complained and requested for full credit stating that they didn’t see this requirement in the main handout. We gave in..

  4. Make a Piazza post, and sometimes send email notification to students, if necessary.

    Students will complain if they lost points because they didn’t see some clarifications in piazza follow-ups..

  5. State API requirements EXPLICITLY! In Lab3, we didn’t unite the declaration for one variable. Eventually in grading, we have to manually look into student’s submission to see how they defined this. It costs much much more time!

  6. Automate if you can. Provide some sample/simple test cases.

    I sometimes feel sorry for student if they failed to pass any test case.. Providing a sample test case should be helpful. Also, maybe the points distribution could be revised to be more fine-grained.


If no further changes, I’ll be a TA for CS240 C Programming CS505 Distributed Systems in 16spring.

Honestly, it took me a lot of time to prepare labs, set up the environment, grading, etc. I absolutely wish to have more time on my own research if possible T_T.

For such a course notorious for its high workload, I have expected it to be very time–consuming in all lab preparations / gradings. But it’s still even more so than I expected..

At the end, thanks to Dr. Payer and Shuvra for all the work in this semester! I am glad to work with them!

This concludes this semester. I truly wish I could have more time on my own research in next semester, provided that I’ve confirmed the right direction to pursue. T_T