A New Journey

13 Dec 2021

When I was picking classes for the fall 2021 semester, the class, ICS 314: Software engineering, sounded very daunting at first. But after taking this class for almost four months, I can say that this class so far is one of the best computer science classes I have taken in college. There are many aspects of this class that I really liked. I was finally able to work with other people on a big coding project, the coding assignments were applicable in real life, and it overall broadened my view on software development. In this class, I learned many things like javascript, react, semantic-ui, meteor, ethics, etc… However, there are two major concepts that I feel were very important, functional programming and agile project management.

New Style of Programming

Before I learned about functional programming, I always thought that the only thing that can be passed as a parameter is a variable and not a function. Now I can see why functional programming is a thing and the benefits of using functional programming. Functional programming is a paradigm that mainly focuses on functions instead of objects (Object-oriented programming). Essentially, you can treat a function as a variable and it can be a value, argument, parameter, or even the return value. Coding in functional programming makes the code more modular and flexible when compared with object-oriented programming. If I made some changes in the code in object-oriented programming, I might need to rewrite most of the code in the function to compensate for the changes. Whereas in functional programming, I barely need to make any changes to the existing function and just swap out the outdated function with a new function. This makes my life so much easier because I don’t need to spend extra time to read old code and debug the problem with new changes. I can make minor changes to the function to accommodate new changes. While functional programming may seem unorthodox to someone that came from object-oriented programming at first, I think it’s definitely a great tool to have and I can see myself using functional programming more than object-oriented programming in the future.

Group Project

Throughout my programing journey, most of the coding projects are done by myself. So I don’t really have any experience working as a team on a big coding project. So learning about agile project management was new and very interesting to me. I think this concept can be used everywhere in the real world because it is a very applicable process that can be used in every group project. In this class, we are using a style of agile project management called Issue Driven Project Management for the final group project. We used Github’s project board to plan out every step for the project. First, we decided on the particular tasks/issues that needed to be worked on for the project, then we delegated the work to each person and kept track of the progress. It allowed us to communicate effectively about what we are doing and the issue we need to solve. Another benefit is when we are working on each task/issue, no one is waiting for anyone’s task/ We are all working independently without getting affected by anything (done through Github’s branch functionality). This workflow allowed us to be efficient and deliver a project that we are satisfied with. With the experience I got from using agile project management, I would be able to apply this more to my future group project.

To Conclude

This semester of ICS 314 was very eye-opening to me. It provided an experience that allowed me to get a deeper understanding and application of computer science to the real world. I am willing to continue practicing the concepts that I learned in this class and dive deeper into the world of computer science.