If I personally had to chose between a foreign language course, or programming one as a learn-but-never-really-apply course for my child, I'd push them towards the foreign language.
If I personally had to chose between a foreign language course, or programming one as a learn-but-never-really-apply course for my child, I'd push them towards the foreign language.
On the other hand, a year of a language like Python probably has some value in teaching logic and problem-solving even if the student never really programs in the future.
My opinions are probably biased because I had an otherwise good teacher who was just poorly trained, and it was a huge setback for me. I really enjoyed programming, until I took a course in high school. This lead me to pursuing chemistry in college until I learned to program again on my own (after which, I flipped to CS).
I think it would be better to add discrete logic to math courses. That way, students learn the fundamentals that they can apply independently, or in college.
If you assume independent study, there's probably very little that has to be taught in high school and we'd probably do things very differently.
His programming class however sucked all the fun out of it. His brother-in-law was a retired manager at Motorola and gave him a bunch of (even for the time) thoroughly obsolete suggestions:
Everything started with being handed a specification. From there, you had to write a solution in pseudo code, which was a separate language from the one we were learning (TrueBasic I believe). Once your pseudo code was handed in and approved, you could begin programming; however, you had to document up-front all the variables you were going to be using and document their purposes. In addition, you had to explain in plain english what each subroutine did and what variables it would access and state whether it would simply read or read and write them (and then explain why).
I remember him saying "If you're a professional programmer, there's a good chance you'll have a manager who isn't a programmer and they'll be reviewing your work!" I think he took his brother-in-laws advice too much to heart, because he really felt like he was giving us all a real taste of what being a "real" programmer was like. Sadly, this was 1998, and I suspect software development hadn't operated like that for a good 15-20 years (or if this was a weird practice localized to Motorola in the 70s)
Any programming classes taught to minors should favor core fundamentals, exploration and creativity and avoid dwelling on industry practices which often have a shelf-life measured in years.
This is the number one reason that schools should not try to teach students employable skills, because they usually get it very wrong. Teaching youngsters business processes that will be 10 years old when they graduate from college severely limits what they can achieve.
I am all for teaching coding and other creative activities, but these should be explorations. Let the student discover on their own the degree of technical rigor they want to apply themselves to.
I think that's good to start with, for a start it's mostly just the CS equivalent of "showing your work". It's also important to they develop the ability to break a problem down and to beginners doing this at the same time they're fighting the compiler can be overwhelming. I agree exploration and creativity are important, but they could make room for that as well, more so when they're more comfortable with everything else.
As an approach it's quite similar to literate programming, which still has it's champions.
> Sadly, this was 1998, and I suspect software development hadn't operated like that for a good 15-20 years (or if this was a weird practice localized to Motorola in the 70s)
I think we're about the same age, but when I entered the industry (05-ish) UML (https://en.wikipedia.org/wiki/Unified_Modeling_Language) and gantt charts wer in decline as agile became the hot new thing.
10 years later, I taught myself to do web development but I started with a strong understanding of core concepts and how to read code to understand how a large code base worked. Even before then, the understanding of logic and the practice of procedural thinking was immensely valuable.
A year afterwards, this teacher requested to be allowed to work part time and only teach the programming classes and not the other math classes they wanted to schedule for him. He wanted to be able to do higher paying work on the side to supplement his modest teaching income. Instead the school district fired him and put the football coach in charge of the programming classes. My brother took those classes and they were a complete waste of his time.
So getting legislatures on board with teaching or requiring programming is not enough. We need enough trained quality teachers to teach these classes so we don't waste students time and turn them off to coding. We also need school boards and principles who value these teachers and understand the difficulty with simply slotting other teachers into these positions and giving them a text book to work from.
I wish there's something more like this book (https://en.wikipedia.org/wiki/Structure_and_Interpretation_o...) for schools which show that computation is a good extension of mathematical thinking (when used in the sciences), and beyond that, it can used to build "cool stuff" like mobile apps or software to control robotic arms.
In case my last sentence was not clear, I'm trying to allude to different roles of software. One can use it as a useful, very fast but dumb calculator doing computations to predict a molecular structure or a spreadsheet doing a bunch of stuff for an accountant/finance guy. Many times, we tend to think of it as useful to build cool tech apps/websites and force feed them Java/C++ or some such things which they're not ready for yet[1]. We should inculcate "computational thinking" before we teach them Javascript websites/java apps.
[1]As per my experience with some fancy schools teaching 5th/6th grade kids how to build their first apps
Considering that the most senior engineers spend far more time on high-level design than on coding, it seems the better carreer path.
The book you search might be the one linked below, btw.
[0] German brother of https://programbydesign.org/
At least main stream news publications are now writing articles about it. This is a perfect example of just how clueless lawmakers can be. It's scary.
A year of critical thinking and logical reasoning, how THAT is a general skill that can be applied everywhere.
I'm not sure a whole year would need to be filled with that though, those skills would also be better grounded in reality.
Combining those skills in to what used to be home ec (which I never had the opportunity to take) could be a good general life skills class.