Object-Oriented Software Development
In CS 246 (Object Oriented Programming ~ OOP) I got a lot of hands on experience with object oriented programming. This wasn’t my first time with OOP. I had a slight flavour of this paradigm in highschool using Java which culminated in me making a game with a few friends. However, in university I managed to learn object oriented concepts in greater detail using the C++ language. Covering classes, inheritance, design patterns and other important concepts helped me learn a lot about this paradigm.
I really enjoyed this course as it taught a lot about the ‘art of writing’ code that I did not really follow in the past. One of the biggest concepts was testing code. Beforehand I never paid attention to testing and just assumed that things worked if you thought they did. This changed after CS 246’s assignments.
Each assignment consisted of two portions. First you would write tests for your code, which would be graded, and only after that would you actually write the code. This helped one to think about the problem before even starting it and then have test cases to check your code after it was written. Even though initially this was very hard getting used to, I eventually began to appreciate this rigorous method. Compared to the past, I now have the opposite mentality when it comes to assuming things about my code. I assume from the start that it is always wrong and even after testing the code over and over again I still hold my suspicions about its functionality.
The course also gave me a taste of applying the concepts learned of OOP learned in this course to a project. Working with partner, John Rizkalla, we created a text-based monopoly like game. This project took two weeks to complete and ended up being about 2000 beautiful lines of code.