Does Construct 2 teach good programming thinking?

For educators around the world who use Construct 2 in classrooms

Post » Tue Apr 12, 2016 11:06 am

Throughout the years I've been teaching programming to many people (actually not that many... around 15 I'd say). I also had experience with total newbies who had no idea what is it all about, they just wanted "to make games/websites".

And many times I saw people struggle to understand even such a basics like the compiler reads the code from top to the bottom or simple for loop was a struggle. It's not because they were stupid people. It's because for absolute newcommers all the programming terms are absolutely abstract.... like "what is this compiler/parser at all?!".

So as this topic is not "let's compare C2 and pure coding" but "Does Construct 2 teach good programming thinking?", then yes. It surely does. I understand that full topic should be "Does Construct 2 teach newbies good programming thinking?", since advanced users already know how to think in order to code. So for newbies C2 is really a good start especially because everything is visual and they don't have to fry their brains trying to imagine what an object is... etc. You just get it much faster when you see it.

Now if the newbie make a step further or not depends on him. If he is a pure hobbyst then probably he would never go and learn any programming language because C2 is fun and usually enough for hobbysts to make games. But if you have mastered C2 and decided to put IT on your proffessional career trip, then you must learn what is below, because sooner or later there will be a task to do which pure C2 won't handle with default plugins and you will have to make your own.
ImageImage
B
27
S
16
G
68
Posts: 945
Reputation: 38,599

Post » Tue Apr 12, 2016 11:42 am

Kyatric wrote:On that level, no programming languages "teaches" you those concepts either (apart perhaps syntax stuff, although it is often one of the main issue with signs used in ends of lines and stuff like that), it is up to you, the user/progreammer to be organized and make "clean" and elegant code.

You can have messy C++ code as well, using too much memory, not clean/elegant and so on. The language itself doesn't teach you anything about that, it is just your own experience using it that does the trick, same goes with C2.
...
By its design it will lead you in certain ways, sure, but as long as you are left on your own, you can teach yourself bad ways, I don't think it is specific to C2.

True. This is why you need a teacher if you don't have time to learn from experience.

Kyatric wrote:Also, it's actually an abuse (even on my part) to compare C2 with C++ since C2 is based on JavaScript, as such a lot of your complains/remarks are the same that "true coders" of low-level languages like C++ will have towards scripts/modern languages like JavaScript.
It's kind of a dead debate all along since it is mostly a matter of perception/point of view/comparing two things that are not really comparable (low level vs high level).

grandbrinus wrote:Comparing C2 and any language is totally useless.
C2 is not made for teaching programming, because C2 is -over- programming.

When you code in C++, do you keep in mind what happen in Assembler ? Do you try to find what your compiler will do when you do a new ? When you do a pointer ?
Will C++ teach you what the internal motor of the compiler will build ?

I agree, you can't compare two languages directly and this discussion is not about that. However you can compare them regarding didactic matters. Since they are both used in education and teaching programming logic, computational thinking, I think it's fair to measure which one does the job better. This is a wide area, we can't cover all aspects of programming teaching and I don't believe it's even possible with only one language. But since the lessons are limited in schools and the students have also limited free time to practice on their own, it's important to have an efficient language that is easy to learn, yet so powerful that it can take the student far (to create a knowledge that allowes the student to learn other languages, new methods based on it). I'm hoping that C2 is that language.

Kyatric wrote:But it is not the goal of a language or of C2 to "teach" anything.

True, the most important part is to be able to make software with it. On the other hand, it's good that if a language is fit to teach programming logic for beginners.

BackendFreak wrote:Now if the newbie make a step further or not depends on him. If he is a pure hobbyst then probably he would never go and learn any programming language because C2 is fun and usually enough for hobbysts to make games. But if you have mastered C2 and decided to put IT on your proffessional career trip, then you must learn what is below, because sooner or later there will be a task to do which pure C2 won't handle with default plugins and you will have to make your own.

It's great that so many perspectives come up for this topic. Based on the previous posts (including your writings too) in your opinion do you think that C2 can be a good base for someone who want to learn professional programming? Or it might be better if I ask that way: Do you think that for someone, who learned programming logic with C2 in a formal way, alongside a teacher, is it possible to step to the next level, the professional level, learning only by themselves?
B
129
S
33
G
17
Posts: 1,552
Reputation: 20,515

Post » Tue Apr 12, 2016 1:05 pm

glerikud wrote:It's great that so many perspectives come up for this topic. Based on the previous posts (including your writings too) in your opinion do you think that C2 can be a good base for someone who want to learn professional programming? Or it might be better if I ask that way: Do you think that for someone, who learned programming logic with C2 in a formal way, alongside a teacher, is it possible to step to the next level, the professional level, learning only by themselves?


Short answer - yes. But...

Again, C2 will teach you a programming thinking, not a programming itself. No matter if you start with C2 or pure coding you have to learn the second thing anyway. I am quite experienced coder but it took me months to get fluent in C2 even though I had years of experience as a coder. Every new technology you jump into takes time to learn no matter how much you know already. Even jumping from one language to another requires you to learn new syntax, conventions, tools etc. Obviously the more you know already the less time it takes to learn new thing since many of them are similar and have one base - the logic (programming thinking). So when you master C2 it will take you months or years to master coding anyway.

Regarding learning with or without a teacher. If possible then I highly recommend to learn with a teacher. If you have someone experiened next to you who can directly answer any question then you learn 100 times faster and you're not getting bad habbits which newbiews always do. So if one have teacher while learning C2 it will take probably few months to master C2 instead of many months. Then if he continue learning by starting coding and this part is without a teacher then he will struggle - that's a sure thing. It's another "technology". Same base, but new thing anyway.

Easier comparison would be to ask Would someone who mastered C2 with a teacher be able to learn making games in Unity by himself?. Yes he will be able (nothing is impossible here), but obviously he will have to learn a lot of new things. New editor/interface, C# language, Unity conventions etc.

I am not sure why do you ask? If you want to start teaching people C2 proffessionally then I vote for it. I wrote my first program in 1992 (something around that) so really long time ago, and there was no such tools like C2, so we had no choice that time. And many people just gave up on the way learning pure coding which is not easy at the beginning at all. But if we had such a great tool back in the '90s I'm sure we all would go for it at start cause it's just way more pleasent for newbie to jump into IT. Anyway teachers are always a good choice. You save a lot of time when you learn with a teacher. Just be a good one! ;)

And one more thing to mention. By learning programming it is not the most important to learn syntax, conventions, functions etc. Those things you can easily find in the documentations and you will get familiar with them in time. The most important thing in order to be a good programmer is to learn how to write a good code. A good code is basically a code that when your project gets very big, then you still know where is what and when a new programmer join a team he doesn't want to commit a suicide by working with your code.
So what is it all about:
- Understanding conventions (global, and particular for currently used technology) and sticking to it
- Making a DRY (Do not Repeat Yourself) code
- Making an organized, ecapsulated code (!) as much as possible
- Making often refactoring instead of "flat" prototype extending
- Making semantic code instead of writing tons of long comments which will get deprecated with new release anyway
- etc....

There are a lot of things which are VERY important in programming but not directly related to a specific technology and YES, you can learn most of them with C2 as well.
ImageImage
B
27
S
16
G
68
Posts: 945
Reputation: 38,599

Post » Tue Apr 12, 2016 1:10 pm

glerikud wrote:the didactic matters

C2 and a "classic" language are not on the same level. So it's still hard to compare them even for didactic matters.

C2 is about creativity. The software tell you "don't worry about the code, i'll do it for you. You click, I program". That's why you can do a car, a turret and a platformer very easily. With C2 you will learn game design and video game concepts (user reactions, multi-device applications...) you don't see in "classic" programming.
The questions you will have to answer with C2 are : will my players will be happy with my game ? is my game human-playable ? why when i push this button it instantly kill me ? how to integrate my new spaceship design ?
C2 has his own rules and you have to deal with them to make your game working. But we are not talking about any program here.
For example, the Function object doesn't work AT ALL like a function in a "classic" language.

Now if you go the level under, and do some "classic" programming, you will learn logic, algorithmic, OOP...
You will have to answer to these questions : why i have a infinite loop ? why my function doesn't return 42 but 0 ? why i never reach my breakpoint ? where is my missing ; ?
It's clearly not the same thing. Here you are only concentrated on the logic.
It will show how things are made. How is made a website ? A mobile app ? A robot ?
Maybe you can answer me "yes but if you do a website you can have creativity stuff". True, but the questions are the same, you still have to question about your program, and not the result of this program.

It doesn't mean both are separated. Of course with C2 you can't do your game completely randomly without any logic. But it's mostly hidden. You put your events and they run by themselves, most of the time if you exchange two events place, the program keep running.
But the main concepts of programming are present (loop, conditions...)

So now it depends on what you call "professionnal programming" because i'm a video game professionnal and i use C2, you see ? :)
IMO you can have a programmer mind using any of those solutions, but you will not see the same thing depending on which of them you will choose :)
B
13
S
5
G
1
Posts: 138
Reputation: 2,659

Post » Tue Apr 12, 2016 1:12 pm

@BackendFreak haha we did the same !
I'm a 10 years experienced programmer, it took me 2 years to feel i knew the full power of C2 :D
B
13
S
5
G
1
Posts: 138
Reputation: 2,659

Post » Tue Apr 12, 2016 1:36 pm

grandbrinus wrote:The software tell you "don't worry about the code, i'll do it for you. You click, I program".

True - C2 will do the implementations, but let's highlight that you have to plan it/make algorithm anyway and that's the beauty.

grandbrinus wrote:
For example, the Function object doesn't work AT ALL like a function in a "classic" language.

Why? You have a trigger (function name), input parameters, return value. For me it's a classic function. You give the input and fetch the output. You can even do callbacks.

grandbrinus wrote:@BackendFreak haha we did the same !
I'm a 10 years experienced programmer, it took me 2 years to feel i knew the full power of C2 :D

As I said every new thingy takes time to get familiar with ;).
ImageImage
B
27
S
16
G
68
Posts: 945
Reputation: 38,599

Post » Tue Apr 12, 2016 2:37 pm

@BackenFreak yes, when you use it like that. Like a function.
But two functions can have the same name, you can choose to call a function or an other depending on the value of the parameters sent, or making dynamic calls (it's more common bc lots of languages do that now, but it's not so easy to talk about it when you talk about functions, at least to beginners).
B
13
S
5
G
1
Posts: 138
Reputation: 2,659

Post » Tue Apr 12, 2016 5:23 pm

BackendFreak wrote:I am not sure why do you ask? If you want to start teaching people C2 proffessionally then I vote for it.

First, thank you for your long and detailed answer. I'm asking these questions in order to gather information from experienced coders regarding visual programming and especially C2. I also value non-programmers' feedback as well. It also adds to the big picture and help me to see clearly. I have two goals, one is to teach C2 in the future with a well worked out curriculum to replace traditional programming in high-school lessons (for the non-computer science focused classes). If I can manage it, I also want to start an optional game design study group where we would use C2. My second goal is to research how C2 helps students (or just design focused users) develop programming thinking/logic. I have some personal experience in the latter despite I learned traditional programming at college, but I can't base a study on my personal opinions. :)

grandbrinus wrote:Now if you go the level under, and do some "classic" programming, you will learn logic, algorithmic, OOP...
You will have to answer to these questions : why i have a infinite loop ? why my function doesn't return 42 but 0 ?

I see your point, but I have to disagree with it at some points. The 2 questions I quoted from you can be answered with using C2 too. While C2 takes away the syntax part of the programming, you'll still have to build up the logic. I guess it would be more precise to say that with C2 you won't learn to write code, but you do learn how to build code with logic. I'm with @BackendFreak, I also think that the functions are not so far from the ones you use in a classic language.
You are right when you say that we can make a game in C2 using not well designed event sheets (using seemingly random events) and they will work. But it's also part of why C2 is so appealing to beginners. You get positive feedback. Your game works. It feels awesome. I'm not saying of course that this is how one should develop a software, but it gives the necessary nudge to develop further and learn how to build optimized, well designed code later.

grandbrinus wrote:So now it depends on what you call "professionnal programming" because i'm a video game professionnal and i use C2, you see ? :)

True :) But for beginners the goal is to get familiar with the basic aspects and develop the thinking. The professional part comes later. Also, thank you for sharing your view.
B
129
S
33
G
17
Posts: 1,552
Reputation: 20,515

Post » Tue Apr 12, 2016 7:03 pm

I think Construct could be a excellent tool for teaching higher level logic and thinking for the high school level. You can touch on a lot of useful real world application data manipulation basics like parsing, loops, arrays, or even pathfinding. C2 has all the capabilities at least.

So I think the question would then be is Construct be superior than say, a traditional entry level programming class using Visual Basic?

I imagine a lot depends on how comfortable you yourself are using and teaching Construct 2 versus another programming language or engine. Licensing models and future accessibility are also considerations.

From another perspective, I personally believe knowledge of Unity/Unreal Engine would be more relevant as we move towards the future (I'm a huge C2 fan, haven't actually touched 3d yet). The C2 event engine has a lot of small quirks and considerations that are NOT transferable to other languages - picking objects properly, for example, is a huge part of C2 specific logic that you will need to teach.

Basically given the choice between a Construct 2 class and a Unity class in high school, I would definitely rather pick Unity.
Mistakes were made.
B
49
S
24
G
107
Posts: 1,581
Reputation: 60,303

Post » Tue Apr 12, 2016 7:12 pm

About function, it's only because we don't take benefit of the C2 motor, but i did some fun experiences with functions and seriously you can do so much more things than a lot of of languages. Ofc, the more can do the less :p

And that's why i'll explain my questions above. When you do "classic" programming, your problem is the code itself (like you said, tbh) , that's why i wrote those questions, because you only build a logic with language to get a result. As i said, with C2 you can't ignore the logic, ofc. But it's not the main aspect of what you use C2. As i said, your main thought will be "how to move my elevator ?" and not "should i use a OR or a AND in my test ?"
These logic questions are answered faster and more fluently with C2 in putting blocks together.

You know, i have met more designers than hardcore developers using C2 :D

If you really want to teach to beginners what programming means, you can use C2 just for making them doing a fun work but your risk is to let them believe it's always so easy. No syntax problem, the interface telling you everything etc. because when they will meet the hard reality of code, they can be disapointed too.

In fact, you can make them doing two little projects, one with C2 and one on the "classic" way, and at the end of your course, you make them reading what we are saying, and let them expressing their opinion.

I really should try a teacher carreer :p
B
13
S
5
G
1
Posts: 138
Reputation: 2,659

PreviousNext

Return to Education and Construct 2

Who is online

Users browsing this forum: No registered users and 0 guests