Skip to content

Instantly share code, notes, and snippets.

@fasiha
Created October 29, 2021 18:49
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save fasiha/64ce82e1dd109430dad70285c6b81693 to your computer and use it in GitHub Desktop.
Save fasiha/64ce82e1dd109430dad70285c6b81693 to your computer and use it in GitHub Desktop.
@lexi_lambda's Twitter thread on teaching programming using mainstream languages (I literally copy-pasted because Twitter doesn't offer an easy viewing/export view)

https://mobile.twitter.com/lexi_lambda/status/1453866074106105864

§ Alexis King @lexi_lambda society if propositional and first-order logic were included in primary and secondary education mathematics curricula

§ Alexis King @lexi_lambda sometimes I wonder if this sort of ∀-vs-∃ confusion would be less pervasive if students were exposed to literally any formal logic in middle/high school, because first-order logic is very accessible, and it seems a lot more generally useful than, say, matmuls devoid of context

§ Alexis King @lexi_lambda completely seriously this would be such an enormously better use of time than teaching middle/high school kids python or javascript or whatever (and probably also a better use of time than teaching them single-variable calculus with no context, but I’m less confident about that)

§ Hillel @hillelogram I'm more confident of that than programming and have thoughts

(Though not research, just thoughts)

§ Alexis King @lexi_lambda I would be less confident about the programming if attempts to teach it were less ad-hoc, but the truth is that teaching real languages like Python or JS specifically is a terrible idea, whereas high school calculus at least has some veneer of a worked pedagogical approach

§ Kyle J Strand @BatmanAoD Why is teaching real languages a terrible idea?

§ Kyle J Strand @BatmanAoD (and do you hold that opinion regardless of which language is used?)

§ Alexis King @lexi_lambda Yes, I do. Real languages are industrial-strength tools designed to be used by skilled hobbyists and professionals. They are informed by real-world requirements and constraints and include pragmatic compromises rife with subtleties. They do not belong in any introductory course.

§ Alexis King @lexi_lambda Teaching programming using mainstream, general-purpose programming languages is like teaching high school physics by taking mathematical models used by working physicists and telling the students to fix most of the quantities to yield a simpler special case. This is not pedagogy.

§ Alexis King @lexi_lambda The idea that anyone thinks this is okay is mind-boggling to me. Do we teach literally any other subject this way in primary/secondary school? No! We start with vast simplifications that distill the essential ideas and reasoning skills, and we gradually build up from there.

§ Alexis King @lexi_lambda The sad truth is that even most undergraduate CS is awful in this regard—it is an ad-hoc collision of concrete PL features (e.g. “this week is about for loops”) and basic CS concepts (e.g. asymptotic complexity). But programming is mostly about large-scale reasoning and design!

§ Alexis King @lexi_lambda Just as knowing the features of Microsoft Word does not equip you to be an author, knowing the constructs in a programming language does not equip you to be a programmer. Good programming pedagogy must present a way of thinking and reasoning about computation and system design.

§ Alexis King @lexi_lambda In practice, this requires a lot of different skills—programming is complicated! But personally, I think the most obvious essential ones are logical reasoning and data modeling, i.e. how to encode human concepts into representations that can be usefully computed upon.

§ Alexis King @lexi_lambda Why do we teach high school physics students such simplified, limited equations if they’ll have to learn different ones to do applied physics? Because the specific equations aren’t the point—high school physics is about the concept of modeling physical behaviors with mathematics.

§ Alexis King @lexi_lambda And look, I get it—self-taught programmers balk at doing something analogous for computing because it’s boring, and they fondly remember their first experiences playing around. But not everyone is or should be a self-taught programmer, so we have to, you know, teach them.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment