Sign in

Daniel Patterson

@dbp.bsky.social
168 followers 68 following 49 posts

Assistant Teaching Prof @ Northeastern. Programming Languages, Types, Language Interoperability. Opinions my own, not my employers.

PostsRepliesMedia
Reposted by Daniel Patterson
Amy Littlefield @amylittlefield.bsky.social · 08/08/2026
POV: You got asked about the new CDC director hunting for “hidden abortions.” “On the one hand, Amy, I want to make a joke about this, because ‘find the hidden abortion’ sounds like a terrible board game that JD Vance makes his kids play on a Friday night.” www.democracynow.org/2026/8/7/bla...
democracynow.org
“Zombie Law from the Victorian Era”: DOJ Could Use 1873 Comstock Act to Ban Abortion Pills by Mail
Reproductive rights activists are alarmed over a pledge by acting Attorney General Todd Blanche to institute nationwide abortion restrictions. Blanche, whose confirmation for attorney general is curre...
097
Reposted by Daniel Patterson
ICFP Conference @icfp-conference.bsky.social · 10/06/2025
PLMW is calling for student applications -- if you are a student interested in ICFP/SPLASH 2025, consider applying! Deadline: July 15, AoE conf.researchr.org/home/icfp-sp...
conf.researchr.org
PLMW @ ICFP/SPLASH 2025 - ICFP/SPLASH 2025
The SPLASH-ICFP Programming Languages Mentoring Workshop encourages graduate students (PhD and MSc) and senior undergraduate students to pursue research in programming languages. This workshop will pr...
044
Daniel Patterson @dbp.bsky.social · 31/01/2025
Bleak state of peer review (a minor thing, in the grand scheme of things, but anyway) -- getting a message saying "please don't use AI tools to write your reviews".
020
Daniel Patterson @dbp.bsky.social · 28/01/2025
Innocent
000
Daniel Patterson @dbp.bsky.social · 10/01/2025
Probably your PL students won’t have this problem, but I remember doing a similar thing at the end of our accel intro class (simple interpreter, compiler, type checker) and sums ended up being way more challenging to students than we (ignorant PL people we are) thought they would be.
110
Daniel Patterson @dbp.bsky.social · 10/01/2025
Sorry, what’s tricky? Is the issue you want to be able to write interesting programs? If it’s supposed to be “little”, just add sums and products to STLC? But maybe that’s too simple?
110
Daniel Patterson @dbp.bsky.social · 10/01/2025
Trying to describe it all here is impossible (but those of us designing the courses will be releasing lots very soon), but -- 1. it's not about following trends; 2. I'm deeply committed to design orientation (it's why I'm teaching & why I'm teaching _here_), and don't see this as a departure.
060
Daniel Patterson @dbp.bsky.social · 09/01/2025
The reply is also something that drives me crazy. Yes, oil majors (and other corporations) are responsible for most emissions. They are responsible for much of the economy! Which you are part of! Organize to make systemic change (duh), but also... realize systemic change involves whole systems!
010
Daniel Patterson @dbp.bsky.social · 08/01/2025
I guess I'd argue that code should be written primarily to be read & secondarily to work! (so the analogy isn't perfect, but isn't horrible?) And what seems odd is: the largest artifacts students see (in our courses) are their own! And we could give them similarly sized ones that are well designed!
000
Daniel Patterson @dbp.bsky.social · 08/01/2025
Sure, either of those!
000
Daniel Patterson @dbp.bsky.social · 08/01/2025
The analogy (if I can continue it), would be if writing classes showed great examples of sentences, but no great essays, or books. Maybe its too hard for students, but... is it?
310
Daniel Patterson @dbp.bsky.social · 08/01/2025
Thanks! Peer review (even when done _pervasively_, like CaptainTeach), while related, is slightly different than what I was wondering about. e.g., in (English) writing class, you read examples of much better writing than you are currently capable of! We often show little examples, but not big ones.
110
Daniel Patterson @dbp.bsky.social · 08/01/2025
Here’s a question: if we believe reading code is as important as writing code (we do), why isn’t it a much more explicit part of our introductory classes? Students read examples, but not whole projects, and writing about / critiquing code is not typically an _explicit_ task. Unless others do this?
270
Daniel Patterson @dbp.bsky.social · 07/01/2025
Among many interesting parts are how/what these brilliant writers learned in order to teach. All were involved in the same remedial writing program, and so, e.g., Lorde talking of grammar to her students: "Guess what I found out last night. Tenses are a way of ordering the chaos around time."
000
Daniel Patterson @dbp.bsky.social · 05/01/2025
Winter break reading—wonderful book about a brief period when CUNY opened up to all NYC high school graduates (made it free, had explicit programs for people without strong backgrounds, etc), told through the teaching of four incredibly influential writers who all overlapped at City College.
Picture of book Open Admissions by Danica SavonickRich was the first to admit that City College catalyzed "a profound change in [her] conception of teaching and learning." On first arriving, she had hoped to discover an unlikely Shakespeare buried among mediocre students, whose gifts she could help cultivate. But immersed in the SEEK community, she came to see "compensatory" (or "remedial") education as part of a broader "movement for social change," the goal of which was to "break down false barriers of class & color to make all education truly open to all people who want it?" There, she realized that the "veins of possibility" run through all students and that the political potential of teaching lies not necessarily in mentoring a select handful of highly skilled individuals but in developing teaching strategies that would benefit all, regardless of their previous academic training, ability, or interest.
130
Daniel Patterson @dbp.bsky.social · 02/01/2025
I’d honestly love to try (something in this space). Not quite sure how I’d be able to spin it though. Hard to offer an introductory elective. Maybe an alternate to one of the intros for non majors (which are dead ends in terms of dependencies, so lower stakes)
000
Daniel Patterson @dbp.bsky.social · 01/01/2025
Hmm. Thats an interesting idea. I feel like for the _beginning_ (ie only writing types, purposes, tests), you need the speed of automation. But for the latter parts, where you are actually reading & discussing code, having (carefully constructed, by hand) implementations should work — and be better!
110
Daniel Patterson @dbp.bsky.social · 01/01/2025
I agree with you to the extent that “taught themselves with an LLM” means using tools intended for people who know how to code (or to prevent them from needing to). But I wonder if we are still thinking too small (not sure if the ideas of my thread are useful, but they are _not_ just Copilot)
100
Daniel Patterson @dbp.bsky.social · 01/01/2025
Addendum: Obviously, there are also significant issues with the tools -- energy use, concerns about where the data comes from, etc -- but they exist, and students are using them, so to me I'd rather foreground them and discuss these issues, alongside the tools themselves.
010
Daniel Patterson @dbp.bsky.social · 01/01/2025
I'm not sure if this would be a good idea at all... but I'm also not sure if it makes sense to continue as we are, designing courses / learning as if these tools don't exist (or considering them as an after thought), when we know many/most students will use them.
200
Daniel Patterson @dbp.bsky.social · 01/01/2025
We could ask the models for different implementations, and study the differences -- compare and contrast, discuss which we liked better, and why (develop taste early!) After learning to read & discuss code, we then learn to write it -- mimicking styles that we've seen. CS as writing class!
100
Daniel Patterson @dbp.bsky.social · 01/01/2025
Later, we could start to look at the code that was generated -- reading code that worked, and code that didn't work, and discussing the difference. LLMs could be used to help explain how the code worked, but students would also be tasked with explaining the code. CS as English class!
100
Daniel Patterson @dbp.bsky.social · 01/01/2025
One of the challenges in teaching the design recipe (htdp.org) is getting people to actually focus on those first three steps (signature, purpose, examples/tests), rather than just diving into code and getting themselves lost in the muck. Powerful synthesis might allow students to really get that.
htdp.org
How to Design Programs
100
Daniel Patterson @dbp.bsky.social · 01/01/2025
This process could continue with more sophisticated data, and we could explore problem decomposition, challenges in data representation, etc -- all before thinking about _code_ at all.
htdp.org
How to Design Programs
100
Daniel Patterson @dbp.bsky.social · 01/01/2025
i.e., start building programs by _only_: describing input / output data for problems, describing clearly how the input should be transformed to the output, and writing examples of how it should work. The code that is generated can then be validated, by hand or automatically, against those examples.
110
Daniel Patterson @dbp.bsky.social · 01/01/2025
But back to the thought experiment. If we did want to do this, rather than just adding Copilot (which effectively thinks for students, nvm relying no them to have a sophisticated understanding of code to identify problems!), what if we used synthesis to alter the order in which we approach material.
100
Daniel Patterson @dbp.bsky.social · 01/01/2025
Their results aren't bad (dl.acm.org/doi/10.1145/...), but I'm still pretty skeptical of this approach -- and whether it gives students the foundation to move on, etc. Learning happens when students are challenged (within reason!) and I'm skeptical if this sufficiently challenges them.
dl.acm.org
CS1-LLM: Integrating LLMs into CS1 Instruction | Proceedings of the 2024 on Innovation and Technology in Computer Science Education V. 1
100
Daniel Patterson @dbp.bsky.social · 01/01/2025
e.g., experiments like github.com/copilotbook/... don't sit quite right with me -- giving copilot to beginners and saying lets not worry about the low-level details of programming.
github.com
GitHub - copilotbook/CS1-LLM: Courseware for CS1 courses that incorporate LLMs
Courseware for CS1 courses that incorporate LLMs. Contribute to copilotbook/CS1-LLM development by creating an account on GitHub.
100
Daniel Patterson @dbp.bsky.social · 01/01/2025
Thought experiment: what if we _did_ teach intro CS with LLMs from the very beginning? Conventional wisdom is that this is a bad idea (students need to learn fundamentals, and LLMs can stand in for this), but I wonder if this is because we are thinking about it wrong.
240
Daniel Patterson @dbp.bsky.social · 31/12/2024
Identifying errors is a nice use, since they can usually be validated and we’re used to incomplete analyses. We did this last semester identifying first step (if any) in design recipe with issues (given function or data); it worked remarkably well (working on writing up little experience report now)
010
Daniel Patterson @dbp.bsky.social · 30/12/2024
I wonder though — do you describe these systems to (19-level) students? If so, how do you do it? Do you have an (intuitive notion) of what RL adds to the models? To me it seems important to be able to at least start teaching about them at that point… & dislike the idea of considering them magic.
210
Daniel Patterson @dbp.bsky.social · 30/12/2024
But in order to talk about training data, you have to talk about training something, and then using that something to produce results, right? Hence statistical completion :)
200
Daniel Patterson @dbp.bsky.social · 30/12/2024
Hmm. Well, given the model is learned over _text_, my intuition is that it will be better at tasks that relate to text, and worse at ones that are less related to text. Which seems to track :). How do you describe these things? If you do
100
Daniel Patterson @dbp.bsky.social · 30/12/2024
To me, it can help explain why it mixes brilliance with occasional idiocy. Not to say people can’t do that, but the fact that it surprises people when the models do it indicates that it’s not intuitive.
100
Daniel Patterson @dbp.bsky.social · 30/12/2024
Not sure why that contradicts the idea of statistical completion with sufficiently rich model? The entire “conversation” is the input… Changing instructions (or not!) midway just changes what is being asked.
150
Daniel Patterson @dbp.bsky.social · 30/12/2024
Your example doesn’t seem to violate this? As what the model is completing is not just the original prompt but also your message(s) with English & Italian. As long as the model is rich enough to capture the notion of matching language, your quantification, etc, it can produce the next response.
120
Daniel Patterson @dbp.bsky.social · 30/12/2024
As someone who has used almost that term (“glorified autoCOMPLETE”), I was referring to a pattern of _using the models_ (eg, Copilot, before they added conversational stuff); code autocomplete brings obvious challenges for correctness. Statistical completion, though, is a useful model for them imo —
120
Daniel Patterson @dbp.bsky.social · 27/12/2024
It’s not just drawing, it’s also area calculation right? 1/2 * base * height gets you to reorient to a flat bottom.
110
Daniel Patterson @dbp.bsky.social · 18/12/2024
Those are just two examples — but there are many others like them. The hype around the models is a bit ridiculous, but also… I think arguing they shouldn’t be used based on their capability also isn’t right. You can do reliable things with stochastic systems.
100
Daniel Patterson @dbp.bsky.social · 18/12/2024
Another interesting use is asking it to find a certain class of mistake in some input. It might miss some (of course!) but it’s very easy to verify that what it finds are valid. Depending on the task, the models can do quite well, to the point of possibly exceeding an alternate method.
100
Daniel Patterson @dbp.bsky.social · 18/12/2024
If you think people can follow random tutorials, they should similarly be able to look at that code (as non programmers) and see if it is sensible. It’s also often possible to spot check — ie if you asked for a chart of frequency, you could manually count one case.
100
Daniel Patterson @dbp.bsky.social · 18/12/2024
I guess part of why I ask is that while I absolutely agree with you in the “tell me the answer to this factual question” category, I actually think that’s their least interesting use. If you ask it to do a data analysis task, it will generate code & run it (and the code it makes is visible).
100
Daniel Patterson @dbp.bsky.social · 18/12/2024
…but for many uses, it isn’t obvious that they aren’t already more reliable than what they replace (as many things are statistical). Also: you say you do not use these at all (which is fine! There are plenty of good reasons not to), but speak very confidently about what they can and cannot do?
100
Daniel Patterson @dbp.bsky.social · 18/12/2024
I guess I’m more suspicious that the alternatives aren’t also statistical. “Facts” come from whatever pages happen to rank highly in search indices. I don’t trust a non-experts ability to discern mistakes in steps they follow in tutorials they don’t understand. As I said originally: they are hyped…
100
Daniel Patterson @dbp.bsky.social · 18/12/2024
This seems, to me, somewhat odd? Most are likely to still use it, so better to talk to them about what could go wrong? Also, not obvious to me that someone is going to get worse results from doing simple data analysis with chatgpt than with excel following a random tutorial they found by googling?
100
Daniel Patterson @dbp.bsky.social · 16/12/2024
There's a strange take I keep seeing that AI is not only bad (environmentally, stealing work, &c), but that its useless. That seems v. strange, since while its certainly being hyped, it also obviously has huge automating power. Being anti-automation is one thing, but odd to pretend it doesn't exist?
170
Daniel Patterson @dbp.bsky.social · 13/11/2024
My preferred way of doing this is: docs.haskellstack.org/en/stable/to... — makes single file programs with dependencies totally sane.
docs.haskellstack.org
Script interpreter - The Haskell Tool Stack
The Haskell Tool Stack
020
Daniel Patterson @dbp.bsky.social · 01/10/2024
People claim Python (the language) is beginner friendly... I just spent 10 minutes figuring out a bug that turned out to be an accidental trailing comma on a line. On its own (one character!), turns a value into a tuple with the value inside!
030
Daniel Patterson @dbp.bsky.social · 17/10/2023
Found a new clever dark pattern. Click unsubscribe link (I know I know), brings up five radio button options, “stay subscribed” is top one, selected. Clicking on the _text_ of the bottom one (unsubscribe) selects the next one up instead (pause for 90 days). You have to click the actual radio button…
000