3 ms·
The 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
by danpalmer 3y ago
The 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.
- Jtsummers 3y agoThe way my CS teacher in high school handled this (we had the benefit of 2-hour class periods twice a week and a normal 1-hour class period on Mondays) was to let the students go to their own level. Essentially running 2-3 classes at once. The first part of the first semester was the same for everyone more or less: An introduction to the language (BASIC, this was in the 90s) and some basics of computing. Then for the very motivated/advanced (had already learned some programming or were just more interested0 students he provided instruction on deeper topics in CS and programming and it became increasingly self-directed. For the less motivated (pretty much everyone else) it was a series of projects that kept most of them engaged enough to learn the material. So students who came in knowing some programming or who were particularly motivated got an "honors" introductory course (in university course description terms) and the rest got the typical introductory course. That did take him being particularly motivated as a teacher and knowing the material well enough to pull it off, though). Evaluations can be challenging if students obsess over "fairness". The advanced students are getting As almost as a given, and some of them might resent that the other students can also get As for doing less work. But that's just kids being kids. The advanced students opted to go in for extra work, it wasn't forced on us and technically we could have fallen back to the regular coursework at any point.
- phlakaton 3y agoScratch is ECMAScript with a GUI. Snap is practically Scheme with a GUI. You do yourself a disservice discounting either of these as a CS language. You wouldn't build big general-purpose programs with them for their limited domain and programming ergonomics, true, but you aren't building big general-purpose programs in high school.
- Rapzid 3y agoHey I asked this elsewhere but when you say "CS" do you really mean computer science? Are you prepping students for the college exam? I learned CS in HS 20 years ago and we used DJGPP; it was fine. Python could be fine but it almost seems too high level for the purpose of CS? The articles and comments I see make HS CS sound like a glorified Intro to Computer Media class.
- phlakaton 3y agoTEALS, a popular program in the US for building up CS programs in high school, offers several courses: a general introduction, a cybersecurity course, an AI course, and two courses targeting AP CS exams. The general introduction teaches in Snap or Python. Python is plenty capable for the level this course us at. You're not going deep into algorithms or datastructures or performance.