• Announcements

    • khawk

      Download the Game Design and Indie Game Marketing Freebook   07/19/17

      GameDev.net and CRC Press have teamed up to bring a free ebook of content curated from top titles published by CRC Press. The freebook, Practices of Game Design & Indie Game Marketing, includes chapters from The Art of Game Design: A Book of Lenses, A Practical Guide to Indie Game Marketing, and An Architectural Approach to Level Design. The GameDev.net FreeBook is relevant to game designers, developers, and those interested in learning more about the challenges in game development. We know game development can be a tough discipline and business, so we picked several chapters from CRC Press titles that we thought would be of interest to you, the GameDev.net audience, in your journey to design, develop, and market your next game. The free ebook is available through CRC Press by clicking here. The Curated Books The Art of Game Design: A Book of Lenses, Second Edition, by Jesse Schell Presents 100+ sets of questions, or different lenses, for viewing a game’s design, encompassing diverse fields such as psychology, architecture, music, film, software engineering, theme park design, mathematics, anthropology, and more. Written by one of the world's top game designers, this book describes the deepest and most fundamental principles of game design, demonstrating how tactics used in board, card, and athletic games also work in video games. It provides practical instruction on creating world-class games that will be played again and again. View it here. A Practical Guide to Indie Game Marketing, by Joel Dreskin Marketing is an essential but too frequently overlooked or minimized component of the release plan for indie games. A Practical Guide to Indie Game Marketing provides you with the tools needed to build visibility and sell your indie games. With special focus on those developers with small budgets and limited staff and resources, this book is packed with tangible recommendations and techniques that you can put to use immediately. As a seasoned professional of the indie game arena, author Joel Dreskin gives you insight into practical, real-world experiences of marketing numerous successful games and also provides stories of the failures. View it here. An Architectural Approach to Level Design This is one of the first books to integrate architectural and spatial design theory with the field of level design. The book presents architectural techniques and theories for level designers to use in their own work. It connects architecture and level design in different ways that address the practical elements of how designers construct space and the experiential elements of how and why humans interact with this space. Throughout the text, readers learn skills for spatial layout, evoking emotion through gamespaces, and creating better levels through architectural theory. View it here. Learn more and download the ebook by clicking here. Did you know? GameDev.net and CRC Press also recently teamed up to bring GDNet+ Members up to a 20% discount on all CRC Press books. Learn more about this and other benefits here.
Sign in to follow this  
Followers 0
game of thought

Help, teaching 12-13 year olds to code

30 posts in this topic

I have no idea of the number but I am running a small club next week and I would like help with ideas teach them, I thought teaching the lua first for something called t-engine 4 (google it) was a good idea for the first 2 terms ( til christmas) and after that teaching them c# for a term (7 weeks) and then moving on to gdi+ game development from a book called "visual c# game programming for teens" by Jonathan s harbor. I have been programming around 2 years on and off.

Do you think this is a good idea? Or if not, can you suggest a good alternative

I have a friend and he has done java for around a year

Thank you for your time
0

Share this post


Link to post
Share on other sites
Personally I find python easier than lua although maybe you should consider going even easier with scratch instead. There was some "ruby for kids" thing I saw about awhile ago too. Lua I dunno why I just didn't like it. C# might be too difficult, its not really a beginners friendly language and at the age of 12 they will want to see results, they can get those results much quicker in scratch while being introduced to programming concepts. Then after christmas python or something.

T4 seems simple enough to an adult but I don't think a child will like it much, scratch I have personally seen the results from 8 year olds and they enjoy it far more before then moving onto other languages. Edited by 6677
1

Share this post


Link to post
Share on other sites
These arent stupid kids though, they are the top 20% of intellect in the country and I am proud to say I one of them with them. And the reason I said lua was because of t engine which believe me is good
0

Share this post


Link to post
Share on other sites
Someone correct me if I am wrong...I was under the impression that GDI+ was *intended* for graphics in windows controls. Sure, it can be used for games but why do that when XNA is handy (provided you are using c#)?

Maybe I'm stating the obvious but if I was teaching kids my first priority would be to get them to understand the concept of OOP (mainly inheritance). I know that may be quite a leap for children...but if they they do not understand OOP first then they will never be able to fully leverage a game engine (or modify it to suit the particular kind of game they want). My approach for getting them to learn OOP would be to have them write a simple game without it...then start having them add bits and pieces of extra functionality until the code becomes unmanageable for them. Then present inheritance as a solution. Then they will have an obvious and painful reason to learn and understand OOP concepts.

I hope some of that helps...
0

Share this post


Link to post
Share on other sites
The reason we cannot use xna is because the computers at school have 16mb integrated graphics that I believe has directx 7 so xna is out of the question unfortunatley
0

Share this post


Link to post
Share on other sites
I worked with middle school students for three years as part of my undergraduate research. We taught them game programming and I went down similar lines of thought. Let me try to share some of what I learned with my groups.

1. I found that C# and XNA was very overwhelming to that age group. The problem was not necessarily the concepts but the mere typing. While kids might be good at texting, they had trouble with typing at a decent rate. Also they had trouble locating punctuation and other "special" keys. This lead to frustration and caused kids that were not as good at typing to become discouraged. It is possible that the demographics and area involved (I did the work in Texas) might play a factor, but it is something to keep in mind. Also please note that I am not trying to generalize. I am sure there are kids in that age group that are perfectly capable of typing at high speeds, but this was my general observation among three groups. A few were able to keep up, but more were struggling.

We also provided the students with laptops that they could take home. This helped work around the problems involved with school computer labs.

2. I switched to Game Maker and had great results with that program. Game Maker provided a nice visual jump start, kept the student interest, and provided the GML language for students that wished to go further with their creations. Every group was able to produce a fairly nice game at the end of the camp in Game Maker. We stressed the math and science aspects as well as working together in a team. We encouraged the students to design, plan, and decide the game content together as a group and then do a presentation at the end of the course in front of an audience of their parents/peers.

3. We augmented the Game Maker with art at some camps, but we had real success with adding Lego Mindstorms. Some students really liked the hands on approach of the legos much more than programming games. Also building and programming robots helped with their game programming as well.

The thing you need to realize is that kids at that age are a bit of a mixed bag. Some of the kids are going to be very into the course and they will blow you away, while others for various reasons will be less interested. One thing I did note was that if some kids got disinterested it was very easy for them to cause even the focused students to also become less interested. I think the way to minimize this is to provide enough different roles and activities to allow every student an opportunity to use their talents and to contribute to the project.

Some other things to note:

1. I said we provided students with laptops. This was both a good and a bad idea. Some students lost their laptops, broke their laptops, their parents used their laptops, etc. It may be a good idea to not let the students take home such technology until AFTER the camp is over.

2. It is important to convey (as previously mentioned) what is possible in the time frame. Some students wanted to create 3D games and other complex things. Try not to immediately dismiss their ideas but take the time to explain to them WHY the idea would take a long time. It is a good opportunity to have them appreciate the amount of work that goes into their favorite games.

3. I found that using a very impromptu teaching method yielded the best results. I would let the students guide the direction of the course based on what they wanted to see. I tried to develop a lesson plan that left plenty of time for deviations and questions. Don't try to be too rigid in your teaching and be capable of adapting quickly if required. For instance one day the entire computer lab was down and so we used the opportunity to talk about storyboarding, and concept art. I had paper and other art supplies available at all times. I had a seperate laptop so I could also show how to solve particular questions. Edited by shadowisadog
2

Share this post


Link to post
Share on other sites
[quote]Maybe I'm stating the obvious but if I was teaching kids my first priority would be to get them to understand the concept of OOP (mainly inheritance).[/quote]
That is a terriible terrible idea, and probably the reason why so many beginners tend to create complex class hierarchies even in the most trivial situations, and even though it doesn't buy them anything. Inheritance should be used about as often as function pointers are used in C programming, and for about the same purpose (multiple dispatch).

About the original question, I just want to say that 13-year-olds are perfectly capable of abstract thought and most of them probably don't need things watered down. Teach them real programming, and the choice of programmin language(s) is not all that important.
2

Share this post


Link to post
Share on other sites
I suspect most of the members of this forum (me included) picked up programming when they were around that age.

In my opinion, you should not water down concepts like OOP to "suit their level". as alvaro said, if you're going to teach them OOP, [i]teach them the right way of doing things[/i].

I reccomend starting with a game such as warctaft 3, whose minimum requirements are very low. have them play thegame for ~3-4 days so that they grasp the game mechanics, then introduce them to the editor. the Warcraft 3 editor is *very powerful* and allows one to modify almost every aspect of the game. show them how triggers are written and how [i]every entity is the game is present as a different object[/i]. you can subtly point them towards OOP concepts if you plan it right. Also, once they are familiar with the trigger system, you can show them the underlying scripting language called JASS.

This IMHO is the best method because
1) there's a nice looking editor which lets you place objects, modify values etc without taking too much pain
2) it lets you teach them about scriipting, triggers, as well as various math concepts taht ypu'll have to use (vectors, measuring angles in radians to name a few).

I wish you the best of luck :)
0

Share this post


Link to post
Share on other sites
I tried to teach my students OOP in the beginning but I am not sure how good of an idea it is without proper context. It may be a case of the cart leading the horse...

I tend to think OOP is overused and not fully understood by many software engineers/developers. That is not to say OOP is a bad concept or that it does not have good applications, but it is not a panacea.

I think given limited time my main priorities are to instil the concepts of variables (and the relation to algebra, which I consider important), program flow control (if statements, for loops, etc), rudimentary data structures (arrays, vectors, dictionaries/hash tables, ect), and file i/o. For 2D game programming I tend to stress mouse/keyboard input, screen coordinates, and vectors in 2D (I even try to work in some basic trig/Pythagorean theorem/use the Pythagorean theorem to derive the distance formula).

For me Game Maker worked well to teach basic OOP because every thing "was" an object. They were using OOP without having to really get into the full details of what it was.

I think it might be worth keeping in mind that the sheer amount of material you could cover is much larger than the amount of material you can cover in the time period. Also that such concepts are instilled typically in four years of schooling and if you have to build up the math, your looking at more like eight... If you are trying to condense that into a camp you must pick your battles!

I like the idea of Warcraft 3, but that involves money to buy enough copies of the game. Some parents might object to their kids playing such a game (you would be surprised), and it may get their hopes up a bit in terms of wanting to do 3D for everything. Why go to 2D when they were "just" using 3D? It may be a good idea to work in such things at the end of a course, but I am a bit dubious as to putting it at the beginning. Also in my experience the less you have to install on a school computer system the better. I can tell you right now that the school WILL object to putting a "game" on the computers, and good luck trying to get the kids to STOP playing it and do the more "boring" stuff. Also the computers I dealt with had the hardware acceleration disabled (or... they never had it to begin with), so I have a large amount of doubt that warcraft 3 would even run..

If I was going to do anything 3D, I might chose to incorporate Alice (or Storytelling Alice) because it would add some balance to the course. There have been groups using it with good results for [url="http://www.cse.wustl.edu/~ckelleher/StorytellingCHI.pdf"]motivating middle school girls to learn computer science[/url]. I do have to hesitate because I do not want to say certain things are for "boys" and others are for "girls" (which is generally a dangerous notion and one that should be avoided), but even so adding such concepts may appeal to students who prefer storytelling. Edited by shadowisadog
1

Share this post


Link to post
Share on other sites
[quote name='alvaro' timestamp='1346725535' post='4976278']
[quote]Maybe I'm stating the obvious but if I was teaching kids my first priority would be to get them to understand the concept of OOP (mainly inheritance).[/quote]
That is a terriible terrible idea, and probably the reason why so many beginners tend to create complex class hierarchies even in the most trivial situations, and even though it doesn't buy them anything. Inheritance should be used about as often as function pointers are used in C programming, and for about the same purpose (multiple dispatch).
[/quote]
Did you even bother to read the rest of what I wrote? If you are going to quote me, quote the whole thought not just the section that you want to harp on. What I was suggesting was to let them write code without OOP until it becomes unmanageable for them. Then give them the extra tools as a solution.

Are you saying that there are no other benefits? Like code that documents itself? Or avoiding copy-pasting to implement similar but subtle differences in logic? How about code that can actually be tested in bits and pieces (components) rather than the whole damn thing at the same time? Edited by timothyjlaird
1

Share this post


Link to post
Share on other sites
Take care! OOP is dangerous since it is actually a concept for lazy programmers without a future oriented view. It is not realistic. In most cases reusability, the most important criteria in software development, is messed up. So after a somehow logical design, the code is misused often to suit to reusability, which brakes the OOP paradigms. Interfaces are important, OOP not. I programmed C++ and C a long time ago. Now Java. I never use inheritance in big commercial projects, and had success with this. After several years of programming and 5 years of studies, I realized that some people introduced OOP and nobody really asked, if this makes sense. The answer is, it is not reasonable!
0

Share this post


Link to post
Share on other sites
[quote name='timothyjlaird' timestamp='1346755039' post='4976365']
[quote name='alvaro' timestamp='1346725535' post='4976278']
[quote]Maybe I'm stating the obvious but if I was teaching kids my first priority would be to get them to understand the concept of OOP (mainly inheritance).[/quote]
That is a terriible terrible idea, and probably the reason why so many beginners tend to create complex class hierarchies even in the most trivial situations, and even though it doesn't buy them anything. Inheritance should be used about as often as function pointers are used in C programming, and for about the same purpose (multiple dispatch).
[/quote]
Did you even bother to read the rest of what I wrote? If you are going to quote me, quote the whole thought not just the section that you want to harp on. What I was suggesting was to let them write code without OOP until it becomes unmanageable for them. Then give them the extra tools as a solution.[/quote]

I did read all that. It's a good plan, but the emphasis on inheritance is misguided, in my opinion. I was only arguing about that part, so I only quoted that part. I think it's easier to follow the argument when following that style of quoting.


[quote]Are you saying that there are no other benefits?[/quote]

Yeah, pretty much.


[quote]Like code that documents itself?[/quote]

Code that documents itself is a good thing, but unrelated to inheritance. You can write clean self-documenting code without inheritance. I do it all the time.


[quote]Or avoiding copy-pasting to implement similar but subtle differences in logic?[/quote]

I am unaware of how inheritance helps with that. Extracting common functionality into its own function, particularly when you can give that function a good name, is extremely useful and should be emphasized to beginners. In the case of member data, more often than not the correct relationship is "HAS A", not "IS A", and you should simply have a member of the type that implements the common functionality, not inherit from it. Using inheritance as the default is a problem.


[quote]How about code that can actually be tested in bits and pieces (components) rather than the whole damn thing at the same time?[/quote]

I saw a Google tech talk once that advocated using polymorphism instead of using `if' statements in most cases, with enormous emphasis on testability. It sounds like an interesting concept, but I have never seen it put to practice.

If that's what you had in mind, you have a point. But this is not the way most people use inheritance, and it's unclear to me if this style of coding is appropriate for beginners.

There are many other things that are more important to learn. I would put the emphasis on defining clean interfaces between parts of the code and giving things good names. Beginners tend to think of code as something that a machine will read, but I think they should think about it also as something that a human will read, and they should make the human's life as easy as possible. Edited by alvaro
1

Share this post


Link to post
Share on other sites
[quote name='game of thought' timestamp='1346706650' post='4976187']and then moving on to gdi+ game development[/quote]

This is a hideous idea... GDI/GDI+ isn't designed for that kind of use. It's really designed for use with Win32 within a paint message not to be used at the kind of rate you'd expect to be drawing a game at.

If you're using C# and running XNA on a PC is out of the question can you not find a cheap Xbox and run their games on that?

On an unrelated note the best programming book I've ever read is actually "The C Programming Language" written by Ritchie and Kernighan. ANSI C is a very, very small language and the book covers them in a brilliant way. Particularly the language's enforcement of having variables declared at the top of the scope. If what alvaro says is true about the kids being able to handle the abstract thinking I see now problem with teaching them the more basic constructs at them before teaching OOP.
0

Share this post


Link to post
Share on other sites
[quote name='alvaro' timestamp='1346774276' post='4976454']
[quote]
Maybe I'm stating the obvious but if I was teaching kids my first priority would be to get them to understand the concept of OOP (mainly inheritance).
[/quote]
That is a terriible terrible idea,
[/quote]

I have to second this.
As a kid I got started with BASIC.
The cool thing about basic is that you don't even need functions.

Your average 12 year old does not understand:
1. If statements
2. Functions
3. Loops
4. Variable Typing
4a. Variable declaration
5. Splitting code into different modules etc...
...

BASIC did not require any of these concepts to generate a cool result.
As a kid, easy success is a great motivator.

Since basic does not really exist anymore (Visual basic is more like C# / Java),
I am thinking one might think of toying around with java-script as a first language.
It does not require any of the above (you can even use undeclared variables in global scope).
It might actually be useful for the kids later.

Little by little you can add the more complicated concepts listed above.

The downside is And there are no easy input functions such as getch() or scanf(), and the javascript canvas is as complicated as any GDI library.


But I don't know any language with a graphics library as simple as basic:
SCREEN 13
COLOR RED
DRAW "r5 d5 l5 u5"

Regarding OOP specifically:
It is not a "Holy" concept.
As someone who learnt to program before good C++ compilers were available for home development, you can do a-lot without OOP,
Teaching it as the only way of programming is major mistake universities make today.
It causes programmers to believe that over-designing is a goal in itself. Edited by SillyCow
2

Share this post


Link to post
Share on other sites
[quote name='SillyCow' timestamp='1346787589' post='4976547']
[quote name='alvaro' timestamp='1346774276' post='4976454']
[quote]
Maybe I'm stating the obvious but if I was teaching kids my first priority would be to get them to understand the concept of OOP (mainly inheritance).
[/quote]
That is a terriible terrible idea,
[/quote]

I have to second this.
As a kid I got started with BASIC.
The cool thing about basic is that you don't even need functions.

Your average 12 year old does not understand:
1. If statements
2. Functions
3. Loops
4. Variable Typing
4a. Variable declaration
5. Splitting code into different modules etc...
...

BASIC did not require any of these concepts to generate a cool result.
As a kid, easy success is a great motivator.

Since basic does not really exist anymore (Visual basic is more like C# / Java),
I am thinking one might think of toying around with java-script as a first language.
It does not require any of the above (you can even use undeclared variables in global scope).
It might actually be useful for the kids later.

Little by little you can add the more complicated concepts listed above.

The downside is And there are no easy input functions such as getch() or scanf(), and the javascript canvas is as complicated as any GDI library.


But I don't know any language with a graphics library as simple as basic:
SCREEN 13
COLOR RED
DRAW "r5 d5 l5 u5"

Regarding OOP specifically:
It is not a "Holy" concept.
As someone who learnt to program before good C++ compilers were available for home development, you can do a-lot without OOP,
Teaching it as the only way of programming is major mistake universities make today.
It causes programmers to believe that over-designing is a goal in itself.
[/quote]
A lot of what you just said makes me cringe...though I have already tried to make my point and I will move on.

However...BASIC is not quite dead. Blitz3D uses a bastardized form of BASIC. Unfortunately the license costs $60 and it requires DirectX (version 7 I think). I did not mention it before since the person who was starting the thread does not have the resources (money and decent video cards) to leverage it. I bought a license a few years back and developed a simple game on it. It is great for learning the fundamentals of working in 3d graphics and some people have made some really cool stuff with it. I stopped using it because the code became very difficult to extend and maintain. If you want to try it or any of their other products, see here:

http://www.blitzbasic.com/
1

Share this post


Link to post
Share on other sites
You could always use FreeBasic, as it has its own gas backend (mingw suite), and gcc backend (gcc)
it's very easy to get started, has all the "BASIC" commands, all the C commands, CRT, and whatever else you may wish for (such as threading)
but, i would not teach my kid basic.. it's too far from the "accepted" standard of C
if i were to start over, i'd choose C in a heartbeat.. or hybrid C/C++

frankly, i would vote for the guy who suggested python / pygame
0

Share this post


Link to post
Share on other sites
Interesting thread.

I believe that it is important to keep in mind the audience. I understand every side being argued here, but I believe that everyone is approaching the topic from a developer perspective, instead of the child perspective. I'm here to advocate for both.

What is the goal??
Well, this might be another topic of contention, but I believe it is to get kids (read: 12 year olds) excited about creating things, and this could be anything from stories to animations or games. If they are excited/interested, they will tend to revisit or stick with something. And after repeated exposure (10,000 hours, via Malcolm Gladwell) you will be good at it.

Kids, especially at that age, are very fickle. They don't know what they like but they DEFINITELY know what they don't like. I understand fringe cases out there, but it is generally safe to say that kids don't like typing code, let alone anything with any kind of syntax (even if you are a gifted top 20% child). Therefore trying to ignite some interest in game creation (via syntax/text) will largely fail because kids get turned off before they can actually make something they can appreciate.

My Recommendation:
Start kids with a visual programming language. Syntax and actual code is the least interesting and least rewarding part of programming. On the other hand, getting kids excited about programming and getting them to understand programming concepts(loops, variables, objects, functions, etc) is how to create GREAT programmers.

I know what everyone is going to say. Visual Programming languages such as Scratch isn't REAL programming (I agree), but I believe it starts kids on a path to real programming.

That said, there are many problems that I have with Scratch. Feel free to reach out to me for recommendations!
1

Share this post


Link to post
Share on other sites
Just a comment... for someone who boasts online about being in the the top 20% of intellects in the country... you seem to have bad spelling and grammar... just an observation. I think c# is a bit too much for the age group. I would teach them python like they said above so the children can see the results while they learn the basics. It will keep their interest. Edited by Tantalus45
1

Share this post


Link to post
Share on other sites
That'll you for the obsevartion, I have auto spell on my phone so it sort of destroys any form of grammar and I wasn't boasting about it I'm sorry if it came across that way what I meant to say I am a student as well an only a year older than them
0

Share this post


Link to post
Share on other sites
[quote name='game of thought' timestamp='1346706650' post='4976187']
I am running a small club next week and I would like help with ideas teach them
[/quote]

Is the club just one day or is it across weeks?
0

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0