Week 14

Software Engineering (CS 373) Spring 2017

What did you do this past week?

There is just one week of class left. Last week, I worked on the presentation for the IDB project. I've also been reviewing the refactoring book in preparation for the exam next week. Three of my classes have finished completely for the semester. I just have a presentation, one exam, and one final left before I am off to my summer internship. I am very excited for this summer.

What's in your way?

There is a lot of material that has been covered in this class since the last exam. This exam will not be like the first exam where the focus was on Python. While I remember most of the content covered in class, I do not remember the specifics from the refactoring book. Refactoring is not a topic that is easily learned by reading a book. It requires visual or hands-on learning. I'm certainly glad that we covered some of the book in class though. Refactoring is extremely important when writing production code or any code that will need to be revised in the future. On one hand, other people must be able to easily take over your code but more importantly, even the programmer of the original code will have a hard time remembering the reasoning behind certain parts of the code if the code is not properly designed, refactored, and documented.

What will you do next week?

My team will be presenting our website to the class on Monday. After that, I still have a final Algorithms assignment and I will be focusing on preparing for the Software Engineering final on Thursday.

What’s my experience of the class?

Well, since this is the end of the semester, here is a comprehensive review. Overall, this is a fantanstic class and it is a must-take, not because of the content specifically, but because of the teaching style of Professor Downing. In every topic, he ensures that everyone in the class understands exactly what is going on.

Is everyone crystal clear that <something> is exactly what happens when you <do something>?
My one complaint at the start of the semester was the daily quizzes. You need to be prepared to take an online timed quiz exactly when class starts. For me, since this is my first class of the day, this meant that I could not be more than a single minute late or I might not have enough time to take the quiz. I had bike issues on the first day of class (mentioned in the first blog post) and I missed the quiz. Considering that quiz grades account for 15% of your final grade, I was initially worried. However, Professor Downing drops a number of these quizzes and offers more than enough extra credit to make up for such missed quizzes. Making an A in this class is very doable as long as you are willing to put in the effort.

As for the content of this course, the first half of the course focuses on testing and Python concepts. In the second half, we talk about relational algebra, refactoring, and some general software engineering tools. Through all of this, you learn better coding practices. Outside of class, there are 5 projects. The first two are relatively easy and serve as an introduction to the course. For the last three projects, you work with a team of six people on a dynamic website. I really enjoyed working on the projects but I warn future students to pick teams carefully. I wish there was more accountability in terms of individual work since, from my conversations with others in the class and from my experience in my group, not everyone contributes equally. Of course, those are just struggles of working in a group this big. Apart from this, these projects are great. Yiou get exposed to many tools that are still in use today.

What's my pick-of-the-week or tip-of-the-week?

RancherOS is a 'tiny Linux distro that runs the entire OS as Docker containers'. It is supposed to be a smaller than most operating systems and it is an easy way to run Docker in production. See the docs here.