site banner

Culture War Roundup for the week of October 3, 2022

This weekly roundup thread is intended for all culture war posts. 'Culture war' is vaguely defined, but it basically means controversial issues that fall along set tribal lines. Arguments over culture war issues generate a lot of heat and little light, and few deeply entrenched people ever change their minds. This thread is for voicing opinions and analyzing the state of the discussion while trying to optimize for light over heat.

Optimistically, we think that engaging with people you disagree with is worth your time, and so is being nice! Pessimistically, there are many dynamics that can lead discussions on Culture War topics to become unproductive. There's a human tendency to divide along tribal lines, praising your ingroup and vilifying your outgroup - and if you think you find it easy to criticize your ingroup, then it may be that your outgroup is not who you think it is. Extremists with opposing positions can feed off each other, highlighting each other's worst points to justify their own angry rhetoric, which becomes in turn a new example of bad behavior for the other side to highlight.

We would like to avoid these negative dynamics. Accordingly, we ask that you do not use this thread for waging the Culture War. Examples of waging the Culture War:

  • Shaming.

  • Attempting to 'build consensus' or enforce ideological conformity.

  • Making sweeping generalizations to vilify a group you dislike.

  • Recruiting for a cause.

  • Posting links that could be summarized as 'Boo outgroup!' Basically, if your content is 'Can you believe what Those People did this week?' then you should either refrain from posting, or do some very patient work to contextualize and/or steel-man the relevant viewpoint.

In general, you should argue to understand, not to win. This thread is not territory to be claimed by one group or another; indeed, the aim is to have many different viewpoints represented here. Thus, we also ask that you follow some guidelines:

  • Speak plainly. Avoid sarcasm and mockery. When disagreeing with someone, state your objections explicitly.

  • Be as precise and charitable as you can. Don't paraphrase unflatteringly.

  • Don't imply that someone said something they did not say, even if you think it follows from what they said.

  • Write like everyone is reading and you want them to be included in the discussion.

On an ad hoc basis, the mods will try to compile a list of the best posts/comments from the previous week, posted in Quality Contribution threads and archived at /r/TheThread. You may nominate a comment for this list by clicking on 'report' at the bottom of the post and typing 'Actually a quality contribution' as the report reason.

24
Jump in the discussion.

No email address required.

If I was trying to reach students at the elementary level, I'd probably build out things from the Usborne computer books from the 1980s. I remember endlessly rereading these books at the school library, and even looking back over Introduction to Computer Programming now, it is still an excellent introduction to what a computer does, how it executes a program statement-by-statement, etc. Many activities could be made into craft exercises, covering the essential ideas without having to deal with any particular programming environment.

As for university, I see far too many "introduction to programming" courses attempt to "teach programming" without giving students any idea of what the language even means. How are they supposed to solve problems with code if they don't understand what the computer does with that code? The language needs to be simple enough that this can be done in at most two lectures; scheme is simple enough that you can have a decent go at this.

Types should be introduced early, because "what sort of things go into this function, and what comes back out?" is a really important question to ask when designing a function, and it allows machines to (partially) check students' work, instead of an over-worked TA in a lab session. The programming environment probably has to be interactive and graphical, because those damn zoomers barely know what a file is these days, and we don't have time to teach them how to drive a shell.

My best guess is something like SICP, taught using DrRacket, and moving to Typed Racket ASAP. Replace the hardcore EE/CS examples with simpler problems to solve, since students aren't coming in with as much mathematical sophistication and we're going to be asked to teach a cohort that's not all headed into Engineering/CompSci, and probably borrow some pedagogy/scaffolding/recipes from HTDP. Bring in some of the cool CS stuff once students know how to actually program; you want to show at least some amazing CS ideas so that you hook the people who are susceptible to such things.

Disciplined ways of structuring programs make more sense once a student has made a few big messes, so discussions of coupling, modularity, and so on can come later. But they must not be left for too long.