HN Theater @HNTheaterMonth

The best talks and videos of Hacker News.

Hacker News Comments on
"How to teach programming (and other things)?" by Felienne Hermans

Strange Loop Conference · Youtube · 95 HN points · 10 HN comments
HN Theater has aggregated all Hacker News stories and comments that mention Strange Loop Conference's video ""How to teach programming (and other things)?" by Felienne Hermans".
Youtube Summary
Everyone should learn programming, right? Yes! But how... Should we allow children to explore and learn about syntax on their own, or should we drill programming like we rote memorize the table of multiplication or German grammatical cases? Felienne's talk outlines this history of programming education and didactics beliefs in programming that lead to the prevalence of exploratory forms of teaching, starting with Papert's LOGO. She will then explore programming education in relation to mathematics and language education and explore how rote learning could look like for programming. Felienne will discuss her own research into misconceptions and code phonology as means to teach programming more effectively.

Bio:

Felienne is associate professor at the Leiden Institute of Advanced Computer Science at Leiden University, where she heads the Programming Education Research Lab (PERL). Felienne's work focuses on the question how to best teach programming to kids and students, investigating misconceptions, didactic strategies and programming environments. Felienne is a co-editor of the ACM journal Transactions on Computing Education, and a host at the IEEE podcast SE Radio, one of the most popular software engineering podcasts on the web. She writes a monthly column for Dutch IT magazine AG Connect and she ran the Joy of Coding conference for 6 years. When she is not coding, blogging or teaching, she is probably knitting, running or playing a (board)game. Felienne blogs at felienne.com
HN Theater Rankings

Hacker News Stories and Comments

All the comments and stories posted to Hacker News that reference this video.
I think there is a difference between "figure it out yourself" and asking questions of the student.

In any case, this talk claims that studies show giving the answer is the best way to teach (don't shoot the messenger)

https://www.youtube.com/watch?v=g1ib43q3uXQ

Zababa
> I think there is a difference between "figure it out yourself" and asking questions of the student.

That's very true, I lost some of the nuance there.

Jtsummers
That's a good talk, and people should watch it. But as I recall (it has been a bit since I watched it, probably 6 months) she doesn't argue that we should only give answers to students, but that we should give more answers to students than many (especially self-taught programmers) might think necessary (or desirable).

The research basically showed that rote learning (the thing so strongly objected to here on HN in many education discussions) is actually effective. But that doesn't contradict the idea that self-guided exploration is bad (paired with an instructor answering questions, even questions with questions), it just shouldn't be where we start or the sole way we teach.

In particular, a common objection to rote teaching programming is often along the lines of, "I taught myself assembly on a Commodore 64, anyone can do it [and I'll imply that it's the best way to learn]." Which can work, and can work for many students. But it's not effective for every student, and creates an artificial barrier (for the majority of students who will learn better, faster, or even at all with a more traditional presentation of the material).

hdctambien
Excellent points.

I made it a point that "if it is on an assessment, then they will have seen it in class"

No tricks, no novel algorithms. Just show me that you learned the things that I tried to teach you.

If a lab asks you to write a for loop that prints all the strings in an array, then I've taught the syntax for strings, printing,accessing elements from arrays, getting the length of an array, writing a for loop, etc... There have been hands on activities and/or funsheets for each of those ideas that include fill-in the blank questions where they get the framework of for loops with arrays.

And they get handouts with the syntax / code structures / algorithms.

And they get those worksheets/handouts/etc to reference while working on the lab.

In a classroom environment, it's important to teach and build the foundation to solve problems. But then it's important to make the student do the work to build the connections so they actually learn something. Even if the something they learn is where they can look to find the answer to a question like "does an array start at 0 or 1?"

Aug 13, 2021 · 82 points, 42 comments · submitted by tosh
throwaway47292
Teaching programming is extremely difficult, I think because it is a learning staircase instead of a learning curve.

For example, `color = input("what is your favorite color: ") .. print(color)` seems like the variable name is somewhat related to the content. The first time I saw my daughter "get" variables was after some time she just started naming them `kj`, `jdh`, `hdj` when she was going to use them immediately after.

I am writing a log of how the lessons go: https://github.com/jackdoe/programming-for-kids

danbst
- What was her age when you started this?

- Did she have experience with board/card/pen-and-paper games before? Dice games?

- What was starting typing speed and how it goes now? Do typing lessons causes frustration?

- Have you noted some prior math skills? I see lessons start with strings but then move to "geometry" stuff

throwaway47292
> What was her age when you started this?

She just turned 10 when we started.

> Did she have experience with board/card/pen-and-paper games before? Dice games?

We did play https://www.thinkfun.com/products/robot-turtles/ quite often, since she was 6 or so. and we play a lot of ticket to ride, and some memory games (like Lumina). We don't play dice games though.

> What was starting typing speed and how it goes now? Do typing lessons causes frustration?

I have not actually measured the speed recently, as we use our own programs to train (she enjoys using her own programs a lot), but she is at the point that she is faster to type with 10 fingers than with 2.

> Do typing lessons causes frustration

Not at all, they are a lot of fun. I enjoy them a lot as well. Today we were using the program we wrote yesterday (https://github.com/jackdoe/programming-for-kids#day-100-basi...) and we tweaked it a bit to have 'pause/start' and she wanted to continue even after the end of the lesson.

> Have you noted some prior math skills? I see lessons start with strings but then move to "geometry" stuff

She is good in math in general, but at her age math is kindof boring. But geometry I think is fun, especially when you think of 'how do two rectangles collide', and since she plays a lot of roblox, the whole game is made of rectangles, so it is very relatable.

smellsinore
I was hoping it was written in Go. Python is ok though.
trevcanhuman
Wow that is an awesome comment I think maybe even teaching people in languages such as shell which specifically and explicitly state when variables are being referenced (prepended with the $ symbol) would be an excellent technique in teaching to let students understand the different syntactics of programming, I think syntax highlighting would also help a lot, cause it would let kids (on their own) figure out that all text in pink is of the same groups and refers to variables, while code in blue is a function, therefore a ‘group of code’. Of course, I’d maybe explain first what data types there are and really what a computer is, because many people don’t necessarily understand what is happening behind the scenes and do not see it with such technicalities, maybe the majority say about computers that they ‘just work’.
throwaway47292
The one thing that helped a lot, was teaching HTML. How td is child of tr and sister to another td, and it has a child of h1, or how things have properties border=2 and etc.

It helped with understanding where does code belong, how the code in the for loop is related to the code above it and etc.

I also spend time on things like how to steal someone's cookie, and what is a cookie day 51,52,53 (https://github.com/jackdoe/programming-for-kids#day-52-basic...) and also we spend a lot of time touchtyping, so her thoughts easier to be expressed through the keyboard.

Also as the talk also mentions, we spend a lot of time reading code, https://github.com/jackdoe/programming-for-kids#day-72-basic... i just print it on paper and we go over it with a pencil.

The most difficult lessons are the more abstract ones understanding what the memory holds, and what the variable points to https://github.com/jackdoe/programming-for-kids#day-95-basic...

Also tearing down commodore64 and showing the actual memory address space in physical manner helps, the variable color points to somewhere >here<.

We are spending about 50 days now only doing lists and for loops, I write the next day's lesson after the current lesson finishes, and I try to see what she grasps, and what is somewhat interesting and prepare for tomorrow.

trevcanhuman
That’s just great, what a great parent you are! I personally do not know much HTML or even much about web dev in general but I suppose it’s worth a try.
echelon
I wish subjects enumerated the tools up front so it is easier to fill in the gaps and make connections.

Tell folks they'll be using input and output from various places, numbers, strings of letters and bytes (images, video, crazy stuff), conditional logic to make decisions, a couple of key "data structures" to group data (lists, dictionaries), and organize code (functions). You could cover all of these in an hour lecture, then dive into them on subsequent lectures.

They'll absorb everything as they proceed, but a high level helps immensely to help organize concepts.

I wish other subjects did this too.

I also like that my chemistry teacher admitted to us that we were learning lies in General Chemistry. And then again in Organic and Physical Chemistry. We were being taught models that would be continually refined with new information.

jyounker
Lies to beginners are necessary thing, but things concepts like "strings" "bytes" "conditionals" "lists" "dictionaries" "functions", are not to be assumed. Each one is more than a single lesson's instruction.

They are elementary to your understanding now, but they are concepts not even available to someone who is just beginning.

This is why teaching is hard.

jna_sh
The speaker is a researcher on programming education at the University of Leiden. If you’re interested in this talk, would definitely recommend checking out her programming language, Hedy (hedycode.com), or her new book, The Programmer’s Brain https://www.manning.com/books/the-programmers-brain
ModernMech
I've done a little research on student perception of programming in grades 5-9. One thing I found was that kids in 5th/6th grade (elementary school where I'm from) love programming. It's fun and engaging, and it feels like a game to them. If you look at their programming environments, they're using things like Logo, Blockly, and Scratch, which are intentionally designed for this demographic. There's color characters and graphics, interlocking blocks, programming models tailored for their level of cognitive development, etc. It all works very well.

But a strange thing happens around 7th-9th grade (middle school where I'm from). Suddenly perceptions about programming drop off a cliff. Students increasingly describe programming as "frustrating", "confusing", "boring", "scary" and generally not enjoyable. If you look at their programming tools, they're using VSCode, Javascript, Java, C++, Visual Studio, Xcode, Eclipse... tools meant for professional developers!

And the results are a lot of them just stop considering programming as a viable career path. They are presented with these tools and told these are what the pros use, and when these students hit roadblocks many conclude they don't have what it takes to become a professional developer. They get discouraged and become disengaged entirely in the idea of programming.

Now, as I said this is all just preliminary research in my local community. Maybe things are different elsewhere, but I think there's an opportunity for programming tools that target this middle school group, to help facilitate a transition between toys like Blockly and full-blown professional developer environments.

henrik_w
I was helping teaching my son's grade 8 class for about a month and a half. I was surprised at the enthusiasm from the majority of the students - most of them were really into it.

It was great expericence, both for me, the other parent helping, the teacher, and the students (as far as I could tell). I have written more about what we taught them, how we went about it, and things we learnt here:

https://henrikwarne.com/2017/12/17/programming-for-grade-8/

empressplay
We're trying to create a more advanced (3D) text-based version of Logo that we hope will fill in the gap between blocks-based languages and 'real-world' languages https://turtlespaces.org
Wowfunhappy
I had a hell of a time finding an IDE for a Girls Who Code class that used Python with middle schoolers.

I wanted:

1. A plain text editor

2. With syntax highlighting

3. With a "run" button that would display program output in a side area.

What I didn't want: version control, autocomplete, package managers, refactoring. Not even as little buttons on the side which never have to be pressed but which act as a visual distraction and suck brain power. I'm trying to get these kids to understand what a loop is, they shouldn't ever think about damn git commits!

We mostly settled on Notepad++ but I really would have liked something more basic, and ideally browser-based given the, uh, quality of our hardware. Trinkit.io was also pretty good, but python3 required a subscription (python2 does not...), and for some reason it had issues with cursor focus.

frosted-flakes
Well, if you're willing to try something different, look at Racket with its DrRacket IDE[1]. It couldn't be simpler. Racket is actually a decent starting language for beginners, and some universities start off with it for their introductory CS courses (no prior experience required)[2], but I'm not quite sure how well-suited functional programming is for middle-school-aged kids.

[1]: https://docs.racket-lang.org/drracket/interface-essentials.h...

[2]: https://student.cs.uwaterloo.ca/~cs135/

fn-mote
>I'm not quite sure how well-suited functional programming is for middle-school-aged kids

Functional programming works perfectly well with middle-school-aged kids. The only problem (imo) is that understanding (and hence using) recursive functions can be a barrier, but this doesn't even come up for a _long_ time (depending on your approach).

That site you linked as [2] is pretty bare-bones; try https://htdp.org/

frosted-flakes
I didn't intend it as a learning resource, merely as an example of a university that teaches Racket in an introductory CS course.
dfsegoat
Is there a reason a Jupyter notebook wouldn't have worked? Google CoLab makes notebook env's available for free (no install / setup required):

https://colab.research.google.com/

heavyset_go
Jupyter notebooks will give you syntax highlighting, and all you need to do is hit the run button or Shift+Enter and it will run the code that was just typed.
Jtsummers
Replit, potentially. No need to install anything beyond a web browser and once the project is setup, it really is just pressing play to get it running. Then things like version control can be added on later if there's interest, but even without it sharing projects is sharing a link. This also can make it easier for the learner to take this home and not just do the work in class or the classroom setting.

There are probably other solutions out there, but I've mostly been liking it as a way to help people (especially remotely) but at work and just in general with exploring programming. Especially since I don't have to walk anyone through installing anything, which is a PITA.

Wowfunhappy
I looked at repl.it, it was much too complicated! It had integrated version control and other stuff I didn't want.

trinkit.io was really very close, and we maybe should have just purchased a subscription to use python 3, but as a little free class run out of a library, we didn't exactly have tons of funding.

Jtsummers
The integrated version control can mostly be ignored, I don't recall it ever pestering me. I did set up some as git repos and sync to GitHub, but most of the time I'm just spawning a new session and throwing code in to demonstrate a particular language feature or concept. It does have autocomplete, I forgot about that bit (I guess it became invisible to me since I'm so accustomed to it). I'm not sure if it can be turned off.
spaniard89277
I use geany a lot for its simplicity but usefulness. Give it a try.
MichaelMoser123
What about visual studio code with the python plugin?
dgfskjhfgdldfgh
Consider codeskulptor[0] out of Rice University, I used it for a coursera class a decade ago (think it was this one[1])

[0]: https://py3.codeskulptor.org/

[1]: https://www.coursera.org/learn/interactive-python-1

Wowfunhappy
Wow! This is actually exactly what I wanted, thank you!

Our classes were shut down at the start of COVID-19 in March 2020, but if we ever actually go again, I will definitely use this!

mbrodersen
I have had success teaching programming to beginners by simply letting them program simple text based adventure games. I show them the minimum to get started (print, read, if) and they run with it, creating their own little adventure games. Then they start asking question about “how do I keep track of health?” and I introduce variables etc. But only when they have identified a gap in their knowledge, and have an interest in filling that gap. I had a class room full of kids excitedly programming away even after the class was done. And the quicker students started teaching other kids. It was a wonderfull experience.
danbst
That sounds utopian. Maybe there are also other reasons why this worked?

In my experience, kids have no ideas on their own. And they don't like discovering things on their own. They want lectures and wait for assignments. Only few are different.

I was amazed how this went contra my expectations.

andy_ppp
I personally think you never really learn anything the way it feels you do. Instead your mind is actually much more like a multidimensional lense that given enough training data will start to pattern match “learning to program” or whatever other skill you’re trying to learn. An important one no one teaches is “decipher business requirements into pseudo-code”… oh and the feeling of frustration and being out of your depth is the lens moving.
systemvoltage
Step 1. Hello World

Step 2. Variables

Step 3. Types

Step 4. Loops

Step 5. Functions

Step 6. Strings

Step 7. Arrays

... on and on. This is a disaster recipe that 90% of the books, tutorials, etc follow. This is perfectly ok for a reference book but doesn't do anything to teach people how to program.

Programming language is tool to solve problems. Without a problem, you're loading people with dry concepts that don't stick in the brain. In fact, this is the same crap in Electrical Engineering classes as well - not one engineer in my class could tell when to use a BJT vs. a MOSFET. They all know the characteristics, how to compute the gain, etc. but not the practical aspects of why it exists and what problem it solves. Anyways, programming needs to be taught in a project oriented fashion with optional reference books. Teach them what happens if you hardcode a "loop", write repetitive code and then try to show what for-loop does. You gotta get into the brains of the pupils and imagine them asking "But why!?".

smellsinore
I am fascinated, if you can, please tell the difference between when to use BJT versus MOSFET
arketyp
I can't think of any better entry to programming than making games. You get the loop, the variables, conditionals, functions, and gradual sophistication grows organically. For kids, I would look for a programming language where making graphics is easy.
psyc
This is both how I learned, and the only reason I even wanted to. Heck, sometimes it’s even why I get paid. I agree.
MichaelMoser123
Very interesting talk. I am currently trying to teach my daughters some python, as a means of filling summer vacation time. Also writing down some notes while preparing the lessons: https://github.com/MoserMichael/pythoncourse . I will try and make them read the python statements aloud, lets see if it works... Not sure about the tests mentioned, I somehow dislike this type of multiple choice questions, don't know how to do something like that.
wrnr
Also check out her excel talks, her spreadsheet skills are better than my programming skills, it's insane. This VC funded push to unbundle excel is just stupid, fast food for IT.
ModernMech
After watching the talk, I think this presenter might argue that spreadsheet skills are programming skills.
chrisweekly
Yeah, see also MWeststrate (MobX's creator) who cites spreadsheets as an ideal way to explain the mobx reactivity paradigm.

https://www.mobxjs.com/README.html

shagie
I'd contend that Excel spreadsheets are an acceptable LISP.

Sure, you start out statements with an = and variables are named things like B42 rather than foo... but there's a rather nice vector based functional language asking to get out of there.

To that end, teaching Excel could be a more accessible way to teach programming fundamentals than some other approaches.

I still miss LOGO and its unrealized potential.

lmilcin
I think teaching programming is pretty easy as long as you have mindset.

The first and most important point is to only teach people that want to be taught. Don't try to shove it to them, it just doesn't work.

I am teaching my kids programming and so I spent a lot of time thinking about it.

Nobody taught me programming. I just had access to things I could play with and it was fun to make them do stuff. I learned because it was fun. If somebody forced me to do things their way it would likely not be fun.

Another part I have learned is to solve problems on my own. It is not very instructive to have teacher tell you solution to every problem after some time.

I think solving problems on your own is core part of knowing how to program and so having somebody you can constantly lean on deprives you of chance to develop this important ability.

So in the end teaching my kids programming is basically making sure they have access to a good environment where they can do stuff that is fun. I answer questions if they have any and react when I see them bored or stuck for too long, but that's about it.

Sometimes I try to discuss a topic to see what kind of mental model they have and maybe I point something or show them a counterexample or a trick to steer them into better mental model.

I am not religious, but God bless Minecraft:)

Jtsummers
> So in the end teaching my kids programming is basically making sure they have access to a good environment where they can do stuff that is fun. I answer questions if they have any and react when I see them bored or stuck for too long, but that's about it.

That's how the speaker describes her initial approach and then later goes into the research on why it's not the most effective. In particular, the relative novelty of computer programming means we haven't had much time to develop a pedagogy, particularly a pedagogy for kids [0]. And even the methods that we have developed haven't been fully explored, but what research there is offers ideas for other ways to approach the education that yield better results than just letting them explore on their own (though, like the speaker, that's how I did it circa 1990 as an 8-year-old).

[0] I recently learned that the root of pedagogy (makes sense, just never stopped to think about it) has the term relate specific to the teaching of kids. There's a related term andragogy which is for the teaching of adults. This does make my sentence a bit silly, but the distinction is not typically made in English. Not sure about other languages.

lmilcin
It may not be the most efficient way, but I find that it is less likely to permanently discourage kids from programming.

And they have a lot of time to learn. I started learning programming in my late teens, before that there weren't even any computers around.

Alekhine
I started around the end of my teens. And it was a conscious decision, I didn't fall into it. Thankfully, I found that I enjoyed it.
According to this person there is plenty of research saying you should tell them how to do it

https://www.youtube.com/watch?v=g1ib43q3uXQ

I think she makes a good point. We don't hand people a guitar and say "figure it out on your own". Cooking shows don't generally show the final dish and say "if you want to make this yourself figure it out on your own".

You might say computer programming is different but I suspect for most people here you were taught things like sorting algorithms, database queries, lexers and parsing algorithms, etc. You were not made to figure them on your own. Sure maybe you were self motivated and looked up the topics by yourself but likely you mostly learned by looking at existing code and over time figured out how to see what it was doing and how to modify it or apply the same ideas.

philoclea
This is a useful point. The beginning learner needs more straightforward instruction -- just knowledge transfer -- whereas the learner with a basis of knowledge can spend more time exploring, making mistakes.

The issue comes in when a student is so accustomed to being fed information that they bristle at being asked to think.

This point also suggests a flaw in the online MasterClass format. In a traditional music master class, someone who is already very very good at singing or playing an instrument comes out, performs a song, and then is corrected by the "master." Then they do it again, etc. An online "masterclass" is in fact a lecture-style course, which is really better suited to beginners.

Extensive research says your intuition that figuring out on your own is better than having someone explain it to you is wrong

https://www.youtube.com/watch?v=g1ib43q3uXQ

I was self directed as apparently are many software engineers so I've always assumed that the best way to teach would be to let kids direct themselves and they can ask questions if they get stuck.

Well, this video claims I'm wrong. Self directed study doesn't fit most students according to the research presented in the video.

https://www.youtube.com/watch?v=g1ib43q3uXQ

you can jump to 11:00 if you want to jump to the part about learning.

teddyh
One-minute summary:

https://www.youtube.com/watch?v=g1ib43q3uXQ#t=50m

owenversteeg
I think that self-directed and self-motivated learning for _programmers_ is critical. All the best programmers I know are almost entirely self taught. I think the best way to go about it is first motivation (they have to really want to be able to make things) and then an introduction (here's a REPL, type 2+2, hello world, here's a function, here's Google, stackoverflow) and then provide help when needed.

Every time I've seen kids take this path, it's very black and white - either they quickly learn to learn on their own, and succeed, or they need guidance/lack motivation and fail.

For non-programming, I think learning on your own is far less critical.

greggman3
I think maybe things are being conflated here. (1) being motivated (2) being self directed (3) being made to figure things out on your own

The video above basically says vast amounts of research show that showing people the answers with explanations is far more effective than saying "figure out on your own". Not only are people given the answers with explanations more able to solve the problems they are more able to apply them to future problems.

It also seems to say being directed (being given lessons) is usually better than leaving it up to the student what to study (of course there are exceptions for some students)

I know for me I didn't invent link lists, hash tables, sorting algorithms. One way or another I was taught the solutions. But I was often self motivated. Still, I was taught via assignment how to open a file, and read and write to it. As well as how to implement a bubble sort. Enjoying programming I enjoyed learning those topics but it might have been much longer for me to apply them if a teacher hadn't taught me both by choosing what to teach (so not self directed) and explaining it (so I didn't have to invent sorting). I had no idea I wanted to know about those topics until after being taught.

owenversteeg
Sure, I'm not going to argue with the research's applicability to learning in general, but I think that programming is a clear exception. The majority of the best programmers in the world learned what they did in a mostly self-directed way. This is unique in comparison to the vast majority of other fields. For a while, there was a counterargument to be made that that was because of the relatively modern invention of programming, but this is clearly not the cause anymore - the first CS diploma was awarded in 1953, and now in 2020 you can get a CS bachelor's everywhere from liberal arts colleges to online. Go to those CS bachelor's students and you'll find that of the best, the majority were competent programmers before starting their degree.

> I was taught via assignment how to open a file, and read and write to it. As well as how to implement a bubble sort.

And I learned those, as millions of programmers, on my own - through documentation, and Google, and so on.

That said, I certainly don't think that the _only_ way to be good is to be self taught. I have met people who went to university with zero prior CS knowledge, and they ended up excellent programmers. But to be entirely honest, that is a small population. It's an uncomfortable topic for universities - nobody wants to sell an expensive degree to become a programmer, with the prerequisite that you're already a programmer - but my university did admit that the students that were already programmers before starting did significantly better in every way.

> they guide you to take the very first step, nothing more. Then just the second step, nothing more

This sounds like it doesn't match this research which someone posted yesterday

https://www.youtube.com/watch?v=g1ib43q3uXQ

May 02, 2020 · chrisdone on History of Logo
There's a StrangeLoop talk about teaching programming by Felienne Hermans (https://www.youtube.com/watch?v=g1ib43q3uXQ) that claims that all fields have an "exploration vs instruction" debate on how to teach their field, but this debate is apparently absent from the field of programming for the most part, wherein the "mess around and figure it out" exploration style of LOGO and Papert ("every time you teach something, you deprive a [student] of the pleasure and benefit of discovery") is the predominant unquestioned wisdom. Felienne wants more pedagogy fights. It's a worthwhile talk. I love LOGO and I think our generation of programmers are very sympathetic Papert's philosophy due to most of us being self-taught to some degree (you can see the fond nostalgia already on display in the comments here), but Felienne made me think about it more critically.
markdeloura
Thanks for the link! It's a great discussion to have and should be a topic for all learning, not just CS Ed. If you look at the K-12 CS Ed standards defined at the state level, you'll find a generally coherent approach to staged learning of CS, both in terms of computational thinking structure (teach sequential behavior before conditional behavior) and language complexity (Scratch first, Java later). It's also worth considering playful or project-based approaches vs rigorous curricula-based learning... we're lucky to start with playfulness in CS because of the history of Logo. But what about for example, aeronautics? You might really enjoy learning to build and fly a rocket in Kerbal Space Program, but at some point you might yearn for more and benefit from a deep dive into some scaffolded traditional curricula. Then you can come back to Kerbal and apply what you learned, etc etc. Perhaps there's some sort of optimal cadence, different for each person and their interests. What's the analog for CS Ed?
bjterry
I found this talk pretty interesting. Thankfully, the speaker doesn't limit the talk to "starting the debate," one of the world's annoying rhetorical tricks. She actually comes out in favor of an identifiable, different pedagogical method, and is doing research to establish whether or not it is superior.
rzzzt
OT, but Felienne has a great talk on functional programming in Excel (thanks for reminding me of her name): https://www.youtube.com/watch?v=0yKf8TrLUOw
kjs3
This is worth watching even if you hate Excel and FP. It's a view of a different way of thinking. Good stuff.
Also, I attended Strange Loop conference last September and there was a keynote speaker who discussed effective ways of teaching programming to kids. The talk is on YouTube and I gotta say, it's very insightful.

"How to teach programming (and other things)?" by Felienne Hermans Link: https://youtu.be/g1ib43q3uXQ

Feb 21, 2020 · gfxgirl on Explorabl.es
There is evidence that play and exploratory learning are not actually a good way to teach

https://www.youtube.com/watch?v=g1ib43q3uXQ

Dec 25, 2019 · 5 points, 0 comments · submitted by jpereira
I'm struggling to parse "essentially motivationally self-taught" but if you mean to say something like "only self-taught programmers will successfully learn to program" that's a myth that isn't backed up by the evidence and serves to exclude people from programming.

This talk addresses that misconception: https://www.youtube.com/watch?v=g1ib43q3uXQ

The paper discusses "constructionism" (which, loosely put, is the idea you give someone a toy and let them figure it out): http://morganya.org/research/2018-Ames-CSCW-Constructionism....

There is more out there but that's all I have time to find right now.

hhas01
Yeah, decades of dragging myself over programming’s coals have made me super cynical, but I think that lots of programmers are really good at building tools and knowledge that are horribly inaccessible to anyone not already like them. And then being surprised and unhappy that no-one else appreciates what it is they do.

If the barrier to programming is raised so high that only a career programmer can do it, all that happens is we end up with lots of users—professional experts in their own problem domains, mind—who don’t understand programming, and a bunch of professional programmers who don’t understand anything else. And then those programmers complain bitterly because they don’t understand why users hate so much the systems they’ve built for them.

And yet, Seymour Papert demonstrated how to make computing open and accessible to eight year-olds, back in an age when cutting-edge HCI was a fricking Teletype! So it’s definitely an instance of PEBKAC; it’s just a matter of which chair.

Sep 21, 2019 · 2 points, 0 comments · submitted by mpweiher
Sep 16, 2019 · 1 points, 0 comments · submitted by morning_breeze
Sep 15, 2019 · 5 points, 0 comments · submitted by mpweiher
HN Theater is an independent project and is not operated by Y Combinator or any of the video hosting platforms linked to on this site.
~ yaj@
;laksdfhjdhksalkfj more things
yahnd.com ~ Privacy Policy ~
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.