My time in CS6310: Software Architecture and Design (SAD) absolutely flew by; it's hard to believe that I've already completed my second class in OMSCS. Summer semester at Georgia Tech truly is a speedrun, and the compressed schedule of the shortened semester created a different set of time management challenges from what I encountered this past spring. Fortunately, I was already very well-versed in the topic of software architecture from my professional experience, which helped alleviate some of the pressure from the rapid pace.
The class itself is roughly structured around the software development lifecycle you might see in a real-world project, starting with analyzing requirements and going through the full implementation of a system with a team of other students. Given the timeframe of the class in summer semester, this process moves a lot faster than you'd see at most companies. Initially the assignments are completed individually, but the later stages of the course involve group collaboration. There are also a handful of quizzes that contribute to a modest percentage of the overall grade.
Since I have plenty of professional experience in developing software, there weren't too many totally novel concepts for me to take away from this class. The deep dive into object-oriented analysis and UML (particularly sequence diagrams) did provide some new perspectives on design, even if those methods might be considered a little outdated by modern standards.
For me, the highlight of this class was working with my teammates, who were all very thoughtful and responsive when working on our project. Given how reviled classes with group work seem to be within the OMSCS community, I feel very fortunate to have worked with some stellar individuals. The office hours were also extremely helpful, and it was great to have a professor and TAs that are engaged with the students. This collaborative aspect made SAD feel more like an on-campus course than the previous one I took, Introduction to Information Security.
In my opinion, this class did have a couple of glaring weaknesses. First, the lecture videos seemed out of date relative to the current structure of the course. My understanding is that the videos were recorded years ago by a professor who no longer teaches the class. While there is still value in many of the videos, I think at least a partial refresher with some new or updated content would drastically improve the course.
I think the biggest issue is that the assignments did not scale well due to the subjective nature of software architecture. Turnaround time for assignment grades was woefully slow, but this is understandable since evaluating these assignments was probably more akin to grading papers compared to the automated assessments in other courses. Since there are hundreds of students in the class at a time, this is no small feat from the TAs. I'm not really sure what the solution would be here - reigning in the assignments would probably help automate grading but would remove one of the most important implicit lessons: how to deal with uncertainty in requirements and a seemingly limitless number of options to consider.
Overall, this course was engaging due to the group work, even though I didn't really have to learn many new concepts. I do wonder if I will regret taking this course down the road, and if I should have challenged myself more by pursuing a topic that I have less experience in. For now, I am just glad to have successfully completed my second foundational course and my first summer semester.
Last Updated On: Aug 21, 2022