Programming Linux

Questions on how we spend our money and our time - consumer goods and services, home and vehicle, leisure and recreational activities
Post Reply
User avatar
Offshore
Posts: 384
Joined: Wed Apr 09, 2008 9:43 am
Location: Michigan's West Coast

Programming Linux

Post by Offshore » Thu Oct 10, 2013 8:29 am

My 12 year old son is desparate to learn computer programming. He has no idea how to start, and I am no help. We have an old Dell computer that was stripped of Microsoft and loaded with Linux. I thought this machine would be a good one for him to use.

Can someone recommend an absolute beginner's book to programming Linux?

User avatar
GTF
Posts: 53
Joined: Thu Jun 20, 2013 8:13 pm

Re: Programming Linux

Post by GTF » Thu Oct 10, 2013 8:38 am

There are hundreds of free PDFs online that he can download and read. Here is a start.

http://www.tldp.org/LDP/lpg-0.4.pdf

hsv_climber
Posts: 3969
Joined: Tue Sep 22, 2009 7:56 pm

Re: Programming Linux

Post by hsv_climber » Thu Oct 10, 2013 8:41 am

Why would you want for a 12-year old to start with advanced programming? Programming Linux really mean OS-specific programming.

IMHO, the best place to start for a 12-year old would be either khan academy (yes, they do have a programming section) or Python programming for kids ( http://inventwithpython.com/ ).

nordlead
Posts: 739
Joined: Thu Sep 12, 2013 9:09 am

Re: Programming Linux

Post by nordlead » Thu Oct 10, 2013 9:00 am

learning to program at 12 is pretty vague. Does he want to learn how to setup/control a linux system? (command line/scripting) Or does he want to program games? (C++/Java/Python). If he was an older teen going to college I would suggest C++ so he would learn the building blocks.

If the answer is the first, I'm wondering what he expects to do. I learned everything I know about operating linux off of the internet combined with some previous knowledge that I learned from DOS (or Windows command line which uses the same commands). Mostly I just manage my file server and my web server and it sits there doing nothing.

I have a feeling he is really interested in the latter (linux programming is no different than any other OS programming if we stay POSIX compliant with C++ or use another cross platform language like Java or python).

Since he is young I'm going to suggest a bunch of fun interactive methods to introduce him to programming.

http://scratch.mit.edu/ - great intro to programming. Built for 6 and up. Not "real" programming, but might be a good place to start, might be a bit too young for him.

http://www.alice.org/index.php - can create 3d animations. He'll learn object oriented programming and event driven programming among other programming skills.

http://www.crunchzilla.com/code-monster - If he wants to learn some javascript which would be useful for creating web sites

http://www.codecademy.com/ - If he wants to learn python to write games on his PC

If you want to leave linux and spend some money, get hime Lego Mindstorms. Those things are awesome. I can't wait until my sons are old enough that I can buy them some (for myself :D )

greensky
Posts: 118
Joined: Tue Aug 05, 2008 9:55 pm

Re: Programming Linux

Post by greensky » Thu Oct 10, 2013 9:39 am

I second Scratch.

http://www.amazon.com/Python-Kids-Playf ... 1593274076
http://www.amazon.com/Super-Scratch-Pro ... 1593274092

He may also be interested in playing with Circuits, if so Snap Circuits are really cool.

http://www.hanselman.com/blog/TeachingK ... cuits.aspx

User avatar
Offshore
Posts: 384
Joined: Wed Apr 09, 2008 9:43 am
Location: Michigan's West Coast

Re: Programming Linux

Post by Offshore » Thu Oct 10, 2013 9:40 am

Thanks for the replies. What he's after is gaming...writing them. He wants to start at basic building blocks, which to him, means a black screen and flashing cursor. Maybe this is too ambitious, I don't know. I wish I could give him more direction. We have an Apple machine and a Dell (with Ubuntu), either of which can be used for this endeavor.

Thanks for the replies. Will investigate those websites.

ThatGuy
Posts: 836
Joined: Fri Feb 05, 2010 9:00 am

Re: Programming Linux

Post by ThatGuy » Thu Oct 10, 2013 9:52 am

He'll learn most of what he needs from Google, just as soon as he has a specific project in mind. I third Scratch as being an outstanding introduction to the idea of programming. If he really really wants to do gaming type stuff (what young male doesn't dream of making video games?), have him look at the PyGame module of Python.
Work is the curse of the drinking class - Oscar Wilde

nordsteve
Posts: 641
Joined: Sun Oct 05, 2008 9:23 am

Re: Programming Linux

Post by nordsteve » Thu Oct 10, 2013 10:06 am

For a 12 year old kid who is interested in game programming, I highly recommend the Roblox environment: http://www.roblox.com/Landing/Animated. My older son used it for years, loved it, and learned a lot.

Another way for kids to get into programming is to join a nearby FTC team: http://www.usfirst.org/roboticsprograms/ftc/. They use LabVIEW for Mindstorms, a visual programming environment that is pretty approachable.

Most 12 year olds will find C/C++ programming in Linux directly to be too intimidating, and be turned off by the complexity.

scottyja
Posts: 230
Joined: Tue Oct 07, 2008 1:08 pm

Re: Programming Linux

Post by scottyja » Thu Oct 10, 2013 10:11 am

Have him try CodingBat. It's a free site that has simple coding problems he can work on to gain experience with java and python.

bstewartny
Posts: 25
Joined: Tue Dec 11, 2012 3:25 pm

Re: Programming Linux

Post by bstewartny » Thu Oct 10, 2013 10:31 am

I'm a software engineer, and I started programming when I was 12 or 13, in 1982-83, on an old Apple II. You dont need anything fancy to get started, so an old linux computer will work just fine.
Try using Python on linux. Its fairly simple language to get started with and you dont need any special tools or compilers, you can just start typing code directly into the command shell. It is built in, so you just type "python" at the command prompt in the terminal. You can find cheap books and tons of stuff online to get started with Python. Take a look at these sites as well for good video tutorials on beginning programming:

http://www.codecademy.com
http://www.python.org/about/gettingstarted/
http://www.khanacademy.org/cs

User avatar
telemark
Posts: 2299
Joined: Sat Aug 11, 2012 6:35 am

Re: Programming Linux

Post by telemark » Thu Oct 10, 2013 11:12 am

hsv_climber wrote:Why would you want for a 12-year old to start with advanced programming?
Because he can? Twelve is a wonderful age to start programming. You have the time, the energy, the curiosity--and these days, more free tools and source code than anyone can possibly use. The biggest problem is deciding where to start.

In addition to the python suggestion, which is good, he might take a look at ruby. I think most Linux distributions include that, and if not it's only an apt-get install away.

User avatar
cflannagan
Posts: 949
Joined: Sun Oct 21, 2007 11:44 am
Location: Palm Harbor, Florida

Re: Programming Linux

Post by cflannagan » Thu Oct 10, 2013 11:19 am

I'll pitch in a suggestion: Ruby on Rails. This is what our software dev shop uses around here, for web-based applications.

Khanmots
Posts: 1233
Joined: Sat Jun 11, 2011 2:27 pm

Re: Programming Linux

Post by Khanmots » Thu Oct 10, 2013 11:54 am

hsv_climber wrote:Why would you want for a 12-year old to start with advanced programming?
Different kids have different interests. And kids are often more capable than we think... let them head where they want.

Personally, at 12 I was digesting 300+ pages of fine-print rules for a highly-complex tactical combat board-game that interested me. I've been involved with a 300+ person online clan that had a 13 year old girl who wound up becoming a respected part of our upper leadership. To stifle a child when they show an interest doesn't do them any good.

Now, with that said, throwing them in to sink doens't help either. But this kid seems to have reasonable goals; he's not expecting to code a AAA title, he's expecting to start with ascii graphics or equivilent, and that is definately a good starting point. I remember doing similar after about 3 months of coding in Pascal and had great fun doing so. I was a bit older, 16ish or so, but no reason that him being a few years younger should mean it's outside of what he can accomplish.

User avatar
Murray Boyd
Posts: 794
Joined: Mon Feb 19, 2007 6:00 pm

Re: Programming Linux

Post by Murray Boyd » Thu Oct 10, 2013 12:05 pm

cflannagan wrote:I'll pitch in a suggestion: Ruby on Rails. This is what our software dev shop uses around here, for web-based applications.
Rails's learning curve is WAY too steep. It's for experienced programmers. It's what I use and I love it, but it's not for kids. The beauty of rails is how it ties everything together (html, databases, business logic). Rookies need to learn one thing at a time.

I haven't used it myself, but people rave about codeacademy.com.

User avatar
bertilak
Posts: 6053
Joined: Tue Aug 02, 2011 5:23 pm
Location: East of the Pecos, West of the Mississippi

Re: Programming Linux

Post by bertilak » Thu Oct 10, 2013 1:16 pm

Linux is a perfect platform to start learning on.

All the tools you need are free. This can save many hundreds of dollars. Generally, Linux tools have very active user groups to provide real-time help. You can download source code for many, many, programs to see examples of how things done by the experts. You can start with an existing program and make some changes to it -- a good way to get to the meat of things quickly.

You have a huge range of programming languages and environments to pick from.

So many choices. So much help available. Such low cost.
May neither drought nor rain nor blizzard disturb the joy juice in your gizzard. -- Squire Omar Barker, the Cowboy Poet

HurdyGurdy
Posts: 1171
Joined: Wed May 09, 2012 10:21 pm

Re: Programming Linux

Post by HurdyGurdy » Thu Oct 10, 2013 1:20 pm

Linux would be a good platform. Almost any language environment could be run on top of Linux (Scratch, Python, Ruby, Javascript, C, some Basics, programming for Arduino boards).

The Raspberry Pi (http://en.wikipedia.org/wiki/Raspberry_Pi) was designed for this purpose, but the instructional materials for kids may not be ready yet. Keep tuned to it.

I would suggest looking for readable source code for very simple games, like a pong game, to study it.

Check out Robocode, http://www.ibm.com/developerworks/library/j-robocode/

Additionally, there is Linux from Scratch, http://www.linuxfromscratch.org/, an educational experience in itself.

He may be interested in Electronics; at http://www.adafruit.com/blog/category/show-and-tell/ they have weekly videos where people, some of them young, show prototypes of their work. Quite cool.
Last edited by HurdyGurdy on Thu Oct 10, 2013 1:46 pm, edited 2 times in total.

KyleAAA
Posts: 6672
Joined: Wed Jul 01, 2009 5:35 pm
Contact:

Re: Programming Linux

Post by KyleAAA » Thu Oct 10, 2013 1:23 pm

For games, Python and Java seem like good bets. If he wants to build console games professionally he'll probably need to learn C++ eventually.

simpsonlang
Posts: 82
Joined: Wed Jul 03, 2013 5:00 pm

Re: Programming Linux

Post by simpsonlang » Thu Oct 10, 2013 1:27 pm

Shell scripting specifically Bash as a foundation before moving on. Most of what you need to do can be done through simple shell scripting. The small fraction after that can be done in PHP, Perl, Python, C++, etc. Programmers are a dime a dozen so whatever you pick for an upper level coding stick to one and dive deep (specialize) and get familiar with MySQL and Postgres especially in using complex queries.

MathWizard
Posts: 2958
Joined: Tue Jul 26, 2011 1:35 pm

Re: Programming Linux

Post by MathWizard » Thu Oct 10, 2013 2:47 pm

stevep001 wrote:For a 12 year old kid who is interested in game programming, I highly recommend the Roblox environment: http://www.roblox.com/Landing/Animated. My older son used it for years, loved it, and learned a lot.

Another way for kids to get into programming is to join a nearby FTC team: http://www.usfirst.org/roboticsprograms/ftc/. They use LabVIEW for Mindstorms, a visual programming environment that is pretty approachable.

Most 12 year olds will find C/C++ programming in Linux directly to be too intimidating, and be turned off by the complexity.
I second this, though FTC and FRC are for high-school. At 12, he would be in middle school, looking at FLL (First Lego League)
which does program on Mindstorm modules. See: http://www.firstlegoleague.org/
My son was involved in both FLL and FRC, and is now in Mech. Engineering as a freshman on a robotics team that competes well
at the national level.

I did not teach them any programming, though I certainly could have. Instead I taught them Math and Logic. This is
generally the area where many of the Grad level CS majors have problems. I did show them how to access interpreters and
compilers, and they just picked it up themselves.

Quickfoot
Posts: 999
Joined: Fri Jan 11, 2013 1:03 pm

Re: Programming Linux

Post by Quickfoot » Thu Oct 10, 2013 3:21 pm

The great thing about having a Linux machine is most the games written for it are open source, he can download a simple one, tweak it, recompile and see his changes without having to write the entire thing. It's a great immersive way to learn.

I've used FreeBSD and Linux for 17 years personally and professionally, there are a lot of good "Head First" books and introduction to programming books. Stay away from anything C or C++ as the first programming exercise because there are better languages to start with (He can pickup C / C++ any time later).

Python / TCL / PHP are all easy to learn and free. He can also get "Headfirst C#" and then download and install Mono with SharpDevelop, it is a multi platform implementation of .NET and it's free. It's not exactly the same as visual studio graphically but it's very close and the language is the same. .NET is a very valuable skill to have right now and will likely continue to be far into the future.

Once you learn the fundamentals of programming the language isn't that significant, it's more syntax differences than conceptual ones.

tibbitts
Posts: 7934
Joined: Tue Feb 27, 2007 6:50 pm

Re: Programming Linux

Post by tibbitts » Thu Oct 10, 2013 6:45 pm

Although it doesn't have anything to do with programming, you might want to encourage him to be equally interested in other pursuits, particularly ones that involve more physical activity.

Hypersion
Posts: 210
Joined: Mon Feb 18, 2013 3:20 am

Re: Programming Linux

Post by Hypersion » Thu Oct 10, 2013 7:54 pm

I recommend C# and XNA for intro to programming/game programming. Unfortunately you are stuck in Windows land so maybe that is not for the OP.

ayitey
Posts: 77
Joined: Wed Jul 28, 2010 3:51 pm

Re: Programming Linux

Post by ayitey » Thu Oct 10, 2013 8:24 pm

I started learning how to program when I was 13. I've made a career out of software development.

If I had a 12-year old interested in programming games, and had a Linux machine handy, then I would strongly encourage him to try Python. It is easy to learn, very clean, and the skills learned will translate very well to the adult world, and works on all the popular computer platforms. As others have noted, it is not a toy language: plenty of adults use Python, both professionally and just for fun.

Update: And one more thing. The kid doesn't need to start by reading books or taking classes. If he is at a black screen with a blinking cursor, this is a perfect place to start. He just needs to fire up a text editor and type in the code from an existing game, run it, and start tinkering. Nowadays, with the Internet and online forums, there are many places to get free help from enthusiastic mentors. Just like Bogleheads.org!

Check this out; I found it by Googling "python game programming teens":

http://www.raywenderlich.com/24252/begi ... ith-python
This is a post by Tutorial Team Member Julian Meyer, a 13-year-old python developer. You can find him on Google+ and Twitter.

...Have you ever wondered how video games are created? It's not as complicated as you might think!"

nhrdls
Posts: 108
Joined: Tue Aug 20, 2013 5:14 pm

Re: Programming Linux

Post by nhrdls » Fri Oct 11, 2013 4:48 pm

bstewartny wrote:I'm a software engineer, and I started programming when I was 12 or 13, in 1982-83, on an old Apple II. You dont need anything fancy to get started, so an old linux computer will work just fine.
Try using Python on linux. Its fairly simple language to get started with and you dont need any special tools or compilers, you can just start typing code directly into the command shell. It is built in, so you just type "python" at the command prompt in the terminal. You can find cheap books and tons of stuff online to get started with Python. Take a look at these sites as well for good video tutorials on beginning programming:

http://www.codecademy.com
http://www.python.org/about/gettingstarted/
http://www.khanacademy.org/cs
+1 for python. Its relatively siimple, but there is almost nothing (may be except writing performance games) that you can not do it in python. I am software engineer too, and do spend all my computer time on linux (Ubuntu) either at home or at work. My phone is also linux based (android).

Another option to think about is mobile programming given that world is shifting towards mobile computing and many children are very familiar with mobile devices. Tools such as phonegap can help a lot to build applications for mobile devices easily with just a touch a javascript and html. If you need to go deeper, you can always learn other language easily once you are familiar with basic concepts.

Post Reply