Artificial Non-Intelligence

16 Nov 2023

AI secrets

Table of Contents

NOTE: Text written by Co-Pilot is in italics.

This essay was written for the ICS 499 course at the University of Hawaii at Manoa. It is a reflection on the use of Artificial Intelligence (AI) in the ICS 314 Software Engineering course. The AI used was GitHub Co-Pilot and Chat-GPT.

I Introduction

Artificial Intelligence is a wondrous tool. It can be used to create art, music, and literature. But at the heart, it is not intelligent, it is not creative, it is a hazy reflection of humanity. I do not think that AI is a good tool for software engineering students, and I do not think that it will be for a while. I have been writing code for 40 years, and I have seen the evolution of AI from the 90s to today. I have seen the code generators of the 90s, and I have seen the AI of today. I

II Personal Experience with AI

I toyed with Co-Pilot at the start of the semester when I got my GitHub Student pass, and I tried ChatGPT at the behest of my ICS 314 Software Engineering professor. I found them lacking in the ability to create something new, something that I could not have done myself. They did not read my mind, and if I could not fully explain what I wanted, they could not help me. More often then not, when I did try them, I found that they were not generating the code that I wanted.

I am giving Co-Pilot another try with the Final Project. But I have found that unless there is sufficient code to train it on, it is not very useful. I have also found that is generates a lot of words that are redundant when creating documentation. Very rarely does it generate something that is useful.

1. Experience WODs

I though it important that I use my own skills and knowledge on the Workout of the Day (WOD) exercises. I did not want to use Co-Pilot or Chat-GPT to generate the code for me, because I would not learn anything.

2. In-class Practice WODs

Even though these were practice, and not graded, I still wanted to do them myself. I did not want to use Co-Pilot or Chat-GPT to generate the code for me, because I would not learn anything.

3. In-class WODs

I did not use Co-Pilot or Chat-GPT for these, because I wanted to show I to do them myself. I did not want to use Co-Pilot or Chat-GPT to generate the code for me, because I would not learn anything.

4. Essays

Co-Pilot tried to help me with the essays, this one to be exact, but I found that it was not very useful. It generated a lot of words that were redundant, and did not help me with the structure of the essay. When I wrote “Co-Pilot suggested “Cable”,” it came up with “as a variable name. It also suggests “Cable” as a class name, but does not suggest “Cable” as a function name. I think that it is because there is not enough code to train it on. I have found that it is better at suggesting code completion hints than generating code from scratch.” Yes, those 4 sentences were generated by Co-Pilot as a suggested completion.

It also kept suggesting “I did not want to use Co-Pilot or Chat-GPT to generate the code for me, because I would not learn anything.” after every paragraph in this section after I wrote it once in the first paragraph.

5. Final project

I am using Co-Pilot for the Final Project, but I am finding that it is helpful only if there is sufficient existing code to train it on. Otherwise it generates code that is not useful in the least. I have found that it is better at suggesting code completion hints than generating code from scratch.

6. Learning a concept / tutorial

I relied on my own knowledge and experience to learn the concepts and tutorials.

7. Answering a question in class or in Discord

Again, I relied on my own knowledge and experience to answer questions in class or in Discord. Otherwise, I sat mute with the rest of the class.

8. Asking or answering a smart-question

I don’t think I should repeat myself, but my own knowledge and experience was all I needed to ask or answer a smart-question.

9. Coding example

I read the documentation and used my own knowledge and experience to find the coding examples for which I needed assistance.

10. Explaining code

40 years of writing code in various languages has given me the experience to explain code to others or myself.

11. Writing code

I do not trust the AI to write code for me. I have found that it is better at suggesting code completion hints than generating code from scratch.

12. Documenting code

Documentation? What is this documentation of which you speak. Klingon’s do not document their code.

But seriously, the AI suggestions are wordy and repetitive. I have found that it is better to write the documentation myself.

13. Quality assurance

Boy had I thought to use this for quality assurance, I would have not Did Not Finish (DNF) on WOD: JavaScript 2, as I misspelled the word ‘constructor’ in the code. My code wouldn’t run and I could not figure out why. An AI would have caught that mistake and suggested a fix.

14. Other uses in ICS 314 not listed

As you can guess, I am not a big fan of AI as the answer to doing my job for me. I have the skills and knowledge to know when to use it, and when not.

III Impact on Learning and Understanding

I do not think that AI has had any impact on my learning and understanding. If I did not have the experience I do, I would not be able to tell when it is giving me garbage or gold. The problems I had in the Workout of the Day (WOD) exercises were ones I could not explain what my problem was, so how could I get help from an AI?

IV Practical Applications

The best use that I have found for AI is to spot patterns in medical images that diagnose disease or injury faster and sooner than a human doctor. I heard of one case, however, were the AI was trained on images from a hospital that had a rulers in the images to help with scale where the disease was present. The AI was therefore trained to flag images with a ruler as being diseased.

V Challenges and Opportunities

The challenges that I have had were those that I could not explain to the AI what is was that I needed. Especially in the timed environments of the WODs. I did not feel that I could explain to the AI what I needed in the time allotted, and have time left to fix what the AI got wrong.

VI Comparative Analysis

We experienced an AI-enhanced approach to learning about software engineering? I don’t think the students who used AI-enhanced learning learned anything about software engineering. They learned how to use an AI, but not how to do write software.

VII Future Considerations

A lot of what I have learned over the years, besides writing elegant code, is how to do repetitive tasks quickly and efficiently. But Co-Pilot seems to only look at the current file, and does not look at the project as a whole. I think that if it could do that, and help me apply the pattern from one file to another, it would be more useful. I hearken back to the code generators of the 90s, that took a description of what you wanted, and generated the code for you. I think that is the future of AI in software engineering, but we are not there yet.

VIII Conclusion

AI has a long way to go before it is useful for novice software engineers. Too often, it generates code that is not useful, or is redundant. It cannot be trusted to give the right answer to someone that is not experienced enough to know when it is wrong. Also, what do you learn when the answer is given to you? You learn how to use the tool, but not how to do the work. I don’t have any suggestions for optimizing the integration of AI in future courses, because I don’t think it is a good idea.