RFC on Introduction to Computer Programming Syllabus
-
That's serendipitous, because I was just experimenting with that - what did you change it to?
I'm a traditionalist. White background, black headers. Marc
-
I'm a traditionalist. White background, black headers. Marc
I can't bring myself to go that "plain vanilla," but I did compromise with this iteration: http://jsfiddle.net/clayshannon/LnWAp/4/[^] BTW, say "hey" to your brother Chad for me. I'm a Packers fan from way back. Hopefully he hasn't gone over to the Titans.
-
I have created a syllabus for an "Intro to Programming" course. I am open to suggestions on how to tweak it*. You can see it here: http://jsfiddle.net/clayshannon/LnWAp/[^] * If you have a "better idea" for a syllabus, simply create a "fork" of that and provide the link.
Compare and align against the work that ACM has done. http://www.acm.org/education/curricula-recommendations[^] http://www.acm.org/education/CS2013-final-report.pdf[^]
-
Did you also include the section that teaches people how to always ask for "example code" when posting a question on Code Project?
The difficult we do right away... ...the impossible takes slightly longer.
Richard Andrew x64 wrote:
Did you also include the section that teaches people how to always ask for "example codegive me codezz asap" when posting a question on Code Project?
FTFY
To alcohol! The cause of, and solution to, all of life's problems - Homer Simpson ---- Our heads are round so our thoughts can change direction - Francis Picabia
-
I have created a syllabus for an "Intro to Programming" course. I am open to suggestions on how to tweak it*. You can see it here: http://jsfiddle.net/clayshannon/LnWAp/[^] * If you have a "better idea" for a syllabus, simply create a "fork" of that and provide the link.
Clay, 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. HTH
-
I can't bring myself to go that "plain vanilla," but I did compromise with this iteration: http://jsfiddle.net/clayshannon/LnWAp/4/[^] BTW, say "hey" to your brother Chad for me. I'm a Packers fan from way back. Hopefully he hasn't gone over to the Titans.
B. Clay Shannon wrote:
BTW, say "hey" to your brother Chad for me.
I'm an only child. :) Marc
-
B. Clay Shannon wrote:
Perhaps your definition of the word "many" differs from mine.
Any article that uses the word many to describe proportion of acceptance or rejection of certain notion is of course doomed. Never use many if you are trying to impose a presumably generalized opinion.
B. Clay Shannon wrote:
As to programming expanding your mental horizons, it's commonly accepted. Do some research.
No it does not. Define mental horizon.
B. Clay Shannon wrote:
I think you meant "lose" (the opposite of gain, or win) not "loose" which is the opposite of "tight."
Are you gonna talk about or grammar and language or content? (Hey loo, gonna is not even a word and this thing which I typed is wrong)
B. Clay Shannon wrote:
A major point of the syllabus is that there are myriad ever-changing technologies, but that there are certain basics/constants that are necessary.
No. Nothing is necessary. Nothing is mandatory. The whole presumption is wrong. If you were to talk about extreme basics of programming regardless of technology, only thing you are left with is Maths. Yes one can debate a lot on this but everything in the end would lead to Maths.
My CP workspace: Incredibly trivial and probably useless code samples[^]
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. We should honor that. - Grant
-
Compare and align against the work that ACM has done. http://www.acm.org/education/curricula-recommendations[^] http://www.acm.org/education/CS2013-final-report.pdf[^]
Thanks; aisle czech those out.
-
Clay, 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. HTH
Thanks; I have updated it, and changed the appearance a bit (somebody else's suggestion), and will look at another couple of links; I will post the result (link) when finished.
-
I have created a syllabus for an "Intro to Programming" course. I am open to suggestions on how to tweak it*. You can see it here: http://jsfiddle.net/clayshannon/LnWAp/[^] * If you have a "better idea" for a syllabus, simply create a "fork" of that and provide the link.
Latest iteration is http://jsfiddle.net/clayshannon/LnWAp/11/[^]
-
I have created a syllabus for an "Intro to Programming" course. I am open to suggestions on how to tweak it*. You can see it here: http://jsfiddle.net/clayshannon/LnWAp/[^] * If you have a "better idea" for a syllabus, simply create a "fork" of that and provide the link.
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.
-
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 have created a syllabus for an "Intro to Programming" course. I am open to suggestions on how to tweak it*. You can see it here: http://jsfiddle.net/clayshannon/LnWAp/[^] * If you have a "better idea" for a syllabus, simply create a "fork" of that and provide the link.
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).
-
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)
-
I have created a syllabus for an "Intro to Programming" course. I am open to suggestions on how to tweak it*. You can see it here: http://jsfiddle.net/clayshannon/LnWAp/[^] * If you have a "better idea" for a syllabus, simply create a "fork" of that and provide the link.
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.
-
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.
Thanks, Wendy. Yes, your thoughts on logic and critical thinking remind me of a couple of books I would recommend and "touch on," one of them being "The Design of Everyday Things" by Donald Norman.
-
I have created a syllabus for an "Intro to Programming" course. I am open to suggestions on how to tweak it*. You can see it here: http://jsfiddle.net/clayshannon/LnWAp/[^] * If you have a "better idea" for a syllabus, simply create a "fork" of that and provide the link.
"A typical 'Day in the Life' of a Programmer" On this topic I could see it expanded to two categories: 1. A typical day for a programmer in a properly managed department. 2. A typical day in a department ran by a hate driven, non technical, MBA Nazi.
-
"A typical 'Day in the Life' of a Programmer" On this topic I could see it expanded to two categories: 1. A typical day for a programmer in a properly managed department. 2. A typical day in a department ran by a hate driven, non technical, MBA Nazi.
I get your drift. Unfortunately, having no experience with the former, it would be hard for me to even envision.
-
I get your drift. Unfortunately, having no experience with the former, it would be hard for me to even envision.
Here's one good starting point. Leadership Some more. IT leader ship failures
-
I have created a syllabus for an "Intro to Programming" course. I am open to suggestions on how to tweak it*. You can see it here: http://jsfiddle.net/clayshannon/LnWAp/[^] * If you have a "better idea" for a syllabus, simply create a "fork" of that and provide the link.
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.