Daniel Patterson
banner
dbp.bsky.social
Daniel Patterson
@dbp.bsky.social
Assistant Teaching Prof @ Northeastern. Programming Languages, Types, Language Interoperability. Opinions my own, not my employers.
Innocent
January 28, 2025 at 5:32 PM
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.
January 10, 2025 at 7:07 PM
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?
January 10, 2025 at 6:53 PM
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.
January 10, 2025 at 4:20 PM
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!
January 9, 2025 at 1:06 AM
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!
January 8, 2025 at 4:55 PM
Sure, either of those!
January 8, 2025 at 4:46 PM
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?
January 8, 2025 at 4:41 PM
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.
January 8, 2025 at 4:41 PM
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."
January 7, 2025 at 12:10 AM
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)
January 2, 2025 at 10:46 PM
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!
January 1, 2025 at 11:44 PM
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)
January 1, 2025 at 11:36 PM
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.
January 1, 2025 at 6:48 PM
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.
January 1, 2025 at 6:48 PM
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!
January 1, 2025 at 6:48 PM
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!
January 1, 2025 at 6:48 PM
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.
How to Design Programs
htdp.org
January 1, 2025 at 6:48 PM
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.
How to Design Programs
htdp.org
January 1, 2025 at 6:48 PM
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.
January 1, 2025 at 6:48 PM