Jump to content


Photo

Computer Science:


  • Please log in to reply
36 replies to this topic

#1 Jetrell

Jetrell

    Member

  • Member
  • PipPip
  • 73 posts

Posted 22 June 2018 - 09:44 PM

I have a 9-year-old son who like many his age, really likes to play computer games. In an effort to raise the bar a little bit I've taught him how to use a few game editors including DarkRadiant. Thinking about his future, I'm wondering what other things I can be teaching him.

 

Should I be teaching him programs like C++, Java, Python, Kotlin, and Clojure? Which might be a good start? Are there other programs that might be better? Are these programs likely to still be viable in the upcoming years? Are there newer programs that will likely be replacing these programs?

 

In addition, I'm open to other suggestions, even outside the box suggestions. What would you be teaching your child?

 

 

 

 

 



#2 Abusimplea

Abusimplea

    Member

  • Member
  • PipPip
  • 368 posts

Posted 22 June 2018 - 10:29 PM

Python is the best programming language to start with. It is general purpose, easy to write and read, and it comes with a huge and easy to use standard library.

 

Whatever language you chose - don't chose ASM, C, C++ or any language that does not come with automatic memory management and bounds checking for a first language! It is absurdly hard to get code right in that languages - to the point, where the best coders on earth still create code that makes important infrastructure vulnerable to remote code execution attacks.


  • lowenz, stgatilov, Jetrell and 1 other like this

#3 demagogue

demagogue

    Mod hero

  • Active Developer
  • PipPipPipPipPip
  • 5374 posts

Posted 22 June 2018 - 11:40 PM

Yeah, a high level language like Python is good.

 

There's a game called TIS-100 which makes a game or puzzle out of coding. I just got it recently but haven't really delved into it. It opens up like an old '80s computer with and it comes with an obscure manual. I think it might be for machine or even assembly code though, like the lowest level of coding, since you're playing directly with cycles and memory allocations. I don't know if I can recommend it, but it is interesting and you are still technically learning coding, like the pure logic puzzle part of it. And it's still a game, so it's better for motivation.

 

Edit: I got curious so I played some of it. It's like a coding version of the game Manufactoria, if you know it. It gives you inputs and conditions for the output, like only take the even numbers and throw out the odd numbers or list out the input numbers in backwards order, etc, and you have different functions that you can arrange anyway you like, and you can store numbers temporarily, etc., Then you write code and let it run, and then you see if you list out the right output or you have to edit something, rinse and repeat until you get it. It's good for learning because the puzzles ramp up in difficulty and build on what you learn from the previous ones, but add a new twist. It's actually pretty clever, and it's very satisfying to solve a puzzle with an elegant program. For that matter, have him play the game Manufactoria too, which is more visual, and he's basically learning coding, since the little state machines are just visual representations of functions. You get that same great feeling satisfaction for solving those puzzles too.

 

TIS-100: https://store.steamp.../370360/TIS100/

 

Manufactoria: https://www.kongrega...us/manufactoria

(solutions: https://www.nayuki.i...oria-solutions)

 

Zachtronic games are all in this vein too: Opus Magnum, SpaceChem, Infinifactory, and SHENZHEN I/O

Edit: Oh, TIS-100 is a Zachtronic game too; of course it is.

Edit2: And Manufactoria. Well there you go. Play anything by this guy.

 

Of these Opus Magnum is the most accessible & intuitive, and looks & sounds nice.


  • lowenz and Jetrell like this
Posted Image

#4 stgatilov

stgatilov

    Lead Programmer

  • Active Developer
  • PipPipPip
  • 892 posts

Posted 23 June 2018 - 12:34 AM

For learning a language, good IDE and debugger is very important.

So if you start with Python, try to set up Python development environment in Visual Studio.

 

As for which languages will live long enough, I'll say C++ is most unlikely to die, Java probably comes next. Javascript is also likely to live long unfortunately :D

Things like Python, Kotlin, Closure can easily die in long perspective.

 

One crazy direction may be game hacking: start with memory rewriting (i.e. MHS) --- that's fun and rather easy.

However, the next step (ollydbg/IDA) is too hard --- requires good C/C++ knowledge and tremendous motivation/patience.


  • Jetrell likes this

#5 Abusimplea

Abusimplea

    Member

  • Member
  • PipPip
  • 368 posts

Posted 23 June 2018 - 12:59 AM

There's a game called TIS-100 which makes a game or puzzle out of coding. I just got it recently but haven't really delved into it. It opens up like an old '80s computer with and it comes with an obscure manual. I think it might be for machine or even assembly code though, like the lowest level of coding, since you're playing directly with cycles and memory allocations. I don't know if I can recommend it, but it is interesting and you are still technically learning coding, like the pure logic puzzle part of it. And it's still a game, so it's better for motivation.

Zachtronics has some good games for people interested in tech. But TIS-100 is rather hardcore. Same with Shenzhen I/O (though not as much as TIS-100). Both are mostly about concurrency-oriented space-efficient programming in fictional flavors of assembly language. That games are frustratingly difficult at times even if you already have some experience programming micro controllers.

So that stuff might more be a recommendation for the entertainment of the parent than the child.

Zachtronics has less hardcore games too. But that are not about programming at all.


  • Jetrell likes this

#6 freyk

freyk

    Advanced Member

  • Member
  • PipPipPip
  • 633 posts

Posted 23 June 2018 - 03:34 AM

Is playing computer games his real hobby. Or just one of his hobbys, Jetrell?
(for most the teens i know, its just one of their hobbys)

If you want to see, as a father, which occupation he wants to do in his future.
First collect information about of the person, like all the person hobby's AND characteristics. (maybe look also which games he plays)
And ask for his future occupation i want to do. And show him new possible hobby's.
Because there is a popular Dutch saying:
"Try to change your hobby, to your occupation. If you do that, you don't have to work anymore."
I'm not like my father (for a bit):
My father occupation in the past, is a nurse for the elderly. And My occuption is working as a system administrator.
My father hobbys in the past are handcrafting and gardening. I do that digitally (in a way).

If you know for certain, his possible future lies in software development, then follow the posted methods above.

Edited by freyk, 23 June 2018 - 05:19 AM.

  • Jetrell likes this

#7 MoroseTroll

MoroseTroll

    Member

  • Member
  • PipPip
  • 303 posts

Posted 23 June 2018 - 05:29 AM

Jetrell: All programming languages, even the easiest ones, require a lot of diligence from the person who would like to learn them. Does your son like puzzle games like The Talos Principle or at least Portal 1&2, which require lateral thinking and diligence? If so, you may try to show him how to construct a tiny level using their level editors and, which is more important, how to program a series of events using their built-in programming languages or tools similar to BluePrint in UE4. Actually, TDM is a good candidate for this, too, but you already know that :).


  • Jetrell likes this

#8 chakkman

chakkman

    Advanced Member

  • Member
  • PipPipPip
  • 916 posts

Posted 23 June 2018 - 05:43 AM

Jetrell: All programming languages, even the easiest ones, require a lot of diligence from the person who would like to learn them. 

 

... and patience. Which is why, so far, i always failed to sit down and really learn something. I began with C# and Java, but, never had the stamina. Maybe one day. :)


Edited by chakkman, 23 June 2018 - 05:44 AM.

  • Jetrell likes this

#9 duzenko

duzenko

    Advanced Member

  • Active Developer
  • PipPipPip
  • 1184 posts

Posted 23 June 2018 - 06:58 AM

For learning a language, good IDE and debugger is very important.

So if you start with Python, try to set up Python development environment in Visual Studio.

 

As for which languages will live long enough, I'll say C++ is most unlikely to die, Java probably comes next. Javascript is also likely to live long unfortunately :D

Things like Python, Kotlin, Closure can easily die in long perspective.

 

One crazy direction may be game hacking: start with memory rewriting (i.e. MHS) --- that's fun and rather easy.

However, the next step (ollydbg/IDA) is too hard --- requires good C/C++ knowledge and tremendous motivation/patience.

Javascript has most jobs these days, but it's painful to code.


  • stgatilov and Jetrell like this

#10 Abusimplea

Abusimplea

    Member

  • Member
  • PipPip
  • 368 posts

Posted 23 June 2018 - 07:42 AM

... and patience. Which is why, so far, i always failed to sit down and really learn something. I began with C# and Java, but, never had the stamina. Maybe one day. :)

Try Python. ;)



#11 cabalistic

cabalistic

    Member

  • Development Role
  • PipPip
  • 291 posts

Posted 23 June 2018 - 07:43 AM

Don't worry too much about the longevity of languages. An experienced programmer can learn a new language fairly quickly; it's more about learning und understanding the underlying concepts. So don't choose a language because it might still be around in 10 years; choose the one that fits your current purpose :)

That being said, Python is definitely a good choice to get started.


  • stgatilov and Jetrell like this

#12 chakkman

chakkman

    Advanced Member

  • Member
  • PipPipPip
  • 916 posts

Posted 23 June 2018 - 07:47 AM

Try Python. ;)

 

Will check it out. :)



#13 chakkman

chakkman

    Advanced Member

  • Member
  • PipPipPip
  • 916 posts

Posted 23 June 2018 - 07:49 AM

Don't worry too much about the longevity of languages. An experienced programmer can learn a new language fairly quickly; it's more about learning und understanding the underlying concepts. 

 

Yeah, that's what i've taken away so far with the stuff i looked into as well. C++ resembles Java and C#. Of course, the "vocabular" is a bit different, and the classes as well, but, as i've always read, you won't have too many issues learning another, when you already know one.


  • Jetrell likes this

#14 OrbWeaver

OrbWeaver

    Mod hero

  • Active Developer
  • PipPipPipPipPip
  • 7471 posts

Posted 23 June 2018 - 09:52 AM

I have a 9-year-old son who like many his age, really likes to play computer games. In an effort to raise the bar a little bit I've taught him how to use a few game editors including DarkRadiant. Thinking about his future, I'm wondering what other things I can be teaching him.

 

Some pretty good suggestions already from the other programmers in this thread. Python is definitely a great language to start with, because it easy to write and understand, and doesn't require newbies to get to grips with concepts like pointers which are typically a stumbling block in the early days.

 

However, from reading your post it doesn't seem like your son has, as yet, expressed any particular interest in programming specifically? There is pretty much no overlap whatsoever between an enjoyment of playing (or even designing levels for) computer games, and actually learning programming. So by all means encourage him and give him the opportunity to try some simple programming tasks, but don't be too disappointed if it turns out he's not interested.


  • stgatilov and Jetrell like this

#15 cabalistic

cabalistic

    Member

  • Development Role
  • PipPip
  • 291 posts

Posted 23 June 2018 - 10:19 AM

By the way, there are also some visual learning tools specifically tailored to kids that are somewhat in-between coding and puzzles. Might also make for a good starting point. I found https://www.tynker.com/ right now, but there was at least one other promising candidate whose name I can't remember right now...

 

Edit: Perhaps this list is of help: https://www.lifewire...nguages-4125938


  • Jetrell likes this

#16 Aosys

Aosys

    Member

  • Member
  • PipPip
  • 212 posts

Posted 23 June 2018 - 11:25 AM

https://www.codecademy.com/ is not a bad place to start picking up programming skills. Lessons are dished out in fairly bite-sized chunks, and there's a ton of skills on offer.

 

Java's not a bad first language either (it was basically mine, though I learned in a university classroom setting), and could allow him to do stuff like mod Minecraft, if he's into that sort of thing.


  • Jetrell and Boiler's_hiss like this

#17 chakkman

chakkman

    Advanced Member

  • Member
  • PipPipPip
  • 916 posts

Posted 23 June 2018 - 11:36 AM

It's worth considering C# as well. You can program in the Unity Engine with that, e.g. I found it a bit more clear than Java in some regards, although i only scratched the surface of both, so, i can't really compare.


  • Jetrell likes this

#18 Sneaker

Sneaker

    Member

  • Member
  • PipPip
  • 11 posts

Posted 23 June 2018 - 11:46 AM

If you're proficient in a programming language, you should start with that.  Otherwise, in my opinion, the specific programming language doesn't matter.  Just have a good book to be the mentor instead. The real goal should be personal exploration of creativity and any real programming language will suffice with that.


  • Jetrell likes this

#19 Jetrell

Jetrell

    Member

  • Member
  • PipPip
  • 73 posts

Posted 23 June 2018 - 11:52 AM

I can't thank you guys enough for all these suggestions, I am truly thankful. All of your feedback is appreciated and very helpful.

 

At school they're teaching him basic coding through a simple educational program but he says it's too easy so that's why I think he might be ready for something a little bit more challenging.

 

It sounds like Python is a good choice so I think we'll go in that direction but I agree with your advice, he and his desire needs to be the driving force that pushes this endeavor. With that in mind, I think I'll first try by introducing some programming games. I see that there's a program called Blocky and its output code is in the Python program language so that might be a smart way to go.

 

It's funny being a parent, when I was his age I was playing with Legos. Times have changed...

 


  • lowenz likes this

#20 Maxwell16

Maxwell16

    Newbie

  • Member
  • Pip
  • 8 posts

Posted 23 June 2018 - 12:09 PM

 

 

Colobot (Colonize with Bots) is an educational game aiming to teach programming through entertainment.

You are playing as an astronaut on a journey with robot helpers to find a planet for colonization.
It features 3D real-time graphics and a C++ and Java-like, object-oriented language, CBOT,
which can be used to program the robots available in the game.

 


  • Jetrell likes this

#21 Obsttorte

Obsttorte

    Scripting guru, Mapper

  • Active Developer
  • PipPipPipPipPip
  • 5581 posts

Posted 23 June 2018 - 04:46 PM

My first contact with programming was javascript in combination with html. This or something similar might be a good start. You do some basic programming but don't have to dig into the matter too deeply yet. Otherwise it really depends on your son. But I am not sure whether there is a language that is preferable over another one in this early state, as he will most probably only write rather simple programs anyways.


  • Jetrell likes this
FM's: Builder Roads, Old Habits, Old Habits Rebuild
WIP's: Several. Although after playing Thief 4 I really wanna make a city mission.
Mapping and Scripting: Apples and Peaches
Sculptris Models and Tutorials: Obsttortes Models
My wiki articles: Obstipedia
Let's Map TDM YouTube playlist: ObstlerTube
Texture Blending in DR: DR ASE Blend Exporter

End of shameless self promotion.

#22 rich_is_bored

rich_is_bored

    Advanced Member

  • Member
  • PipPipPip
  • 876 posts

Posted 23 June 2018 - 05:42 PM

Human Resource Machine is the perfect game to test if a child might take to programming. It's a really well made puzzle game by the same developers that made World of Goo and it's about the same level of difficulty. It's a really good introduction to programming concepts and yet people might not even realize they're coding.


  • Jetrell likes this

#23 demagogue

demagogue

    Mod hero

  • Active Developer
  • PipPipPipPipPip
  • 5374 posts

Posted 23 June 2018 - 08:26 PM

My first experience was coding on the C64 in BASIC. You just typed a number and code right on the console and push enter and it automatically became the code in working memory, and it ran in the number order when you typed RUN. So you could actually type it in out of order. And you skipped by 10s to allow you some space to enter new lines in between existing lines later if you needed to. Then everything was housed right in that code. You would mimic subroutines and proto-object functions with GOTO, and the code would skip straight to that line and run from there; then at the end of the subroutine you would GOTO right back. :laugh:


  • lowenz, PsymH, stgatilov and 1 other like this
Posted Image

#24 Jetrell

Jetrell

    Member

  • Member
  • PipPip
  • 73 posts

Posted 24 June 2018 - 09:59 AM

Thanks again for all the suggestions.

 

We've been going through all the links and ideas - there are so many different directions and choices. Some of these "games" are quite entertaining. I don't know what my son will decide to do but I know I'm totally hooked. :smile:



#25 lowenz

lowenz

    Advanced Member

  • Member
  • PipPipPip
  • 1788 posts

Posted 24 June 2018 - 01:06 PM

https://iammufeed.bl...rogramming.html


  • Jetrell likes this

Task is not so much to see what no one has yet seen but to think what nobody has yet thought about that which everybody see. - E.S.





0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users