How do I convince my students that visual programming is real programming?

26

5

I have been considering taking a visual programming language, such as Snap!, to my high school students as a way to make some of the concepts we delve into a little more fun. The kids themselves already have a pretty substantial background in Java, Python, C and 6502 assembly, and many of them are also familiar with the JS/PHP/SQL stack for web dev.

I have a very strong feeling that they won't consider a block-based language to be a real language, even though it contains typing, parameters, lambdas, etc. How do I get past the initial hump and persuade them that this is worth their time?

Ben I.

Posted 2017-06-20T10:20:16.337

Reputation: 17 660

37I'm curious why you think it'll make things more fun or what you plan to do to make things more fun. One of the downsides of DnD languages is that to do something substantial you need some serious screen real estate and in my experience, experienced students have found repeated dragging and dropping tedious over using text editor functionality.

This is not to say that DnD won't be great in your case but I'm looking for more info on how you want to use them – Mike Zamansky – 2017-06-20T12:12:58.863

Well, to make clear: I have not done any of this, so your experience is very relevant information. This is all still very preliminary exploration. My thought is that, for some of my lower students, the graphical environment will make the concepts seem more immediately concrete. And, as goofy as the pre-fabbed graphics are, they are also fun. – Ben I. – 2017-06-20T12:42:03.403

20If these kids already have that extensive a programming background, what you're proposing isn't likely to be fun. – user2357112 – 2017-06-20T17:17:46.950

4Put your money where your mouth is. Build something useful/cool in the language and demo it for them while introducing it. – Jeutnarg – 2017-06-20T18:27:09.893

I've worked professionally with a heavy point & click programming tool and many younger coworkers complained "this isn't programming." My explanation was that programming was just about giving the computer instructions for what to do "later". And that tool was one way of instructing the computer. – Kevin Rubin – 2017-06-20T19:43:39.817

7From the sound of it, your students use programming languages to do things. Snap! is going to have to earn its keep in the minds of students like that. I'm a developer, not a teacher, but my first thought when I looked at the examples on the Snap! page was "this is actually just a text based programming language given goofy colors." Contrast that with something like LabView which is a serious language used in serious contexts (and with a serious price tag, of course). You're going to have to convince them that it's not different for the sake of being different. – Cort Ammon – 2017-06-20T20:06:38.103

3What kind of high school students are you lucky enough to work with?! I don't know many high school students with that substantial a background in programming. – Sam Weaver – 2017-06-20T23:25:43.240

I am, indeed, lucky! There is a 4-year CS major at this highly selective HS in northern NJ. (Nothing official, but there are rumors that there may be a (3rd!) new CS opening at said school in a few weeks, too!) – Ben I. – 2017-06-20T23:33:55.733

Aren't flow charts "visual programming"? If you use flow charting as a tool, it shouldn't be too hard to segue into another visual paradigm of your choice. – Gypsy Spellweaver – 2017-06-21T01:37:53.600

@CortAmmon I was sure someone would mention LabView. That's worth taking seriously in the right context. But unless the students go on to study physics/engineering/chemistry at uni (and not every course by a long shot) they're not likely to come across it. Even educational licenses are expensive. The graphical approach is highly polarising and doesn't lend itself to printable documented code -- we're moving more and more towards PyVisa to access an overlapping set of drivers. – Chris H – 2017-06-21T09:08:12.920

It might be easy, but methods might need to be different under various circumstances. So... How many students are involved? And how much student-class time can you invest in this? – user2338816 – 2017-06-21T10:24:15.567

Are you sure that you are correct here? Are you sure such learning tools are appropriate for high school kids with substantial programming knowledge? At that age, I know that I would have considered it demeaning and patronising, basically telling me I'm too stupid to use "real" languages, so I should play with blocks. – Davor – 2017-06-21T13:26:01.653

@Davor considering the number of comments and answers here that point to visual languages used in specialized professional areas, I'm pretty sure, yeah :) I'm not convinced that I'm going to make this move, however. If I did, I would enjoy some initial benefit of the doubt from my students, since I taught them many of those languages that they know :) – Ben I. – 2017-06-21T13:29:37.743

1@BenI. - I fail to see how such languages being used professionally in extreme niches makes them suitable teaching tool at that age. I fail to see ANY relation between those two statements, to be honest. – Davor – 2017-06-21T13:31:40.123

1

Wanna make programming more Fun™? Here are the programming games you never asked for! (Your definition of fun may vary. I am not liable for any damage to the concepts of "fun" or "game" you may suffer due the content of this article. I just think some of these are pretty fun and accessible)

– xDaizu – 2017-06-21T16:17:27.270

1

For a practical, real-world example of visual programming, have a look at the Unreal Game Engine's Blueprint Designer.

– Robert Harvey – 2017-06-21T17:24:29.697

Since the students already have a programming language, I don't really see the point of using visual languages to excite them about programming. If you want them to have fun programming, why not do a short lesson on esoteric languages? This one is based on Arnold Schwarzenegger's one liners, for instance: https://github.com/lhartikk/ArnoldC

– alexgbelov – 2017-06-21T18:03:20.950

Why do you want to teach it? If we knew, we could help you explain that to the kids. But it seems like you’re looking for justification yourself. After taking a quick look, my quextion is, “why can't I just type that?” you need a good answer as that’s what the kids will wonder too. – JDługosz – 2017-06-21T23:48:03.093

Why even argue the point? Call your exercises 'puzzles' or 'logic puzzles'. Allow your students to go off-script and use that tool to do things that you didn't ask them to (or that they didn't imagine they could even do themselves with it). If by the end of the course, your students tell you that Snap is not a puzzle-building environment as much as it is a programming language you can actually build stuff with, then I suppose you will have completed at least one of your teaching objectives. – Stephan Branczyk – 2017-06-22T00:36:13.540

Other real world examples of DnD are SQL Server Integration Services (SISS) and BizTalk. MS Visual Studio includes DnD to create the user interface. – JTC – 2017-06-23T05:09:21.473

Since the students already have a programming language, I don't really see the point of using visual languages to excite them about programming

Agree with this, I think I'd have found it a bit patronising if these sorts of languages were used for anything other than an introductory course. – Adam Williams – 2017-06-24T16:39:53.553

IMHO the main advantage of visual languages is that beginners fear they have to remember the syntax of soooo maaany constructs and basic actions : they choose among the things they see. Convenient at first sight, a waste of time later as they know the syntax. The idea falls flat if they already wrote programs, and anyway programming with blocks is not identified, in the popular culture, to "serious programming" (like web development, doh). – Michel Billaud – 2017-09-08T16:46:43.957

What HighSchool is this? Robot academy on Mars? – Gorchestopher H – 2018-01-30T18:15:23.913

@GorchestopherH LOL, essentially. :) My students take part in a pretty unique program. – Ben I. – 2018-01-30T19:02:39.893

@BenI. Can you possibly edit/expand your question a little bit to give some more information? For example: What are the other requirements of the course (curriculum)? Is this a course at all in fundamentals? What concepts are you trying to illustrate? Snap! is a very good syntax enforcer, but it seems that your students are likely very familiar with adhering to syntax. – Gorchestopher H – 2018-01-30T20:13:07.363

@GorchestopherH I didn't ultimately take this path, though I am more convinced than ever that visual programming is real, and is only going to become more prominent for the foreseeable future. There may come a day that I revisit this idea, but for now, any new answers should probably be more about general applicability than about my specific circumstances. – Ben I. – 2018-01-30T20:47:21.640

This should be an edit or a new question. – Gorchestopher H – 2018-01-30T21:30:19.643

@GorchestopherH ... a new question? – Ben I. – 2018-01-30T23:16:48.703

Answers

24

Two thoughts:

  1. I'd start with telling them why you think it's worth their time. Whatever I or anyone else says on here, you're the one who thought it would be fun and worthwhile, and you must have reasons for that. Your reasons are more authentic and probably more applicable to your students than our reasons will be. Just be straight with the kids about what they are.

  2. You mentioned assembly, C, Java, and Python, which means that the kids not only have experience with "real" languages, but they have experiences with languages with a wide range of abstraction. You can present DnD/block programming languages as yet another level of abstraction, in which common language structures (blocks and certain bits of syntax) are abstracted visually rather than textually. This is not so radically different from what Python does when it visually presents code blocks as indented regions rather than as text sandwiched between curly brackets. You can point out the similarities between the block interpreter and the Python interpreter. You can compare the power, efficiency, learning curve, and programmer time requirements for each language and maybe even make a nice chart on the board. This will reinforce the idea that when comparing Snap! to Python to C, they really are comparing apples to apples.

Neal Zupancic

Posted 2017-06-20T10:20:16.337

Reputation: 611

6so after comparison it turns out that visual blocks are worse in all aspects. then the students won't really understand why the teacher did bring it up at all. – Sarge Borsch – 2017-06-21T05:06:41.467

3"This is not so radically different from what Python does when it visually presents code blocks as indented regions rather than as text sandwiched between curly brackets." Actually, yes, it is quite different. Python is enforcing an arrangement of text; it isn't abandoning text. The rest of your answer might still fly. – jpmc26 – 2017-06-21T05:26:53.863

@jpmc26 Python is still text, but you don't get to pick the keyword you want to use, e.g., for a while loop. Snap! effectively just replaces the fixed scaffolding you would type with a graphical element. Python still gives you more flexibility in what you can do within the fixed elements, but the similarity is still there. (Full disclosure: I've only used Scratch, and that years ago, but Snap! looks fundamentally the same.) – chepner – 2017-06-21T17:40:17.707

1@chepner What I see as "radically" different is the departure from typing simple words using standard characters to using custom non-text, graphical/binary items that are more difficult manage because we don't have dedicated tooling for them (like keyboards and find/replace). I do understand that there might be similarities in terms of structure, especially after the text is parsed, but I see abandoning text as quite different. I understand that, in some ways, this analysis supports the rest of the answer. – jpmc26 – 2017-06-21T18:13:38.943

1@jpmc26 considering that assembly is a "radical" departure from the underlying machine code ("you can read it now!"), and C is a "radical" departure from the ~1:1 of assembly to machine code, and Haskell is a "radical" departure... etc. I would say this supports Neal's arguments more not less. "...are more difficult to manage because we don't have dedicated tooling for them..." is generally what managers say to resist switching to new paradigms. The real question to potentially bring up is "Is this abstraction of programming particularly useful? If so, for what classes of tasks?" – Blackhawk – 2017-06-21T20:54:17.377

@Blackhawk I hope it is clear that I am not objecting to the answer as a whole, merely to the notion that controlling indentation is not merely a small step away from what block programming languages do. – jpmc26 – 2017-06-21T21:22:53.417

12

Everyone uses high-level languages these days, and we let compilers do the grunt work. Block-based programming is just a kind of IDE with a slightly different autocomplete mechanism. Block-based code can be trivially transpiled to textual form. After they complete an exercise, you can have them perform that conversion to textual code or pseudocode.

To debunk the "Real programmers don't use _____" fallacy, you could discuss what happens when you take that mentality to its logical extreme.

XKCD 378: Real Programmers

200_success

Posted 2017-06-20T10:20:16.337

Reputation: 272

1Some of the commenters at the top should make note of this answer. – Ben I. – 2017-06-21T17:44:07.340

Don't believe it, it is not true. We use sed. – ctrl-alt-delor – 2017-07-10T17:41:58.633

1Snap has a facility to allow you to write a translator, to convert snap code to any other language. And another to make snap look like another language. – ctrl-alt-delor – 2017-07-10T17:43:08.120

11

You could use some environment that lets you switch between blocks and text and work in both. That way, students can see firsthand that the code in the blocks converts to textual "real" code. This can help them understand the leap.

Here's one example of blocks switching with text on a Karel program on CodeHS (Note: I'm one of the founders of CodeHS)

enter image description here

Zach Galant

Posted 2017-06-20T10:20:16.337

Reputation: 430

10

Here's how I explained it to my students after teaching with App Inventor during a pre-college summer program:

With textual programming languages, your program won't work if you have a semicolon or even a space character (in Python) out of place. This can be frustrating, especially for beginners. They might conclude that programming is about punctuation, when it isn't; it's about logic, design, teamwork, and problem-solving. The argument for starting with visual programming languages is to expose beginners to the essence of computer science, rather than the superficial issue of placement of curly braces, colons, etc. If they enjoy it, they can go on to learn those things.

To use an analogy, programming with blocks is like writing stories with word magnets. On the positive side, you don't need to worry about spelling or punctuation; on the negative side, your vocabulary is limited.

Programmers disagree about whether using languages like App Inventor (or Scratch or Alice) is really programming/coding. To me, it is, since the logic is there. I don't see a fundamental difference between using a mouse and using a keyboard. That would be like saying that Jean-Dominique Bauby wasn't a real author because he used blinks instead of a keyboard or pen. (See also these Dilbert and xkcd cartoons.) To be fair, not everyone agrees with me.

Nonetheless, I can understand the frustration of students who wanted to learn "real coding" and why visual programming languages tend to be used just by beginners. One of the most common questions about App Inventor is: Why can't I see and modify the Java code created by App Inventor? The answer is that App Inventor doesn't create Java code; it creates something called byte code that is not human readable. Learning textual programming languages is incredibly useful and fulfilling; it's like moving from Lite Brite to an unlimited set of paints and brushes. I hope that some of you go on to do so.

Disclaimer: I am one of the creators of App Inventor.

Ellen Spertus

Posted 2017-06-20T10:20:16.337

Reputation: 4 408

1My personal definition (or test) of a "real" programming language is if you can use it to directly call the host system's platform API or not - so C and C++ are, as is C# and Java (through P/Invoke and JNI respectively) but not Flash ActionScript or LOGO. Would you agree with my definition? – Dai – 2017-06-21T06:43:45.447

2@Dai That should be a separate question, not a discussion within comments. – Ellen Spertus – 2017-06-21T17:53:14.167

8

I was at this camp one summer, and it was a programming camp for building models of different systems. I was super excited - I'd already been programming on Khan Academy and Codecademy. So I walk in, and they say that we'll be using this language called StarLogo Nova. We open our chromebooks, go to the site - and I begin questioning things, because I figure out pretty quickly that it's a drag and drop language.

I had (have?) a dislike for drag and drop languages - I had tried Scratch after doing what I considered "real" programming, and I didn't like it. However, that class changed my mind. We created a model of an epidemic, a model of an ecosystem - and I was hooked. I literally still occasionally take a look at those programs when I'm in the mood and add new features.

The about-face was because, I think, it felt useful. I felt more able to create something cool in StarLogo Nova than Scratch. So I guess, I'd say to first, pick a good, fun DnD language, and second, build something cool in it and show it to them.

You might also go into the idea of higher vs lower level programming languages, with DnD languages just another step higher than something like Python. Assembly is no more "real" a coding language than Python is. (If anything, it's the other way round =P)

All this being said, don't stuff beans up your nose - your students may not even be thinking any less of DnD languages and may have quite a bit of fun without you saying anything at all.

heather

Posted 2017-06-20T10:20:16.337

Reputation: 3 623

I haven't used StarLogo Nova but have extensively used NetLogo (and years ago StarLogo).

The things you liked - were they because they were drag and drop or were they due to the modelling environment which NetLogo provides with a text based language.

Just curious. – Mike Zamansky – 2017-06-20T23:43:20.497

@MikeZamansky StarLogo Nova does provide a nice modelling environment with a wide array of things you can do with it, which I enjoyed - I didn't like it for being drag and drop, I liked it for its usefulness. That it was drag and drop didn't seem like such a bad thing because of how much I liked everything else. – heather – 2017-06-20T23:47:26.470

Yes, build something useful. Something fun if you can. That would probably work with Scratch as well. – Buffy – 2017-09-21T11:48:57.800

7

Here I would go to Microsoft's Project Spark (even though it is discontinued, I think it is still downloadable. I have a local copy, so I'm not sure. But it's worth a shot)

Project spark is Microsoft's "experiment" as a game for making games. It is visual. And you can say block based. It's not like Scratch or Snap!, but it is visual.

It makes game creation quite easy, (there are limitations on the game models that can be used and other stuff, but that's not too relevant for this answer) and is very good to teach programming. Types, Objects, Methods and many other things can be taught with it.

I have used it for a while, and it is a real language. I suggest you try it, and maybe search videos in youtube that show aspects of Project Spark.

A sneak peak to the block programming (or "Kode") of Project spark:

Kode

The kode (not a typo) is fairly straight forward and self-explanatory.

EDIT: It is discontinued, but can still be used. It is free, and a very good way to learn programming concepts (as well as a good way to have fun)

ItamarG3

Posted 2017-06-20T10:20:16.337

Reputation: 4 569

5

It isn't very "fun", but there are visual languages widely used in the industry. For example the FBD language.

From Wikipedia:

The Function Block Diagram (FBD) is a graphical language for programmable logic controller design, that can describe the function between input variables and output variables. A function is described as a set of elementary blocks. Input and output variables are connected to blocks by connection lines.

EDIT: here my try at a real example:

Here in Germany Siemens-hardware and -software is widely used in a wide variety of factories, power plants and most other aspects of automation. The programming languages the PLCs of Siemens are programmed with are based on the IEC 61131 and the EN 61131 (German). They are called FUP (function plan, looks like Flipflops, I had those in my electrical engineering studies), KOP (contact-plan, looks like a circuit diagram), GRAPH (flowchart-style), AWL (really basic Statements) and SCL (a high language based on another language... i think pascal).

The first three of those are all graphical and most people simply use whatever fits them the most. You can translate those languages into each other with a simple click, within some borders.

There are several IDEs used, but the most common is TIA-Portal (that's kinda new for newer PLCs of the S7-series), Simatic Manager (older S7-series) and an even older one I don't know the exact Name of for the S5-series. The naming process of Siemens is extremely weird and a world of itself.

Siemens is used in other countries too, but of course I don't exactly know how much in detail.

KWGB

Posted 2017-06-20T10:20:16.337

Reputation: 59

1Welcome! Could you please add details on why FBD would be a good idea? – ItamarG3 – 2017-06-20T13:52:09.090

2That's a good example - I'm also entirely unfamiliar with FBD. Can you flesh this answer out a little bit (so that I can use your answer better in the classroom)? – Ben I. – 2017-06-20T14:26:15.053

@BenI. he's not saying to consider it for use in the classroom, but rather consider it as an example of real world usage of a visual programming language. That is, visual programming need not be necessarily "for kids". – David Liu – 2017-06-20T19:11:04.690

@DavidLiu I understood that. But if I will even use it as a passing example in class, I would need to give at least some more detail about the language, which could totally fit into the answer here to make it more useful. – Ben I. – 2017-06-20T19:20:15.380

In real industry, there's a reality that not everyone who uses our software can be versed in C++ and have 4 years of practice with the software. They need a powerful language to interact with our software which doesn't pack such a training price tag. FBDs are really popular for solving that problem. They show that there are many levels with which one can interact with a piece of software. The C++/Java code at the bottom is only one of those ways. – Cort Ammon – 2017-06-20T20:08:34.907

There's also Labview used for lab instrument automation, but licences are expensive and the learnign curve is surprisingly steep. – Chris H – 2017-06-21T09:01:18.797

@BenI. i tried to flesh it out some more – KWGB – 2017-06-22T08:46:53.703

4

Full disclosure: I'm generally not a fan of DnD programming languages in high school (maybe even late middle school) and I think DnD languages are frequently used by stem oil salesmen and used incorrectly so I'm frequently down on them.

More disclosure: DnD languages can be real languages and can be properly and soundly used in educational settings.

Ok, now to answer the question.

I think the easiest way is to head over to code.org and show them their DnD language which has a convenient "show code" button which will show the Javascript (a real language!!! :-)) equivalent to the blocks. You now have a platform to talk about how the block based language visually described the same code but visually (as opposed to textually with indentation).

codesters.com also has a pseudo DnD environment and while I like codesters very much, their DnD doesn't really feel like block based programming since it's really text chunk based - I'm a fan but I don't know if it would help in your situation.

Mike Zamansky

Posted 2017-06-20T10:20:16.337

Reputation: 1 462

4

You used two key words here: "persuade" and "convince." Let's approach this issue from the perspective of the three Aristotelian rhetorical appeals: logos, ethos, and pathos.

  • Logos: Appeal to their reason as programmers. Have them create a program in Scratch or Snap!, and as they add each block, have them write the corresponding line(s) of code in a language of their choice. DnD is merely an interface for "real code" that is in fact being executed underneath the hood. Have them use their proficiency to attempt to reconstruct what might actually be happening. For example, how does one of these programs handle event-listening? How can something that looks so simple on the surface actually be running a number of more complex processes that are abstracted away? You could even start by having them focus on just the logic of their program without the implementation of the graphical implementation of the language (i.e. treating a graphic as part of a pre-constructed whose logic they don't need to worry about). Then, have them consider the sprites themselves. If they're still not convinced, give them the assignment of designing their own DnD language/interface/block and color system based on Java, Python, or C (or even assembly (!)).

  • Ethos: Appeal to two big names in computer science: Harvard and UC Berkeley. Harvard begins their famed and incredibly well-designed CS50 course with Scratch. They introduce computer science at the university (viz. Ivy League) level with a couple weeks of DnD programming. It clearly plays an important pedagogical role in the course. Similarly, Berkeley's CS10 utilizes Snap!. They build almost an entire course around this environment because it is important to emphasize the thinking behind and the logic of programming languages, not the interface or the syntax. (This is a nice time to remind students that "computer science != coding".)

  • Pathos: Appeal to the incredible complexity of some DnD programs, and let them simply feel amazed. Here is one program I just found called "Landscape Generation" in Scratch. Here's quite a bit going on here that is far beyond dragging some simple blocks around. If something like that doesn't impress them, send them to the Games tab and have them explore those and encourage them to "See inside" to examine what went into designing the game. Snap! doesn't have as easy a database of sample programs to explore (at least none that I can find). However, the same logic should apply to Scratch and Snap!. There is incredibly impressive work being done in both environments, work that clearly demands a level of skill that goes far beyond what beginners are capable of. If you really want to blow the away, show them Pokemon Go in Scratch (Harvard used this in Week 0 last fall).

Peter

Posted 2017-06-20T10:20:16.337

Reputation: 6 906

Landscape Generation => define (Create Perspective Hack) Yep, it's real programming when it's all built on a hack :P – CAD97 – 2017-07-26T18:02:33.143

3

A lot of people are talking about how visual scripting is a higher abstraction, and that's all the difference, and the debate has moved more to a question of "is visual scripting 'real' programming?" The general consensus appears to be that yes, DnD languages are still real languages, and sure, it's a higher abstraction, but what does that mean?

There's a value to higher abstraction that no one seems to be mentioning, and that's the speed of it. When you remove details, you can write more, in the same amount of time. It's why we compare Python to C as 1 line for every 6. The value of visual scripting for people who are experienced programmers is the speed at which you can develop. This is an incredibly important factor in development, especially when smaller teams try to produce large, complex software.

A good example of a visual scripting system is the Playmaker extension for the Unity game engine. Every Unity developer and their grandmother uses it, and for good reason. It allows them to rapidly prototype ideas and build complex systems in hours instead of weeks. And once the prototyping phase is done? The system they built is production-ready in most cases. Time is a very expensive resource in the software industry. If the cost of time needed to perfectly optimize your game in C is more expensive than the slight loss in efficiency you'll have for a fraction of the development time, it's a foolish business decision to ignore the option which enables you to make more money.

Jake Uskoski

Posted 2017-06-20T10:20:16.337

Reputation: 31

Welcome to CSE? This is an excellent answer, and I hope we hear more from you in the future. – Ben I. – 2017-06-21T22:43:48.273

3

First and foremost, don't let your feeling about their feelings affect your judgement. It seems to me that most kids want to learn new things, they want to be 'beta testers' and on the cutting edge. Visual programming is something relatively new, let them be an early adopter as this new form of programming matures.

More importantly though, programming isn't about the process of programming. Programming is about accomplishing a goal. We can use different programming 'tools' to accomplish our goals.

Different languages make the process easier just like having a screw driver gets a screw in the wood easier than using an awl. And planing is easier with a planer than with a claw hammer.

Perhaps instead of convincing them what is better, have them do various exercises and let them choose their own tool set. Of course the exercises should do something interesting and in some or most cases allow the visual tool to save time. The grade should be given on the finished product - not which tool was used to accomplish the goal. If you have short exercises, have them do them in class and when the visual tool is faster, those students will be done sooner. Let them decide how they want to spend their time.

Remember the goal - it isn't just to learn a language, it is to teach students how to make good decisions and (hopefully) those lessons carry over into everyday life.

CramerTV

Posted 2017-06-20T10:20:16.337

Reputation: 131

1Very nice answer. Welcome to CSE! – Ben I. – 2017-06-22T20:31:52.097

2

Have your students write a visual programming editor.

It sounds like your students are pretty savvy, so what better way to show them how awesome a visual editor can be than to have them build their own! There are many benefits to this approach.

Relevancy

They're creating software to make them more efficient at what they already do and love.

Flexibility

The students can choose their preferred language.
This could also be a solo or a group project.

Pay-Off

This is an assignment with some legs. It's not something that will go into a folder and be forgotten. They can use it on their next assignment or in their own personal projects!

Eric

Posted 2017-06-20T10:20:16.337

Reputation: 121

2

Real-world motivation

I have a neutral opinion on visual programming. I have dabbled in it and decided that I am not interested. But. It is simply a tool.

Tools are complicated to motivate. Just enter any room of programmers and give them the exercise to, once and for all, decide on whether vi or Emacs is better. You might as well ask them to choose the new Pope...

On the other hand, in my opinion, an intelligent person (which your pupils certainly are!) does not need to actually be fond of or deeply knowledgeable of a tool to appreciate its merits. In the same vein as being able to learn about war and famine (which are decidedly not fun), they should be able to learn about Visual Programming even if you do not find a "fun" exercise for it.

So, you can easily teach them that there is a place for almost every tool. Visual Programming has its place in certain niches (depending on viewpoint, obviously) where you just do not need the expressive power of a general programming language. For example, if you are into Business Process Management, you can achieve a lot with visual programming. If you are using one of the game engines which focus on higher level creation, the same is true. A program like Blender can go far with a very domain-specific visual "programming" for what it does (physics simulation and so on). CAD/CAM systems are largely "programmed" with very, very domain specific visual tools.

Pick a few nice examples, and maybe you find some open source / free visual programming environments where they just play around, as a bonus. Even if they never touch them again, they will at least know that such things exist, and they may appreciate that somebody out there (who, likely, would never "program" anything at all, if they couldn't do it visually) puts them to good use.

"Convince"?

Try not to convince them. Show them what is real, what exists, and that in itself should be convincing enough.

This might sound like nitpicking, but in the business world, if people start to try to "convince" someone of something, then it's usually a red flag. I prefer if they show me that something so I can understand and appreciate (or deny) it myself.

AnoE

Posted 2017-06-20T10:20:16.337

Reputation: 1 109

1

Just because you are using abstraction does not mean it is no longer programming.

Anything above actually flipping the bits by hand is us just being lazy.

My only objection to using an obscure language just for fun is. Why learn it if I would not use it in real life later?

Essentially I’d say. As long as the problem to be solved is fun. I.e. Not how to implement a solution using a recurs7function, I’d say you are grand. Especially if there is text or graphics output involved.

Blinkenlights are fun.

DisplayName

Posted 2017-06-20T10:20:16.337

Reputation: 111

That's a fair point. Though we also teach 6502 assembly at my workplace, and I learned ML, BASIC, and Pascal - they all served a pedagogic purpose at the time. If it helps to get at an important concept, then that can be reason enough. (And keeping student engagement high enough to actually learn and explore is part of communicating the concept) – Ben I. – 2017-06-21T14:30:03.053