Catch up on stories from the past week (and beyond) at the Slashdot story archive

 



Forgot your password?
typodupeerror
×
Programming Education

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."

This discussion has been archived. No new comments can be posted.

Should Computer Programming Classes Focus on Projects Instead of 'Logic Puzzles'?

Comments Filter:
  • 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.

    • Any expectations should have been zero expectations.

      • The article is not about teaching programming. It is about teaching coding.

        • by Z00L00K ( 682162 )

          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.

          • 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.

            • 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.

        • by gtall ( 79522 )

          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".

    • 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.

      • by ShanghaiBill ( 739463 ) on Sunday November 01, 2020 @11:13PM (#60673800)

        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".

        • 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.
          Sure, for a "starting class" in computer science ... great idea.

          What about counting from 1 to 1000? To simple?

      • > 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

      • by bn-7bc ( 909819 )
        You hit the nail on the head, net result, i fear is that projects are harder to grade which again results in sonting that is easier to grade (ie the hated written report) beeing taked on at the end. I suspect very few peopøle like report writing, so you end up with a few reactions like mine (further below), the risk is that the pupils see yet another bld report. I agree som training in report writing is necessary for later life, but imho the report is geting to much love from the educators
    • 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.

    • 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

      • 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.

        • Actually I find that problem solving, analytical and troubleshooting skills do translate to other domains. Working on innovation projects, I come across a great many people who are working outside their own area of expertise, and there is a remarkable difference in effectiveness between people who have honed these skills (as a programmer, or in another capacity), and people who haven't. The usual shortcoming is not dysfunctional analytical skills gained in another area of expertise, but a lack of knowledg
  • The more important question should be along the lines of... (apologies for the cut 'n' paste) Should Computer Programming Classes Focus on How To Determine that The Subject Is A Lame Question.

    .
    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.

    • Indeed, I had some classes that were about learning algorithms (or other short 100-300 line assignments) and some classes that were a single project for the entire class. Then other classes that were a hybrid: short projects that built on each other (especially useful for learning a networking stack).
      • by bn-7bc ( 909819 )
        that is a good approach, unless ofc early failure makes the subsequent mini projects fail. A way to avoid that problem, is that after the individual mini projects are due, a possible solution is presented by the teacher/profesor.
  • Logic. Everything else is just sugar coating.

    • by RazorSharp ( 1418697 ) on Sunday November 01, 2020 @11:03PM (#60673762)

      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.

      • And when students write essays, teachers should help them learn to recognize logical fallacies.
        • 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

          • Well, hopefully people would learn to be able to distinguish between reductio ad absurdum and straw man. But if you are going to use a reductio ad absurdum you have to be careful that you're attacking the person's strongest point, not their weakest.
      • 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.

        • 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

    • 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.

      • 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

  • by Krishnoid ( 984597 ) on Sunday November 01, 2020 @09:57PM (#60673616) Journal

    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.

    • 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.

    • by serviscope_minor ( 664417 ) on Monday November 02, 2020 @03:58AM (#60674288) Journal

      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!

    • 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).

  • >Projects Instead of 'Logic Puzzles'? If you have to do a programmatic project, you're solving a (actually multiple for anything more than "hello world") logic puzzle.

    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)

    by i.r.id10t ( 595143 ) on Sunday November 01, 2020 @09:59PM (#60673624)

    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)

    by niftydude ( 1745144 ) on Sunday November 01, 2020 @10:05PM (#60673642)
    No thanks, I'd like to keep my high income that arises from artificial scarcity.

    When training children, we should focus on the Four I's: Ignorance, Indolence, Illiteracy, and Incomprehension
    • Forgot to mention: We can just tell them they'll get a UBI when they grow up.
    • Re:No thanks (Score:4, Interesting)

      by Brain-Fu ( 1274756 ) on Sunday November 01, 2020 @10:53PM (#60673740) Homepage Journal

      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.

      • 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

      • 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

      • 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

  • 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

  • Like many disciplines, good computer programming relies on understanding theory, being able to practice that theory with exercises, and finally implementing it in projects. How much of each of those three components you decide to put in will be determined by the length of the curriculum and what type of programmer you're trying to produce.
  • Focus on a little bit of everything.

  • by Anonymous Coward

    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

  • by Octorian ( 14086 ) on Sunday November 01, 2020 @10:26PM (#60673690) Homepage

    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.

    • 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.

    • 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

    • by dwpro ( 520418 )
      I agree with nearly everything you've mentioned, but I believe structural complexity can be addressed, it just requires more integrated assignments. Consider if every assignment extended the existing code-base they've created to include new constraints? It would be painful for the students to refactor (or create elaborate work-arounds), but it's certainly a worthwhile endeavor to learn the elegance of single responsibility. The students should have a battery of unit tests provided as part of the curricul
  • 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.

  • just give the kids a snapshot of as many things as you can. You'll most likely know what tweaks their interest.
    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.
  • by jacques42 ( 7409166 ) on Sunday November 01, 2020 @11:20PM (#60673804)

    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.

  • 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.

  • 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

    • 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 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.

  • by RitchCraft ( 6454710 ) on Monday November 02, 2020 @12:57AM (#60673980)
    No, no, no. I taught high school CS classes for 18 years. In my estimate only 20% of my students had the correct mindset to continue programming as a career. Of those 20% maybe 1% to 2% showed an actual talent, or intuition for it. The other 80% saw programming as a boring task and were simply not interested. Luckily only 18 weeks of the two year course focused on programming, the thought being that everyone at least needed to know the basics of what programming was before entering any CS field. 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.
    • 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?

    • "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

    • I think if 20% of all students have the mindset then it makes a lot of sense to teach it to everyone. Without teaching it, you will not know about every child if he belongs to this 20%. And many more kids can learn something useful from it too. I am helping one girl now with her CS college coursework. She is definitely not with the right mindset but she is getting something useful and educational from that course.
  • by ytene ( 4376651 ) on Monday November 02, 2020 @01:23AM (#60674018)
    The question as presented in the OP, which I'll simplify down to, "When teaching computer programming, should we use method A or method B?" leaps to a number of conclusions.

    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
  • by BAReFO0t ( 6240524 ) on Monday November 02, 2020 @02:17AM (#60674098)

    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.

  • Jes let's ceam even pore projects into school, we don't have enough of them, and don't forget that all important written report (that almost everyone hates) at the end. I don't know about you but I grew sick and tired of project and reports, the oral presentations where fun tho
  • I recently finished my teacher education after 10+ years of experience with coding for various companies. One of the things they taught me is the (modified) taxonomy of Bloom. It basically says that students first need to know before they can understand. They need to understand before they can analyse. The last step is to generate new concepts. Recently I started a teaching position where the kids (13-14 year old) take their first steps in programming. (BBC microbit & makecode). I was surprised that ab
  • Sure, you can. The problem is that this is not a good recipe for learning. Not in CS at least, where things tend to either work or fail, with no room for interpretation. Yes, I know, rather binary.
  • 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

  • by lsllll ( 830002 ) on Monday November 02, 2020 @04:02AM (#60674308)
    I stopped reading the summary at "School systems and policymakers are embracing the idea that coding can and should be for everyone." Coding cannot and should not be for everyone. If it's for everyone, then it's not "coding". They're reducing coding to something like "putting bandaids on scrapes can and should be for everyone." Yeah, it's all good and dandy, until you need stitches or lacerated an artery.
  • https://www.youtube.com/watch?v=SJ81YD9Ebec [youtube.com]

    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)

    by gweihir ( 88907 ) on Monday November 02, 2020 @07:12AM (#60674712)

    "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.

  • We should teach children to code in a way that helps them to understand how coding in the real world works. So assign them a single project for the whole class, and make it a group project. And then, two weeks before the end of class, announce that their project client has just updated specs that completely invalidates all their work for the last 2 months. How can you appreciate coding without also gaining an understanding of how you will be fucked over by management and/or marketing.
  • 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.

  • ... its fine to start small.
  • No. Universities don't teach you how to be a laborer who knows how to manage their time and be responsible. They teach skills.

  • Giving projects instead of simple well defined tasks to a new programmer is akin to training a toddler to run by registering them in a marathon.
  • 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

  • I would totally agree with you as practical knowledge was always better than theory and all these logic puzzles are bullshit in my opinion. You can solve logic puzzles during math classes but not during IT classes as it is nonsense as when you come to an interview at an It company there are rare cases when they ask you some logical questions to test your IQ. I work at an IT company in Los Angeles https://www.generationix.com/i... [generationix.com] and I always say to the new interns that they always need to get into the proj

It isn't easy being the parent of a six-year-old. However, it's a pretty small price to pay for having somebody around the house who understands computers.

Working...