This December I graduated from Clemson University with my Masters degree in Computer Science. There were a lot of things I learned (obviously), but I think the most useful things I learned were not from the course material, but my outside learning and interactions with peers and professors.
All my courses this semester were project based; while some of the grade for the course came from quizzes or homeworks, over 50% came from a semester long project. My experience with these projects greatly differed based on the professor’s involvement and whether it was a group project.
One of my main gripes for several of my project assignments was the complete lack of the professor defining what the project should look like. While there was some guidance on the general category of project that was required, there was little to no guidance of what specific topics were in scope. We submitted a project proposal, which would have helped with validating the acceptability of the project, however the professors rarely commented on the validity of the proposal, let alone return a grade for the proposal in a reasonable amount of time (read: before the end of the semester).
This is a perfect example of why requirements gathering and client interaction is such an important part of the development lifecycle. Knowing the plan for the project before spending development time ensures it is not wasted on something that is not the desired result. Having strict requirements allows the developer to precisely match the functionality to the desired outcomes.
Another important aspect which was mostly glossed over was deliverables. While each professor did say a deliverable of the project would be a final paper, specifics on the format, length, and content of the paper were lacking or never given. In addition, other deliverables were requested after the initial assignment was created, often at the very end of the semester. While this is not that uncommon in “real life,” often added requirements/deliverables will push back the projects due date; not so with school projects which must be done by the end of the semester.
Group work in school is almost always a complete mess. Over the course of my Masters degree, I’ve been in some okay groups and a lot of bad groups. I’ve been in groups where someone went completely AWOL for several months and only responded to messages when it was time for them to add their name to the deliverables. I’ve also been in some groups that were fantastic where the team members understood that occasionally someone might have other stuff they needed to prioritize but everyone would at the end of the semester all contributed equally. The best groups recognized the different skills of each member and assigned tasks to the person that was most capable of completing it.
Group work in school is very different from working in teams in industry. In school your group grade is at best 10% based on your individual contribution. This leads some people to not contribute to the team and just accept a 90% at their max grade. In work, if you do not do the tasks assigned to you, no one is going to do your tasks and it is very apparent who’s responsibility they are. Getting paid do do the work rather than paying to do the work also drastically changes the motivation and desire to complete the work.
Most of the course I took in my Masters program covered information I had learned previously either on my own or on the job. This meant that a large portion of the course material was redundant to me. However, these courses gave me the opportunity to deepen my knowledge of the covered material and utilize the professors as a resource to discover new corollary topics to learn on my own. This gave me the opportunity to learn at my own pace and follow the rabbit trails that I find interesting.
I have also had courses that I had to teach myself; professors that don’t teach or teach wrong material. One professor in particular I had to stop going to class as listening to her lectures decreased/confused my pre-existing knowledge on the topic.
Lab Teaching Assistantship
I had a lot of fun being a Teaching Assistant (TA) for a undergrad lab section this past semester. I got to befriend some really cool students and get a taste of what it takes to teach. As I would like to teach at some point in the future, this was a fantastic opportunity to understand some of the requirements of teaching, experience the “joy” of grading, and dealing with students' questions and concerns.