As the Spring semester draws to an end, looking back on my experience taking ICS 314 has made me realize that I learned more in this class than any other programming class that I have taken at UH Manoa. This class didn’t stick out to me at first, because I expected to just learn a programming language and create a program with different functions, like with ICS 212. As the semester went on and I learned a new module every week, I quickly noticed how much content was packed into this class and the number of concepts that revolve around software engineering and development process amazed me. Some hand picked concepts that I think serve great importance beyond web design are Open Source Software Development and Design Patterns.
An open source platform that I used for the entirety of this class was GitHub. Before utilizing GitHub for my own projects and assignments, I did not know that you could use other people’s code and clone your own version of it to work on. It was something that later became important in building my very first web application. In ICS 314, I used a limited number of open source templates, such as that of meteor-application-template-react and techfolios but through using these, I acknowledged its potential and usefulness. To be able to use existing work for your own purpose. To be able to allow others to re-engineer, or modify your code. To be able to collaborate with a community of developers. Beyond this classl, I think Open Source Software not only is of high quality and reliable, it allows us to learn how things are structured in an application with the added benefit that it is basically cost free and speeds up development.
One of the more important concepts I learned in this class was Design Patterns. Although there are many design patterns out there, each with different and unique functions and purposes, the design pattern that I mainly utilized in ICS 314 was aimed specifically for web application development, namely, the Model-View-Controller Pattern (MVC). The Design Patterns module stuck out to me in a very particular way. It made me realize how extensive the topic of software engineering can be and the depths of expertise and experience that some of these require. With that being said, design patterns can be applicable in so many other disciplines of computer science than just web development. It serves as best practices or effective solutions to problems that people had to tackle in the past and simply guides us in creating stable, coherent systems. Without the practicality of design patterns, security and structural integrity of many applications and systems we take advantage of everyday probably wouldn’t be the same and CS would be a much harder field.