# Interested in learning programming

#### Beholder

##### What for?

I want to learn to program, my interest currently lies in artificial neural networks, especially evolving ones.
I am a complete beginner, with virtually no knowledge or experience about the subject (of programming that is. I'm currently trying to learn about neural networks, so I have atm a basic understanding of how they work).

So my questions are:
I know this is an annoying question, and the answers I've managed to get from other threads are: it doesn't really matter, you should go for what's in demand (java, c++ ?), python is too easy (why is this a problem exactly?)
2) Assuming I practice a few (average 1-3) hours a day, how long would it take me to reach a point where I can build a basic neural network? (Something like this for example: http://www.youtube.com/watch?v=2kupe2ZKK58)
3) Can anyone recommend a good tutorial/book/website/whatever to learn from

Thanks a lot!

#### ProxyAmenRa

##### Here to bring back the love!
I work with neural networks on quite a frequent basis. I use them for pattern recognition and classification, data storage/mapping, interpolation and forecast models. A person working in the desk next to me is using them for system controllers. I personally think it is a stupid idea. What would you like to know?

As for programming, this channel holds a number of lecture series:

Alternatively, R is a great mathematics based programming language.

Here is a lecture series on neural networks:

#### Architect

##### Professional INTP
Language doesn't matter. Java would be a good one though to help you learn others and for later use. On NN's the pros do it via matrices anyhow in MatLab or Octave. Nowadays they've figured out a way to parallalize it to your graphics card, using (I believe the term is) finite Boltzmann machines. An OO approach can be useful to learn how they work however. If you're starting I'd just start with something simpler.

I wouldn't use the word practice either. Computing isn't a practicing art - thank goodness for us INTP's! The work always changes so you're never doing the same thing day after day. Say hacking instead.

#### ProxyAmenRa

##### Here to bring back the love!
This looks awesome. Thank you very much.

#### Valentas

##### Well-Known Member
I never heard about Saylor. That is strange.Thanks.

#### Cognisant

##### Prolific Member
Great resources.

If you're completely new I'd recommend starting with HTML and JavaScript, just to get you into the mindset of scripts, loops, variables, etc, because you can code in notepad, compile with any browser, and any library worth a damn will have books on this stuff.

Once you've dipped your toe and built up some confidence (or get frustrated with the limitations of this language) then go on to C, this language is good for microcontrollers so get yourself one, some servos, some sensors, and build yourself a little desktop robot, believe me this low level stuff really opens up the world to you, software can only do so much on its own.

Then spend some time learning circuitry and building little analogue robots, I consider this absolutely critical if you want to do neural nets, our brains for instance are analogue, not digital, and understanding the difference will make the challenges faced by NN AI researchers much clearer to you.

Then get into C++ or the latest version of Delphi, it depends how far into coding you want to go, in my opinion C++ is the more powerful language but Delphi is better for applications development if you need something with a GUI ASAP.

#### The Introvert

##### Goose! (Duck, Duck)
I agree with whoever said R is a good mathematics based language. It's useful.

#### DelusiveNinja

##### Falsifier of Reality
Computer Science:
HTML Training
HTML 5
Intro to Ruby Programming
Web Design & E-Commerce
Introduction to C++
Intermediate Level C++
CSS Intro
Java
AP CompSci: Intro to Java
JavaScript
Introduction to PHP
AJAX w/ jQuery
WordPress
WordPress Blogging
XML Training
Internet Marketing, Intro

#### ProxyAmenRa

##### Here to bring back the love!
R is like an open source version of Matlab.

#### Valentas

##### Well-Known Member
Computer Science:
HTML Training
HTML 5
Intro to Ruby Programming
Web Design & E-Commerce
Introduction to C++
Intermediate Level C++
CSS Intro
Java
AP CompSci: Intro to Java
JavaScript
Introduction to PHP
AJAX w/ jQuery
WordPress
WordPress Blogging
XML Training
Internet Marketing, Intro

What do you want to be able to do? Because the order you have shown is possible to master in 10 years or so.

If you want program for the web, then you must learn html5/css3/javascript/jquery, then you can come back and ask for more advice, though by that time you will prolly found that it is important to have DBs knowledge, so SQL, and then manage it, so PHP or something like that.

If you want to program applications or games, then start with Python. Use PyGame module and free invent with python book, google it, if you don't want to create games, then still use python and instead go through Zed Shaw's tutorial learn python the hard way. Then you can decide what you want to do after that. Or ask here again. Basically, my advice is to choose something and stick with it. Don't dabble in many things because in thi world you must be master of something not mediocre at everything.

And to be honest, don't read too much. Just program. For instance, you want to build full gui calc. Google how to do this. Then piece by piece construct something. You may get bored and drop this project and it's okay, but don't dabble into it. Learn deeply, understand why it works.

Or, you can learn web scraping just like me.. ;D Not the most glamorous thing to do but it is interesting and I may get a job during uni with pros. So why not try to master this..

#### DelusiveNinja

##### Falsifier of Reality
I'm trying to make a career but I thought it would be a good idea to understand the inner workings of the computer with my spare time. Think of it as a hobby or just something I have knowledge of.

#### Valentas

##### Well-Known Member
I'm trying to make a career but I thought it would be a good idea to understand the inner workings of the computer with my spare time. Think of it as a hobby or just something I have knowledge of.

Computer Science : An Overview 11th edition
Structure and interpretation of computer programs
Code : The hidden language of software and hard ware or something like that :}

Also I found it a great practice to understand the parts of computer this way: take apart everything. I have some old computers and I disassembled hard drive, cd-rom everything. I broke cpu and other stuff. If you realy want to understand you have to see the inside. Good luck, buddy.

#### Beholder

##### What for?
Thanks for all the info.
When I started this thread I was in a routine which didn't leave me enough energy to start leaning, so I didn't. Now I'm travelling the world for a year or so, until I start university next year where I plan to study computer science.
What I plan on doing in the not too far future is to get a job and room in Venice or Bruges or somewhere relaxed and nice, get a computer and start learning.
So again, thanks for all the help, I'm sure it will be very useful.
I have one more question though, this may seem trivial but I really don't know; what should my considerations be when choosing a laptop? (Besides the ones related to being a low budget-full time traveller, ie: cheap small and durable)

#### walfin

##### Democrazy
1. Don't wish to fan a language war, there are a number of other threads on this.

2. Depends.

3. The Game Programming Gems series.

Laptop: warranty and availability of service centres internationally. Laptop parts can be troublesome to replace.

#### Architect

##### Professional INTP
The laptop of choice for software development is the Apple series, either Macbook or Macbook Pro. The reason is you have UNIX built in which makes it so much easier. Go to any developer event and all you see is Apple laptops.

Additionally if there are any issues you can take it into any local Apple store and get it fixed in a few days at a very reasonable price. One of my laptops blew it's graphics connection and they had to replace the entire motherboard, for only \$310 which is amazing.

You pay a bit more - perhaps - at purchase time but it's worth it. The resale value stays high for years and you can run Windows on it also.

#### Beholder

##### What for?
Sorry if this is a dumb question, but what exactly is UNIX? And does having it make things easier or having it built in make things easier, and why? Is there a reason not to buy a cheaper second hand one from Ebay?
Would another laptop with LINUX be a good alternative?

It's just the whole, you know, traveling for a year with very little money thing. When I start studying I'll definitely get a Macbook, the question is would it make that big of a difference just for starting out?

#### Architect

##### Professional INTP
Sorry if this is a dumb question, but what exactly is UNIX?
A type of operating system. The other type is the Windows model, which is based on DEC originally I think. There were many others, IBM etc.

UNIX/POSIX is the most popular and spawned the most variants (Linux, BSD, OS X, etc)

And does having it make things easier or having it built in make things easier, and why?
Both. By day I do development on a Windows box and it's a PITA as far as I'm concerned. In fact I'm doing client/server web development at the moment with web apps, and I'm using a MacBook pro because it would be too much trouble on the Win box (nicely I have both at work)

Is there a reason not to buy a cheaper second hand one from Ebay?
nope

Would another laptop with LINUX be a good alternative?
Sure, Linux laptops are a PITA IMO but if you want to save some bucks it's a great way to go. Heck now you can get a dirt cheap chromebook and run Linux in a special plugin if you want. Chromebooks suck though.

the question is would it make that big of a difference just for starting out?
I started my career with 65k bytes of RAM and loved it - you'll survive with a crappy machine. Probably a good experience anyhow.

#### Duxwing

##### I've Overcome Existential Despair
I started my career with 65k bytes of RAM and loved it - you'll survive with a crappy machine. Probably a good experience anyhow.
Hahaha! You've earned your porch, cane, and lawn:

"Back in my day, we had only 65k bytes of RAM, and we liked it!"

-Duxwing

#### Analyzer

##### Hide thy life
Both. By day I do development on a Windows box and it's a PITA as far as I'm concerned. In fact I'm doing client/server web development at the moment with web apps, and I'm using a MacBook pro because it would be too much trouble on the Win box (nicely I have both at work)
How is your productivity using the .NET technologies.

#### Architect

##### Professional INTP
How is your productivity using the .NET technologies.
The highest of any platform I use.

Apple gets the user experience right but balls up the developer.

Microsoft gets the developer experience right but balls up the user.

Who pays the bills? The user. Apple wins.

#### Beholder

##### What for?
Okay!
So (almost 6 months after my OP, like any good INTP) I've finally started!
I got a job which requires only a few hours of work a day, can be done from anywhere in the world, so long as I have an internet connection, and with pay that is ridiculous (I feel like I'm cheating in life).
I bought a computer, although I'm afraid I didn't really take the advice given here, what with the price of macbooks, and my principle hate of Apple. I went for as much RAM and CPU as I could in my budget - 1.6Ghz 4GB (I know, not much... But it's a travelling computer, when I settle down and start uni I'll get a proper one).

So like I said, I'm fascinated with the idea of Neural Nets, and my objective right now is not to become a good programmer, (in a year I start studying CS in university) but to learn enough programming skills to do things that interest me, and hopefully learn some stuff that will give me a bit of an edge in university and hopefully make me a better programmer in the long run.

Disclaimer - what follows may be completely stupid, resulting from a near-complete lack of knowledge of the field. Please feel free (really, PLEASE) to correct misconceptions or any faulty logic I probably have

What I was thinking, is that I should focus more on general understanding of how programs work, what you can do with them, stuff like that, rather than on mastering the technical skills involved (I remember someone saying somewhere that Java is a good place to start because you'll make lots of mistakes at first, or something along those lines), since in uni that is something I'll necessarily be learning, and since I don't know how much time I'll really be dedicating to this while travelling.
So I started with a Coursera Python course, because I also remember someone somewhere saying that Python is too easy, so I figured I would be able to learn the basic ideas of programming without spending too much time learning complex syntax.

Now I've also started this course (and since starting it pretty much stopped the other one): https://class.coursera.org/ml-003/class/index
It's basically an introductory course to machine learning (including a tutorial on Octave).

So ya, that's what's up...