Optimizing Productivity

17 Nov 2023

I. Introduction

Artificial intelligence (AI) plays a transformative role in both education and software engineering. In education, AI facilitates personalized learning experiences by tailoring educational content to individual student needs, tracking progress, and providing timely feedback. AI-driven tools also assist educators in automating administrative tasks, enabling them to focus more on personalized instruction. In software engineering, AI enhances efficiency through automated code generation, bug detection, and optimization. Machine learning algorithms analyze vast datasets to identify patterns, improving software development processes and aiding in predictive maintenance. Additionally, AI contributes to the evolution of adaptive software systems, allowing for real-time adjustments based on user behavior and preferences. Overall, in education and software engineering, AI serves as a catalyst for innovation, fostering more effective learning environments and accelerating advancements in software development practices.

This is pretty cliched, but the paragraph above is AI-generated. I do, however, genuinely believe that AI only helps to improve productivity in the classroom and in software engineering. I believe my personal experiences using it are testimony to its usefulness in the classroom and in professional work. Finally, at its current state, I also believe that one can use it poorly, and that using it well is a skill to develop.

II. Personal Experience with AI

Initial Hesitation

This was my first semester actively using generative AI. No, I wasn’t ignorant of its existence - In fact I used it a quite a bit in recreational activities when ChatGPT and DALL-E gained popularity a few years ago. ChatGPT was what I primarily used, and I had it write up D&D stories, lesson plans to learn and practice Japanese over the summer, and answer questions I’d normally just ask on Google. But I never really considered using it for school, and this was mainly motivated by a fear of falling into a trap of becoming dependent on using it. Something important to understand about me is that I learn a lot through failure. Calculus? Organic chemistry? Biochemistry? These subjects weren’t a walk in the park for me. I actively spent a lot of time struggling through material trying to understand concepts and recognize patterns in these subjects. Even in the second semester of Introduction to Computer Science, I initially struggled trying to get a basic array of size 5 to work the way I wanted it to. But it was a process of constantly trying again and again that ultimately proved fruitful in my success with these classes. I attribute these moments of struggle to traumatic experiences in that they sort of remain with me for a long time because of the hardship endured.

And so my initial belief was that incorporating AI would actively harm my ability to learn and understand material. Software Engineering is the only class I’ve taken that has either encouraged or allowed use of generative AI.

Trivializing Coding Prompts

Software Engineering had weekly assessments called Workout of the Day (WOD) which were timed coding exercises. At the start of the class the instructor would briefly describe the exercise, and then within a given time restraint I would have to return a solution to it. As far as I can recall, every WOD allowed the use of generative AI and during submission we would be asked to answer if we used it during the exercise or not. I will admit that I failed the first two WODs, and chose not to use ChatGPT or any other assistant during my attempts. To this day, it still bothers me that I failed those two. But as I pointed out in the previous section, the solutions to those exercises were burned into my memory as a result. What about the other WODs though? I actually passed almost every WOD afterwards, but it also marked the start of my use of AI in my work for the class.

One of the initial challenges coming into class was learning a new coding language. The expectation was to learn JavaScript within a week, and while I thought I figured out the basics my failures with the first two WODs had me question that belief. I remember the exact moment my opinion on using AI changed: During a practice group WOD, I managed to write up a solution fairly easily and very quickly. I was surprised to learn, however, that one of my group partners had already finished the exercise. Curious to know how he managed to accomplish this so quickly, he explained that GitHub Copilot had done most of the work for him. Somehow I felt humbled, but I realized then that AI could be used to generate code for simple processes. After the third WOD, I used it every time I was stuck on something. And during one point I learned you could paste an entire WOD prompt to generate a correct solution, but eventually we moved on from pure JavaScript to building UI with HTML, CSS, and UI frameworks. I don’t believe I ever used AI for the completion of those exercises besides the rare occasion when one of my CSS styles wasn’t working for some reason.

The Final Project

I decided to participate in the Hawaii Coding Challenge this year, and also use it for my final project for Software Engineering. Of the five challenges presented, my team decided to work on one where we were tasked with implementing an AI to help students and faculty of the university navigate through the IT department’s help article database. I initially wanted to avoid participating in this challenge because I felt that building an AI tool was not within my scope of knowledge, but conveniently a tutorial on building an AI chatbot was sent to me via a FreeCodeCamp newsletter. After watching through a couple minutes of the video and learning what its techstack was, I gained confidence in the team’s ability to do the challenge. At that point in time, I had probably been actively using ChatGPT for a little over a month in most of my classes. I found that using it to kickstart assignments or design a game plan for them helped me overcome slow starts. I fed ChatGPT information on the goals of the challenge and the technology I planned to use, and it returned to me an initial plan that I would use to realize building the application with my team. And I currently continue to use it whenever my functions fail to work or if I want to know how to proceed from a certain point.

Specific Use Cases in ICS 314

1. Experience WODs

I don’t ever recall using generative AI for the Experience-type assignments, largely for two reasons: 1) There was normally a demonstration video that came with the instructions, and 2) While these exercises did have recommended completion times, they were strictly recommendations thus there was never any pressure to force out a quick solution.

2. In-Class Practice WODs

Similar to the Experience WODs, there wasn’t a sense of urgency to complete these in the suggested times provided. This isn’t to say that I didn’t try, but the setting never motivated me to consider using generative AI.

3. In-Class WODs

As I stated earlier, I used ChatGPT probably twice at most. And specifically on the pure JavaScript coding WODs. The decision to use AI here was mostly motivated by my own desire to not kill my grade. The reality is that a failed WOD is the loss of 100 points in my overall grade. I am currently in good standings for this class, but I still feel the effects of the WODs I did fail.

4. Essays

In this class and other classes, I have never used AI in a large capacity to write essays. Google Documents and Word already do a lot of the heavy lifting for me in terms of grammar and spelling errors. I’m personally not against using AI to help me write essays, but I have yet to consider a strong need to try using it.

5. Final Project

I already went into detail about how I used AI for my final project, so I’ll summarize what I think were the main points to consider from my experience. ChatGPT provided me with a detailed outline on how to build my desired application, suggested technologies to help accomplish each method, and helps direct me whenever I find myself stuck trying to do something.

6. Learning a concept / tutorial

The use of AI here can be pretty interesting in that you can enhance a tutorial (like the Meteor To Do List tutorial) by pasting in code and asking ChatGPT to explain each line. I have done this a few times, but I still recommend to others that they refer to documentation primarily when learning a new technology.

7. Answering a question in class or in Discord

I believe in only answering questions that I know the answer to, and so I have avoided responding to smart-questions that I didn’t know the answer to. As much as I do want to help others, it is also my personal belief that I do not spread misinformation. With that in mind, even if I did use ChatGPT to help another student I typically write my responses to be more like a suggestion than a declaration.

8. Asking or answering a smart-question

See above.

9. Coding example

This is similar to the case of using AI for a concept or tutorial. A specific example I have in mind was when implementing OpenAI’s LLM into the final project. I had previously made a chatbot following a tutorial on Youtube, but outside of Meteor. So naturally I wanted to know if the process was any different with Meteor. I want to say that this experience really helped me better understand Meteor Methods and how they simplify a lot of the backend work I did for my initial Chatbot. In any case, ChatGPT was able to provide me with an example of a way to reuse previous code in a different environment and framework.

10. Explaining code

Dr. Johnson provided an excellent explanation of the code for the Meteor-React-Bootstrap-Template in his screencasts, but I did try just posting pieces of the template in ChatGPT, and it does know to explain what the code does without context. If I hadn’t made it clear before, I’ll make it a point now and state that I think ChatGPT makes an excellent supplementary resource to learning coding.

11. Writing Code

The case I used in ‘Coding Example’ works here too.

12. Documenting Code

I haven’t used AI for documenting code yet.

13. Quality Assurance

I’ve used ChatGPT a few times to fix some ESLint errors. The great benefit of Intellij is that it will visibly underline each error and list them down along with the line location of each error. In some cases like a missing bracket or parenthesis, ChatGPT is a quick fix, but I typically just prefer to just search the errors myself.

14. Other uses in ICS 314 not listed

I think that anything I covered in the paragraphs above this section summarize my use of generative AI in this course. If I haven’t listed down any other uses, it’s likely because I wasn’t creative enough to consider using them.

III. Impact on Learning and Understanding

During my time working on the final project, I used ChatGPT as a programming assistant. In cases where I ran into errors I couldn’t properly debug, or when asking how to use a certain API, there were a few moments where I was caught off guard by the response and even audibly gasped “I could have done that?!” As an assistant tool, ChatGPT is really cool: It can provide a solution in the language that you want it to, and it will explain the logic behind its solution with commentation in the code. And probably less-recognized, ChatGPT is really ‘nice,’ and by that I mean ‘friendly.’ The way the response is generated, ChatGPT is never impatient with me and always seems eager to help me. This is largely in contrast to the experience of posting a question on StackOverflow, and returning to find the question downvoted with maybe one or two comments expressing annoyance that the question was even posted. Not that I’ve ever personally experienced that, but I think I’ve definitely witnessed that searching through StackOverflow for similar queries. I believe there’s definite value in an assistant AI because of the absence of things like perceived judgment and impatience towards its user, but one’s mileage may vary. Especially if the user doesn’t actively seek out understanding.

IV. Practical Applications

I watched a video a few months ago where a computer scientist answered computer questions being asked on Twitter, and one of the questions being asked pertained to AI’s role in the health of the job market for computer programmers. The computer scientist, Dr. David J. Malan, described how the process of building websites was initially done manually through the use of HTML. But this process would gradually be simplified with the introduction of website-building software, and later be trivialized by platforms such as Squarespace that can generate entire websites in even less time and effort. Ultimately he expressed that AI, in some areas, is just an evolution of the described trend, and I tend to agree with that notion. During my time working on the final project, I saved a lot of time figuring out how to fix an error or create a React component by just having ChatGPT do a lot of the work for me in those areas. Even if one isn’t actively trying to learn or understand the code when using ChatGPT, they can still gain a lot in terms of time saved. In a way, generative AI is akin to a super-boosted Google search.

V. Challenges and Opportunities

During my time using generative AI to help me build the final project, the limitations I’ve experienced were specifically related to error handling. For example, there was a period when the final project application crashed on startup. And during a quick copy and paste of the error into ChatGPT, it told me that there was an issue with my API key and then recommended that I inspect my environment variables or make sure that the being used was correct. I probably wasted an hour or two following the chatbot’s advice until I decided to return to the basics and start testing every line putting print statements after each line in the startup code. ChatGPT was right about the error being related to the API key, but for some reason couldn’t provide me with a solution given what I knew about the problem. And therein lies the limitation: Users need to provide the chatbot with an adequate amount of information if they are to expect an adequate response sometimes.

VI. Comparative Analysis

Prior to ChatGPT, I believe the go-to resource to learn or research anything was Google. Just type in your query then some algorithm or set of algorithms get to work and populate a page filled with links to sites and other resources most relevant to the query provided. I still generally begin any research on Google, but I can definitely see a future in which a Chatbot can function as an alternative or replacement to our traditional search engine. The primary factor preventing this comes in how Google and other major search engines are always up to date in terms of current events and news. Without being fed and trained to use certain knowledge bases, chatbots will state that they can’t answer some questions. And this surprisingly even happens with technology. I specifically remember ChatGPT being unable to help me figure out how to use LangChain to split up a CSV document because information on it was too current. So when trying to use ChatGPT like a search engine, one must consider how current the chatbot’s knowledge base is compared to the information that’s expected to be used in the search.

VII. Future Considerations

The decision to allow use of generative AI during something like a WOD is still something I don’t exactly agree on. As I described earlier, ChatGPT can completely trivialize simple pure coding challenges. And it’s for that reason I believe that future WODs should be designed such that generative AI won’t immediately provide a working solution. I personally believe that if we are to implement AI as a teaching assistant then we need to introduce or frame the use of AI as a skill to learn and develop. And I don’t believe this is a new or revolutionary concept either. There are companies these days that value employees who can effectively use ChatGPT (especially prompt engineers); This statement implies that one can ineffectively use ChatGPT. I compare using ChatGPT effectively to knowing how to search effectively on Google. Using and learning ChatGPT is arguably simpler than trying to research through Google search, but I believe what’s most important to consider when using generative AI is its potential for improving productivity.

VIII. Conclusion

I clearly have a positive opinion of ChatGPT and other LLMs in the academic and professional environment, but I do caution how people go about using them. If one intends to improve their coding skills or understanding of computer science (or any subject for that matter), then one must remain active in that pursuit. I wrote an essay on asking smart questions earlier this semester. I think this is an extension of that topic, and the better we develop the skills to ask good questions, the better we can improve in both the classroom, and in our future professions.