Course Review: Software Development Process
Georgia Tech Online Master of Science in Computer Science (OMSCS) is an innovative, award-winning graduate program offered by the College of Computing at Georgia Tech. (Wikipedia)
As I make my way through this program, I intend to write short, opinionated reviews of the courses I complete. My intended audience for this is the current or prospective OMSCS student who is considering taking these courses.
CS 6300: Software Development Process
CS 6300 is an introductory course on the software development process. It emphasizes skills and knowledge essential to anyone joining a modern software team and is probably one of the least challenging courses in the OMSCS program. If you have experience working in a software development team, expect to already know many of the things covered in this course.
Topics covered include the software development life cycle, version control systems, the fundamentals of system architecture and design, and software testing. Before taking this, make sure you are comfortable with Java and object-oriented programming.
This past semester, there were six assignments and two projects composed of several deliverables. All assignments and projects can be completed on any reasonably-modern machine, regardless of processor or operating system.
Each assignment was relatively short, meant to be completed in a week. Some could be as trivial as completing a survey or doing basic-to-intermediate operations in git and GitHub. The most time-intensive assignments involved designing and writing unit tests for a small Java app. Each assignment was weighted differently, ranging between 2 and 18 percent of the final grade.
The two projects were more intensive. One was completed as part of a group and the other was individual:
- The group project (28% of the final grade) was the most rewarding part of the course (and potentially the most troublesome). It involved designing and writing an Android application that allows a user to input and compare job offers. Just as important as the programming (done in Java or Kotlin) are ancillary tasks like project management, requirements engineering, software design, and testing.
- The individual project (25% of the final grade) involved systematically defining the necessary unit tests for a console app written in Java and then implementing those unit tests. The ideal number of tests were between 50 and 90. Surprisingly, I found this exercise interesting and novel but, using the wrong approach, I can see how it can quickly become tedious.
Lectures were all pre-recorded and are of better quality than any other course I’ve seen so far in the OMSCS program. Much credit here goes to the instructor, Dr. Alessandro Orso, who succeeds at communicating his passion for the topics at hand.
There is no course textbook but two readings cited near the end of the semester are well worth reading for any software development professional: The Cathedral and the Bazaar by Eric Raymonds and No Silver Bullet by Frederick Brooks.
There are no graded exams in this course. Simple end-of-module (mini-) quizzes are provided to help gauge student engagement and understanding.
Unlike all other courses I have taken so far in OMSCS, the professor is heavily involved in the day-to-day of CS 6300. He holds weekly office hours and is responsive (as much as can be expected) in the course discussion board.
In general, the course is managed impeccably by the professor and his TAs. TA Justin Durkin stands out as an absolute rockstar in the way he engages with students in the discussion board.
Project and assignment results were provided within an acceptable timeframe, and students are always apprised of any changes in schedule.
CS 6300 is the easiest course I have taken so far in the OMSCS program. Having had significant work experience as a software developer, this was something I expected. I was unsure of how the group project would go but I was fortunately teamed up with some great performers who wanted to succeed in the course just as much as I did.
On average, I spent less than ten hours per week on this course.
CS 6300 is well-run but does not really seem to be a graduate-level course. It is a great one to take for those with little-to-no work experience in a software development team. Taking CS 6300 in the summer allowed me to ease off and recharge in preparation for a heavy semester ahead in the fall.