Final: 20/11 - 3/12
As requested by Downing, I'll use this final entry to summarize my experience of the entire class. To break this down, I'll split everything into the good and the bad. I'll also add a final section with who this class is for, so if that's what you came here for, just skip to that. Let's take a look at this class then.
I'd be remiss not to say this class had some great components to it. First off, Downing's lecture methods, which at times can feel on the heavy side, are generally very effective. It's definitely made the students both attentive at class and kept attendance grades high, even late into the semester. The quizzes have also contributed well to this, making sure everyone's there on time and (partially) awake.
Making the class project-heavy was also, in my opinion, a great decision. It's my belief that the best way to learn how to program is to practice it as much as possible. There's only so far that you can learn with only lecture materials, and this class does a great job at mixing both aspects of learning.
With all this said, there were some issues with the class I cannot gloss over. The first were the topics discussed in class. While I've definitely learned quite a fair amount of Python as well as a little SQL, I felt like much of what I learned in the lecture I could have learned on my own time. As interesting as more advanced Python functionality was, I did not felt like I was learning "software engineering" as just another programming language.
One of the other "bad" things for me was the restrictive nature of the project. While I understand that this is so that someone else can use your API at the end of the project, I think it would be great to see more diversity in projects. If we could make something more complex or interesting, a social network for a specific community, a site to alert you of oncoming earthquakes, it would have made the project a lot more enjoyable and interesting. At the same time, the tooling was very restrictive. It would have been great if we had more freedom on the services we could have used to deploy our site, as well as the programming language. Instead, we were restricted on both ends.
So Should I Take This Class?
This is probably the most important question. Because besides all the good and the bad above, it doesn't really say if you should take the class or not. That's a very personal decision. Looking back, I did not get as much out of this class as I could have. That being said, it was heavily influenced by my previous experience. I'm a senior, meaning I'm a lot more opinionated on a lot of the topics discussed in class (independent of whether I'm right or not). I've also had hands-on experience with software engineering through internships. For these reasons, this class isn't really for me.
However, if you're a first year or second year CS student (or just a student who feels you haven't gotten enough software engineering experience outside of school), this is the class for you. It'll force you to learn how to make a modern website, work with other people, and get used to some of the tools of the trade, this is the place for you. Otherwise, look for a different class.