I think that you're having a bad day and being argumentative.
We all have bad days. Sometimes they go on for quite some time. But do we have to share the badness with others?
But the originator of the post has a valid objective - Introducing computer programming to people who know nothing about it. With the presumption that they do. And he's stated his target audience is school kids. He should refine his target audience more but it's a well thought draft and he's asking for constructive input. I think he's doing a good job with what he's got. And with his intentions.
I admit that I did not run through the whole thing (doesn't look bad, at least from the points I read), but here is a statement of mine what I think of teaching programming to everyone:
Whoever is interested in learning to program shall have the opportunity of doing so. It is most commonly know that you need logical understanding to get into programming. People who don't have this understanding (talking of it as a resource which might be there, or can be learnt / sharpened) and are not interested in programming at all probably won't benefit from these courses. Looking at todays youth (even people from my generation, and I'm only 20 years old - let's include anyone from 20 to 25 in that statement) I'd prefer courses which teach them responsibility, Google searches and general computer awarness.
I will never again mention that Dalek Dave was the poster of the One Millionth Lounge Post, nor that it was complete drivel.
I like where it is going...
One Headline missing (imo), is Analysis...
How seeing a problem, and solving it logically, leads to programming projects.
I guess in your terms:
Why Does Programming Exist?
Because we have inexpensive computer systems that CAN be programmed, and help solve problems.
What are Programs and who can Create them?
Solutions to specific problems. Anyone who can code. They are born of need/desire for things to
be different than they are. For example, wouldn't it be nice if your cell phone would go Silent when
you walk into a movie theatre, and then goes back to normal when you leave.
Programming is about making that happen. The analysis that goes in first. Which leads to design
decisions (which make or break apps)... And the ultimate requirements (GeoFencing vs. BlueTooth "silence" signal).
Anyways, just some thoughts. As a software developer, my first position was Programmer/Analyst, and
the Analyst portion was the coveted part... So I could be biased.
I think I'd include a section on the differences between software, firmware, FPGAs, etc. The lines between these different types of programming are blurring, so knowledge about one gives some insight into the others.
Many items are controlled by firmware these days, from refrigerators to cars. To me, this is the crux of why everybody should have some programming education, not because they should all become programmers, but because it helps people to feel in control of their world rather than at the mercy of it. For example, new cars consist of multiple modules of firmware, all interoperating. An understanding of software in general provides a lot of understanding of why they work they way they do (never needing a tuneup, check-engine light, OBD2 readers, learning adaptive shifting, etc.).
We can program with only 1's, but if all you've got are zeros, you've got nothing.
Thanks, but I think that's "beyond the scope" of this introductory course. It is intended for people as young as middle school and to just "scratch the surface" of the programming world in a "sampler"/"overview" fashion.
I appreciate your thoughts on why all should learn *about* programming - to feel more in control of "their world."
I find any discussion about teaching programming to the masses interesting because back in 1996-97 while working on my Master's thesis, I included a programming component in the Computer Skills and Applications class (course for non-computer science majors that introduced students to the Internet, word processors, spreadsheets, and database applications) that I was able to teach at my university. After graduation, I did teach computer science at the community college level for 3 years.
Having said that, one thing about writing a syllabus is that one should include outcomes--what should a student be able to do upon completion of this course? You did say that you envision this course to be a one year course--if you're looking at it as a "survey" type course (i.e. learn about these topics but not actually implement anything), then I think a year is fine. If the outcome is for students to be able to develop a web site, desktop application, mobile app, etc., the time frame is far too aggressive for them to have a positive experience (teaching programming is tough--you're teaching people how to problem-solve and it's a building process and students need have time to digest it--and given the target group--grade school/high school--they're brains are just at that point where they're able to think more logically).
Thanks for that; I may use that terminology ("Survey").
Basically, my goal for the students can be deduced from what I would tell them (something like this) at the outset:
I will consider this class successful for you if you have reached any of the following conclusions at the end of the class: Now that I understand what programming involves,
(a) ...I know that I want to become a programmer, and will explore it further
(b) ...I know that I will *never* want to become a programmer, and will focus on other things
(c) ...I will be able to relate to future programming coworkers better (they are neither demigods nor hopeless nerds)
It looks like a good comprehensive overview of programming and what it entails.
The only thing that I would suggest is maybe including a short introduction to logic and critical thinking and how it relates to finding good solutions (algorithms) to programming problems. I'm not sure if this is part of the Algorithms section in your outline.
Some people enjoy that aspect of programming and others are quite happy just to program according to some specification. In my opinion that is what is exciting about programming, otherwise it is more like being a translator - translating the language of the spec into a programming language (a simplistic view, I know). This also exposes the students to another of the many aspects of programming to help them decide which, if any, is right for them.
In the past, I taught a first year university course in 'fundamentals of computing' where most of the class had not had much interaction with a computer before (some had never even switched a computer on) and they struggled with the logical step-wise decomposition of a solution into terms that a computer understands. Of course, most people in developed countries today have more exposure to technology so I'm not sure that this is a big an issue anymore.
Under "Basic Website Creation", I wouldn't point people towards W3Schools as a resource.
They are not affiliated with the W3C and have a bad reputation amongst web professionals.
This site will explain more: http://www.w3fools.com/[^]
Maybe point them towards a web dev community, such as SitePoint[^] instead.
I find things on t'interweb that Herself would be interested in - but she's not going to walk that far when she has got comfy, and I'm not lugging my PC over to her. (Gawd knows what she would do to it)
So I always sent myself an email: even if it was just a URL to an APOD or similar.
Then I found this: Message Beam[^] - it transfers little messages between a Chrome extension and your Android phone / Tablet.
Quick, simple, works. Nice. Even includes encryption...
Manual install because it isn't Play Store, but it's all free, and very easy to do.
Those who fail to learn history are doomed to repeat it. --- George Santayana (December 16, 1863 – September 26, 1952)
Those who fail to clear history are doomed to explain it. --- OriginalGriff (February 24, 1959 – ∞)