(The) AI Generation

03 May 2024
I, Robot movie screenshot

I. Introduction

The explosive advancement of Artificial Intelligence, known colloquially as AI, over just the past few years have given anyone access to a powerful aid that can assist its user with learning, understanding, and even creating in lieu of knowledge or technical skill. Because of this, AI continues as a hot topic of debate and friction, especially in the realms of education and software development.

AI & General Education

Students of all ages across the academic spectrum have rapidly adopted AI as a go-to resource to help with studying and completing assignments. Though this process is not perfect, AI can be taken as far as writing entire papers with no more than a simple prompt. AI ‘s application in this regard has raised much contention in education due to the ethical uncertainty of its use, and its potential for misuse in academic settings. Some educators embrace the idea of AI as a tool for learning (or otherwise leave the door open to it), while others consider it tantamount to cheating as it undermines true assessment of the student’s abilities and knowledge.

AI & Software Engineering (ICS 314)

When it comes to software, AI has been an ever-looming field of research, and today it is growing as a common tool for not just feedback, but developing and even engineering software applications. In my ICS 314 Software Engineering course at the University of Hawai’i at Manoa, it was one such environment that supported the use of AI on assignments, tests, and projects. The only stipulation was that we had to indicate our usage of AI when it was employed by us. As GitHub was a primary development tool for the course, we were encouraged to register for a student account and try out GitHub Copilot, GitHub’s own AI assistant, which integrated easily with the IntelliJ IDEA IDE we also used extensively.

For my personal use of AI during the course, it was as follows:

Overall, the AI tools that I used during the course were ChatGPT, and GitHub Copilot. As someone that hadn’t yet accepted AI prior to ICS 314, I ended up finding a place for it as a tool for expediting and enhancing education and workflows.

II. Personal Experience with AI:

I have used AI in class this semester in the following areas:

1. Experience WODs e.g. E18

Reviewing the Experience WODs, I believe I started employing AI tools around the time of the Databases/Mongo DB and Meteor modules. This is when the programs grew syntactically larger, such as with the Digits assignment, where we had to implement Mongo collections, schemas, and manipulating those collections with adding and editing (E51, E52). ChatGPT helped me understand the logic and keywords better, showed me errors and why they were errors, and answered what-if questions with responsive code solutions.

2. In-class Practice WODs

For in-class practice WODs, I used AI a few times to help me understand a solution path or increase my understanding of implementing something syntactically. For example, if I recall correctly, there was a group practice WOD for building parts of an HTML or React page, split into about 6 or so sections. I am unable to remember the exact details, but I recall using ChatGPT to help us understand why an element exhibited certain behavior after following the WOD instructions, and I spent a good chunk of the WOD time exchanging with ChatGPT to break down the syntax, bettering my comprehension of how structuring a page worked what classes or CSS modified what aspects of the element. Since it was a practice WOD, tussling with the assignment instructions in this way was an opportunity I could afford to take.

3. In-class WODs

For the graded in-class WODs, I never ended up using AI. It was important to stick to my own senses and knowledge-base for these evaluations so as to avoid potential errors or rabbit-holes that AI might have lead me down. Additionally, I felt that the instructions of later WODs were often more than reliable enough to follow without needing AI to decipher anything compared to earlier WODs (which felt much harder to follow when I was less familiar with the course content, and may have felt less stressful if I had employed AI). It also felt good to just be applying what I learned in the practice/experience WODs, which did not leave much room to need AI’s input either.

4. Essays

I did not employ AI tools for writing any essays. I prefer to write my own content, and like to include my own writing style which aligned with what was encouraged by the essay instructions. Writing is also an ever-developing skill, so any opportunity to write is a chance to learn and improve. Plus, I have seen what something like ChatGPT outputs for writing prompts and I don’t find it appealing at all.

5. Final project

The final project (which is still in-progress as of writing) is an environment where I have come to use AI rather often after seeing its strengths. ChatGPT has allowed me to bounce implementation ideas at it and see a working prototype along the lines of what I want to write, where I can then apply it and modify it to fit the project’s environment using my own knowledge. I can also ask it to show me what a feature implementation might look like and have it broken down to me line-by-line so I understand it, or can have it identify a problem in my code to suggest a solution. It is also useful for patching syntactical errors or inserting something when doing so normally becomes tedious (e.g., class code has grown significantly).

Expediting the workflow in this way has been especially beneficial for balancing the project’s time commitment with the full-time workload of other courses - what might take 2-3 days to accomplish at my level can be done in a still arduous, yet greatly condensed span of an 8-10 hour session with ChatGPT’s assistance.

6. Learning a concept / tutorial

This is an application of AI that I have employed frequently. Most of my time spent with ChatGPT is with inquiring about a concept or about a roadblock I’m having. ChatGPT gives me an all-in-one resource for aggregating information, explanations, and working code examples of whatever it is I am curious about or trying to understand more about. I’m able to essentially generate tutorials tailored to a problem I’ve posed to it on the spot, which is incredibly efficient and saves valuable time on researching an idea or issue, allowing me to jump back into the assignment or project quickly and keep the momentum going.

7. Answering a question in class or in Discord

I did not use AI to assist me in this area. I never thought it was necessary to use AI to answer any discussion or instructor questions.

8. Asking or answering a smart-question

I never used AI to do either of asking or answering a SMART question on the class Discord server. Without the help of AI, I did answer a peer’s SMART question once since I had a window of free-time, where it was a fairly unique question about trying to make her React website’s layout compatible with mobile devices. I didn’t find the issue to be too obtuse as to consider using AI, and I was able to provide an answer on my own using my own instinct and subsequent solution-testing.

9. Coding example e.g. “give an example of using Underscore .pluck”

Combined with #6 above, this was a major use of AI for me since I found the instant feedback and guidance to be instrumental. For instance, this is a question I asked ChatGPT when we started using React:

Me: React implementation of flexbox to center an element both vertically and horizontally?

ChatGPT: Here’s how you can implement it in React: ``` import React from ‘react’; import ‘./styles.css’; // Import your CSS file with Flexbox styles

const CenteredElement = () => { return ( <div className="container"> <div className="centered-element">Centered Content</div> </div> ); };

export default CenteredElement;

>**ChatGPT**: And in your CSS file (styles.css):

.container { display: flex; /* Set display to flex to create a flex container / justify-content: center; / Center child elements along the main axis (horizontally) / align-items: center; / Center child elements along the cross axis (vertically) / height: 100vh; / Set height of container to 100% of viewport height */ }

.centered-element { /* Add styles for the centered element */ padding: 20px; background-color: lightblue; }


Things like the Flexbox classes and their properties weren't transparent to me during the module, so being able to have it explained and demoed by ChatGPT without having to page through the web or documentation made understanding it much smoother.

  **10. Explaining code**

Like in the above code example, I used AI to help me with explaining code. ChatGPT would provide helpful in-line comments or line-by-line rundowns of how the code worked which helped me process the logic, syntax, and functionality of any specific 
example I had to provide.

  **11. Writing code**

As a result of using AI for explaining code and showing me examples, AI helped me in writing code implementations in some assignments and the final project. To provide a different kind of usage example, I would ask ChatGPT to help me identity issues 
with my code or assist in debugging it.

An example would be when I was having trouble implementing a feature in the final project to "send" a document in our collection to a user registered in the site. The function would fail to execute properly and without any error messages, so I 
bounced the issue off ChatGPT. ChatGPT was able to provide several troubleshooting avenues such as: Checking collection permissions of the current user; checking the collection schema to make sure the function parameters are correct; and checking 
error logs with try/catch blocks. I asked for an example of the last suggestion, and it taught me how to force an error message to be thrown in the console, which helped me identify the issue and fix it.

try { console.log(“Owners of card:”); selectedCard.owners.forEach(owner => { console.log(owner.name); }); } catch (error) { console.error(“Error accessing owner name:”, error); }


  **12. Documenting code**

I never used AI to help documenting code directly. I feel that documentation, like taking notes for a class, work best when written by your own hands and mind, so using AI in this way wasn't something I considered. When asking ChatGPT for code 
examples and such it occasionally added its own documentation, but I either deleted it or rewrote it myself to fit the application, never keeping what ChatGPT generated.

  **13. Quality assurance**

AI helped me with quality assurance by resolving problems I hit a roadblock on or leading me in the right direction. I would ask ChatGPT to help me identity issues
with my code or assist in debugging it.

As an example, after some underlying functionality of the database was changed, this is a question I asked ChatGPT prior to the example code given in #11:

> **Me**: Owners is an array of objects, each having a name and a count. This console log fails to execute:
console.log(`Owners of card: ${selectedCard.owners.name}`); 
>
> Why is this?

>**ChatGPT**:
The issue with the console log console.log(Owners of card: ${selectedCard.owners.name}); is that selectedCard.owners is an array of objects, not a single object. Therefore, you cannot access the name property directly on the array.
>
>To log all the owners' names, you need to iterate over the array of owners and access the name property of each object individually. Here's how you can do it:

console.log(“Owners of card:”); selectedCard.owners.forEach(owner => { console.log(owner.name); }); ```

This helped me understand what was changed elsewhere in the project and how the logic of the code was working now, as well as how to adapt my approach to the feature since the data structure had changed and would return different values.

14. Other uses in ICS 314 not listed above

I can’t identify any other uses I had for AI in ICS 314. The above prompts have covered what I used AI for in this course.

III. Impact on Learning and Understanding:

I think that AI became a very valuable tool for me as the semester progressed. My journey in the ICS field has been split over 7-8 odd years, so taking ICS 314 both marked a significant return to pursuing computer science, as well as a massive leap in the complexity and depth of the content for me. Going into the class, I felt that I was not going to meet the level of programming comprehension that I was expected to since I had been out in-and-out of the field for so long and had forgotten a lot, while my ICS education up to this point did not include any classes at UH Manoa until this ICS 314 course. I feared I would be far behind my peers.

Though I actually did not feel estranged in this way for most of the course, AI helped me to bridge that gap when I started to feel a sneaking uncertainty later in the semester when I wasn’t sure how to approach or resolve some problems. AI became a reassurance that I could keep up and review concepts quickly when I felt that I would falter. And as aforementioned, AI was useful for deepening the understanding of an ever-questioning mind with explanations, examples and tutorials that were tailored for me.

IV. Practical Applications:

Outside of ICS 314, an application of AI that I am familiar with its development and use in the arts. Though divisive, AI has garnered much interest when it comes to creating art and voices. In the gaming industry, some projects have employed AI to create things like art for the game, and even emulating or fabricating voice talent. In online communities, AI-generated art and voice acting have taken the internet by storm, with this AI-generated content even being monetized and shaping the online landscape for consumers.

Another way that AI is being applied practically is through GitHub Copilot’s new Workspace suite, of which I read an announcement about in the week prior to this writing. In Workspace, Copilot is able to assist development of entire projects completely through natural language input. Design, implementation, debugging, documentation and more can all be done in Workspace, allowing software engineering to be encapsulated completely by AI, marking a potentially monumental step up for AI’s role in software.

V. Challenges and Opportunities:

As AI was a resource that I only started to use through this course, I saw some limitations in the access of AI tools. GitHub Copilot most likely would not have been a resource I would have ever used if it were not for this course encouraging us combined with getting access to it for free via a student account. Meanwhile, the free model for ChatGPT is an outdated version that isn’t as feature-rich as or as accurate as its premium version. In both cases, normal access to these AI tools comes with a steep monetary barrier that would dissuade my interest outside of this course, and so I was fortunate to have the opportunity to have GitHub Copilot introduced to me through this course.

As the landscape of the software field evolves and adapts to greater usage of AI, I think that ICS courses should similarly reflect further integration of AI into the curriculum. It may become an expectation (or even necessity) for ICS students entering the workforce in the future, so building aptitude through the class will be beneficial toward broadening their skill-set and understanding of AI as a tool. In addition, it could also accelerate students’ learning of the content, allowing for more concepts to be covered throughout the semester and/or allow for spending for more time on complex course modules.

VI. Comparative Analysis:

Between traditional instruction and AI-enhanced learning, the two methods of learning provide several varying pros and cons. I think that traditional and AI-enhanced instruction can be used in tandem to achieve better results for students

Traditional Instruction

In the same way that many argue for the human component that AI lacks in what it generates, traditional-style instruction by human teachers bestows the benefit of having a real person to talk to, ask questions, and receive humanly sensitive feedback from. Humans are also able to view problems or designs far more holistically than AI can, and skilled teachers can even tailor their explanation or lecture to the individual. Human teachers can also understand better what an effective way of remembering something is, or can be more creative in the way concepts are explained or challenges are designed for us.

AI-Enhanced Instruction

On the other hand, learning with the assistance of AI can fill the holes that traditional instruction can sometimes lack. Sometimes concepts are not divulged as much as desired, or there wasn’t enough time to go over them. Sometimes the lecture material has discrepancies that can’t be answered right away, or the student simply needs further elaboration that restraints of time and opportunity simply won’t allow. For these reasons, AI gains value in an academic setting since it can fulfill those missing pieces. It can efficiently and specifically answer questions, resolve issues, clarify concepts, and can go even further by building study suggestions to help students understand and master the material.

VII. Future Considerations:

AI will inevitably grow in influence and prominence in the computer science world, so I think that following that trend in the classroom will become critical in the coming years. As AI becomes more integrated into software development, so will it need to become another cornerstone of the ICS curriculum to train students going into a profession that seems all but guaranteed to demand its usage one day. Because of the possible, massive change to the paradigm of software development that AI is posed to bring, it will also become all-the-more important to secure ethical standards for its use by students and as a tool in academia. It’s a challenge that will need to be addressed as AI becomes more prevalent in every aspect of our lives.

VIII. Conclusion:

Overall, AI has proven itself to be a versatile tool at our disposal, and only risks growing more advanced. I was ethically against AI before ICS 314, but seeing how it could be used to support my learning and execution of software development broadened my views on it, and I have accepted it as another piece of my toolset, much like that of an artist’s cart of supplies or a technician’s chest of tools. As AI can never replace the human essence, I don’t think AI should ever replace humans, but it can certainly be employed by us to groundbreaking effect. Just as artists adapted to cameras and video, software developers should also come to embrace AI as a tool that can enhance their work and understanding of the field.