Going into this semester, I would have to say that this class in particular was my most anticipated out of all of my classes. In the previous semester I would occasionally glance over at the old CS3081 page and just kind of check up on what exactly they were doing in that class, so that I would have some idea of the dedication I would have to put in this semester when it finally reared its head. By no means am I perfect at any particular developmental aspect pertaining to this class, however I recognize some of my flaws/weaknesses and am willing to exert sufficient efforts to diminish them and more importantly turn them into useful tools that will prepare me for the future.
Luckily, there are certain things that I feel I do extremely well already that are listed as program design goals for the semester as well. The strongest objective that I feel I already possess would have to be adhering to program style and specifications. Throughout CSCI2021 and my other CSCI classes, I have become accustomed to trying to understand the scope and technicalities of a project long before I even start coding. I feel that it is of vital importance to reread the project description numerous times and ensure that you do not misconceive/misinterpret anything. If you don't know what you are trying to build, it is sort of difficult to get going (unless what you are planning to produce is a mess). When I used to code without fully understanding the project to the best of my ability, it always ended up making my life more difficult as the project progressed.
Asides from being able to understand the project, it is also important to have a variety of tools at your disposal during the software development phase. As far as my experience goes with these I have some experience using the GDB debugger and debugging features in some of the IDEs such as Eclipse. These tools have really helped me out in establishing where I have gone wrong in generating code that is not producing the proper output. In particular, it is very nice to be able to step through a chunk of code and be able to see where all of your pointers point to. This is very good for languages such as C/C++, because it can often be relatively easy to mess up references and it is often extremely challenging to realize where your seg faults originate. Using the debugger definitely helped me out a lot on my final CSCI2021 project, which had a lot of pointer referencing.
There are a lot of other course objectives that I am slightly familiar with, however I am hoping that by the end of the course I will be able to possess intermediate knowledge of most of the objectives. Now onto the things that I don't do so well or have little knowledge of.
As I was glancing through the list of objectives, one of the big things that stuck out for me was the concept of inheritance. I sort of know how it works, but this is something that I did struggle with a bit in CSCI1902. It seems like it would be a very important tool to possess knowledge of, because it allows you to share information between classes more efficiently. I know that it most likely isn't the most difficult thing to understand, and I will do the necessary work to ensure that I am competent in this topic by the end of the course.
One of the other things that I am particularly interested in learning more about is UML. Surprisingly, I have sort of inherently been using what I would call my own version of UML when I am designing programs. Before I start programming I generally am apt to drawing out my own class diagrams of what the project would look like from a conceptual level. It helps me to visualize exactly what it is that I am going to work on, which I feel is a very important thing to do. I would definitely like to learn ways to improve on some of the techniques I feel I already possess in this category. My main intention at this point is to do Software Engineering as my focus, so I think that understanding UML better would be a very important tool to have at your disposal going into those courses.
Overall, I am very excited to be a part of this class and I really look forward to learning lots of new concepts this semester and learning how to be better at program development! :)