1/ This was a fun question with lots of interesting answers, though in the end Ian was pretty disappointed by the replies. But I thought it would be interesting to relate the history of how to language levels of @racketlang came to be. ↵
2/ It started with a pretty user-centric method, which was observing what students were doing. A LOT. We didn't set up cams, didn't log keys (this was 1995). We (Matthew, Robby, I) were all TAs, and even when not, spent a lot of time walking around in labs.
3/ We would then debrief with each other. We noticed that students were running into certain very particular kinds of frustrations, and that these had nothing to do with the problem, but rather the language. For instance:
4/ If you write

(define (F l)
(cond
[(empty? l) …]
[(cons? l) …]))

and pass a non-list, F would return `void` (by falling through the cond). This would manifest in some later computation. Students had never heard of void, much less know where it came from.
5/ Initially, of course, we would just TEACH the language's semantics. Look, here's what a void is, here's what Scheme does, and so on. Students picked up on it quickly enough. But the thing that niggled at us was we couldn't explain WHY it had to be that way.
6/ I think you will see a lot of parallels here to what happens every day in programming pedagogy. With any language, there are a whole bunch of warts that students run into that are not relevant to learning the *subject* (as opposed to the language). And we deflect around them.
7/ The difference was, we realized, we didn't need to make excuses. We controlled the (then) DrScheme/PLT Scheme implementation. What if we just … CHANGE it to NOT do the dumb and annoying and difficult-to-justify thing?
8/ As we looked more closely, we found more and more things that we didn't like because they were tripping up students. We eventually realized that we were effectively defining a different programming language: one that was a student-appropriate sub-language of Scheme.
9/ But why stop there? We noted that when you use a BOOK, the language you use grows with the chapters. Why don't IDEs reflect that? This was the same time the AP CS Board was engaging in fantasies about "subsets" of C++…that were unenforced. If it's not enforced, it's not real.
10/ Notice the subtle but very significant shift in methodology. We'd gone from user-driven bottom-up observations to authoritative, top-down decisions based on a very deep expertise in (a) semantics, (b) program reasoning, (c) curriculum and (d) implementation. Fordian/Jobsian…
11/ From there we rolled out a set of language levels that reflected our curriculum design. The abstraction into #lang, new linguistic principles, programmability, etc., all came later. We first addressed the immediate needs of our students.
12/ How did we know it "worked"? We just went back and did a lot more lurking and helping in labs. (I TAed about 5x the requirement of my PhD program.) Lots of anecdotal observations led to lots of adjustments, year after year. (Ditto error messages!)
13/ None of us knew the first thing about HCI methods. If we'd written a paper we'd have been laughed at. (We wrote a paper for SIGCSE and it was soundly rejected.) But here's the thing:
14/ We didn't set out to write papers. We set out to make our students' lives better. And we could tell that their experience was improving year after year. That was our "evaluation". And honestly, I am just fine with that.
15/ In retrospect, this idea was so obviously good that several people have cloned it, giving it their own names, sometimes not even properly citing the original. But you know what? That's how you know you won. (-:

And there's a coda:
16/ When I interviewed at Maryland, one of my 1-on-1s was with @bederson. I mentioned language levels and he said something like "Oh, you do HCI?" I recoiled in terror: no, I said, I didn't know a darn thing about HCI! I told him what we'd done (namely, the above). …
17/ With extraordinary (and probably undeserved) grace, Ben said, "Oh no, that's okay, I'd consider that HCI!" I think that was super generous of him. And I think this highlights research leaders: they care about progress rather than gatekeeping about methods. •

• • •

Missing some Tweet in this thread? You can try to force a refresh
 

Keep Current with ShriramKrishnamurthi

ShriramKrishnamurthi Profile picture

Stay in touch and get notified when new unrolls are available from this author!

Read all threads

This Thread may be Removed Anytime!

PDF

Twitter may remove this content at anytime! Save it as PDF for later use!

Try unrolling a thread yourself!

how to unroll video
  1. Follow @ThreadReaderApp to mention us!

  2. From a Twitter thread mention us with a keyword "unroll"
@threadreaderapp unroll

Practice here first or read more on our help page!

More from @ShriramKMurthi

May 6
Hey, @wcrichton is defending!
Will:
(Still Will:)
Read 4 tweets
Jan 30
1/ ICYMI: yesteday's (women's) Ashes #cricket was some of the best cricket in a while. Don't see scores or highlights, just watch England 2nd innings (after Australia declared setting them 257 in 47o: highest women's chase had been 193). No spoilers! But 3 salient things: ↵
2/ First, by leaving them essentially an ODI inning, it showed clearly how an ODI has its own pacing and rhythm different from that of tests or T20s. There's *space and time* for things to evolve in a way they don't in T20.
3/ Second, it was a *decision* to declare when Australia did, creating that ODI-like situation. That could only happen in a test. So it was this fascinating hybrid of formats and constraint-solving.
Read 6 tweets
Jan 23
1/ Several people have asked me to summarize my exploration of the low-code/no-code space. Here's what I learned. Note that this is VERY temporal: what's true today may not be in one month (especially with so much VC money sloshing about). Also, not tagging any companies. 🧵
2/ The principal dimensions of the space that I can discern are:

- new databases/tables
- data analytics, including visualization
- CRUD
- one-offs

I'll discuss these not in this order, but focus on CRUD, which to me is the most personally intriguing of the lot.
3/ The one-offs are things like vision model generators (Lobe), medical viz (MeVisLab), notebook-based data-driven storytelling (Observable). All very nice, but not much (yet) comparable to them, so they're specialized point solutions.
Read 30 tweets
Jan 3
1/n Over the months we've gotten several questions about how our new book, DCIC [dcic-world.org], relates to HtDP (How to Design Programs). They are deeply similar, but even from 30K feet there are some salient differences. A thread on how they compare. 🧵
2/n At a high level they are very similar. Both are built around the centrality of data structure. Both want to provide methods for designing programs. Both start with functional programming but transition to (and take very seriously) state/imperative. ↵
3/n Both are built around languages carefully designed with education in mind. Yes to special support for writing examples & tests; error reporting designed for beginners; built-in images, reactivity; no to weird language gotchas. Etc. Always, put the student first. ↵
Read 19 tweets
Dec 6, 2021
A short thread about my "other 90%" rule, frustration with courses, and a nice thing that happened.

My "other 90%" rule is that ugrad courses should be designed for the 90% of students who are NOT like us: not crazy about our subject, bound to grad school, etc. 1/n
What can THEY take away from our subject? What can they learn that might most impact them? The impact can and maybe should be both intellectual (expand their mind) and practical (give them new skills). I've always tried to apply this to my PL course. 2/n
When I talk about this to colleagues, they always trot out a "but who will think of the children" argument for not wanting to do the same: they're thinking of the student exactly like themselves. I get the feeling. I just think we should resist it. 3/n
Read 13 tweets
Dec 5, 2021
After numerous years of paid subscription, I finally cancelled @duolingo. I was plateauing on it, and found the coverage of languages uneven. I had avoided the gamification for a long time until my kid got me to compete with her. And that was great…until something happened: 1/n
My kid got to Champion, which means you top the leaderboard on the highest tier (Diamond League). That's cool! She kept urging me to do it. And no matter how hard I tried, I simply Could. Not. Come. Close. 2/n
I was in Diamond for a long time. Day 1 and maybe 2 I'd be leading. And then, somehow, someone would come out of the blue and just blow me away. Like destroy me: I'd have say 500 points and they'd have 3500. It seemed like superhuman effort. 3/n
Read 14 tweets

Did Thread Reader help you today?

Support us! We are indie developers!


This site is made by just two indie developers on a laptop doing marketing, support and development! Read more about the story.

Become a Premium Member ($3/month or $30/year) and get exclusive features!

Become Premium

Don't want to be a Premium member but still want to support us?

Make a small donation by buying us coffee ($5) or help with server cost ($10)

Donate via Paypal

Or Donate anonymously using crypto!

Ethereum

0xfe58350B80634f60Fa6Dc149a72b4DFbc17D341E copy

Bitcoin

3ATGMxNzCUFzxpMCHL5sWSt4DVtS8UqXpi copy

Thank you for your support!

Follow Us on Twitter!

:(