ICS 314 was definitely one of the most eye opening course that I took through my 1.5 years through Computer Science at the University of Hawaiʻi at Mānoa at , it not only taught me what Software Engineering is but also a lot of other topics such as Open Source Software Development, Issue Driven Project Management and more, through this class I got a taste of what it would be like to code in the real world and not in a classroom environment due to the idea of Athletic Software Engineering. So let’s get into some of the most interesting and important concepts that I leaned from this class.
The concept of functional programming was probably my favorite thing that I learned in ICS 314, the idea that I can pass functions as parameters are so crazy! It not only allow us to make functions that are more flexible in nature, meaning I can build a vague function that does everything that is essential, but then have a function as a parameter that specify more on what’s going to happen and the specific parameters and steps that I am going to take, not only does functional programming provide that ability to make flexible functions but it also adds the idea of mutable variables, meaning that we don’t have to define the type of the variable when we are initializing it, which makes it a lot easier because a variable that I initialize can become anything (It can go from a String to an Integer) thus saving me a lot of brain energy (Which I already have so little of) trying to remember what variable is of what type. With functional programming in JavaScript, I feel that I can allocate more of brain power to the functionality of my program because 1) I don’t have to worry about syntax and 2) I don’t have to worry about variable types. Even though Object-Oriented Programming language like C# and Java are currently more popular, I do see that functional programming might have the potential to one day rise to the top.
This was another super important concept that I feel I learned from this class because, not only does it apply to Software Engineering, but it can be applied to almost any other group based project because the concept is essentially the same, the idea to plan out an idea from the customers’ perspectives then applying issue-driven project management, it makes it a lot easier to put a project together because by utilizing a project board on GitHub, each team member are aware of what issues each other is working on, and thus it can help the flow of the project because as a team member, this functionality allows us to gauge what issue should be work on next or what issue should be added and having everything in one place is also a plus. After experiencing this management system, I honestly think I would consider using this concept when working on other group projects and perhaps even suggesting to my group to use GitHub or something with similar functionality because of how efficient it is having all of our issues and idea in one place.
I have never really thought myself to be the most ethical person, because I never really understood what ethics mean, but ICS 314 have really helped me to understand what it means to be ethical in terms of Computer Science, which some part could honestly be utilize in our daily lives outside of programming. I have never gave much though to ethics when building a program/solution, I always just had the idea that if a program/solution helps people and make their lives better, it’s a good program/solution, but I never really thought that even if a program/solution helps people, there could be the cost, and when we are building a program/solution we have to take that into account as well. This lesson helped me to always keep the ACM Code of Ethics in mind when building a program/solution.
As ICS 314 come to a close, this class really helped to bring me closer to the world of Computer Science, by explaining the ethical standards in Computer Science, the different types of project management used when building a program/solution, a new way of programming and a lot more, this class, in my opinion was definitely one of the most insightful class I have taken as a C.S. student and I hope to continue to explore the world of Software Engineering and Computer Science.