CS371p Fall 2020: Nathan Jackson. The following is an article I wrote for…
By: Nathaniel L Jackson
Tags: Programming, Object Oriented, Cpp, Developer

The following is an article I wrote for my Object Oriented Programming class at UT Austin:

What did you do this past week?

This past week I started to dive into the next project, Life. It’s a simulation of Conway’s and Fredkin’s Game of Life with an emphasis on inheritance principles in C++. So far I’ve set up my repo and gotten my pipeline to work for a basic implementation of the ConwayCell class and have started to make unit tests as I develop. I definitely want to pursue a test-driven development approach this week.

What’s in your way?

The main trouble is understanding the relationship between the Conway and Fredkin Cell classes with the AbstractClass parent and the Cell class wrapper. We are going over the latter in class tomorrow which will be quite helpful.

What will you do next week?

The plan is to write a basic implementation of FredkinCell and then write unit tests for the two Cell classes. Once that passes, I’ll change the code a bit to implement the AbstractCell parent class and ensure that the functionality is still intact. After that, I’ll write the Life class and run unit tests to test whether my implementation fits with the goals of the project. I think that’s a good outline for next week’s work.

If you read it, what did you think of The New Methodology?

The New Methodology (2005) was a thrilling read. As a young software developer, understanding that the work I do is inherently challenging and demanding of creative and talented people who can adjust to changes quickly and effectively has been a valuable new insight. In the past, I’d be frustrated when specifications for a project I would work on would change. After reading the article, I’ve realized that software will often change! One of my favorite quotes was hearing that “last minute changes to software indicate a competitive advantage” being found.

I also enjoyed learning more about the flavors of Agile development. XP was interesting to me: deriving everyday best practices from a set of five values (Communication, Feedback, Simplicity, Courage, and Respect) is a neat way to set up a development system. I also appreciated the emphasis it placed on testing as the foundation for good development (Test Driven Development).

What was your experience of containers, container adapters, and Life?

I had a very positive experience learning about containers, adapters, and Life this week. Learning about how Vectors, Stacks, and Priority Queues are implemented under the hood in C++ was quite insightful. I especially appreciated our discussions over the pros and cons of different default underlying containers for the various adapters.

What made you happy this week?

This weekend I baked Giant Chewy Oatmeal Raisin cookies and they have stood out as some of the best things I’ve baked in quite a while. Caramelized on the outside, chewy and slightly underdone on the inside, they have proven to be the best cookies I’ve made.

What’s your pick-of-the-week or tip-of-the-week?

I posted this on our class Piazza page but it’s worth re-linking: https://www.codeproject.com/Articles/5425/An-In-Depth-Study-of-the-STL-Deque-Container

This is an excellent article that reviews the use cases for Deques and Vectors in C++. The article discusses five fairly common methods used by each container and compared the runtime of both at large scales before summarizing their findings at the end. I feel much more confident analyzing which underlying container would be best between these two having empirical data to support my beliefs.