17 ms·
Two years of teaching high school CS
- jeffrallen 3y ago> to understand the joy of using coding to create programs they’re proud of I'm coming up on 40 years of programming and I can only think of a few toy programs that gave me this joy. The rest of the time, I was using my computer skills to sate my curiosity on how it works and often times sooner or later translating that into service to others, either for pay or for the joy of sharing and helping. IT is too big to know entirely, just as the Earth is too big to know entirely. All you can hope for is to enjoy exploring it, and learn to live with/on/among instead of against it.
- commandlinefan 3y ago> IT is too big to know entirely It is now... but I kind of feel like it wasn't 40 years ago. My 19-year-old son is studying CS now and I have a lot of sympathy for how complex it's all become since I was studying it 30+ years ago. Although computers can do way more than they could back then, you have to understand a lot more than you used to before you can get them to do the things they can do now.
- fragmede 3y agoYes and no. On a computer, you can open the developer console in the web browser and be there immediately. Go to a Github project and hit . and go to codespaces and be right there. Once you're there though, what to do becomes much harder.
- jeffrallen 3y ago40 years ago, you could know one or several microcomputers well, from BASIC down to assembly. But there was even at that time CAD happening on Unix, VAxes driving CAM, the entire IBM universe (from punched cards to RDBMS), and numerical codes like NASTRAN and LINPACK. Generalists are more valuable than specialists. But generalists are doomed to never knowing everything, and knowing what they don't know.
- pjmorris 3y ago> It is now... but I kind of feel like it wasn't 40 years ago. The computing world was certainly smaller then. But I remember finding Volume 1 of 'The Art of Computer Programming' in my community college library in the Spring of 1983 (so, it would've been a 70's edition) and Knuth said something to the effect of it being difficult to keep up with such a rapidly expanding field. My notion is that even the best programmers even 40 years ago had a hard time keeping up.
- danpalmer 3y agoThe point about bugs at the end echoes what I've heard from other CS teachers. I know Python well, and thought I knew what constituted a sharp edge, but talking to a CS teacher was eye opening about what actually constitutes a sharp edge (in hindsight, obvious). I think when teaching to students who haven't explicitly selected for CS/programming, languages like Scratch are better because they have been designed to file off all these edges and have no pretence about providing a general purpose language, and bringing all the annoying practicalities that go along with that. To start with Python, C#, JavaScript, Java, Haskell, or other popular first languages that are also general purpose programming languages, I think it's critical to first teach the process, the fact that there will be sharp edges but that there are reasons for those even if you might not understand for years to come. Some students just don't care about this, and others find it motivating, and that's why I think it comes down to selection and compatibility for the subject. Not to say that there are only some people who "get" programming, but many aren't motivated enough to manage the relatively steep learning curve.
- jermaustin1 3y agoIts a weird double-edged sword choosing to go with something like Scratch or even a stripped down framework that makes things WAY easier is you lose the interest of the people who ARE interested in Comp Sci. In my high school, we had CS1 and CS2, both were AP classes. While 90% of the students had no interest in computer science, there were a couple of us who were, and if we weren't kept engaged by the challenge of learning a new language for most of us (Java), then none of them would have gone on to CS2 (I say them, because I didn't even know about CS1 until I was picking my Senior classes). The failure rate of that class was around 75%, and you could chalk that up to a bad teacher, disengaging lessons, or the fact that CS is hard and not meant for the general school population, but for those of us who loved computer science, it was the first time outside of building crappy applications in VB6 or PHP that we experienced "proper" programming (handling exceptions, worrying about performance, actual logic not just click events). I don't think high-shcool-level CS should be gate kept, but I think to sign up for it, maybe students should have to go to a lab or something ahead of time, with some hands-on experiments, and then get accepted into it because they showed some level of enthusiasm.
- poopsmithe 3y agoWhen I took high school chemistry, I repeatedly failed the alebra-esque conversions between one molecule to another (I don't remember what that was called.) The teacher saw this and one day took me aside and asked why I was not progressing like the other students. I told the teacher I didn't care one bit about the topic. Instead of trying to make the subject more interesting for me, the teacher suggested I drop the class and take something I actually liked. I switched to video production, something I was really passionate about, where I did very well. I will always appreciate the chemistry teacher who helped me find my way.
- arethuza 3y agoHow do you know if you will like something without trying?
- the_af 3y agoI think trying to present the topic in an interesting and engaging way is worthwhile. But thinking you can get 100% students interested in it is probably unrealistic. I don't think you can get all the students interested in any given topic, so why think of this as a failure? Getting a decent number of students interested is good enough. Getting all of them? Unrealistic. I don't even think this is a failure of the students. Coding isn't universally interesting. It's ok to find it boring, through no fault of either the teacher or the students.
- csmeyer 3y agoMaybe I wasn't clear in the article. 100% is a nominal goal (give everyone a chance!) but obviously not everyone will like it and that's not a problem.
- jdihfjv 3y agohttps://en.wikipedia.org/wiki/Chemical_reaction https://en.wikipedia.org/wiki/Chemical_reaction
- bee_rider 3y ago
- macspoofing 3y ago> While I failed to get 100% of students to enjoy coding Surely that wasn’t the goal, though it echos the well-intentioned but flawed “everyone should learn to code” initiatives. You need the right temperament for programming, and some people find it mind-numbing, in the same way I find reading legal documents mind-numbing.
- arethuza 3y ago"I find reading legal documents mind-numbing" My wife is a lawyer and I find her capacity to make sense of very complex and large documents quite amazing - particularly as there is no debugger, no unit tests and the execution environment is unpredictable!
- SoftTalker 3y agoI'm not a lawyer, so I might be wrong, but I think one thing that lawyers do is they learn that in a legal sense, documents (and laws) are more about intent and how the various parties understand them. They are not computer code where there is only one correct way to interpret them and where nothing is open to debate. That's why it's hard for computer programmers to read contracts and legal documents, because we try to parse and interpret them like code and very quickly get caught up in minutia that really doesn't matter in the bigger picture that lawyers operate within.
- arethuza 3y agoWorth noting that sometimes the minutia do matter - cases have hinged on whether a comma was present: https://www.theguardian.com/books/2017/mar/16/oxford-comma-helps-drivers-win-dispute-about-overtime-pay https://www.theguardian.com/books/2017/mar/16/oxford-comma-h...
- markles 3y agoI've taught CS for about 15 years now. To get the majority of kids in a class actively involved is an art. It's less about the tools, though those can help, and more about who you are, as a teacher. It takes time to develop that. The ability to read kids, adjust your lessons on the fly, and keep their attention. Sometimes it's about developing relationships and trust within the school, which can take months or even years. For me, there is no silver bullet, and every year I adjust to suit the class I'm teaching. This year the kids were much less able than the year before, so we played more revision games, and came back again and again to the basics, just from different angles. The year prior was a solid lot, and I was able to go beyond the curriculum and have fun with them exploring things. Edit: You'll never get all the kids to leave the class loving CS, but you can usually get all of them to leave the class not feeling frustrated by it.
- indymike 3y ago> Edit: You'll never get all the kids to leave the class loving CS, but you can usually get all of them to leave the class not feeling frustrated by it. I wish more teachers would understand this.
- hutzlibu 3y agoI think most teachers do understand, but most of the teachers I had, simply did not care (anymore). (CS teachers were an excemption, though)
- scns 3y agoThe "best" professors/teachers i saw yet, where radiating an exhuberant joy while talking about their topic. It is fun to listen. They where a russian teaching in america who recorded a series about physics for TTC, The Teaching Company. He got voted best professor in america twice.The other one was David Malan of Harvards CS50 on [0]. Beware though, it sadly spoils you for later lectures by others. [0] https://edx.org https://edx.org
- hotpotamus 3y agoI don't know how they do it though - I could imagine enjoying teaching a subject once in awhile, but to be "on" for 5 or 6 identical classes a day and then repeat that until the pension kicks in seems pretty tough. Of course, professors have it better than high school teachers since teaching isn't their primary job.
- paulcole 3y ago> Leaving teaching this soon wasn’t my original plan Since the author is also OP (here to promote their new startup Pickcode), what was your plan to leave teaching and why did it change?
- csmeyer 3y agoI had no particular plan, my point in that sentence was that 2 years was on the shorter end of the distribution of how long I expected to stay. I'm leaving now because I think I can make a bigger impact on student learning building a product which incorporates what I've learned these past two years.
- heartbreak 3y agoThere’s something very “Silicon Valley” about doing something approximately four times and using the acquired expertise to found a startup.
- MSFT_Edging 3y agoWhile I don't want to be mean, I'm sure OP is great. It does remind me of the tiktok "investors" who sell classes on how to get rich, but the classes teach others how to sell classes.
- paulcole 3y agoI worked for a guy who loved these get rich quick schemes. Once, for $50 he bought a zip file off some random website that was supposed to contain everything he'd need to get rich online. The zip file contained the HTML file and assets for the page that he'd bought the zip file from, with instructions on how to integrate his own PayPal checkout info, of course.
- phonescreen_man 3y agoHave you ever tried using processing or p5js as a way to engage students with code? I think the visual aspect would be a great way to engage young learners. Also are you looking for volunteers?
- _fat_santa 3y agoOne thing I noticed about CS once I started out in the industry is how boring it was. When I started learning programming I often got the “what” (what is an array, what is a floating point integer, etc) but never a “why” (why do we need arrays?). To folks that code that answer is obvious, but it wasn’t obvious to me when I started. I remember on many occasions going “great, but how does this tie into an actual real world application”. And I think that’s a big reason so many loose interest. You learn all these concepts but you have almost nothing to tie them together or to tell you why you should care about them. This is why I think the “Python Music” exercise was so engaging, students now had a “why” behind what they were doing, they could tie it to a larger goal. And I remember back in college when I got really into programming was right around the time we started submitting full blown apps as projects (full blown in terms of a CS student)
- JimtheCoder 3y agoI sometimes think that software/app architecture is something that should be integrated into a students introduction to coding. Having a high level understanding of how the apps you use on your phone actually work, some of the steps that the program is doing (database writes, etc) seems to be interesting. Writing the same, boring functions over and over again so someone can reverse a list of strings...sorta kills the vibe, as the youth might say...
- vel0city 3y agoWhen I was a teenager first learning the basics of coding, I usually found programming books that focused on actually making things to be the best tools for learning. Books like "Beginning C++ through Game Programming" and "Teach Yourself C# in 24 Hours" were way more engaging and picking apart the code samples probably taught me more than what most of my peers did in the intro to CS class in college. When you can actually see the changes to things and have a real interesting project to work on its way more engaging that just going over the theory of things. Obviously, one should follow up with actually learning the theory as well to get a deeper understanding, but I often just can't grok things unless I can play with them.
- phonescreen_man 3y agoFifteen minutes of lost time to a minor bug or incorrect instruction step doesn’t seem like a big issue I think this should be part of the curriculum - it’s a daily part of the job of a SWE, introduce it in the class, make it fun and explain the frustrations and rewards when figuring out bugs. It’s not a set back of the day, it becomes part of the day, another side adventure to solve.
- jjkaczor 3y agoThanks - I was going to chime in on this. However - I was also an instructor (not high-school, but IT professionals) - and the biggest problem with "15-minute" bugs, or basic knowledge-gaps (like... how to open a command prompt and type correctly) is when you have multiple students who encounter different bugs simultaneously... Which will delay the entire class/session and frustrate those who are not having an issue. (Hopefully those who are not having an issue can proceed independently if there is a workbook/lab instructions)
- eythian 3y agoIn this case, they're not teaching software engineering. They're teaching CS/programming. Having to figure out finnicky tools gets in the way of that.
- dagw 3y agoIt's only fun if you know there is a light at the end of the tunnel as it were. If you're no yet convinced that programming is fun or even has any value then this "side adventure" will instantly kill any enthusiasm. Once they 'get' programming and see it as something they want to do, then learning how to deal with these "side quests" has value.
- xphos 3y agoI think you are right on the mark. Even as an experienced programmer I can get overwhelmed with the breath of whats possible with coding. I can only imagine how overwhelming and disengaging long wrote programming can be. I spent sometime in highschool thinking I could build a programming course when i was very inexperienced and how something and did a presenation but I think i only convinced a single person that programming which was cool but also humbling. Teaching programming is exceedingly difficult
- sharkbird2 3y agoFor me, things like coding is only interesting in the context of being useful as a tool to do cool stuff. I understand that some people like coding in itself, for the intellectual stimulation, but for me it's just a means to an end. I don't like coding, but I love building cool stuff, and coding lets me do that.
- empressplay 3y agoI don't teach kids how to code, I teach them how to make games -- that difference dramatically changes their interest.
- keernan 3y ago>For me, things like coding is only interesting in the context of being useful as a tool to do cool stuff. I took Fortran in my freshman year in college in 1970 (the only computer course offered). I bought a Tandy Model I in 1979 and that began a life-long love of programming as a hobbyist. I'm now 70 and still programming. And in all that time I've never been interested in programming unless it was to do "cool stuff" (e.g. build something I wanted; or learn how to do something because it would lead to my building something I wanted). In other words, your definition is the definition that drives most programmers who love programming (which is why I am glad I never did it for a living... I suspect I might lose interest in working on a project if the project4 itself wasn't something that interested me).
- h2odragon 3y agoToo bad we can't let people learn about things they're actually interested in. "You take programming class because its time to take programming class"; without any concern for "is the student interested in learning how to program?" is not going to have good results for anyone, is it? And yet that's how we've decided to teach most things.
- gorbachev 3y agoMost kids don't know what they're interested in. It's best to expose them to a lot of things and hopefully most of them will develop an idea what they like.
- melagonster 3y agoI know someone go to mathematics department because they like calculating trigonometric functions in first year.
- francisofascii 3y agoThey might not be interested until after they try it. I think an important part of education is to get exposure to a wide array of disciplines and then see what sticks.
- vel0city 3y agoMost high schools in my area have CS as an elective class. They can choose CS out of a lot of different classes such as music theory, extra social studies (additional histories, psychology, theory of knowledge, etc), various art classes (drawing, 2D art, 3D art, art history, etc), health sciences (human body systems, medical interventions, practicum in health science, higher level biology classes, etc) AP-level language classes, other engineering classes (aerospace, digital electronics, engineering design, etc), lots of music classes, agriculture, food science, debate, theatre, automotive, etc. One can easily get an accredited diploma without ever taking a computer science class. Many students like to take CS without having any interest in programming, as its often seen as the goof off class where you get to spend an hour every day playing videogames when the teacher isn't looking.
- dwater 3y agoThis blog post is not enough background for me to make a judgement about this particular teacher, but I will say as someone who spent a decade teaching high school, I have general disdain for people who spend 2 years teaching and think they have learned enough to leave the classroom forever and improve the system by becoming an instructional advisor. 2 years is about how long it goes from being completely underwater and just struggling to get through the year, to being competent enough that you stop worrying about the basic responsibilities and start thinking about how to fine tune your approach.
- germinalphrase 3y agoI agree. I had the benefit of going through the top curriculum and instruction program in the nation. I was considered a high performer right out of the gate; however, I don’t think that I really started to “get it” as a high school English teacher until around 4-5 years in. Edit: I don’t mean to be dismissive of the submitter. You very well may have a unique insight into CS instruction based on your time in the classroom. I would just caution that - from a marketing point of view - two years in the classroom is not going to instill confidence in your expertise with long term educators (so avoid making it a selling point as such).
- haswell 3y agoI don’t have much insight into the teaching environment so take this with a grain of salt, but in general, when bringing new people into an environment, one of the most useful periods of time to get feedback is during and just after the onboarding process. This is when all of the things long-timers have become blind to are most visible. Someone who has been in a role for years has often absorbed the issues and found ways to navigate around the biggest pain points (the upside of this is a deeper understanding of the environment). But someone who just joined can often see some issues more clearly than anyone else, and someone who is just finding their stride is in a sweet spot for delivering useful feedback. I’m not claiming to know the ins/outs of classrooms, nor do I know enough about this person to pass judgement, but disdain seems rather misplaced and counterproductive. Neither should all decisions about improving the system fall on newcomers, but they will have extremely important and valuable feedback. This seems like unnecessary gatekeeping if not tempered by reasonable policies that seek feedback from numerous sources, especially at a time when classrooms are in crisis and improvement is critical. Blanket disdain is always a red flag.
- zabzonk 3y agowhen i was a trainer for a commercial training company i had this COBOL programmer on our "Programming in C" course (which was not a bad course, though i did eventually re-write bits of it). He came up to me after the second day (when we started to introduce things like malloc) and asked "But what is this 'memory' stuff? And why should I care about it?'" just goes to show you can never assume anything. and maybe he had a point - it was quite hard to explain!
- commandlinefan 3y ago> it was quite hard to explain Was it actually hard to explain? Or was it hard to explain in a way that didn't risk coming across as condescending? I'm "fortunate" in that I never needed to be motivated to study and learn computer programming, so I have about 40 years of computer programming knowledge now. Some of it (cryptography, networking, recursion, pointers) was hard won and took me a long time to grasp. Now I find myself frustrated by the Braeden's of the world who assume that every question has a two-word answer that if I don't know, I'm either incompetent or worse, deliberately hiding something from them. I can explain memory to anybody, but I have to start from the basics of computation - and if somebody doesn't know what "memory" is, that's where they need to start! But if there's an art form to starting from the beginning without pissing off the person who asked to start from the beginning, I've yet to master it.
- zabzonk 3y agoMy explanation went something like this (M is me, H is him, and yes, he was male) and this was many years ago: M: you know the COBOL MOVE statement? H:Yup. M: So when I say 'MOVE "hello world" INTO greet' what is happening? H: The sequence of characters gets moved into the variable greet. M: Nearly right. The characters get copied - MOVE should really be called COPY. And where do you think those characters get copied from? H: I don't know. M: Well, they are copied from one area of memory to another. When your compiled program is run, things like "hello world" are loaded along with the actual executable code, and given an address in memory. [at this point i drew a diagram, but cannot be arsed doing so now] H: OK so far M: So when we do the COPY of "hello world" we need to have some memory to copy it into. Now, in COBOL the compiler takes care of generating code to do this, but (for a variety of reasons) the C compiler does not. So we have to do it ourselves using functions like malloc. Anyway, don't worry - you've been doing well on the course so far, and we can go through this again tomorrow, if you would like.
- dicroce 3y agoI have been a paid software engineer for about 30 years. 10 to 15 years in I learned to love computer science, but for the first huge portion of my career what motivated me was making things. Demos, Games, etc... Maybe the key is to start building things immediately? Things the learner is interested in making.
- stevespang 3y ago[dead]
- AndrewKemendo 3y ago>He completed this in 25 minutes and played web games for the other three weeks available for the project Sounds like he's a software engineer at heart
- pshirshov 3y agoJust my personal opinion: I'm pretty sure that the key to getting pupils interested in programming is a typed language with lean featureset. Such language should allow low-level access to hardware and has no memory management features. And the hardware must be as simple as possible. In my school almost everyone who tried to code was motivated to continue. We were using extremely ancient primitive soviet machines running some homebrew Pascal implementation. Later I've seen students trying to learn programming in more complex environments and noticed success rates falling with growing system complexity. Dynamically typed languages make things extremely bad. I still consider Pascal running under DOS as one of the best possible learning environments. Paradoxically, an XT clone like Monotech NuXT plus Borland Turbo Pascal may be the best platform for kids due to its relative simplicity and abundance of good documentation. Or, maybe, even something based on Z80.
- nemo44x 3y agoI agree with this. It's counter intuitive but lower level languages without layers of abstraction are easier to understand to new programmers. It's all very literal. Abstractions are great for experienced developers because you get it. But new learners have no context and abstractions are too much of a black box. I found learning MIPS asm and C early on were nice and learning functional languages and things like Python and JS more difficult. It was after I had gained experience that the power Python and JS and Rust and whatever became evident and the abstractions and concepts made sense and were useful.
- randcraw 3y agoSmall languages that can be learned quickly that have a limited number of ways to perform an action (like iterative loops) make for a more straightforward learning experience than the giant languages that are popular today. I think explicit strict typing (e.g. Pascal) also helps. The more subtle and flexible the type system, the harder it is to learn the language's model of abstraction (examples: C pointers or OOP class hierarchies or polymorphism). I agree about the value of simplicity, such as learning Pascal in a terminal-based interface. That interface is minimalist in the extreme (no GUI to complicate things), and the language's design and type system have a crystalline clarity that undercomplicate learning how to think like a computer. It's like learning to use a hammer vs Windows.
- GnarfGnarf 3y agoProgramming is not for everybody. It's hard. It takes patience and humility. That's why those few who master it get paid the big bucks.
- booleandilemma 3y agoAnd to some extent it results in a level of ostracism from wider society, unfortunately. Even now, at worst you're painted as socially inept geek, at best you're called a tech bro.
- quacked 3y ago> To them, I would need to also point to the sizable fraction of my student population who absolutely despised the project, and may have found that project as the last straw in making their decision that they hate coding. There are many reasons why I despise the modern model of education, and this phenomenon might be at the top. Students are presented a miniscule, neutered, cherry-picked slice of a discipline that's thousands of years old, and then they form opinions about it based on their ability to stay interested and perform over the 90-200 hours they're forced to engage with it per year. They think they know what "computer science", "chemistry", "history", "creative writing" is like based on their experiences, but they're always wrong. It's not their fault. You can't know if you're "good at" or "enjoy" "math" based on your experience in school. In school they're not measuring your ability to do math, they're measuring your ability to do math class. Every class has students of deeply mixed abilities soldiering on through a curated set of exercises and practice problems, progressing regardless whether or not they understand the fundamental mechanics of their exercises. Some people end up believing they're "good" at their subject, some people believe they're "bad" at it. They're almost certainly both incorrect.
- commandlinefan 3y agoI think you're correct - at least, you're definitely correct about me. The only things I've ever actually learned were things that I was self-motivated to seek out and study on my own timeline. OTOH, what's the alternative to modern education? I don't think I ever would have gotten around to calculus if I'd waited until I independently "discovered" it.
- quacked 3y agoThere are so many things that would have to change about society for a suitable alternative to modern education to be put in place that my answer would be so politically radical that most would find it either unpalatable or unpractical. However, here are a few things I think should change about the existing system: - School should start later so the students have more time to sleep. - Phones should be fully banned from classrooms. ("But what if my parents need to reach me?" They can call the school.) - Teachers should be empowered to permanently remove students who cause trouble from their classes. - Students should have the option to test out of any class at any time. - By 11th grade, working a part-time job should count for credit toward graduating, to the point where you can work 40 hours per week and still obtain a diploma. - The GPA on your diploma should be changeable if you come back to night school or summer school as an adult. - The GPA on your diploma should be changeable if you retake the tests from earlier classes. - Students whose parents are capable of homeschooling should be supported by the system to pursue all- or mixed-time homeschooling, while still participating in the community and extracurriculars at school. This is especially true for students who are the target of bullying or who perpetually need more out of the system than it can give them. - Parents who are successfully homeschooling (as measured by high test scores and student-reported satisfaction) should consider taking on a second and even third pupil.
- SamBam 3y agoA general question about the benefits of teaching coding: For at least the past ten years, there's been a big emphasis on teaching coding to as many people as possible. I think a big part of that was the general assumption that, for many people, being able to code would be a ticket to a solid middle-class life, at minimum. With the rise of LLMs, do we still think that assumption is viable? What are going to be the number of software engineering jobs in 10 or 20 years? I worry that there will be half as many.
- screwturner68 3y agoCoding is the solution to all problems; can't get a job, learn to code. Not making enough money working a cash register, become a web developer. Nobody wants to hire you with your comparative religions degree, don't worry just learn COBOL. It reminds me of 1998 when the road to riches was paved with an MCSE and every time you got into a cab you'd see MCSE study guides sitting on the front seat. This is not the career for everyone, it's not easy and it takes constant tooling and retooling to remain relevant -this isn't the case in a lot of occupations and people looking for easy money are in for a rude awakening. I've been through the Dot.Bomb and the Bush I & II recessions and I've seen thousands get laid off (The first day at my current job they laid off 15,000 people and over the 20 years they've laid off another 200,000). Some of the purging is good, companies hire just to hire and end up with a lot of crap employees the unfortunate fallout is good employees get fired too. I don't know where the industry is going, it's certainly not the industry I started in, I've been expecting our downfall for years and we just keep moving along. We shall see.
- Sohcahtoa82 3y ago> I've been expecting our downfall for years and we just keep moving along. Yeah, with the massive layoffs over the last year, I expected salaries to cool off a bit. Then I got laid off in January, and it took me about 6 weeks to find a new job, and I ended up getting a slight pay bump with my new position. Though FWIW, I work in Application Security, which still has considerable demand.
- acegas 3y agoTwo years is nothing. The first year is usually an unmitigated disaster/full time panic, as you learn to teach while you are teaching. Very few programs ever train people to teach before they are let loose. The second year you are just starting to gain your footing, barely doing better all the stuff that didn't work the first year. During that year you start to learn all the skills and tricks you keep in the back pocket to make things work. You are dealing with real live things, so they change and have millions of parameters that nobody has control over. Having a good roster of things you can pull out on the fly to adjust is crucial. Maybe by the third year you have enough to become a good teacher. However if you truly care about them and work hard because you care, and they know you care it all works out in the end.
- AlphaWeaver 3y ago> One thing that led me to start creating Pickcode was the number of bugs I encountered in existing tools for coding education. Fifteen minutes of lost time to a minor bug or incorrect instruction step doesn’t seem like a big issue, but when those fifteen minutes represent some of the first minutes a student is programming, they have an outsized impact in changing the student’s attitude toward the subject. As a young CS student who had self-taught before taking a formal curriculum, this was one of the things I found the most disgusting about the state of high-schools CS ed. When the exercises and grading code have bugs, that's a major problem. When the instructor can't recognize those bugs when you point them out, that's even worse. I moved on to tutoring and teaching CS later in life, (on the side, as a mentor with a FIRST Robotics program,) and encountering bugs in the curriculum like these were some of the things that set my students back the most.
- malfist 3y agoWhen I was getting my BS in CS, that drove me the most nuts when the professor just didn't understand the coding language they were teaching. In my assembly class I still remember asking the professor for help with a code challenge, and he comes over and looks at what I've got done and starts asking me what a snippet of code was doing when it was a snippet of code he provided us with. That didn't work. And to top it all off, the assembly we were learning was heavily dependent on a custom library provided by a CD from the book publisher that included no documentation and couldn't be applied outside of class.
- rgblambda 3y ago>that drove me the most nuts when the professor just didn't understand the coding language they were teaching. A lot of people will have the same experience. It all clicked when I learned that often the lessons were written by consultants or by their predecessor, and the professor is just faking it until they can get back to their research.
- drunkan 3y agoI’m sorry but you can’t be serious… you have 2 years of teaching, your essentially a junior teacher and your here to promote an education startup you’ve left to make to teach kids. While normally I would applaud work in this area, the sheer arrogance to claim in your article you have the experience to build curriculum’s or indeed that you can build a better education platform for teaching kids to code with this experience is insulting to the teaching profession as well as those building existing platforms in collaboration with teachers and schools alike. My parents taught for decades. In the same way an experienced programmer takes decades to hone there craft to the point where others should really take note of how and what they have to say, the same can be said for teachers. Sorry but I just can’t take this seriously and maybe it’s wrong but it just feels… disrespectful to teachers in a way as if 2 years is somehow enough to have mastered the profession and impart knowledge and wisdom to the education world or indeed students.. as if after 2 years you know better than everyone else, you’ve seen enough.
- kickaha 3y agoI teach university biochemistry. After eight or ten years, I began to feel that I was no longer a novice. “Move fast and break things” is a monument to an aberrant culture of arrogance and dismissive impatience. Based on hypercompetitive greed. (That for a generation was funded by cheap money chasing itself around I search of a drain.) It’s no coincidence that importing this culture to education produces experiences that are superficial and brittle. It’s difficult to think of a counterexample.
- cyclotron3k 3y ago"chasing itself around in search of a drain" - beautiful metaphor!
- deleted 3y ago[deleted]
- deleted 3y ago[deleted]
- Zetice 3y ago
- dimmke 3y ago> Programming is about identifying a goal for a program, and iterating on code to achieve it regardless of what bugs you encounter. More than that, programming is about harnessing the computer to express yourself creatively, systematizing the contents of your imagination until they come alive in the real world I don’t think this is a useful definition of programming in general, but perhaps a good way to frame it for an intro class. The way he described his curriculum touched on something that always bothered me (and made me a D-F student for most of high school) It sounds like the course was a series of projects, like “learn to do X in Python” That’s how geometry and algebra and chemistry were for me, it was just “memorize this formula” and be able to solve problems with it on this test, then make sure you can also solve it on another test at some point in the future (midterm or final.) It was never explained what the actual purpose of these algorithms were used, why they are significant. Not just “how am I going to use this?” But “how is this used by people in the world I live in?” And because of that, it was impossible to motivate myself to learn any of it. I just didn’t care. I think a more holistic view would have been helpful for me. But other students got through it just fine. But I taught myself web development during the same time because I wanted to learn to make websites. Because the applications of programming are so broad, maybe it makes more sense to design a curriculum where instead of forcing students to do every project, you have a list of projects that after a certain point students can pick to pursue themselves (or if they are high performers, they can propose their own) It sounds like he was writing custom libraries for these projects too. Why not encourage the use of open source libraries instead? And is Python really the best language to use for this stuff? I’m not sure. I know the syntax is more simple but I think teaching JS (a simple subset obviously not every language feature) would be more realistic and give more flexibility into the types of projects that can be done?
- fragmede 3y agoI think which language to teach is getting into the weeds a bit, but imo python is the right language to start with because it's so straightforwards. There's no pointers like C or anonymous functions/await in JavaScript to learn. once there is some confidence, more advanced concepts can be introduced, but there needs to be a solid foundation first. JavaScript makes for a great diving off point though. Have the class open a webpage on their laptops, then open the developer console, type in some JavaScript, and do a thing to the page they're on. Choose the right thing and the kids will be hooked on programming.
- micromacrofoot 3y agoLeaving teaching to run a startup seems indicative of a societal problem. This person seemed genuinely invested in getting kids interested in coding... and from their perspective the best way to do that was to start a business instead of teaching them directly. It's no wonder why the public school system seems to be falling apart.
- TrackerFF 3y agoWhen I studied electrical engineering, we first had the usual intro to programming and a C class, for many students - that was the first time they had ever coded. There must have been a 40/40/20 split between hate/tolerate/love. But the next semester we had a microcontroller class, which was almost universally loved. We wrote C for AVR microcontrollers, and the projects were varied. I remember when we were learning about signal modulation, some of the students hacked together a very rudimentary mono synth. Fun stuff all around, maybe my favorite class in undergrad. On the other hand, I also had programming in HS - it was a Java class, focusing on OOP. The teacher was a retired programmer who had worked on "enterprise" style code, and so we learned Java that way. While he was a very good teacher, the material was just...quite boring. No fun projects, lots and lots of design patterns.
- sourcecodeplz 3y agoWhile watching some math videos from Eddie Woo [0], I was surprised at how the students were behaving throughout his lessons. They were joking with each other, being loud etc. This was not how I experienced school. The teacher is talking and you are listening. You are to talk when the teacher asks you to, otherwise you get kicked out of the class. Dunno why I wanted to post this but is that really how it is in USA highschool? [0] https://www.youtube.com/@misterwootube https://www.youtube.com/@misterwootube
- rychco 3y agoI skimmed through a few videos and my impression is that it was incredibly well-behaved for a USA highschool (though I believe Eddie Woo teaches in Australia). My classroom in the USA was regularly far worse than these videos, which felt (at least to me) pretty normal amongst highschoolers.
- moomoo11 3y agoHow does one become a CS teacher? I used to be an active mentor in Big Brothers Big Sisters, and I really enjoy mentoring and seeing them evolve into better more confident versions of themselves. And I learned patience and understanding from them. I have no interest in getting a teaching degree over a couple years. Do I just apply to a school? It would be cool to go teach CS in middle America. Imagine if folks like us who are competent swe take leaves of 3-5 years (we make a ton of money, so it’s not a huge hit) and over a decade or two we are able to build tech centers that elevate and boost the quality of life in places like the Midwest and South. These kids will learn how to think outside the box and have a creative outlet.
- gshubert17 3y agoThere are interesting opportunities in some niches. Twenty-five years after I got an MS/CS degree and had worked as a software engineer at various places, I was looking for something different. A public charter school in Colorado had just started; they taught students K-12 and sought teachers with subject matter expertise and teaching skills. They explicitly didn't require ed school certification. I worked there for 13 years before I retired. At this school, 2 one-semester "tech" classes were part of high school graduation requirements. One was on operating systems and office software. At times these were Windows and Office; at others Linux and OpenOffice. The other was much like the material in Brian Kernighan's "D is for Digital", on basic concepts, history, and brief experience programming. We covered a little shell scripting, a little SQL, web pages with HTML and JavaScript. We had an elective programming class, but its enrollments were quite small. The ones I just mentioned were taken by just about everybody.
- yardie 3y ago> a minor bug or incorrect instruction step doesn’t seem like a big issue, but when those fifteen minutes represent some of the first minutes a student is programming, As an experienced programmer nothing kills me more than getting interested in a new language, setting up your environment, diving into the documentation to get your very first "Hello World!" spun up, and it doesn't fucking compile! And that is me, a patient adult. I can imagine the frustration of a green, teenager not understanding the errors the compiler is spitting when you've done everything correct.
- fredgrott 3y agoWhat the author is missing(my bias, I am currently writing some app design books): 1. It's not puzzles alone, but puzzles in their subject of interest. 2. The underlying math is reachable if its presented as a puzzle in their subject of interest. Some puzzles are more sneaky, how many know that the game monopoly is an economic game about cash flows?
- deleted 3y ago[deleted]
- brandonmenc 3y ago> I did not succeed in getting 100% of my students interested in programming. (Not even close) > By the end of my class, many were determined to never try coding again in their lives. Replace "high school CS" with "shop class" or "biology" or "auto body" or "english composition" and you'll get the same result. Most people are not interested in most things as a career or hobby. It's bizarre that programmers think their thing is or should be any different.
- eimrine 3y agoBad teachers are not like good ones but with kind of less juice. Bad teachers are opposite to good ones, their "juice" is strictly worse than useless.
- dayvid 3y agoThe article confirmed what I thought. The best way to teach students CS is to work to their interests. Almost everything any student wants to do is involved with computers. Find some way to give them a project related to their interest and introduce a CS way to do it or enhance what they would already do.
- throwaway71271 3y agoI think programming is literacy. People who can code can see through the fabric of our world in the same way as people that can read can see different worlds. Teaching programming is so incredibly difficult, I am trying to teach my daughter, 343 days so far (12 yo, log here: https://github.com/jackdoe/programming-for-kids/blob/master/book.md https://github.com/jackdoe/programming-for-kids/blob/master/...) and I am not sure it is a tooling problem at all. The problem seems to be to be able to understand what the student does not understand. And to be able to keep their focus. I also use a lot of incentives (custom tshirts, vbucks, displate posters etc) to compete with the million developers in snap/facebook/tiktok/epic/etc that are trying to steal and sell every bit of her attention. I constantly try different methods, we even made programming card games together (like https://punkjazz.org/programming-time/ https://punkjazz.org/programming-time/), or downloading music or generating music, writing games with python/lua/c, making autoclickers or bots, pranks, hacking things (e.g. explaining and using the whatsapp url parse bug recently was very fun), playing war games etc, but every day I have to spend a lot of time thinking about what is the "right" next lesson, what does she need to learn to level up. Learning programming is not a curve at all, it is a staircase and stairs are like walls for some people. It might take 10 years to get to the next level. You can have people programming whole complex programs without having any idea what is going on. That being said, the future of programming pedagogy and andragogy is very open, and I am very happy for every attempt to try to make a dent in it.
- luxuryballs 3y agoSo where’s the music??
- empressplay 3y agoIn my experience, coding is not interesting to teenagers, generally. But making games is, as is 3D printing, and robotics. So, don't teach 'programming', teach game development, CAD, robotics etc. Start with blocks / agent (turtle) based languages. Jump right in to doing fun things! Things like turtlestitch (Logo for sewing machines) turtlespaces (3D logo with STL export for 3D printing) cospaces (block-based 3D games) etc. Starting with Python is always going to be a slog. Leave it for later
- deleted 3y ago[deleted]
- kkielhofner 3y agoI think this touches on another issue prevalent in schools (especially in the US) - the lack of vocational training. Students who aren't on the "college path" need to hit the world with a chance at income and career prospects to support themselves. The fact that you can achieve a solid middle-class life (compared to a lifetime of minimum wage/unemployment) without incurring > $100k of debt is another clear bonus. Many of their outcomes actually exceed those of their peers who took the college path. We need to admit to ourselves that a tiny portion of us actually do anything that could reasonably be described as "Computer Science" or anything beyond 8th grade math. The vast majority of us read API docs, pull in a bunch of libraries, and often cobble things together thanks to Google/Stack Overflow/ChatGPT/etc. Most of the employment in this industry is something more akin to being a plumber or electrician than it is to the vast majority of what is taught in many (most?) computer science curriculums. We spend the majority of our time building familiarity with tools and learning from experience which tool is the right one for the job. Very, very few of us are nuclear physicists designing or building a reactor. We're electricians that run Romex through walls and wire up switches and outlets. If you think this is a simplistic view or poor comparison watch contractors (project managers) building a house with coordination of all of the disparate systems, integration of various architectures, coordination across teams and disciplines, etc. It looks remarkably similar to all of the startups and projects I have been involved in. Watch an electrician on a datacenter build out - what they end up doing (at various levels) is mind blowing. That's not to say electricians aren't educated and don't understand the fundamentals and a bit of theory - look at the glossary of terms for electrician certification in California as one example[0]. You see things that demonstrate familiarity with concepts such as phase, harmonics, four-wire Delta system, etc. The reality is that people without a college education with less formal training (time and especially cost), work in an apprenticeship (Junior Dev, anyone?), and pass licensing tests work with things that can kill them, other people, burn down buildings, explode, etc. If vocational training is good enough for that it's good enough for what most of us are doing. [0] - https://www.dir.ca.gov/DLSE/ECU/ECGlossaryofTerms_EG.pdf https://www.dir.ca.gov/DLSE/ECU/ECGlossaryofTerms_EG.pdf
- yardshop 3y agoHi Charlie, is the Python music library something you have available somewhere? It sounds very interesting!
- narrator 3y agoI taught intro CS for a bit. The difference between people who are good at it and people who are not good at it is like sketch art. Some people cannot draw a straight line to save their lives, while some people are natural artists. Some people can work extremely hard to perform at an ok level, while others perform at that level without even trying. I know it's unamerican, and everyone should master the basics, but there should be some simple aptitude tests given to tell people what kind of optional classes they are going to be good at and what kinds they are just not going to like at all. This isn't a one dimensional axis of smart/dumb either. For example, most lawyers have extremely good memories, but are notoriously bad at math. Many talented artists and creatives are not good at traditional academic subjects. It would be optimal if the test examined as many talent areas as possible.
- JohnMakin 3y agoSeems like the author's problem is that he thinks "CS" is "programming." It isn't, and that's sometimes a harsh reality CS students realize a couple years into their studies when the difficult math starts coming at you hard and fast.
- jandrese 3y agoI don't think we are expecting the CS 101 class in High School to start with inductive proofs. His problem is mostly getting the kids engaged at all.
- whatscooking 3y agoWhat difficult math are you talking about? In my experience, most CS math was pretty basic
- JohnMakin 3y agocomputational geometry was pretty hard. algorithm theory isn’t easy for everyone. lots of people can struggle with linear algebra. cryptography classes can be hard.
- mywittyname 3y ago> By the end of my class, many were determined to never try coding again in their lives. I think that's okay. There are lots of careers I'd never want to do. School is as much learning about yourself as it is learning about content. Several people I graduated college with were determined to never, ever use their CS degree because they hated coding so much.
- deleted 3y ago[deleted]
- Rapzid 3y agoOut of curiosity do these HS CS classes uh... Teach Computer Science? I took three years of CS in high school and it was prepping us for the AP CS test. So memory layout, algorithms, data structures, logic, base conversions, and tons of self-guided study and projects. But when I read a lot of these articles I come away with the impression the conclusion is that the best way to teach CS is to... Not teach CS at all.
- fn-mote 3y ago> memory layout, algorithms, data structures, logic, base conversions, and tons of self-guided study and projects. The current AP CS (A) curriculum removed most of the algorithms and data structures that used to be in the old (AB) course... which I assume is what you recall. It died in 2009. The language is now Java so memory layout is completely ignored. Not that I would consider that an appropriate topic for beginners at any rate.
- melesian 3y agoA teacher should know the difference between disinterested and uninterested.
- njharman 3y agoI'm surprised that educators think their goal is to get "more"/"most" students involved in the subject they are teaching. Lower education's educational goals are to expose students to all the things. So, that they have the opportunity to find out what education (including none/little) and what life they would enjoy. Secondary goals would be to instill a joy of learning, to prep the few that should go to college for it.
- gowld 3y agoA little tacky to use a high school class as research fordder for the startup. I hope Charlie pays the students and/or the school. What's missing from CS education the 100th new teaching language.
- crabbone 3y agoOP comes from a perspective that the goal is for as many students as possible to succeed. I don't believe in this in the context of high-school (where education is sort of mandatory). From what I've seen, in order to make content more engaging, correctness and coherence are the first to fly out of the window. I'm not against teaching to program, but I'm against calling that "an introduction to CS", because that confuses students: they might think they've been introduced to CS, but they are usually given a practical skill vaguely related to CS + a number of superstitions about CS instead. I think that CS can be taught as a bridge between language (especially in the sense how language grammar is taught) and geometry (in the way it's taught in high-school, where it's typically Euclidean geometry with emphasis on proofs). And it can be, and perhaps preferably should be taught w/o exposure to "practical" programming languages. Where "practical" programming languages may be an elective class, similar to how some high-schools have vocational training in say, truck driving, or plumbing etc. If this were the case, those who find CS interesting would have a better idea of what's to come, should they continue on this path in a college, while those who found vocational training in programming more interesting would see themselves as continuing on a path to a trade school. And, eventually, this would help fix the confusion associated with naming and curriculum context. Present day situation is very confusing because industry needs programmers, but colleges know (sort of) how to make computer scientists, and trade schools teach college curriculum, just watered down. Also, college curriculum is littered with junk like "Intro to programming with Python / Java / etc. 101" that should never have existed, but exists because, in reality, those who went to college want to become programmers, not academics.
- michaelcampbell 3y agoI guess I'm an outlier in that I like coding for coding's sake, but I get that many don't. I think the OP found that for _most_ people, coding is a way to get something else done. Find that something else that they actually enjoy and how coding can help, and you've got a winner.
- bladecd 3y agoThe fundamentals of computer science, as well as programming, is solve practical problems. To learning and master programming, one has to build something even it's simple at the beginning. Once one has built something, he will be able to build bigger things. One issue is student are taught to program, but at that time, e.g., high school and college, he has no idea how a program or software actually works. He has very limited appetite to program. There is no short, only practice a lot.