News for hackers. Stuff that matters.
Re:Code is not a foreign language, and high schools shouldn'... by ghaff on Monday March 18, 2019 @03:20PM (#19424220)
I dunno. It's hard for me to see a year (say) of a foreign language that's never used outside of that class as having a lot of value. As I dimly remember my high school language classes, you didn't even really get into literature and culture associated with the language until later on.

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.

Re:Code is not a foreign language, and high schools shouldn'... by mywittyname on Monday March 18, 2019 @03:56PM (#19424574)
I feel like teaching coding is a waste of resources, for several reasons: there's a glut of material readily available for individual study; what's taught will be largely irrelevant when the student graduates; and importantly, it will likely be poorly taught. Good CS teachers can probably get jobs paying 3x as much, so only the most dedicated will stick with teaching.

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.

Re:Code is not a foreign language, and high schools shouldn'... by spamizbad on Monday March 18, 2019 @04:47PM (#19425118)
I had a similar experience. My first programming teacher in high school was also my geometry teacher; a subject he taught extremely well (at least from my 15 year old point of view).

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.

Re:Code is not a foreign language, and high schools shouldn'... by flukus on Monday March 18, 2019 @07:29PM (#19426407)
> 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 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.

Re:Code is not a foreign language, and high schools shouldn'... by itronitron on Monday March 18, 2019 @06:49PM (#19426149)
>> "If you're a professional programmer, there's a good chance you'll have a manager

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.

Re:Code is not a foreign language, and high schools shouldn'... by shkkmo on Monday March 18, 2019 @07:57PM (#19426611)
I took 2 years of HS programming from an excellent teacher, pascal one year then C++ the second. The second year was an AP class and every student got a 4 or 5 on the AP test.

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.

Re:Code is not a foreign language, and high schools shouldn'... by chilukrn on Tuesday March 19, 2019 @03:49AM (#19428869)
I think that's because it is taught by people who are not well trained in CS themselves for the most part, and a not so well defined curriculum. "You can build a cool website/mobile app" can help only so much in inculcating an interest in computing.

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

Re:Code is not a foreign language, and high schools shouldn'... by namibj on Tuesday March 19, 2019 @08:21AM (#19430094)
I'm currently trying to teach a friend structured software design via the https://deinprogramm.de [0] approach based on Racket/Scheme, resisting a friends opinion on it being not useful enough in industry and all that. The thing is, that while I'll have an easy time finding her a job with no real experience if she can demonstrate a structured approach I can vouch for, the opposite is far harder. If she can write python, fine. But no one will pay her/teach her without a long trade school contract if she can't demonstrate that she can be left alone with a task that takes 50~150 hours. Or at least that she only lacks a bit experience and needs some guidance to end up with a concise overall design.

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/

Re:Code is not a foreign language, and high schools shouldn'... by ghaff on Monday March 18, 2019 @04:09PM (#19424703)
Fair enough. Though, unfortunately, high school curriculums have to be more or less designed on the premise that individual study won't happen in many cases.

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.