One of the main topics throughout the first few weeks of classes has been object-oriented programming and how it differs from procedural programming. Firstly OOP programming paradigm (a fundamental style of programming) uses objects to represent concepts. The main focus is using classes as objects which contain both data and have a function. These classes correspond to an object in the real world and have functions that operate like they would in the real world. Furthermore, each object instance has attributes. Attributes are names contained in namespaces that can be saved and accessed. The idea of OOP at first was very clear to me. The idea of it worked was very straight forward and logical. The example of the class "Point" made it even more clear. It having different methods and attributes as if that point where to be drawn on a graph in real life. It has attributes (x and y coordinates) and you can do calculations using this point (distance from origin) using methods. OOP is one of the most interesting things I've learned so far. It makes me think of all the possibilities of future programming and how OOP can be used to create better more interesting programs.
Another topic throughout the first few weeks was the idea of advanced data types (ADT's). The concept of stacks is a collection of of data which can be manipulated by removing and adding. Stacks are specialized where you only have access to the most recent added item. When items are added to a stack they are put at the top of a stack and also can only be removed from the top so that there is no increase in runtime of the program based on how many items are in the list. The idea of stacks at first to me was slightly confusing. I didn't really understand what it was and how it was meant to be used. After looking over it again, researching online and mainly in lab I began to get a deeper understanding of stacks.
Another important topic covered is recursion. Basically recursion is a function that calls itself. At first I thought it was simple until I looked through examples. The process on how it actually worked was the most confusing part for me and I still don't feel 100% about it. From examples I could understand that recursion is used to make a complicated task simpler by using the same function multiple times to break down a problem. That is what I can gather right now from recursion, I plan to go over the programs and examples done in class so that I can begin to get a larger understanding in more detail of how recursion works.