Should Computer Programming Classes Focus on Projects Instead of 'Logic Puzzles'? (acm.org) 108
Long-time Slashdot reader theodp writes: Writing in the November Communications of the ACM, MIT's Mitchel Resnick and Natalie Rusk explain that the educational use of coding in schools is at a crossroads. The good news? "School systems and policymakers are embracing the idea that coding can and should be for everyone."
The bad news? "In many places, coding is being introduced in ways that undermine its potential and promise. If we do not think carefully about the educational strategies and pedagogies for introducing coding, there is a major risk of disappointment and backlash." To address this, Resnick and Rusk argue, the design of technologies, activities, curriculum, communities, and spaces to support coding and learning should be guided by the "Four Ps" of Creative Learning: Projects, Passion, Peers, and Play:
"To us, it seems natural to introduce coding to young people in a project-oriented way, so that they learn to express themselves creatively as they learn to code. But many introductions to coding take a very different approach, presenting students with a series of logic puzzles in which they need to program animated characters to move from one location to another. When students successfully solve one puzzle, they can move on to the next. Students undoubtedly learn some useful computational concepts while working on these puzzles. But learning to code by solving logic puzzles is somewhat like learning to write by solving crossword puzzles. That's not the way to become truly fluent. Just as students develop fluency with language by writing their own stories (not just playing word games), students develop fluency with coding by creating projects (not just solving puzzles)."
Putting the Four Ps into practice, the authors concede, is easier said than done. "From our observations of Scratch activities around the world over the past decade, we have seen the value of Projects, Passion, Peers, and Play in supporting the development of computational fluency. But we have also seen that it is not easy to put these four principles into practice within the realities of today's standards-based, assessment-driven classrooms."
The bad news? "In many places, coding is being introduced in ways that undermine its potential and promise. If we do not think carefully about the educational strategies and pedagogies for introducing coding, there is a major risk of disappointment and backlash." To address this, Resnick and Rusk argue, the design of technologies, activities, curriculum, communities, and spaces to support coding and learning should be guided by the "Four Ps" of Creative Learning: Projects, Passion, Peers, and Play:
"To us, it seems natural to introduce coding to young people in a project-oriented way, so that they learn to express themselves creatively as they learn to code. But many introductions to coding take a very different approach, presenting students with a series of logic puzzles in which they need to program animated characters to move from one location to another. When students successfully solve one puzzle, they can move on to the next. Students undoubtedly learn some useful computational concepts while working on these puzzles. But learning to code by solving logic puzzles is somewhat like learning to write by solving crossword puzzles. That's not the way to become truly fluent. Just as students develop fluency with language by writing their own stories (not just playing word games), students develop fluency with coding by creating projects (not just solving puzzles)."
Putting the Four Ps into practice, the authors concede, is easier said than done. "From our observations of Scratch activities around the world over the past decade, we have seen the value of Projects, Passion, Peers, and Play in supporting the development of computational fluency. But we have also seen that it is not easy to put these four principles into practice within the realities of today's standards-based, assessment-driven classrooms."
Re: (Score:2)
Well your subject is correct the rest of your statement is just plain fucked up from your typical conservative snowflake looking out only for yourself bullshit
Woah, hold on there. The conservatives call the liberals snowflakes. You seem confused.
Re: (Score:2)
how are "oh noes they didn't call me my preferred pronoun zir, my feewings were huwt!" and "oh noes they want to take away my weaponses, my feewings were huwt!" really different? :)
sure, the more intelligent people on both sides are more than capable of coming up with meaningful and plausible justifications why it is important that society works the way they would like to, which is then happily picked up and regurgitated by the less intelligent people on both sides. but what makes these people snowflakes is
What were we actually talking about? (Score:2)
If you have to feed the trolls, you don't have to propagate their Subjects. But my theory is that the persistent trolls must be faking it for cash, and they probably get bonus payments for your replies. I just can't believe any real person could be so sincerely stupid or proudly ignorant. Not a real exception, but mental illness might drive some of them, such as the heavy duty Bible thumpers.
Re: No (Score:1)
Teaching programming, or anything at K12... (Score:2)
ONLY has tangible value with well-defined exit points, vocational and academic.
CS at K12 has neither. In fact, college CS in the ONLY discipline that has any expectations regarding study in K12. Fine arts, better have a few years of arts. Languages the same.
CS, nah, we might throw you a bone if you did AP or IB, but we place zero value on it, rather they all want Calc/Phys.
So... projects or puzzles... not going to be cared about.
Re: Teaching programming, or anything at K12... (Score:2)
Any expectations should have been zero expectations.
Re: (Score:1)
The article is not about teaching programming. It is about teaching coding.
Re: (Score:3)
One thing that's often entirely missing when doing a coding education is the need to break down a problem into stages which usually results in something more advanced being made into one huge blob with spaghetti code.
Coding is much like building with Lego blocks - you rarely find a way to re-use those huge monolith blocks but you often re-use the smaller blocks with 4, 6 or 8 points in various colors.
Re: (Score:2)
Programmers break a problem down into stages and devise solutions to problems. Coders merely cut and paste computer code snippets in order to implement solutions devised by programmers. Most coders that I have met could not get out of a wet paper bag without help.
Re: Teaching programming, or anything at K12... (Score:3)
You are trying to create a distinction which does not exist. "Coding" is slang for "programming". What would be different is "engineering". Then you would hopefully be trained in practices and standards designed to create reliable software. But since there is no licensing program for software engineers like there is for other kinds, one might argue that even that distinction does not really exist.
Re: (Score:2)
Teaching coding? What would that mean? A bunch of pointless algorithms adding numbers? If kids are going to be interested, they need to be "coding" something they care about. Anything they care about will require some background in something not computer science. Say art, music, etc. In short, they'd need a rounded education, not one terminally bland like "coding".
Re:Teaching programming, or anything at K12... (Score:5, Insightful)
It's a fair bit more complicated than that.
Logic puzzles have well defined answers with well defined paths to those answers.
Projects have unclear answers, with many paths to the answer, and many paths which don't get there but which are still valuable learning exercises.
For someone to grade a project, they have to know their shit. They have to be able to appreciate the journey, not the destination.
For someone to grade whether or not someone solved a logic problem, they just need to know an answer.
We don't pay our teachers enough to ask them to focus on projects. We don't have requirements stringent enough to select people who can judge a project, success or fail, the way a semi-skilled individual can tell if a logic problem was solved or not.
In a perfect world, I'd be 100% project. In this world? Encourage projects, but make sure the final is a logic puzzle.
Re:Teaching programming, or anything at K12... (Score:4, Insightful)
TFA is asking a dumb question.
A beginner is not capable of building a project.
So the obvious answer is to start with simple puzzles, like write a program to find the 1000th prime number. Then build on that to more complex stuff.
The academics quoted in TFA say the opposite, but when designing curriculum for K-12, the last people you should listen to are ivory tower coneheads. These are the people who gave us debacles like "new math" and "whole word reading".
Re: (Score:3)
So the obvious answer is to start with simple puzzles, like write a program to find the 1000th prime number. Then build on that to more complex stuff. ... great idea.
Sure, for a "starting class" in computer science
What about counting from 1 to 1000? To simple?
Re: (Score:3)
> Logic puzzles have well defined answers with well defined paths to those answers.
Not necessarily, especially not when the tool for solving them is so versatile. These aren't tavern puzzles with physically rigid structure that demand a precise sequence for a solution - there are typically plenty of ways to solve any given programming problem. IMHO the only difference between a "puzzle" and a "project" is a project has multiple "puzzles" but they're mostly all mundane and boring; often the solution to mo
Re: (Score:1)
Re: (Score:3)
ONLY has tangible value with well-defined exit points, vocational and academic.
That's definitely not true. Reading Shakespeare will make you a better person (and you can certainly test for knowledge on the topic), but it's not going to get you a career. And that's ok.
Re: (Score:3)
ONLY has tangible value with well-defined exit points, vocational and academic
One exit point (and perhaps the only tangible vocational one) is to spark an interest in the subject matter. That's pretty important in K12.
But coding trains your problem solving and analytical skills, which are valuable in a number of other subjects, and useful in life in general. For that reason I think it's good to expose everyone to a bit of coding in K12; they don't have to become programmers, but they will take away something useful from it. Especially if you take it from solving logic puzzles t
Re: Teaching programming, or anything at K12... (Score:3)
In theory, you'd expect the logical and problem-solving skills to help in other areas of life. But we would need empirical data that this is so here, because apparently reasoning skills often surprisingly do NOT transfer across domains of knowledge.
Re: (Score:3)
You're asking the wrong question... (Score:2)
.
Good grief. What classes should focus upon is not an either or question. The intelligence of those in the field is in the variety of knowledge. None of us is as smart as all of us.
Re: (Score:3)
Re: (Score:3)
Next time a recruiter contacts you, tell him you're looking for $300k (push up all our salaries)
I'm making $500k you insensitive clod!
You fool, ask for $600k!
Re: (Score:2, Informative)
You fool, ask for $600k!
$640k ought to be enough for anyone.
Re: (Score:1)
Actually it should be guided by the 1 "L": (Score:2)
Logic. Everything else is just sugar coating.
Re:Actually it should be guided by the 1 "L": (Score:5, Interesting)
I agree 100%. It's easy to see the relation between logic and programming, but logic should be taught in elementary school because it is the foundation of every academic discipline. When you write papers for English classes, you are creating inductive arguments. When you attempt to falsify a hypothesis you are using deductive logic (and when you come up with that hypothesis you use inductive logic). Math problems are deduction with numbers. Even history, if you have a teacher that knows better than to just have you memorize events, consists of analyzing historical documents and evidence and arguing that they suggest a particular narrative of the truth.
Logic is academia, but for some reason we teach all of the subjects first and then some study logic in college. We build houses without foundations, and then we act surprised when they eventually blow away. Pretty much all first year college courses, regardless of what subject they're actually in, are logic classes. That's the one skill students almost never get from high school and it's why they show up at college trying to write by memorizing dumb paper formulas, do math by memorizing steps, and do science by mimicking (badly) the genre conventions of the literature.
Logic should be taught in elementary school. It should be so ingrained in all students' minds that they approach every problem logically.
Re: (Score:3)
Re: (Score:2)
I agree with this to some extent, but I think we have to be careful how we implement it. The problem with informal fallacies is that people confuse them with formal fallacies. Even when they don't, they often don't understand them.
As a regular here on /., I'm sure at some point someone has incorrectly accused you of making a straw man argument or being guilty of some other informal fallacy they didn't completely understand. For example, when I construct reductio ad absurdum arguments here the response is of
Re: (Score:2)
Re: (Score:2)
Logic should be taught in elementary school. It should be so ingrained in all students' minds that they approach every problem logically.
That implies that people have the required talents for abstract thought, which most people don't. Studying logic as such is thinking about thinking, which is pretty specialised. Some people can do it much better than others. I am not sure the required talents can be taught as such, but they can certainly be nurtured. So I would agree that logic in some form should be taught in school, but I do not expect every child to be Aristotle, any more than I expect every child to be a concert violinist.
Re: (Score:2)
That implies that people have the required talents for abstract thought
Unless a person is mentally deficient, they do have the required talent for abstract thought. Anyone can learn basic syllogisms and how to represent them symbolically. If a student can learn to add and subtract, they can learn basic logic. You make it sound like a large part of the population is unable to play chess, video games, or figure out how to get dressed in the morning.
Some people can do it much better than others.
You could say that about pretty much any discipline. How much of that is innate and how much is learned, I don't know, but we still
Re: Actually it should be guided by the 1 "L": (Score:2)
Best comment so far.
Consider for a moment Michelangelo's sculptures. When you look at David, do you care about the tools he used to extract his vision from stone? Probably not. You care about the vision.
Programming is very much the same. A program is an assemblage of logical constructs interacting to accomplish some predefined set of goals. Programming languages are just the chisels and hammers.
Re: (Score:2)
Unless perhaps you are interested in sculpture, and want to know how he got the nice smooth curves and such. Or interested in painting and mixing your own colors, and wondering how did Da Vinci mix the colors to get that particular shade of green on the Mona Lisa. Or how did Monet get his brush strokes to be just *so*...
Heck look at the Bob Ross painting show. Not exactly fine art. But aside from his awesome 'fro and cool relaxing sleepy-time voice, many people interested in making their own art are loo
Start with a spreadsheet (Score:3)
For kids, I'd think that if you can enter numbers into a spreadsheet, then enter a "formula" at the bottom that adds them up, extend that to multiplying by quantity -- such as with items at a checkout at a grocery store, then add sales tax by percent, you can visually demonstrate step-by-step the concepts of variables, arrays, and functions.
If someone gets stuck at one spot, a peer can show them how to fix it, and they can see the results right then and there, and perhaps subsequently visualize it when starting to write code. If they *can't* make it past that point for whatever reason, it should be pretty clear exactly where they get stuck, and to help move past that point. Writing code requires you to mix linguistic concepts with mathematic (not arithmetic) abstractions right out of the gate, which is kind of a high hurdle (for many) to start with.
If nothing else, it will familiarize them with spreadsheets early on, which frequently appear in the workforce for a lot of desk workers who *aren't* programmers.
Re: (Score:3)
My kids are learning an introduction to programming at primary school (grades 3 and 5). They start out with Scratch - https://scratch.mit.edu/ [mit.edu] which is a block-based programming language. It's got all the constructs of a regular programming language, except you drag and drop blocks that link together.
They are now both comfortable enough with programming that they remix other projects on Scratch, as well as create new projects of their own.
Re:Start with a spreadsheet (Score:4, Insightful)
For kids, I'd think that if you can enter numbers into a spreadsheet, then enter a "formula" at the bottom that adds them up, extend that to multiplying by quantity -- such as with items at a checkout at a grocery store, then add sales tax by percent
That's just what will get kids fired up: tax calculations!
Re: (Score:2)
This. No karma.
But we need projects with proper analysis. Logic puzzles are great for algorithm learning.
Pretty long back, I taught Excel/Acess and VB6 to undergraduate actuarial students.
We put together Plinko from The Price is Right (ball dropped down a wall of pins, bounces around) in Excel via scripting (Excel provided an easy UI layout for the game). Then we simulated using various changes to the location of the pins (which were "X" values in a certain area, 50% chance of left/right when impacted).
What's the difference? (Score:2)
Is the real point about challenging learners to solve some "real world" problem (project) vs. some intellectual challenge which they can't relate to ("Logic Puzzle")? If an instructor can't phrase an intellectual challenge as a real world issue, they fail.
Both. (Score:5, Informative)
Both.
Is this really intro to programming starting with hello world where you are learning things like if-thens, loops, what arrays are, etc or is this "how to teach [java|C++|whatever] development" ?
Intro to programming levels, puzzles with rules and constraints that force the student into using certain tools (ie, as part of the grading rubric "use at least 4 arrays, one of which has to be 2 dimensional") or as looking for alternate ways of solving the problem (do 2 variations of fizzbuzz, one of which must use a switch/case statement) can be good to learn specific programming concepts.
If this is more of a "how to program in java" then projects with clearly defined requirements (which then act as a grading rubric) are almost essential. Unless you are one of those people that think that attendance and participation are worth 20% of the grade and multiple choice exams should be used for another 50% of the grade.
No thanks (Score:5, Funny)
When training children, we should focus on the Four I's: Ignorance, Indolence, Illiteracy, and Incomprehension
Re: (Score:2)
Re:No thanks (Score:4, Interesting)
I don't think that scarcity is artificial. It is pleasing to believe that genetics plays no role in coding talent, and that absolutely anyone could become a master coder if only they had some education in it when they were children. Many people want to believe this, and have very strong economic motivation to believe this, but desire and motivation do not make something true.
Coding education has been widely and easily available for decades, now. If that method was going to work, it would have worked. I have spent my entire career working with software developers, some very talented and some worthless. And I saw basically zero correlation between their talent and their education level. Seriously, some of the brightest senior-level talent I have worked with had no college degree at all and were entirely self-taught. And I did interviews with college graduates with computer science degrees who couldn't code their way out of a brown paper bag.
I DO think education plays a role, but I DON'T think that the reason the market is bereft of software developers is from a lack of educational opportunities.
I would add that the job kinda sucks. People who love programming want to create high quality work, but the market demands that they cut corners, use antipatterns, and amass technical debt in order to meet market deadlines. If they don't, they will be defeated by competitors who do. It makes the job wounding to the soul, and long-term maintenance of such code is very tedious and stressful.
I have seen three talented software developers leave the industry for different career options, in at least two cases options that paid less and required new education, because they became so fed-up with the industry. And this was in a place with a very team-oriented, supportive, everybody-lends-a-hand corporate culture that didn't leave anyone out in the cold without resources to accomplish their tasks.
The job isn't for everyone. Education alone won't change that.
Re: No thanks (Score:2)
That's an interesting perspective. I've had similar experiences and have been lucky enough to work beside truly spectacular people.
Programming, as a career, certainly isn't for everyone and educational background isn't a great predictor of success. However, certain characteristics seem to help. Great programmers are makers by nature. Many have hobbies related to performing or visual arts. Most have a driving curiosity that leads them to explore complexity and a desire to suss out underlying, often hidden lo
Maintenance programming is not a silver bullet (Score:2)
Yours was the only comment that mentioned "maintenance", my search target of the topic.
I'm not saying that it should be the sole focus, but it would be nice if there were some courses taking that approach. Almost all of my later languages were picked up by maintaining existing code. Perhaps the key skill for that approach is to distinguish between the well written code (that really uses the language well) and the crufts and kludges (that just got something to work well enough).
So does anyone know of a good
Re: (Score:2)
People who love programming want to create high quality work, but the market demands that they cut corners, use antipatterns, and amass technical debt in order to meet market deadlines. If they don't, they will be defeated by competitors who do.
Add to that argument that there's a serious lack of ethics in the industry. With so much pressure to collect data by force and please sponsors and advertisers, I got no joy working as a web developer. I quit doing that work professionally and now just do programming as a hobby, and I finally now have the enthusiasm for creation like I did 20+ years ago.
Looking back, I should have gone into a different career right from the start. I love programming, but I despised the job. And, yes, I'm one of those peo
Programming or CS? (Score:2)
Many programmers have very little CS knowledge.
In Scratch and the grown-up versions of it simple logic is required. I know professional programmers who never learned data structures because their narrow environment handles it and they came out of votech.
Programming puzzles are a good way to teach CS fundamentals but programming is just the tool there. ACSL was good for me in high school but only four of us had the aptitude. I am sure the other kids in programming translated their Pascal skills to Excel m
Why not both? (Score:1)
Variety (Score:1)
Focus on a little bit of everything.
Puzzles (Score:1)
At the end of the day, CS is about solving puzzles. Be it network routing, data analysis, or calculating a pension (superannuation scheme for those across the pond).
It's NOT about writing a story, but can you a) get there from here. Then, if a is true, b) figure out how to actually get there from here c) be efficient in your travels.
Hence the heavy emphasis on analytical thinking through maths, and logic.
Towers of Hanoi teaches recursion, spanning trees for traveling salesman approximations teaches data s
Algorithmic vs structural complexity (Score:5, Insightful)
The synopsis is written in a tone very much geared towards people without a clue about programming or software development... That being said, it does remind me of something I do think about a lot.
Programming in school is all about algorithmic complexity, while programming in the real world is all about managing structural complexity. Sure, both are important, but on a day-to-day basis the latter often overwhelms the former. School, at least in my experience, didn't do a very good job of teaching how to manage structural complexity. I pretty much had to learn it on my own, through active effort, after realizing that any sufficiently large project of mine quickly turned to a mess of tangled spaghetti. (My early career didn't have many of those "large team projects" people who enter the workforce to join a big company during a boom time are gifted with.)
The problem, however, is that class assignments never have the scale or scope to make structural complexity a real concern. So, any attempt to include it will likely feel very awkward and contrived.
Re: (Score:3)
School, at least in my experience, didn't do a very good job of teaching how to manage structural complexity.
You're implying the goal of school was to teach people who to be programmers instead of the goal being teaching people how to apply basic logic and iteration to problem solving.
I think everyone should take programming at school, it has applications even the Amish would benefit from.
Re: (Score:2)
I had one programming course in college that focused on structural complexity. We started the semester with an existing program that the professor had us type into our own accounts. Yes, that was annoying. But it did get us familiar with the code base.
From that time on, every assignment modified and extended that program cumulatively. If you engaged in quick and dirty hacks in the beginning, you would pay for each of them in later projects as your code had become less maintainable. This included "fun" assig
Re: (Score:2)
Silly question, they are the same thing.... (Score:2)
The only difference between a logic puzzle and a project, is that a project has no clear answer.
Most computer teachers can barely handle logic puzzles. They have no chance at helping students with projects.
I think one of the best "learn to program" environments right now is Minecraft for Education from Microsoft.
Anytime a student can see their program in action, it really helps with the abstraction and cognitive engagement.
Seems simpler to me (Score:2)
To try and force feed specifics might be futile. Maybe stick with the three Rs when they are young and give them a good base for how to learn and the basic tools.
Teacher experience and evidence in the literature (Score:4, Interesting)
I've been teaching computer programming for 3 years. My classes used to be project heavy. The advanced learners really loved it, but the beginners didn't have the knowledge they needed to engage with the projects in a meaningful way. Even worse, the more the beginners practised on projects, the more they became attached to their misconceptions and their misconceptions increased. It's hard to convince a student who has built a few projects that their way of thinking is wrong.
I've completely changed my way of teaching since then and I've created thousands of exercises, which I've published on https://wakata.io/ [wakata.io] . I now teach the theory and reinforce correct thought patterns through exercise drills. The exercises are varied and challenging. Only when my students have a solid theoretical understanding of the material do I let them build projects. The learning outcomes in my classes have improved substantially.
The only drawback is that sometimes the more advanced students complain that they want to drill less and build more projects. If you want to cater to the smartest students in the class, project heavy instruction might be a good option. If you want to give beginners a fighting chance, do them a favour and let them drill the fundamentals and build their understanding of the subject step by step through guided exercises.
Unfortunately, many ideas such as problem based learning are influential in education even though there is little to no evidence to their efficacy [1] [2].
1. Kirschner, Paul A., John Sweller, and Richard E. Clark. "Why minimal guidance during instruction does not work: An analysis of the failure of constructivist, discovery, problem-based, experiential, and inquiry-based teaching." Educational psychologist 41.2 (2006): 75-86.
2. Reiser, Robert A., and John V. Dempsey, eds. Trends and issues in instructional design and technology. Boston: Pearson, 2012.
Theory first (Score:2)
Formal classes are a great way to explore theory, a vital tool in a software developer's career. You can learn the practical matters of programming in your own time and through experience. If you're not the kind of person that can learn things on your own, then perhaps aim for a different career path. Some of the alternatives pay better than software development.
Start with simple and work from there (Score:2)
Not sure what they're whinging about. You start simple and work toward the more complex. In my fourth-year systems programming and operating systems classes we had to write a linking loader (think "ln") and simulate an interactive OS with emphasis on the filesystem (that semester anyway) -- not things I'd want to try in CS 101. (Third year I took LISP and later graded for that class.)
You start with simpler things to concentrate on generic programming concepts and problem solving and later more complex ap
Re: (Score:2)
we had to write a linking loader (think "ln")
Obviously, that should be "ld" -- said the frelling dyslexic that can't type (sigh)
trade / tech school vs college is this they both c (Score:2)
trade / tech school vs college is this they both cost a lot. But if trade / tech school did not have to be 2-4 years with the same piece of paper that college then the cost of trade / tech school can be a lot less with more real work skills.
"coding can and should be for everyone." (Score:3)
Re: (Score:2)
Re: (Score:2)
Report back when you have successfully set the mindset of every one of your students.
When I don't, I am a failure. But I blame myself, not the student. That's why I grow.
Re: (Score:2)
Go ahead and blame yourself all you want, but your assumptions are wrong. You're assuming that all your student already has an interest in the subject you're teaching, and that they all have the background and the faculty needed to master the subject you're teaching. In the real world, when students get dumped in a class, it may be because of a myriad of reasons, and I can assure you that your inability to reach them all is not necessarily a shortcoming on your part.
I get where you're coming from. Yes.
Re: (Score:1)
Re: (Score:2)
The term armchair quarterback comes to mind here. Teaching is easy if all you do is say that it's easy.
Re: (Score:2)
Re: (Score:2)
No programming is boring as fuck for most people and they aren't going to be good at it.
Re: (Score:2)
Stating that "coding can and should be for everyone" is like saying "veterinary medicine can and should be for everyone", or "nuclear physics", or ... you get the idea.
Or it's like saying "writing should be for everyone". Not everyone's got the mindset, talent or intuition to actually a book, but everyone should be able to do the basics. Why is it more like nuclear physics than writing?
Re: (Score:2)
"Coding should be for everyone" I think is the industrialists' fantasy. The existing software development paradigm does not fit the scaling and automation of manufacturing and other industrial processes and economic expansion and further efficiencies requires more and more people do software development-like tasks.
But as you note, the number of people who "fit" the existing computing paradigm is only 20%, and of that only a small fraction are really good at it. This is why coding is such a big deal anymor
Re: (Score:1)
Question is a False Choice (Score:3)
It might be interesting to think about what they are in an attempt to get to a slightly different question that may lead us to a more effective answer.
The first assumption may be that there are two and only two ways to teach computer programming. In my personal experience this can be harmful to the students: trying to ram a particular approach in to a student's head is a bit like trying to put a round peg in a square hole. I think we need to reconsider this as part of our answer.
The second assumption may be a bit more subtle: the idea that somehow computer programming is "special" and that all the experience gained from teaching other, similarly complex subjects (maybe the rest of the STEM curriculum, for example) somehow does not apply. Again, this strikes me as misguided at best, arrogant at worst.
If we're willing to step back far enough to gain the perspective to see the problem this broadly, then perhaps we could re-phrase the question to something along the lines of:-
"Based on our understanding of the way we learn and the techniques of learning that are proving to be the most generally effective, how can we best structure the lessons and topics within the subject of computer programming to give students the best possible foundation in the field?"
There may be more subtlety here that we need to tease out. For example, earlier posts have pointed, rightly, to the importance of logic as a foundation for all learning. This leads us to consider that the needs of a student in the first grade will be markedly different from those of a high school freshman.
There's another dimension to this question, which, curiously, may be easier to solve for a computer programming class than for many other subjects. When I was studying the atomic nucleus in physics in my senior year at high school, the subject of quarks was not introduced, even though quarks were discovered years before I was born.
The reason for this was (I suspect) because the art of devising a class on any given topic for students of any given age and/or ability is to understand the limit of their knowledge at the start of the course and to ensure that information is fed to them in a manner and a rate that they can comprehend and turn in to understanding.
Object-Oriented programming, for example, might be particularly suitable to this task, because we can concentrate on the code we're writing and the entire paradigm helps to encourage us to not worry about code someone else as written in some other method somewhere: in order to use that method all we need to know and understand are the inputs it expects and the outputs it returns. Using this part of the OOP paradigm would help a well-structured class to introduce new concepts in a way and at a rate that students can best absorb the material.
Which leads me to my final point: everyone is different.
There's an old saying: "When the only tool in your toolbox is a hammer, pretty soon every problem that comes along starts to look a lot like a nail..." Which means that if you teach a computer programming teacher to use only one method of instruction, that teacher will fail their students when they encounter someone in their class who cannot make an intellectual leap to understand a point that the teacher is trying to convey.
A good teacher - a competent teacher - would have a variety of different techniques, examples, analogies and challenges that they could use, pose, explain or discuss with a class, to help that class comprehend the principle they wanted to convey.
Anecdote: although I'm not actively doing so at the moment, I have taught various martial arts classes in my spare time, mainly T'ai Chi Ch'uan, Hsing-I and Pa Kua. As an early student, I progressed through my classes with relish; I found that the key t
Why not both? (Score:3)
A project that is full.of logic puzzles and algorithms to design, and is most of all fun and has a useful goal and a reward (like a good game), should be ideal. All other rules can be removed. Just have the teachers guide them along the way, offer helpful resources, to teach and teach them on things they need and request, or fundamental ideas they would not even know to ask for.
You will have the most fun, which is nature's indicator for good education*, and the best resulting software desgners and project leaders in the future.
_ _ _ _
* The reason useless games, like those by the games industry, are fun, is because most of the brain doesn't make a difference between reality and fantasy. So larning something and that only helps in a fantasy world, and succeeding inside there, also feels good, despite being utterly useless in the real world. And it is a shame that that is abused, and game companies aren't made to actually make useful games.
yey more projects (Score:1)
Bloom (Score:1)
Express themselves creatively, right (Score:1)
Both have values (Score:2)
Way back when computers were the uncharted frontier of the future, I remember a teacher who asked us to code a Tower of Hanoi game. Any way we wanted, any (ascii) graphics we wanted, as long as the game was fun to watch and easy to compile for newbies.
That taught us kids to make a structured project, and it was fun to try and make the nicest-looking Tower of Hanoi in the classroom.
Then - since most of us tried to solve the Tower of Hanoi linearly and we had all produced a metric shitton of code to do someth
Stopped Reading (Score:3)
Exercise vs problem (Score:2)
I think that "program animated characters to move from one location to another" sounds like "write a videogame for the Commodore 64". (Or a ZX Spectrum, or even an IBM PC).
Problem is that due the high performance and complexity that computers have nowadays, programming is way more complex than 30 years ago and this makethe gap between exercises and useful programs very wide.
No (Score:4, Interesting)
"Projects" are for simple things at that level. What coding classes should focus on is tools, algorithms and data-structures, modelling problems and solutions using them and how to structure a solution. And only then how to combine them to solve small projects.
More Realism (Score:2)
Projects ARE logic puzzles. (Score:2)
As such, the question should be whether the logic puzzles should be applied or not.
Obviously the answer is yes! Why on earth would you assign meaningless goals? You should ALWAYS be learning how to do something you might actually want to do. And the point of the class is to learn the best way[s] to do it.
Logic puzzles are little projects... (Score:2)
Should universities teach office skills? (Score:2)
No. Universities don't teach you how to be a laborer who knows how to manage their time and be responsible. They teach skills.
On the subject of useless metaphors (Score:1)
Your problem is "Who is teacher?" (Score:2)
When I was young, my best guess at the goal of teachers teaching me math was that they wanted to destroy my joy in the subject. I had a couple decent teachers in high school, who seemed to actually like the subject, but for the rest it was at best a job. Likewise for computer science, though in those days I just considered myself lucky to be able to use the computers as computers rather than typing trainers (not a joke, three years earlier would have sucked).
Anyhow ... sure, it would be better to have som
Logic Puzzles should do at Math Classes (Score:1)
Re: (Score:2)
Re: (Score:2)