Do blocks equal “making” and text equal “coding”? Doing MediaComp in Blocks-Based Languages

July 8, 2015 at 7:14 am 23 comments

Interesting perspective from a blogger in the Scratch community, liked below.  I do frequently hear the pattern described in the post quoted below.  “I’ve started by daughter/niece/local-school on Scratch, and now I want to know how to move them into something ‘real’ (e.g., text).”  I typically point them to amazing things that can be done in Scratch (like Alex Ruthmann’s beautiful livecoding of music in Scratch).

I recently got a chance to play with GP, a new programming language from John Maloney (of Scratch fame), where all blocks and texts are isomorphic.  There’s a slider that lets you switch from one to the other.  Even the debugger and class browser show up with tiles.  Where does that play out in this debate?  GP is the first blocks-based language I’ve used with the right primitives to do MediaComp, so I built one of my examples in it.  Took me about three times as much time to write and four times as much space (in screen real estate) as in Python (even with John looking over my shoulder guiding me).  Maybe that’s not a bad thing — maybe that encourages a different style of use.  Next time I try something like that, I’m far more likely to think about building my own blocks and using more abstraction to save on dragging-and-fitting effort.

I’ve been a part of the Scratch community for about 8 years now (yes, really). During this time, I’ve noticed a pattern that seems to apply to a lot of people:

join Scratch => create projects => discover text-based programming => quit Scratch because of “real programming”

Note the scare quotes around “real programming”. Generally, a “real” programming language is text-based (C, Python, etc.) and apparently qualifies as real because it’s used by well-known developers for something.

Obviously I disagree with disqualifying Scratch as a real programming language.

via Making vs Coding | byte.

Entry filed under: Uncategorized. Tags: , , .

Even An Ivy League ‘Idea Person’ Should Learn How To Code Teachers Think Girls Are Bad At Math: Prediction — CS teachers have similar biases

23 Comments Add your own

  • 1. Franklin Chen  |  July 8, 2015 at 10:44 am

    I’m really bothered by this whole “real programming” notion. I remember two decades ago “scripting languages” (I hate that term) were considered not-real programming by C developers. If you relied on garbage collection rather than manual memory management, you were not real. If you relied on array bounds checking, you were not real. If you didn’t roll your own hash table library for every project, you were not real.

    Today, nobody would consider Python not-real programming. So it would be interesting to study changes in attitudes and tooling and community that lead to changes in what is considered “real” or not. I suspect it’s a matter of critical mass. The biggest surprise to me in the late 1990s was that safe, garbage-collected languages suddenly became “real” after decades of mockery, because Java came along and a community grew up around it (including massive improvements in compilers, IDEs, etc.).

    Meanwhile, as far as text or not-text is concerned: huge numbers of musicians and poets in history (and today) never made the transition to text as a representation for their work. They certainly are “real”.

    Reply
    • 2. shriramkrishnamurthi  |  July 8, 2015 at 4:05 pm

      A very respected, and well-intentioned, computer scientist recently asked us some questions about our Pyret programming language. One of the questions was about command-line support (Pyret mainly runs through a Web interface). He said (and I quote without permission, but also without attributing him), “The main rationale is to make sure that all these students know how real software is made: using a text editor and a command line environment. Call me old fashioned.​” I _think_ he was being tongue-in-cheek, but it _was_ a serious question…

      Reply
      • 3. zamanskym  |  July 9, 2015 at 7:00 am

        It is helpful, however, when designers of web based environments have an “exit strategy” for lack of a better word. Kids using a web based sandbox will want to move their programs to other platforms – frequently running native on their systems. It’s something worth considering.

        The same is true for libraries and tools they used. Back in the day there was a popular APCS text that came with it’s own input library since for a beginner, it’s quite a bear. Kids got ridiculously attached to the library – even to the point of using it many years later in college projects. So, if one has a web based tool, if there’s a local counterpart, that’s just a +1 and if it has all the libraries available online, it’s another +1.

        Reply
        • 4. Mark Guzdial  |  July 9, 2015 at 8:11 am

          Kids are not a monolithic, homogeneous group.

          Kids using a web based sandbox will want to move their programs to other platforms

          I’ve been teaching computer science for 35 years. I’ve seen a lot of students. Absolutely, Mike, I have seen kids who want to move from one platform to the next, who want to move from the pedagogical platform to the application platform. But not all. I wouldn’t even say “most.”

          Thinking that there is only one computer science, that everyone wants to be a software developer — that is the NUMBER ONE reason why we have too little diversity in computer science. Mike, I am sure that you are a highly motivating teacher to those who want to be software developers. But you have to offer something different for the rest.

          Reply
          • 5. Mike Zamansky (@zamansky)  |  July 9, 2015 at 9:11 am

            Mark,

            Ok, well I’m a 25 year teacher and my diversity numbers are terrific. Not only are there scores of kids who have gone into tech that cite me as inspiration but there are a huge number of others including lawyers, authors, filmmakers, people in finance who likewise tell me how influential and beneficial my work has been for them.

            When you work in a sandbox you need to be able to use the sandbox later on to solve problems, apply the techniques and thought processes learned to another environment or extend the sandbox to the outside.

            If you develop a web based tool, other than the cost of development, there’s no downside to also have it available locally. In fact, up until last year, I couldn’t even consider using web based tools due to connectivity issues. Likewise, there’s also a benefit from being able to move your local environment into a web based sandbox.

            Reply
          • 6. Bonnie  |  July 9, 2015 at 10:40 am

            Traditionally, computer science prepared students to be software developers or to be involved in the software development process in some significant way (QA engineer, build engineer, etc) unless that person planned to go into research. Employers expect a graduate with a CS degree to be able to program. There is actually a major that is targeted to students who want to go into tech without being a software developer – it is called Information Technology at many schools. The focus of these majors is not on creating new software, but on applying existing software to organizational problems. I would argue that Information Technology, or perhaps MIS, are majors better suited to students who want a business IT career. You don’t really need to understand mergesort or robotics to run an IT purchasing department, but you do need to know about organizational behavior, systems analysis, and largescale IT architectures from a macro level, topics that are often not taught well, if at all, in the CS major.

            Reply
            • 7. Mark Guzdial  |  July 9, 2015 at 10:58 am

              Should computer science in high schools be aimed at traditional CS undergraduate programs? Information Technology? MIS? None of the above?

              Reply
              • 8. Bonnie  |  July 9, 2015 at 1:12 pm

                In the past, high school and middle school computing has often been closer to IT, given that it was often taught by business teachers and tended to focus on office applications. It seems to be swinging more towards pure CS these days.There probably should be a mix, augmented by a good dose of career education. We often see incoming students who say they want to major in CS but have absolutely no inkling of what types of careers the CS degree would support. Often, they were advised to major in CS because they had a good grade in their office application course.

                Reply
  • 9. gflint  |  July 8, 2015 at 4:23 pm

    We who teach CS and programming have enough trouble defining “programming”, much less “real programming”. Anyone who thinks programming a Lego Mindstorms robot with NXT-G, the D&D Lego language, needs to try it. A Rube Goldberg machine is a program in my view. It goes through steps to solve a problem. Isn’t that programming? The idea behind teaching programming is to teach students to use a tool to solve problems. If Scratch is the correct tool, so be it. If C++ is the tool, so be it. The command lie/text editor thing is right up there with the slide rule and log tables. Simply a time in history.

    Reply
    • 10. gasstationwithoutpumps  |  July 8, 2015 at 8:14 pm

      Command lines provide a powerful interface, even if somewhat awkward to learn and use. We do our students a disservice if we don’t teach them how to string together unix filters into pipes.

      I have had seniors in engineering who have taken several programming courses, but have never typed a command line. They are at a complete loss using bioinformatics tools that are intended to be run from a command line or as part of a pipeline.

      GUIs are nice end-user interfaces, but they tend to be rather specialized in their functions—it is good to have some familiarity with general-purpose interfaces as well.

      Reply
      • 11. Mark Guzdial  |  July 8, 2015 at 9:05 pm

        We do students a disservice if we talk about programming as a single monolithic construct and everyone has to learn the same thing. Engineers learning command lines? Sure, I can buy that. Brian Dorn’s graphic designers who that that “CS == nerds”? Why? Middle school students who are successful at Scratch don’t need command lines. My Media Computation students don’t need a command line.

        What graphic designers think is “real programming” and what app developers think is “real” and what Web developers think is “real” are all completely different things. And they’re all right. Our problem is when we decide that there can be only one.

        Reply
        • 12. gasstationwithoutpumps  |  July 9, 2015 at 4:26 pm

          I agree that different programming students need different things out of their courses. My objection is that there seems to be only one approach being used at my institution—if students can get through 3 or 4 computer-science classes intended for engineers and CS majors, and still never have seen a command line, then something is wrong. (Actually, I know that there are other approaches here—the computer-engineering department has their own intro-to-programming courses that emphasize command lines, C, and assembler language, as contrasted with the computer science courses which use only GUIs and Java for the first few classes, and the biomolecular engineering department has 2nd programming course that emphasizes Python and uses Unix pipes.)

          Reply
      • 13. shriramkrishnamurthi  |  July 9, 2015 at 2:36 am

        I would rather phrase this in terms of computational models. An object-verb model is fundamentally different from a verb-object model; and a pipe model is fundamentally different from a composition-less model like a GUI. Understanding new models changes the way you think about solving problems. It’s certainly the case that the Unix shell is a particularly powerful representative of two of the above. In fact, I use it—rather than Haskell—to motivate lazy evaluation in my programming languages textbook, before going on to Haskell. But we should also distinguish between what students eventually must learn and what they absolutely need to use starting out…

        Reply
      • 14. zamanskym  |  July 9, 2015 at 7:02 am

        The command line gives the opportunity to get the kids thinking of OS as toolset rather than program loader – something I think is very worthwhile and not difficult to model and mix in to a high school course.

        Reply
        • 15. Mark Guzdial  |  July 9, 2015 at 8:06 am

          Just because we can fit something into a high school course doesn’t mean we should. Is it a learning objective? Is it what the kids want?

          Reply
          • 16. Mike Zamansky (@zamansky)  |  July 9, 2015 at 9:04 am

            If it gives some kids a new way of thinking at minimal cost it should. Is opening a shell and typing “drracket,” “idle” or “netlogo” so much harder than searching through icons and menus? Is typing ls that much harder than clicking through folders?

            They are exposed through basic use and I as the teacher model behaviors over time and when the opportunity presents, highlight where the shell as toolset is valuable. Some kids don’t care but over time a number of them learn to appreciate the power and start exploring and using the tools at their disposal.

            There’s no cost and real potential benefit.

            Reply
            • 17. shriramkrishnamurthi  |  July 10, 2015 at 6:47 am

              To say there is “no cost” is just plain false. The reason DrRacket was created and is packaged the way it is is precisely because there is a cost, and teachers have recognized (and some have complained about) that cost.

              Your students may not be representative of the world, Mike. And for that matter, you may not be representative of your students, either!

              Reply
              • 18. Mike Zamansky (@zamansky)  |  July 10, 2015 at 11:54 am

                Actually – when I say no cost it’s absolutely true, but then there’s not way you can know what

                Are you assuming that I’m comparing DrRacket to CLI+editor+REPL? I’m not.

                Perhaps you’re making assumptions about my students and about me.

                Reply
                • 19. Mike Zamansky (@zamansky)  |  July 10, 2015 at 11:55 am

                  First sentence got cut off – redo –

                  Actually – when I say no cost it’s absolutely true, but then there’s no way you can know what we do or how we do it in any real detail.

                  Are you assuming that I’m comparing DrRacket to CLI+editor+REPL? I’m not.

                  Perhaps you’re making assumptions about my students, my clases, and about me.

                  Reply
  • 20. joshg  |  July 9, 2015 at 1:44 am

    I think one limitation that might prevent people from seeing Scratch or Alice from being “real” programming is that, frankly, they aren’t meant to be – in the sense of being professional development tools.

    That’s not a problem with blocks, it’s just the nature of what toolset they provide. They’re built for ease of use for kids learning new ideas, not for general-purpose flexibility or high-definition media output.

    They also don’t really make it possible to scale up well. (Maybe Alice moreso than Scratch.) Since there are limitations to what you can do with defining your own blocks and objects, it’s tough to build anything large without it turning into a disaster.

    Contrast this with something like pureData or Max/MSP. You can easily define multiple layers of a project, effectively creating different layers of abstraction and scope to organize a large project.

    Likewise, I think text-based coding assignments done in university can easily be just as “unreal” in that you’re often making trivial programs that spit out a little bit of text and that’s it. No UI to hook up to, no sifting through code repository branches and history to find someone else’s bugs, no need to get changes verified by a coworker.

    I don’t have a great answer to this all, although as a middle/secondary educator I’m superhappy to hear about something that lets you switch between blocks and text on the fly. Having the freedom to start with blocks and let students switch to text if/when they want to, without having to teach to two different languages / environments, would be *phenomenal*. It’d also make it easier to transition to other text-based languages when the need arises. (Last time I taught middle-school coding, I was itching to get kids out of Scratch’s low-res canvas limitations.)

    Reply
  • 21. chaikens  |  July 9, 2015 at 12:33 pm

    Let me comment on a issue peripherally related to GUI vs text edit debate:

    Easy and attractive programming opportunities motivate student energy and creativity but do not automatically go on to motivate the learning the next steps toward computer science.

    Several times teaching with Alice especially but also with Myro, I observed the following: Most all the students responded creatively to use the most conceptually simple computation options, but there was far less effective response to assignments where the use of variables, conditionals, loops beyond fixed repetition amounts, customized methods/functions, user interaction (via callbacks), iterating through collections, etc. were included. (In my honors Python-Myro based course, interaction and control were much more effective learned than functional or data abstraction. However, in my Multimedia Computing based CS1 major courses, the substantial number of successful students did master the CS1 basics that were covered. )

    Especially with Alice, all teams made obviously great successful efforts and many combined creative stories with cool images, textures and sound imported from the web, and even found out about importing resources on their own from documentation and not from assignments or instruction. The second team assignment which added some of the second level of basics was disappointing.

    Maybe this is the result of my teaching or organizational skills, but the point is that the motivation to push into new intellectual territory is not __automatically__ provided by cool and personally relevant experiences.

    Another point about “real” computer and other sciences: Journal papers, graduate textbooks and research lectures express their content primarily in textual form, combining natural language, formulas and jargon; even though disciplinary appropriate graphics and animations often critical too.

    Reply
  • […] teachers (like the comment thread after this post) argue for the state of computing education based on what they see in their classes.  We […]

    Reply
  • 23. Andromeda Yelton (@ThatAndromeda)  |  December 3, 2015 at 8:30 am

    My Scratch-obsessed kid is 8. _Eight_. (Which is to say, she’s part of the Scratch target audience; high school seniors and college students are not.) She doesn’t need a command line or a text editor (though she has access to them and we can explain them, should it come to that). She needs a way to transition from Scratch to more traditional interfaces, if she’s still obsessed with programming in a few years, and she needs a way to not run out of runway as she explores the Scratch paradigm.

    She’s gotten herself access to GP (yes, I do software and she has access to a cutting-edge language I can’t get…I’ll be over here being obsolete), and it looks like it can provide those things for her.

    Reply

Leave a reply to Mike Zamansky (@zamansky) Cancel reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Trackback this post  |  Subscribe to the comments via RSS Feed


Enter your email address to follow this blog and receive notifications of new posts by email.

Join 11.4K other subscribers

Feeds

Recent Posts

Blog Stats

  • 2,094,247 hits
July 2015
M T W T F S S
 12345
6789101112
13141516171819
20212223242526
2728293031  

CS Teaching Tips