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 &ltsomething&gt is exactly what happens when you &ltdo something&gt?

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.