Tootfinder

Opt-in global Mastodon full text search. Join the index!

No exact results. Similar results found.
@tiotasram@kolektiva.social
2025-08-04 15:49:00

Should we teach vibe coding? Here's why not.
Should AI coding be taught in undergrad CS education?
1/2
I teach undergraduate computer science labs, including for intro and more-advanced core courses. I don't publish (non-negligible) scholarly work in the area, but I've got years of craft expertise in course design, and I do follow the academic literature to some degree. In other words, In not the world's leading expert, but I have spent a lot of time thinking about course design, and consider myself competent at it, with plenty of direct experience in what knowledge & skills I can expect from students as they move through the curriculum.
I'm also strongly against most uses of what's called "AI" these days (specifically, generative deep neutral networks as supplied by our current cadre of techbro). There are a surprising number of completely orthogonal reasons to oppose the use of these systems, and a very limited number of reasonable exceptions (overcoming accessibility barriers is an example). On the grounds of environmental and digital-commons-pollution costs alone, using specifically the largest/newest models is unethical in most cases.
But as any good teacher should, I constantly question these evaluations, because I worry about the impact on my students should I eschew teaching relevant tech for bad reasons (and even for his reasons). I also want to make my reasoning clear to students, who should absolutely question me on this. That inspired me to ask a simple question: ignoring for one moment the ethical objections (which we shouldn't, of course; they're very stark), at what level in the CS major could I expect to teach a course about programming with AI assistance, and expect students to succeed at a more technically demanding final project than a course at the same level where students were banned from using AI? In other words, at what level would I expect students to actually benefit from AI coding "assistance?"
To be clear, I'm assuming that students aren't using AI in other aspects of coursework: the topic of using AI to "help you study" is a separate one (TL;DR it's gross value is not negative, but it's mostly not worth the harm to your metacognitive abilities, which AI-induced changes to the digital commons are making more important than ever).
So what's my answer to this question?
If I'm being incredibly optimistic, senior year. Slightly less optimistic, second year of a masters program. Realistic? Maybe never.
The interesting bit for you-the-reader is: why is this my answer? (Especially given that students would probably self-report significant gains at lower levels.) To start with, [this paper where experienced developers thought that AI assistance sped up their work on real tasks when in fact it slowed it down] (arxiv.org/abs/2507.09089) is informative. There are a lot of differences in task between experienced devs solving real bugs and students working on a class project, but it's important to understand that we shouldn't have a baseline expectation that AI coding "assistants" will speed things up in the best of circumstances, and we shouldn't trust self-reports of productivity (or the AI hype machine in general).
Now we might imagine that coding assistants will be better at helping with a student project than at helping with fixing bugs in open-source software, since it's a much easier task. For many programming assignments that have a fixed answer, we know that many AI assistants can just spit out a solution based on prompting them with the problem description (there's another elephant in the room here to do with learning outcomes regardless of project success, but we'll ignore this over too, my focus here is on project complexity reach, not learning outcomes). My question is about more open-ended projects, not assignments with an expected answer. Here's a second study (by one of my colleagues) about novices using AI assistance for programming tasks. It showcases how difficult it is to use AI tools well, and some of these stumbling blocks that novices in particular face.
But what about intermediate students? Might there be some level where the AI is helpful because the task is still relatively simple and the students are good enough to handle it? The problem with this is that as task complexity increases, so does the likelihood of the AI generating (or copying) code that uses more complex constructs which a student doesn't understand. Let's say I have second year students writing interactive websites with JavaScript. Without a lot of care that those students don't know how to deploy, the AI is likely to suggest code that depends on several different frameworks, from React to JQuery, without actually setting up or including those frameworks, and of course three students would be way out of their depth trying to do that. This is a general problem: each programming class carefully limits the specific code frameworks and constructs it expects students to know based on the material it covers. There is no feasible way to limit an AI assistant to a fixed set of constructs or frameworks, using current designs. There are alternate designs where this would be possible (like AI search through adaptation from a controlled library of snippets) but those would be entirely different tools.
So what happens on a sizeable class project where the AI has dropped in buggy code, especially if it uses code constructs the students don't understand? Best case, they understand that they don't understand and re-prompt, or ask for help from an instructor or TA quickly who helps them get rid of the stuff they don't understand and re-prompt or manually add stuff they do. Average case: they waste several hours and/or sweep the bugs partly under the rug, resulting in a project with significant defects. Students in their second and even third years of a CS major still have a lot to learn about debugging, and usually have significant gaps in their knowledge of even their most comfortable programming language. I do think regardless of AI we as teachers need to get better at teaching debugging skills, but the knowledge gaps are inevitable because there's just too much to know. In Python, for example, the LLM is going to spit out yields, async functions, try/finally, maybe even something like a while/else, or with recent training data, the walrus operator. I can't expect even a fraction of 3rd year students who have worked with Python since their first year to know about all these things, and based on how students approach projects where they have studied all the relevant constructs but have forgotten some, I'm not optimistic seeing these things will magically become learning opportunities. Student projects are better off working with a limited subset of full programming languages that the students have actually learned, and using AI coding assistants as currently designed makes this impossible. Beyond that, even when the "assistant" just introduces bugs using syntax the students understand, even through their 4th year many students struggle to understand the operation of moderately complex code they've written themselves, let alone written by someone else. Having access to an AI that will confidently offer incorrect explanations for bugs will make this worse.
To be sure a small minority of students will be able to overcome these problems, but that minority is the group that has a good grasp of the fundamentals and has broadened their knowledge through self-study, which earlier AI-reliant classes would make less likely to happen. In any case, I care about the average student, since we already have plenty of stuff about our institutions that makes life easier for a favored few while being worse for the average student (note that our construction of that favored few as the "good" students is a large part of this problem).
To summarize: because AI assistants introduce excess code complexity and difficult-to-debug bugs, they'll slow down rather than speed up project progress for the average student on moderately complex projects. On a fixed deadline, they'll result in worse projects, or necessitate less ambitious project scoping to ensure adequate completion, and I expect this remains broadly true through 4-6 years of study in most programs (don't take this as an endorsement of AI "assistants" for masters students; we've ignored a lot of other problems along the way).
There's a related problem: solving open-ended project assignments well ultimately depends on deeply understanding the problem, and AI "assistants" allow students to put a lot of code in their file without spending much time thinking about the problem or building an understanding of it. This is awful for learning outcomes, but also bad for project success. Getting students to see the value of thinking deeply about a problem is a thorny pedagogical puzzle at the best of times, and allowing the use of AI "assistants" makes the problem much much worse. This is another area I hope to see (or even drive) pedagogical improvement in, for what it's worth.
1/2

@pre@boing.world
2025-06-26 17:04:54
Content warning: UKPol, Palestine Action, Email to my MP

Dear Emily Thornberry,
I don't usually bother to write to you on most issues because I figure there is pretty much no point communicating with a whipped MP in a safe seat under first past the post. Such an MP has no reason to listen to their constituents at all, and is entirely a tool of the party leadership.
I make an exception today since I hear your government is about to classify Palestine Action as a terrorist group. Despite them being peaceful, non-violent, and dedicated entirely to preventing the greater crime of the ongoing genocide of Gazan Palestinians.
This is obviously a gross overreaction and a completely unjustifiable act designed not to prevent domestic terrorism but to cover up British forces and UK government involvement and collaboration with the genocide in Gaza.
If we are taking suggestions for groups to ban as terrorists even though they aren't terrorists, I would like to suggest the Labour Party! The party has helped facilitate a genocide abroad, and continues to supply the perpetrators with arms and intelligence to aid their actions.
I don't expect you to take that suggestion seriously, but maybe Reform will take it seriously when they get elected in a few years and I suggest it again to them. After all, a precedent will have been set that groups which aren't terrorists can be banned under anti-terror legislation anyway. Democracy will have already been eroded.
I was ready to be disappointed by this Labour government, but I confess that the level of gut-wrenching visceral disgust I am experiencing at them surpassed all my wildest expectations. Taking money from the disabled to buy new war-planes from a fascist US president while abetting a genocide in Gaza makes me wonder if Reform wouldn't be better in the end anyway. At least they might do electoral reform and nationalize the water companies.
Labour's only hope, the country's only hope, is to remove Starmer. I wish you had won that leadership election instead of him.
Anyway, as I say, I don't expect it to make any difference at all because under this election system even MPs in safe seats are nothing but tools of the party leadership and the party leadership seems determined. But I thought I'd let you know that I see you. I see what you are doing.
I support Palestine Action more than I support this government. Let me know where I should hand myself in for my "crime".
Yours sincerely,
Adam

@hex@kolektiva.social
2025-07-16 22:25:58

War is an unconscionable horror. The illusions of "international law" and "rules of war" have lead us to believe that war can be clean, managed, and "civilized."
But wars are fought by humans and humans are messy. Humans are not well suited to following orderly rules. Humans respond to their environment. Humans in extraordinary situations can be extraordinarily vindictive and brutal. Sufficiently traumatized humans can act without a conscience, spreading trauma like an infection. If humans respond to their situation, then there can be no "civilized" war because war is itself an situation outside of the society. It is a place that promotes antisocial behavior and punishes pro-social behavior. War cannot be expected to follow "international law" because it is what fills the void created by the failure of "international law" (so long as we rely on nations).
To call for war is to inflict atrocities on civilians. It is to kill the parents and children who serve, and to destroy the combatants who survive. It is to infect both sides with a trauma that will spread if untreated, when soldiers come home or when they become mercenaries in other wars.
And yet... there are times when the brutality, the incompetence, the evil becomes so unbearable that no other option exists, when taking up arms is simply bringing symmetry to an existing asymmetric conflict. There are times when the worst possible thing is inescapable, though it can never be justified.
In this new era of war, in the scramble of conflict under the collapsing of the (poorly named) "Pax Americana," I hope that we, the people, can understand that war is not a tool to fulfill an objective. It is not part of a larger strategy. It is not an extension of deplomacy.
War is a failure.
While it may be the only way to deal with the irrational - the genocidal, the slaver, the dictator - it is still a failure. It is a failure to build a world in which these people can't control armies and economies, can't turn populations in to cults and bend nations to their will.
And we will continue to have such wars until we unite against those who would use as as pawns, who would control our lives and lead us to our deaths. We will have these wars until we unite, as one world, against those rulers. This is what I mean, and what a lot of other people mean, when we say, "No War, but Class War."

@arXiv_hepex_bot@mastoxiv.page
2025-07-04 08:45:11

Particle production and identification for the T10 secondary beamline of the CERN East Area
Maarten van Dijk, Ahsan Hayat, Dipanwita Banerjee, Johannes Bernhard, Berare Gokturk, Laurie Nevay, Jorgen Petersen, Martin Schwinzerl
arxiv.org/abs/2507.02567

@bici@mastodon.social
2025-07-17 16:14:05

The golfers taking part in the 'Hickory Golf' event at the Royal Ashburn Golf Club in Whitby, many of whom are among the 150 members of the of Golf Historical Society of Canada. They share an interest in the history of golf and the craftsmanship of clubs from a bygone era.
#realGolf

via @…

The image shows a group of eleven men standing on a golf course, posing for a photo. They are holding golf clubs and are dressed in a variety of colorful and vintage-style clothing. The men are wearing different types of hats, including flat caps and caps, and some are sporting ties and suspenders. Their attire includes a mix of shorts and long pants, with some wearing knee-length kilts. The men are standing in a line, with some having their arms around each other, suggesting camaraderie. The b…
@StephenRees@mas.to
2025-05-30 16:53:28

Put away pipelines, go with grids!
By David Suzuki with contributions from Senior Editor and Writer Ian Hanington
It’s good to see ideas such as increasing self-sufficiency and diversifying trade partners emerging in response to U.S. attacks on Canada’s economy and threats to our sovereignty. As usual, though, the fossil fuel industry and its supporters are taking advantage of this “crisis” to push for more oil and gas infrastructure, particularly pipelines.

@arXiv_quantph_bot@mastoxiv.page
2025-07-29 11:34:51

Optimization and Synthesis of Quantum Circuits with Global Gates
Alejandro Villoria, Henning Basold, Alfons Laarman
arxiv.org/abs/2507.20694

@tiotasram@kolektiva.social
2025-07-31 16:25:48

LLM coding is the opposite of DRY
An important principle in software engineering is DRY: Don't Repeat Yourself. We recognize that having the same code copied in more than one place is bad for several reasons:
1. It makes the entire codebase harder to read.
2. It increases maintenance burden, since any problems in the duplicated code need to be solved in more than one place.
3. Because it becomes possible for the copies to drift apart if changes to one aren't transferred to the other (maybe the person making the change has forgotten there was a copy) it makes the code more error-prone and harder to debug.
All modern programming languages make it almost entirely unnecessary to repeat code: we can move the repeated code into a "function" or "module" and then reference it from all the different places it's needed. At a larger scale, someone might write an open-source "library" of such functions or modules and instead of re-implementing that functionality ourselves, we can use their code, with an acknowledgement. Using another person's library this way is complicated, because now you're dependent on them: if they stop maintaining it or introduce bugs, you've inherited a problem, but still, you could always copy their project and maintain your own version, and it would be not much more work than if you had implemented stuff yourself from the start. It's a little more complicated than this, but the basic principle holds, and it's a foundational one for software development in general and the open-source movement in particular. The network of "citations" as open-source software builds on other open-source software and people contribute patches to each others' projects is a lot of what makes the movement into a community, and it can lead to collaborations that drive further development. So the DRY principle is important at both small and large scales.
Unfortunately, the current crop of hyped-up LLM coding systems from the big players are antithetical to DRY at all scales:
- At the library scale, they train on open source software but then (with some unknown frequency) replicate parts of it line-for-line *without* any citation [1]. The person who was using the LLM has no way of knowing that this happened, or even any way to check for it. In theory the LLM company could build a system for this, but it's not likely to be profitable unless the courts actually start punishing these license violations, which doesn't seem likely based on results so far and the difficulty of finding out that the violations are happening. By creating these copies (and also mash-ups, along with lots of less-problematic stuff), the LLM users (enabled and encouraged by the LLM-peddlers) are directly undermining the DRY principle. If we see what the big AI companies claim to want, which is a massive shift towards machine-authored code, DRY at the library scale will effectively be dead, with each new project simply re-implementing the functionality it needs instead of every using a library. This might seem to have some upside, since dependency hell is a thing, but the downside in terms of comprehensibility and therefore maintainability, correctness, and security will be massive. The eventual lack of new high-quality DRY-respecting code to train the models on will only make this problem worse.
- At the module & function level, AI is probably prone to re-writing rather than re-using the functions or needs, especially with a workflow where a human prompts it for many independent completions. This part I don't have direct evidence for, since I don't use LLM coding models myself except in very specific circumstances because it's not generally ethical to do so. I do know that when it tries to call existing functions, it often guesses incorrectly about the parameters they need, which I'm sure is a headache and source of bugs for the vibe coders out there. An AI could be designed to take more context into account and use existing lookup tools to get accurate function signatures and use them when generating function calls, but even though that would probably significantly improve output quality, I suspect it's the kind of thing that would be seen as too-baroque and thus not a priority. Would love to hear I'm wrong about any of this, but I suspect the consequences are that any medium-or-larger sized codebase written with LLM tools will have significant bloat from duplicate functionality, and will have places where better use of existing libraries would have made the code simpler. At a fundamental level, a principle like DRY is not something that current LLM training techniques are able to learn, and while they can imitate it from their training sets to some degree when asked for large amounts of code, when prompted for many smaller chunks, they're asymptotically likely to violate it.
I think this is an important critique in part because it cuts against the argument that "LLMs are the modern compliers, if you reject them you're just like the people who wanted to keep hand-writing assembly code, and you'll be just as obsolete." Compilers actually represented a great win for abstraction, encapsulation, and DRY in general, and they supported and are integral to open source development, whereas LLMs are set to do the opposite.
[1] to see what this looks like in action in prose, see the example on page 30 of the NYTimes copyright complaint against OpenAI (#AI #GenAI #LLMs #VibeCoding