Throughout ICS 314, I learned many new concepts, such as open source software development, configuration management, and development environments. However, the concepts that resonated with me the most were coding standards, functional programming, and agile project management.

One key takeaway from this class is the importance of coding standards. Coding standards are a set of criteria and practices designed to encourage higher-quality, more readable, and maintainable code. These practices include formatting rules, documentation, code structure, and testing.
Before this class, I hadn’t taken many courses where coding standards were heavily emphasized. For example, in my ICS 311 course, most assignments were group-based, but coding standards were virtually nonexistent. Comparing those projects to ones that adhered to coding standards, it’s clear that projects with coding standards are much easier to read, which significantly enhances collaboration.
As such, I will continue to use coding standards in all of my future projects, even solo ones. While coding standards undoubtedly make collaboration easier, their benefits extend beyond teamwork—they also improve the clarity and maintainability of code.
Functional programming is a programming paradigm that allows variables to be treated as functions, avoiding state changes and mutable data. In this course, I learned that functional programming simplifies code and reduces the effort required to write it.
For example, functions like map, filter, and reduce enable concise and efficient operations that would otherwise require numerous for loops. Writing those loops manually is not only time-consuming but also less efficient.
Functional programming extends far beyond web application development. It’s commonly used for immutable data structures, data analysis workflows, and pure functions, ensuring data consistency and reproducibility. Going forward, I plan to incorporate functional programming into my projects due to its simplicity and efficiency compared to traditional approaches.
Agile project management is a flexible and collaborative project management style that breaks work into smaller pieces, enabling teams to better adapt to changing requirements. In this class, we used a specific type of agile methodology called issue-driven project management (IDPM).
IDPM begins by identifying issues that need resolution and assigning each issue to a team member, with issues prioritized by their level of importance. This approach helps hold developers accountable for their tasks while also providing greater clarity on what needs to be done.
Agile project management—and specifically IDPM—can be applied far beyond web application development. For example, in a machine learning project, issues could be categorized into areas such as data preprocessing, model selection, or hyperparameter tuning. The adaptability and structure of IDPM make it a versatile tool for managing a variety of project types.