Important Components of Software Engineering

10 May 2024

What is software engineering?

Software engineering is basically about how to code, so that machines can execute tasks the user desire. Computer programs today are becoming increasingly complex as time goes by due to different purpose and structures of code. Code today can do a lot more with AI(artificial intelligence) which can help people easily analyze and pull up more information about topics in less time than it takes a person to do the research on a topic. This can lead to some ethical changes of what is considered personal work due to being able to just ask an AI for an answer. Then users can just take the AI's answer as their own. What I find to be the most important parts of learning programming is functional programming and design patterns.

Ethics of Software Engineering Concerning AI

AI has become an increasingly useful and important tool to programming. However, it can be troubling if used incorrectly. It can inhibit learning code due to directly asking for the answer. This can lead to users having not having an understanding when using this. The correct way to use AI for coding is to basically use it to help understand the concepts behind the problem. AI can help research topics far faster than a person can search on the internet. Although, AI gets it's information based on what is on the internet, so it can lead to false information due to the internet not haveing any real monitor for all false information. Throughout the semester of Spring 2024, I have used AI such as ChatGPT and Google Bard shown in pictures below. I find ChatGPT better at helping in understanding coding due to it pulling up better resources. I also used it to help organize data of problem prompts to help learn the steps I need to do to solve the problems. I believe learning the process is more important the just learning the answer of a problem. AI can help learn the process, due to its interactive user interface. Google Bard has a use the ChatGPT 3.5 doesn't have which is analyzing images to help analyze graphs and figures.

Basically, AI is a very useful tool in coding, however it is easy to abuse it so it is basically doing all the work while the user doesn't know how to do it. I also learned it is also a skill to be able to use AI with just knowing the basic information of the problem. Although I still think the importance of human learning is more important than just over relying on AI to solve problems.

Functional Programming

Functional programming is the basics of programming, step by step functions. I believe this is the basics of coding which needs to be mastered in order to learn how to build more complex code. Everything can be basically designed in a mathematical model that will create logical processes. Understanding functional programming can make it far easier to create other types of coding. The 5 basic parts of functional programming are immutible data, pure functions, higher order functions, recursion, and referential transparency. These 5 concepts together basically mean that the program creates a unchangeable function that always follows the same logic reguardless of different inputs.

The importance of functional programming is the consistent logic is what is used for object oriented programming. Object oriented programming is breaking up information into multiple parts and treating each data as an object. These objects don't affect the functions that act on them. This makes it easy to create databases that store information about the data of an object without changing the coding functions completely. This is usually following the patterns of getters and setters. Getters are basically functions that can pull information from the database. While setters are functions designed to create and update objects of data.

Design Patterns

Design Patterns are an important part of coding in order to make coding easier. After a while, code that is performing the same action can be reused in another program that needs the exact same task performed. Doing this can immensely reduce the time it takes to code. Due to not needing to recreate new code for similar processes from scratch. Design patterns are usually stored in databases as predefined functions. The most common design pattern in C is stdio.h, which stores the printf function. During the semester we also used meteor, which defines templates like cards. Which is a data structure to store information about an object.

Conclusion

Overall, what I find to be the most important aspects of software programming is ethics in not abusing AI, how to create functional programming, and how to use design patterns to speed up coding.