[HN Gopher] AI copilots are changing how coding is taught
___________________________________________________________________
AI copilots are changing how coding is taught
Author : Brajeshwar
Score : 34 points
Date : 2024-05-03 15:13 UTC (7 hours ago)
(HTM) web link (spectrum.ieee.org)
(TXT) w3m dump (spectrum.ieee.org)
| smokel wrote:
| > _Students can spend more time on optimization, ethical issues,
| and the user-friendliness of a system rather than focusing on the
| syntax of the code_
|
| And when they land a job in the industry, where exactly are the
| optimization and ethics when transforming XML into JSON and back
| again?
|
| I might be in the wrong company, but I see most developers do
| extremely mundane tasks. At university, they have learned to code
| Dijkstra's algorithm blindfolded, but they never get to implement
| it again, because it is already available in a library.
|
| The real added value of a developer is to transform human
| requirements into code. Transforming the human requirements into
| prompts, which are then automatically transformed into code is a
| big win, but I wonder if it will change things at a fundamental
| level. We are already way too smart for the jobs we do.
| simonw wrote:
| I've been programming for 25 years. Thanks to LLM assistance I
| hope to never have to hand-write code that converts XML to JSON
| ever again.
|
| (Last night I ended up writing that kind of code because GPT-4
| didn't quite get it right for me, but 90% of my code like that
| has been LLM-created in the past 6 months and I look forward to
| that creeping closer to 100%)
| ado__dev wrote:
| I think us folks that have been coding for 20+ years can
| properly utilize AI coding assistants because we can take the
| code it spits out and usually understand it pretty quickly
| and debug it if needed. It's just a skill that comes from
| writing code for so long.
|
| I have seen many jr level programmers struggle with AI coding
| assistants because they ask a question, get some code, paste
| it in, realize it doesn't work, but don't know why or the
| right questions to ask to properly debug it and get it
| working.
| jaredsohn wrote:
| then they should ask the ai questions about it to learn.
| Even ask it what the right questions are if needed.
| lupire wrote:
| Does that work?
|
| Can a novice an LLM into coaxing requirements out of the
| novice?
| kolinko wrote:
| Yes. You ask an LLM to ask you questions until it's clear
| what you want to do.
| ado__dev wrote:
| You can do this, and sometimes it works, but more often
| than not it does not. it's basically the blind leading
| the blind. With the current state of LLM hallucinations,
| it's very easy to be given bad or outright wrong answers,
| and if you don't know any better (which as a jr you
| probably don't) you'll just end up running in circles.
|
| I think this will def get better over time though.
| kolinko wrote:
| As for jr programmers, otherwise they'd spend time trying
| to find a stackoverflow answer :)
| ado__dev wrote:
| Nothing wrong with SO or even using an AI assistant as a
| jr. You should use any tool that helps you, but I still
| believe nothing beats practice and doing some manual
| coding to really learn and understand the concepts.
| Workaccount2 wrote:
| I can only imagine that given current trends, this period of
| "LLM writes boilerplate/broken code and SWE builds on
| it/fixes it" will be incredibly fleeting.
| mrcode007 wrote:
| Why would you write code for that? It's just a few lines of
| XSLT!
| simonw wrote:
| XSLT is the perfect example of a technology that I might
| consider using today if I can get an LLM to do all of the
| work for me - see also jq and AppleScript which I use
| frequently now after avoiding them both for years.
| mrcode007 wrote:
| I think you missed the point. People attempt to solve
| problems with LLMs that are problems only to them because
| they are unaware of existing solutions that have solved
| the these "problems" a long time ago. If you don't know
| something exists, you can't ask an LLM about it.
| simonw wrote:
| Asking "give me options for" is one of my go-to prompts
| for this kind of thing.
|
| I just tried "Give me options for converting XML to JSON"
| and XSLT was 5th out of the 6 it gave me:
|
| https://chat.openai.com/share/85aa3e93-f557-426c-b0ce-f3b
| ce7...
| tibbydudeza wrote:
| I stand on the shoulders of giants - all the kind folks who
| freely contributed to the Python package system.
|
| I can now spend time solving actual problems rather than
| reinventing the wheel.
| zer00eyz wrote:
| You (and i) are more of a raccoon picking though a dumpster
| looking for working scraps of code that you can glue
| together.
|
| Let's be candid, we all have package management Stockholm
| syndrome to some degree... the reality is that our laziness
| keeps us going back for more.
|
| The performance gain comes at the cost of not knowing how
| some large percentage of your stack works or if it is going
| to be the next XZ.
|
| Im not going to stop using packages, because that would
| suck, but I'm not so rosy eyed about them any longer. There
| are lots of problems in ecosystems and we're bad about
| addressing them.
| bugfix wrote:
| It's a great tool when you can actually read and understand
| the code AI is feeding you. When you don't really know how
| the language works or don't know programming in general, you
| end up getting stuck trying to guess why this valid piece of
| code (that _looks_ like it should do what you asked the LLM
| for), is not working properly.
| t-writescode wrote:
| > where exactly are the optimization and ethics when
| transforming XML into JSON and back again?
|
| What's are the XML and JSON being used for?
|
| If you're working for a company, you almost certainly aren't
| working for the "XML to JSON, library salesperson" company,
| you're probably connecting different API endpoints. What do
| those endpoints do? Do _they_ do ethical things?
| avgDev wrote:
| This is actually what sucks about interviewing. My work is
| mostly working with managers/executives to deliver them a
| solution, I provide tremendous value to the business. I am full
| stack dev and can write a complete solution with tests, CI/CD
| pipelines and setup infrastructure.
|
| I once interviewed and was asked what is the difference between
| thread and a task. I provided a 'dumb' correct answer because I
| did not remember the text book definition, as I have been out
| of school for several years. The interviewer ignored everything
| I've said and told me "Actually, it's <insert textbook
| defintion>".
|
| It almost seems that computer science teaches you too much of
| the theory and not enough of "get shit done".
|
| I really enjoyed computer science and graduated with honors,
| but writing business code is kind of meh and boring. I know
| people who dropped out of CS due to having a hard time with
| algorithms and more advanced courses. I feel like they should
| have stayed and would do fine doing boring work. However,
| nobody tells you this, there seems to be a lot of gatekeeping
| in tech.
| kolinko wrote:
| A dev who coded Dijkstra will catch up with any new framework
| in no time. A dev who never went into algorithms will not even
| know how to program some things and where to find information.
|
| Having worked with both kinds - I'll take a dev with experience
| in algorithms and no knowledge of a framework we need to use
| over an opposite. Especially in times of GPT, where gpt will
| allow you to switch to a new framework in no time, but struggle
| with anything besides the boilerplate code structure.
| Maxatar wrote:
| >And when they land a job in the industry, where exactly are
| the optimization and ethics when transforming XML into JSON and
| back again?
|
| The programmers who are mostly only capable of doing this kind
| of grudge work will lose their jobs and need to transition and
| adapt to a new form of grudge work.
|
| And yes, as you point out, that's a lot if not most of them.
| smokel wrote:
| I must admit that my post was not very clear (reflecting the
| current state of my thoughts about this matter), but what I
| meant to say is exactly the opposite of your suggestion.
|
| Some people believe that AI will take our jobs, but my point
| is that our work is already practically trivial, yet for some
| odd reason we are still in short supply.
|
| As much as some of us have become JIRA slaves, our future
| generations will probably become AI slaves. True creative
| programming is beholden to a very select group of people,
| simply because there is so little demand for new things.
| winterrx wrote:
| > _Professors are shifting away from syntax and emphasizing
| higher-level skills_
|
| As it should be.
| ithgub wrote:
| How so?
|
| Programming IS syntax.
|
| If you want higher-level /skills/ you need foundational skills.
|
| If you want higher-level understanding, well that's what pop
| sci is for.
| doctorpangloss wrote:
| I'm not sure why you're being downvoted. Among all CS
| students, when they are weak, the #1 problem I observe is a
| poor ability to "see" code down to the character. They
| literally do not notice mistakes. I've seen their ChatGPT
| histories, their questions are too vague. It's two sides of
| the same coin.
| mrkeen wrote:
| > Programming IS syntax.
|
| And writing a novel is spelling.
| VyseofArcadia wrote:
| I would argue that spelling is a prerequisite for writing a
| novel.
| Jtsummers wrote:
| Prerequisite, yes, but it is not the thing itself. Just
| because you can spell doesn't mean you can write a novel,
| or every Spelling Bee winner should become an award
| winning novelist. The meaning of the words, the structure
| of the novel, characterizations, etc. all matter as well,
| and are ultimately much more important than just spelling
| things correctly.
|
| Defining programming as just syntax is nonsense. The
| SHOUTED IS (like we're on AOL again for some reason)
| places outsized emphasis on syntax. Either that it is
| "just syntax" as randomdata wrote or the majority of
| programming as the SHOUTED IS could also imply, makes no
| sense. Just creating a syntactically valid program is
| insufficient for creating a correct or useful program,
| just as correctly spelling a string of words is not
| enough to create a novel.
| xboxnolifes wrote:
| Programming most definitely isn't syntax. When I visualize
| software solutions in my head, not a single bit of code is up
| there. Syntax is just a textual representation of concepts.
| randomdata wrote:
| _> When I visualize software solutions in my head, not a
| single bit of code is up there._
|
| If you envision a mechanical solution without anything like
| a mill or lathe up there, do you consider yourself to be
| machining?
|
| _> Syntax is just a textual representation of concepts._
|
| Mechanical parts are just the metal (or whatever material)
| representation of concepts. Does programming not refer to
| processes around taking those concepts and turning them
| into something 'tangible' of a certain variety?
|
| It seems to me that programming is, in fact, just syntax
| (within some loose interpretation). As you call attention
| to, syntax doesn't mean much in a vacuum, but the bigger
| picture that includes thinking about concepts usually gets
| the "engineering" moniker.
| pipes wrote:
| "Understanding doesn't build fluency; instead, fluency builds
| understanding"
|
| Someone else on HN pointed out this great quote from here (my
| memory might have altered it slightly)
|
| https://nautil.us/how-i-rewired-my-brain-to-become-fluent-in...
|
| Written by the person who wrote the book "a mind for numbers"
|
| Anyway, this idea about teaching how to use AI is backwards: Good
| luck debugging code you aren't skilled enough to write.
| VyseofArcadia wrote:
| I'm waiting for "Google Translate is changing the way languages
| are taught."
|
| "Students don't need to learn grammar and syntax and really any
| vocabulary. AI assistance lets them understand higher level
| German concepts without needing to know how to conjugate for
| gender and number or remember if a noun uses der, die, or das."
|
| You see a lot of examples of things that seem absurd when
| applied to non-technical topics, but as soon as you apply them
| to computers all skepticism goes out the window. If I told you
| I have a person who speaks perfect English but frequently lies
| and outright makes things up, you'd say that's a politician and
| not to be trusted. But if I say I have a computer with those
| same properties, suddenly it's the most amazing thing in the
| world, and we should implicitly trust it to make our decisions
| and educate our children.
| pixl97 wrote:
| >you'd say that's a politician and not to be trusted
|
| And yet, it seems that kind of politician is common and
| seemingly rules the world at this point. I'll let you decide
| what that means for the future of humanity.
| lupire wrote:
| German _is_ the lower level concept. I express a concept in
| my language and the machine translates it.
| VyseofArcadia wrote:
| I feel like you're missing the point. If you're having a
| machine translate it for you, you aren't learning German.
| Similarly, if you're having a machine translate an English-
| language request into Python, you aren't learning Python.
|
| To say that, as the article says, "Professors are shifting
| away from syntax and emphasizing higher-level skills"
| essentially means "Professors have stopped teaching
| programing languages and have started teaching how to turn
| natural language problems into AI prompts."
|
| Higher-level problem solving skills _are_ important, but I
| am skeptical of eschewing a lower-level foundation in favor
| of only teaching higher-level problem solving skills.
| guitarlimeo wrote:
| Thanks for this, really helps ground the current situation
| for me.
|
| But as another commenter said, the analogy isn't 1:1. The
| example would be "Students don't need to learn German, they
| can just use Google translate for their time in Germany (and
| be hated for it by the locals)"
| VyseofArcadia wrote:
| Ah, but the analogy isn't about using German. It's about
| _learning_ German. If I signed up for a German class and
| what they taught me was how to use Google translate, I 'd
| be pretty angry.
| pixl97 wrote:
| > Good luck debugging code you aren't skilled enough to write
|
| I mean, at the end of the day I am not a coder, therefore any
| code I debug I'm probably not good enough to write, yet I've
| found numerous bugs in both open source and proprietary code
| with suggestions on how to fix it.
| dig1 wrote:
| > Good luck debugging code you aren't skilled enough to write.
|
| We already have this problem, even without the LLM-generated
| code. I see younger developers pull out all sorts of tiny
| libraries because a) they think it will save them time, b) they
| are insecure about the correctness of their code, and c) they
| often have no idea where to start when problems start to happen
| (solving problem is usually writing a github ticket or blindly
| trying another library).
|
| I think LLMs will exacerbate the problem. These days I rarely
| see engineering spirit in figuring out how things work, willing
| to understand deeply OS or compiler internals, or even trying
| some crazy ideas, like "let's write a JIT to speed up our DSL".
| theshrike79 wrote:
| "Debugging is twice as hard as writing the code in the first
| place. Therefore, if you write the code as cleverly as
| possible, you are, by definition, not smart enough to debug
| it." - Kernighan's Law
|
| With an LLM it is possible to write code that's too "clever",
| thus you won't be able to debug it. And in many cases neither
| can the LLM.
| hinkley wrote:
| I worry for the next generation. I loved math until college. I
| was in a hurry to get gen-ed and general engineering classes out
| of the way so I signed up for an accelerated math class that was
| one of if not the very first pilot program to teach calculus with
| Mathematica. It also collapsed three semesters into two.
|
| I learned first hand why teachers want you to master the
| fundamentals before reaching for a calculator. Most of the time
| if I couldn't figure out how to solve the problem, I would
| reverse engineer the steps from the solution. But I wasn't really
| learning how to think about the problems for myself.
|
| I did abysmally on every single test. I got a B- in the class
| only because the homework was weighted ridiculously high and I
| had a >95% on that portion of my grade.
|
| How to not recreate that failure mode will probably be this
| generation's big crisis.
| itishappy wrote:
| Similar story here with high school calc. My TI-89 had a better
| CAS than the TI-84. It's been 16 years, and I often find myself
| wishing I knew how to do basic integrals.
|
| I get by, but I often feel a bit handicapped vs my peers. Like
| building a house on a shaky foundation.
| teaearlgraycold wrote:
| It all depends on your life, but for me just knowing when to
| use integrals and derivatives is plenty.
| itishappy wrote:
| Totally agree, I definitely use more calculus than most!
| Wolfram Alpha and the like also make up most of the gap.
|
| The main issue I run into is manipulating mental models,
| visualizing how they interact and combine.
|
| If I were to try to make a programming analogy, it feels
| like I know how to work with `fold`s but don't understand
| recursion.
| tombert wrote:
| I'm all for moving to higher-level skills, when I was an adjunct
| professor I usually didn't put a huge emphasis on syntax unless I
| thought it was important to explain a concept, and I very rarely
| took off points for syntax.
|
| That said, I don't know that I would allow AI for learning to
| code in the class. I do not consider "prompt engineering" to be a
| substitute for programming, and it's very easy to get AI to write
| some code and copypaste it, not understand anything it said, and
| be done.
|
| Last year, when I was administering a test, I said that they were
| allowed to use any IDE they wanted, but they could not use any AI
| assistance. I am pretty convinced one student just copypasted my
| test questions into ChatGPT or BingAI and then copied the
| answers. I didn't have a way to prove it so I had to give him the
| benefit of the doubt and grade it assuming he did it honestly.
|
| Before someone says "YOU SHOULD TEACH THEM TO USE THE AI TOOLS
| LOL THAT'S THE FUTURE!!!", stop. That's not true, not yet at
| least. Just because I can call an Uber doesn't mean I get to say
| I know how to drive. Just because I can go to McDonalds doesn't
| mean I get to say I know how to cook. I was teaching them how to
| write Java and Python, the goal of the class was for them to
| learn Java and Python, it wasn't learning how to copypaste into
| OpenAI.
| kolinko wrote:
| I'd say that especially because assistants are not good enough
| yet, it makes sense to allow students to use them. LLMs will
| produce output that is messed up, students will spend time
| figuring out how to fix that and learn the language grammar
| this way.
|
| I recently learned Swift & Metal this way - knowing Python and
| other languages, I kept pasting my pseudo-code, asking GPT to
| convert it into Metal/Swift, and then iterating on that. Took
| me a week or two to get the language without reaching for any
| sort of manual/tutorial. Speaking from experience - it would
| take me 2-4x as much time to learn the same thing otherwise.
|
| If GPT was any better, I'd have no need to fix the code, and I
| wouldn't learn as much.
| tombert wrote:
| I want to emphasize that I'm not really a luddite here. I pay
| for ChatGPT (well, Kagi Professional), I use it daily, and I
| do think it's a very valuable learning tool. I even
| encouraged my students to use it outside of class if they
| needed help with any of the theory.
|
| I use ChatGPT all the time for learning new stuff, but a) I
| already know how to program well enough to teach a class on
| it, and b) it's a supplement to doing stuff on my own,
| without AI help. I don't feel I learn that much from just
| copying and pasting.
|
| Totally agree with your process though; correcting and
| arguing with ChatGPT is an insanely good way to learn stuff.
| It's really helped me get better at TLA+ and Isabelle proofs.
| swatcoder wrote:
| > I do not consider "prompt engineering" to be a substitute for
| programming
|
| It's also not nearly mature enough for learning it be a good
| ROI in a degree program. Community college or adult education
| class? Maybe. Bootcamp track? Sure, I guess. Novelty elective
| for a few easy credits and some fun? Totally.
|
| But if I'm a student in the midst of a prolonged, expensive
| program spanning years, learning how to coax results out of
| _today 's_ new generative AI tooling is not preparing me very
| well at all for what I can expect when I try to enter the
| workforce 2 or 4 or 8 more years. The tools and the ways to
| interface them, "Prompt Engineering" or whatever else it's
| called will inevitably evolve dramatically between now and
| then. So why am I learning it while I'm still deep in my
| academic bubbles? And what are prospective employers getting
| from a degree that focused heavily on some now-defunct and
| dated techniques? My degree is supposed to mean that I've
| learned foundational material and am ready to be productive on
| something, but what that mean when too much of what I've
| learned is outdated?
| tombert wrote:
| If there were a class called "Utilizing AI for software
| engineering" or something, even at the university level, that
| wouldn't bother me.
|
| What bothers me is that people have told me that I should
| just allow AI for literally everything because it's the
| future and you should be teaching them the future or
| something, but I think that's kind of dumb. In those classes,
| the goal was for them to leave having some competence in with
| Python, Java, and Object Oriented programming, and I firmly
| do not believe you can get an understanding of that just by
| copying and pasting from ChatGPT, and I think even Copilot
| might hinder the process a bit.
|
| To be clear, I love ChatGPT, I use it every day, it's a very
| valuable tool that people probably should learn how to use, I
| just don't feel that it's a substitute for actually learning
| new stuff.
| hollywood_court wrote:
| I have yet to find an AI tool or combination of AI tools that
| can hold my hand and give me correct solutions for my coding
| problems.
|
| I have worked exclusively with React/Next, Node, and Mongo for
| years until I took over a legacy code base in October.
|
| I had to teach myself Python/Flask, Vue, and Laravel without
| any kind of documentation or guidance from the previous
| developers or anyone else in my company.
|
| AI has been able to help me get a bit further down the road
| each time I run into an issue. But AI hasn't been able to hand
| me perfect solutions for any of my problems. It helps me better
| understand the existing code base, but thus far none of the
| answer provided have been 100% accurate.
| visarga wrote:
| Real world tasks don't fit in a chat window, and using AI is
| barely an improvement over not using it. Just from one of my
| latest LLM coding adventures: it gets versions wrong, imports
| wrong, messes up versioning when learning documentations,
| resulting in many wasted hours. It's ok to fill in boilerplate,
| not ok to help you do things you couldn't do without AI.
|
| If anything, it's like cooking with kids, not like going to
| McDonalds. I'd give extra points if they can solve it with LLM
| in time.
| esafak wrote:
| I was listening to the Clean Code audiobook, and the author made
| the case that every programming paradigm introduced restrictions
| into what the programmer was allowed to do; i.e., operated at a
| higher level of abstraction. The author then claimed that since
| the existing paradigms all came out in quick succession without
| any new paradigms in decades, and there was no power left to
| strip, no new paradigms would be likely to emerge.
|
| And here we are in 2024 watching the emergence of natural
| language programming, where we merely describe the program's
| specification in natural language and have the computer generate
| the rest. There's your new paradigm.
| itsoktocry wrote:
| > _I was listening to the Clean Code audiobook_
|
| Interesting. How is the book in audio format?
|
| As a "must read" book that no one actually reads, that may take
| the edge off.
| esafak wrote:
| It's dry, and paced leisurely enough to listen to while
| driving without causing distractions. I get it with my
| Spotify subscription:
|
| https://open.spotify.com/show/6xeQtXlzLYZUm7LlnWhSoU
| atleastoptimal wrote:
| by the time current freshmen graduate, even AI-first CS education
| will be outdated. There will be no new jobs left for humans, only
| the old incumbents clinging to their tenure as all knowledge work
| is automated
| sjrd wrote:
| IMO most proposed changes to teaching using AI are misguided. My
| philosophy regarding AI copilots and teaching is: as calculators
| are for those who already know how to compute, so are AI copilots
| for those who can already develop software. They are tools to
| leverage when you know the craft, to accelerate. They are not
| there to do what you don't understand.
| theshrike79 wrote:
| AI tools are multipliers, if your skill level is zero the
| result will still be zero.
| Jackson_Fleck wrote:
| LLMs are like interactive SO without the sarcasm.
|
| I think a lot of people who have abstract problem solving skills
| don't want to make tic tac toe games and to-do lists. They just
| want to get on and code, building what they want. LLMs are great
| for throwing you in the deep end.
|
| If the code doesn't work and you're in a complete mess about
| debugging it - that's great. It'll force you to think through the
| WHY and HOW far more carefully than writing some stupid Hello
| World thing or doing another tutorial. You end up reading the
| documents and wrestling with ideas.
|
| Best approach I find is to throw yourself at a LLM, then backfill
| your knowledge with books and resources, and speak to experienced
| people. That way you craft your own learning experience.
| Especially valuable if you just aren't surrounded by software
| engineers - you're forced to learn.
| sva_ wrote:
| Something else less related that I find _really_ useful about
| these chatbots is their ability to take some abstract explanation
| of some problem /attempts to tackle it, and it'll often spit out
| a name for it, and explain that this sort of problem is already
| well studied. That can be really difficult with other more
| traditional tools.
|
| I feel like this could be a big deal in science in general.
| People of different fields often do unnecessary extra work (as in
| reinventing the wheel) because they're not aware that there's,
| say, 10 years of research on it.
|
| To take an extreme example, just think of the poor fella doing
| medical research who rediscovered integration[0].
|
| 0. https://fliptomato.wordpress.com/2007/03/19/medical-
| research...
| redleggedfrog wrote:
| "We should be making AI a copilot--not the autopilot--for
| learning."
|
| Doesn't work. A friend has been a teacher, at a not cheap private
| school, for going on 25+ years now. What she sees at almost every
| level is an avalanche of LLM "cheating". Even when there is
| _extreme_ upfront emphasis on "this course is to help you learn,
| not just do whatever to find the 'correct' answers as quickly and
| easily as possible" the majority of students do the latter. She
| guesses that at least half are pasting in answers without even
| reviewing them. There are of course the few students that are
| there out of passion for learning, but those are the exceptions.
| This doesn't just apply to CS.
|
| There are cultural and political ramifications that make
| enforcing this difficult (read rich parents that want those good
| grades). So she struggles along trying to swim against the
| current of LLM answers.
|
| Quoting her directly, from about a month ago, "If they cannot
| type something into their phones and get an instant answer
| they're not interested."
| wuj wrote:
| I agree with the emphasis on high-level thinking and problem
| decomposition in current curriculum. The real craft of writing a
| program is abstracting components to interface with each other.
| AI tools suck with unclear instructions but excel at low-level
| implementations. The curriculum at my university is already
| designed to teach us the design and problem solving solving
| skills, and oftentimes I found those skills quite complementary
| to what AI tools can do.
___________________________________________________________________
(page generated 2024-05-03 23:01 UTC)