Jump to content
The Dark Mod Forums
Sign in to follow this  
Jetrell

Computer Science:

Recommended Posts

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?

 

 

 

 

 

Share this post


Link to post
Share on other sites

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.

  • Like 4

Share this post


Link to post
Share on other sites

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.steampowered.com/app/370360/TIS100/

 

Manufactoria: https://www.kongregate.com/games/PleasingFungus/manufactoria

(solutions: https://www.nayuki.io/page/manufactoria-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.

  • Like 2

20js9wp.jpg

Share this post


Link to post
Share on other sites

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.

  • Like 1

Share this post


Link to post
Share on other sites

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.

  • Like 1

Share this post


Link to post
Share on other sites

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
  • Like 1

Share this post


Link to post
Share on other sites

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 :).

  • Like 1

Share this post


Link to post
Share on other sites

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
  • Like 1

Share this post


Link to post
Share on other sites

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.

  • Like 2

Share this post


Link to post
Share on other sites

... 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. ;)

Share this post


Link to post
Share on other sites

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.

  • Like 2

Share this post


Link to post
Share on other sites

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.

  • Like 1

Share this post


Link to post
Share on other sites

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.

  • Like 2

Share this post


Link to post
Share on other sites

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.com/kids-programming-languages-4125938

  • Like 1

Share this post


Link to post
Share on other sites

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.

  • Like 2

Share this post


Link to post
Share on other sites

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.

  • Like 1

Share this post


Link to post
Share on other sites

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.

  • Like 1

Share this post


Link to post
Share on other sites

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...

 

  • Like 1

Share this post


Link to post
Share on other sites

 

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.

 

  • Like 1

Share this post


Link to post
Share on other sites

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.

  • Like 1

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

Texture Blending in DR: DR ASE Blend Exporter

Share this post


Link to post
Share on other sites

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.

  • Like 1

Share this post


Link to post
Share on other sites

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:

  • Like 4

20js9wp.jpg

Share this post


Link to post
Share on other sites

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:

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

×
×
  • Create New...