# Want to learn programming, Where do i start?



## matty_AFC

Ok so i want to learn programming as a hobby because it's something i'm really interested in learning but i don't know where to start.
so i would like to know the following;
which language would you recommend i should start with? (keep reading on the internet either c++ or python)
Can it be self taught through books and the internet? (can't afford a course right now)
and finally what books or websites would you recommend for the recommended language.

Thanks in advance, all advice and help is greatly appreciated.


----------



## breadcrums

try c++ first,then java..

u can try your hands at html,css too...

start by buying a book or find relevant websites.

mind u its not simple.requires practice.search everywhere on the net,including youtube,u never know where u will find something good.

once u get a hang of how to make algorithms for your programs and a hang of the basic structure,u can move up..


----------



## ByteMyASCII

It really doesnt matter which way you do it I did Java first than C/C++ but those two are probably the best starting languages for someone wanting to learn how to program.


----------



## RooneyTunes

I agree, start with either c++ or java. The first language is the hardest, after that it's all just learning syntax etc. The best way I have used to learn is just to come up with something you would like to program, and crash and bang your way to get it done. Obviously start with doing some reading and stuff, but then get as hands on as possible.


----------



## {Unregistered}

I really need to make a "How to start learning programming" post and sticky it.







I'll be sure to make that in January when I have more time on my hands.

To answer your question:

Yes, of course, you can learn programming without a proper course. The Internet is the best resource available.

Usually, it is recommended that beginners start with an easier language so that they can become comfortable with programming before they dive in to the "real thing".

I'd say start off with Python. It is a good easy-to-learn scripting language that allows both procedural and object-oriented programming. It is much more flexible and the syntax is easy to get used to.

Since this is going to be the first language you learn, you should use A Byte of Python. It really gives a proper introduction into programming in Python and it is paced well enough for the average beginner. The most important thing from then on will be actually starting to practice making your own little programs. The more you do, the more problems you'll run into and the more you will learn by trying to solve those problems. You can supplement your learning with the Python video tutorials available on Youtube by "thenewboston". Watch the tutorials on the specific sections you learn about as you progress through the book. Remember: practice, practice, practice. Then, in a couple of months, when you begin to see yourself as an "expert beginner" and have already finished the material listed above, you can start through Dive into Python. (It starts by making you learn by doing. I personally did not like this book but many people suggest it and you may like it too.)

I am pretty sure this will keep you busy for many months.







(All the information I have listed above is completely from personal experience. I too started with Python). Once you feel you are a pro, you can look into further resources but I am pretty sure this is enough for now.

However, according to my experience, I only actually gained a profound understanding of programming when I learned Java. (because of its object-oriented paradigm).

If you have any further questions, just ask in the Coding section and we'll be sure to help you.









~ {Unregistered}


----------



## Ironman517

If you like pretty things, you can start with Visual Basic. You will feel very accomplished after completing a program. At least I was when i first started with visual basic. Visual basic is a little different than most languages, but I feel like it helps with learning the basis of programming and it resembles the English language so it is easier to comprehend.
If you dont want to start with visual basic, I would definitely start with java or python before c++. Don't dive into c++ right away









HTML and PHP are always fun languages to start with. But I wouldnt really consider HTML a "REAL" programming language.


----------



## ByteMyASCII

@{Unregistered} Im planning on making a FAQ thread tonight when i get off work to cover all of the requently asked questions on the forum


----------



## matty_AFC

Thanks for the reply's people.
My girlfriend bought me a C++ book for my birthday (still hasn't arrived, due tomorrow) she asked around and was recommended it but i keep getting told i won't be able to learn it and i need to learn python first, because it's easier etc (basically what {Unregistered} said} but then others say I'll be fine so I'm rather confused at the moment.
Anyway i suppose it doesn't matter to much because i was planning on learning a few languages, i think I'll start in this order;

Python and HTML
C++
Java

Do you think it would be possible for me to learn Python and HTML simultaneously ( i hear HTML is easy) or would that confuse me? If so i might leave it until i feel comfortable in python,c++ and java, in other words a very long time


----------



## Ironman517

Quote:


> Originally Posted by *matty_AFC*
> 
> Thanks for the reply's people.
> My girlfriend bought me a C++ book for my birthday (still hasn't arrived, due tomorrow) she asked around and was recommended it but i keep getting told i won't be able to learn it and i need to learn python first, because it's easier etc (basically what {Unregistered} said} but then others say I'll be fine so I'm rather confused at the moment.
> Anyway i suppose it doesn't matter to much because i was planning on learning a few languages, i think I'll start in this order;
> Python and HTML
> C++
> Java
> Do you think it would be possible for me to learn Python and HTML simultaneously ( i hear HTML is easy) or would that confuse me? If so i might leave it until i feel comfortable in python,c++ and java, in other words a very long time


HTML is easy, you usually just learn it to get your shoes wet







IMO it really does not help too much with programming unless you are trying to see if you are going to like it or not. It is really fun to learn, but is not really needed unless you want to be a web developer or web programmer. Also, another opinion of mine is that java is much easier than C++, the one thing I love about java compared to C++ is that it has its own garbage collection









Look into different distros of linux if you havent and familiarize yourself with one of them. It will help you in the long run with programming.


----------



## matty_AFC

Quote:


> Originally Posted by *Ironman517*
> 
> HTML is easy, you usually just learn it to get your shoes wet
> 
> 
> 
> 
> 
> 
> 
> IMO it really does not help too much with programming unless you are trying to see if you are going to like it or not. It is really fun to learn, but is not really needed unless you want to be a web developer or web programmer. Also, another opinion of mine is that java is much easier than C++, the one thing I love about java compared to C++ is that it has its own garbage collection
> 
> 
> 
> 
> 
> 
> 
> 
> Look into different distros of linux if you havent and familiarize yourself with one of them. It will help you in the long run with programming.


OK I'll leave HTML for now. could you recommend any good beginner books for java. Yeah I've heard about Linux being good if you want to do programming, not sure why though, haven't found an explanation as to why. However i have been planning on downloading Ubuntu and learning how to use that.


----------



## Ironman517

Quote:


> Originally Posted by *matty_AFC*
> 
> OK I'll leave HTML for now. could you recommend any good beginner books for java. Yeah I've heard about Linux being good if you want to do programming, not sure why though, haven't found an explanation as to why. However i have been planning on downloading Ubuntu and learning how to use that.


Sorry, Its been so long since I have even touched java, I am a C++ programmer, I don't really have any books, your best bet is looking for college kids who are selling their college books.

The reasoning for Linux is because it is much easier to run, compile and write programs in linux. In real world situations you will almost never create a program for windows unless you are doing some sort of visual programming where the user will be using Windows. If you are doing anything else, you should be using Linux. Linux is a very powerful OS, where everything is at your fingertips. Personally I would like to say it is "simpler" than windows, but in reality, it isn't simpler, but it allows you to do and have access to everything. Sorry about the crazy explanation, I always find it hard when people ask why I use Linux to program. Its not just because it is the norm, it is the norm because it works very well









Ubuntu is a great distro to start with, it is very similar to windows, and helps the transition. Also, look into comandline editors like VIM and GUI editors like Eclipse.


----------



## matty_AFC

right after listening to the advice i was given on here I have decided to go with Python as my first language (to give me a bit of a knowledge base) and i have also installed a Linux Distro.

The two languages I'm looking forward to learning most however are Java and C++, so my question is how long do you think i should spend with Python before moving to Java/C++ ?

I don't want to move on from Python to early and either forget what i would have learned or just simply not knowing enough because i was to eager to move on and learn more languages, It's just all these different languages that are good to learn for their different qualities etc, are frying my brain. (think I'm a bit to excited







)


----------



## jNSK

I second books. They're very helpful other than going to University to learn it. I'd start with something like C++, it throws you right into the deep end - learn the harder ones first so you know the mistakes not to make on the easier languages.


----------



## Ironman517

Quote:


> Originally Posted by *matty_AFC*
> 
> right after listening to the advice i was given on here I have decided to go with Python as my first language (to give me a bit of a knowledge base) and i have also installed a Linux Distro.
> The two languages I'm looking forward to learning most however are Java and C++, so my question is how long do you think i should spend with Python before moving to Java/C++ ?
> I don't want to move on from Python to early and either forget what i would have learned or just simply not knowing enough because i was to eager to move on and learn more languages, It's just all these different languages that are good to learn for their different qualities etc, are frying my brain. (think I'm a bit to excited
> 
> 
> 
> 
> 
> 
> 
> )


If you are casual about it? Maybe like 4-5 months. If you really crank down on it and are a natural, maybe 2 months. Just try to complete a book or *2+*. and then move on till you find the language you like the best. one you have the foundation, you mainly will have to research the advantages and disadvantages of each language. Also, grab an algorithm book. It will help you with programs.

How much math do you have? You might want to look into Calculus and vector math, I think its called "Discrete Math." I related many Discrete Math problems to programming when I was in college and in turn made me a better programmer

What distro did you install? Ubuntu?


----------



## matty_AFC

Quote:


> Originally Posted by *Ironman517*
> 
> If you are casual about it? Maybe like 4-5 months. If you really crank down on it and are a natural, maybe 2 months. Just try to complete a book or *2+*. and then move on till you find the language you like the best. one you have the foundation, you mainly will have to research the advantages and disadvantages of each language. Also, grab an algorithm book. It will help you with programs.
> How much math do you have? You might want to look into Calculus and vector math, I think its called "Discrete Math." I related many Discrete Math problems to programming when I was in college and in turn made me a better programmer
> What distro did you install? Ubuntu?


My brother actually has a discrete math book (he's a math whizz







) and i will look into getting an algorithm book. Yeah i installed Ubuntu, tried Fedora first but didn't have a clue what was going on so went with Ubuntu.
I was thinking about doing a Computer Science Degree until i found out UK tution fees have gone up from £3000 a year to £9000 ( No way i could ever pay for that.) so i'm doing it more as a hobby now seeing as i won't be able to have a career in it without a degree or some sort of qualification







.
Have signed up to do Cisco Networking though!


----------



## jNSK

Quote:


> Originally Posted by *matty_AFC*
> 
> My brother actually has a discrete math book (he's a math whizz
> 
> 
> 
> 
> 
> 
> 
> ) and i will look into getting an algorithm book. Yeah i installed Ubuntu, tried Fedora first but didn't have a clue what was going on so went with Ubuntu.
> I was thinking about doing a Computer Science Degree until i found out UK tution fees have gone up from £3000 a year to £9000 ( No way i could ever pay for that.) so i'm doing it more as a hobby now seeing as i won't be able to have a career in it without a degree or some sort of qualification
> 
> 
> 
> 
> 
> 
> 
> .
> Have signed up to do Cisco Networking though!


Isn't that what student loans are for? I'm from England but I moved over here and the fees are pretty much the same.


----------



## matty_AFC

Quote:


> Originally Posted by *jNSK*
> 
> Isn't that what student loans are for? I'm from England but I moved over here and the fees are pretty much the same.


Yeah but at the end of the day your £27000 in debt where as until this year it would have been £9000. thats a lot of money to pay back. i can't do it


----------



## FlyingNugget

Stanford University is offering some free online courses that you might be interested in. Have a look at the first two if you want to learn some programing. I signed up for 4 classes.

http://www.cs101-class.org/ Computer Science 101

http://www.saas-class.org/ Software Engineering for Software as a Service

http://www.hci-class.org/ Human Computer Interfaces

http://www.nlp-class.org/ Natural Language Processing

http://www.game-theory-class.org/ Game Theory for free

http://www.pgm-class.org/ Probabilistic Graphical Models

http://www.crypto-class.org/ Cryptography

http://www.security-class.org/ Computer Security

Class starts in February so in the mean time I have been going through this.

http://www.learncpp.com/cpp-tutorial/02-introduction-to-programming-languages/


----------



## {Unregistered}

Quote:


> Originally Posted by *FlyingNugget*
> 
> Stanford University is offering some free online courses that you might be interested in. Have a look at the first two if you want to learn some programing. I signed up for 4 classes.
> http://www.cs101-class.org/ Computer Science 101
> http://www.saas-class.org/ Software Engineering for Software as a Service
> http://www.hci-class.org/ Human Computer Interfaces
> http://www.nlp-class.org/ Natural Language Processing
> http://www.game-theory-class.org/ Game Theory for free
> http://www.pgm-class.org/ Probabilistic Graphical Models
> http://www.crypto-class.org/ Cryptography
> http://www.security-class.org/ Computer Security
> Class starts in February so in the mean time I have been going through this.
> http://www.learncpp.com/cpp-tutorial/02-introduction-to-programming-languages/


Just so you know, the work load of each of the classes is really overwhelming. I myself signed up for 3 classes that were to be held from October to December this year and I have dropped 2 of the classes and am trying to barely do the last one. Not to scare you or anything but although it's good that you have registered for 4 classes so that you may have more options, I think you should be prepared for the work load. If you have something like school or university or a job going on, it will be very difficult. Otherwise, it will be hard but do-able.

Good luck though.


----------



## Ironman517

Quote:


> Originally Posted by *matty_AFC*
> 
> My brother actually has a discrete math book (he's a math whizz
> 
> 
> 
> 
> 
> 
> 
> ) and i will look into getting an algorithm book. Yeah i installed Ubuntu, tried Fedora first but didn't have a clue what was going on so went with Ubuntu.
> I was thinking about doing a Computer Science Degree until i found out UK tution fees have gone up from £3000 a year to £9000 ( No way i could ever pay for that.) *so i'm doing it more as a hobby now seeing as i won't be able to have a career in it without a degree or some sort of qualification
> 
> 
> 
> 
> 
> 
> 
> .*
> Have signed up to do Cisco Networking though!


Not entirely true, my manager is only a highschool graduate (still in his late 20s) who taught himself how to program, He is considered one of the *smartest* people in the company.
You just need to find a place to start and impress the people in your interview.







Although this is a long shot, it can be done. You just need some self discipline and a lot of determination. A college education will make it easier to find a job, but if you have a kick ass interview it doesn't matter.


----------



## FlyingNugget

Quote:


> Originally Posted by *{Unregistered}*
> 
> Just so you know, the work load of each of the classes is really overwhelming. I myself signed up for 3 classes that were to be held from October to December this year and I have dropped 2 of the classes and am trying to barely do the last one. Not to scare you or anything but although it's good that you have registered for 4 classes so that you may have more options, I think you should be prepared for the work load. If you have something like school or university or a job going on, it will be very difficult. Otherwise, it will be hard but do-able.
> Good luck though.


What classes did you sign up for?

I signed up for,
Computer Science101
Software enginering
Human Computer Interfaces
Computer Security

I was hoping to keep up in them all for as long as I can, but I realistically know that Ill be dropping some courses. I cant wait for February, theres a good chance I wont be working, or going to school, or doing anything other than these courses.







The chances are that Ill be keeping CS101, and Software Engineering and dropping the others, but I dont know for sure what I will enjoy the most, since I am very new to programming. Just want to keep the doors open.


----------



## matty_AFC

Got a few questions, My brain is fried! and im feeling really frustrated (to much info to take in and think about).
i've been trying to get the hang of linux ubuntu (feel really uncomfortable with it), whilst learning python and im getting really confused with all the command line stuff; linking code to paths and directories so you can open them in the terminal, even if you don't know the exact location of the file etc. think i might just be too worked up to think clearly but it just feels like i've got to get my head round alot. would rather do it in windows (alot simpler and i understand windows







) but python seems very much as though it's ment for linux.

so first of all, should i be using command line or IDE for programming?

Secoundly what are the advantages/disadvantages of using windows or linux for programming?

Really tired hope this makes sense


----------



## {Unregistered}

Quote:


> Originally Posted by *FlyingNugget*
> 
> What classes did you sign up for?
> I signed up for,
> Computer Science101
> Software enginering
> Human Computer Interfaces
> Computer Security
> I was hoping to keep up in them all for as long as I can, but I realistically know that Ill be dropping some courses. I cant wait for February, theres a good chance I wont be working, or going to school, or doing anything other than these courses.
> 
> 
> 
> 
> 
> 
> 
> The chances are that Ill be keeping CS101, and Software Engineering and dropping the others, but I dont know for sure what I will enjoy the most, since I am very new to programming. Just want to keep the doors open.


I haven't registered for the January/February classes yet but I probably will register for at least 2 - Cryptography and one more, probably Machine Learning or Information Theory.

I registered for AI, ML and DB classes in the October session but have only managed to hang on to the AI class. It is very difficult to carry on with these classes if you have school or something. But hopefully, I will have more free time in early 2012 and will be able to properly take these classes.

Good luck to you.
Quote:


> Originally Posted by *matty_AFC*
> 
> Got a few questions, My brain is fried! and im feeling really frustrated (to much info to take in and think about).
> i've been trying to get the hang of linux ubuntu (feel really uncomfortable with it), whilst learning python and im getting really confused with all the command line stuff; linking code to paths and directories so you can open them in the terminal, even if you don't know the exact location of the file etc. think i might just be too worked up to think clearly but it just feels like i've got to get my head round alot. would rather do it in windows (alot simpler and i understand windows
> 
> 
> 
> 
> 
> 
> 
> ) but python seems very much as though it's ment for linux.
> so first of all, should i be using command line or IDE for programming?
> Secoundly what are the advantages/disadvantages of using windows or linux for programming?
> Really tired hope this makes sense


I don't think Windows or Linux really makes a difference. If you do have access to a Windows machine, then I'd recommend that you first learn to program in Python in Windows with IDLE (the IDE that comes built-in with Python), instead of simultaneously jumping into both Python and Linux.


----------



## matty_AFC

Quote:


> Originally Posted by *{Unregistered}*
> 
> I haven't registered for the January/February classes yet but I probably will register for at least 2 - Cryptography and one more, probably Machine Learning or Information Theory.
> I registered for AI, ML and DB classes in the October session but have only managed to hang on to the AI class. It is very difficult to carry on with these classes if you have school or something. But hopefully, I will have more free time in early 2012 and will be able to properly take these classes.


are there any other classes other then the ones that have been linked in this thread. All the classes linked here seem to need you to have programming experiance, was just wondering if there are any that start you off.


----------



## FlyingNugget

Quote:


> Originally Posted by *matty_AFC*
> 
> are there any other classes other then the ones that have been linked in this thread. All the classes linked here seem to need you to have programming experiance, was just wondering if there are any that start you off.


Did you look at this? Watch the video, it will explain more about the course. No experience required, a course for someone starting off.

http://www.cs101-class.org/ Computer Science 101


----------



## exhaile

I would suggest getting a linux distro without a gui. ViM /Emacs and program on the command line. As a first language I recommend python, its about as easy as writing pseudocode and teaches you to indent your code properly ;p . All this will give you the added benefit of teaching you about the command line and bash scripting.

Other languages, C is very good to learn on and once you master the basics and functional programming move to C++ for classes.

Another very nice way to learn is to follow these courses from stanford :- http://www.youtube.com/watch?v=KkMDCCdjyW8
The teacher is funny, you can download notes, assignments etc.

Once you get the basics of programming start taking a look at algorithms :- http://www.youtube.com/watch?v=JPyuH4qXLZ0 from an MIT professor here.


----------



## Xvengence

I've done python, I can tell you that it's a lot more easier than C++. Python can also be used for web development sometimes.

For Java, you can probably take a look at Head First Java

As for taking classes, if you're the type that has a hard time paying attention (like me) to lines and lines of code then you're better off learning by youself at your own pace.


----------



## selectstriker2

I don't think anyone has mentioned it yet but I'd look at working with c#. Much the same design principles as c++ without having to learn pointers right away and has many basic data structures built in (lists dictionaries etc)


----------



## galaxyy

Stanford has free online classes, and there is a computer science class starting next month. I really recommend getting a solid foundation before starting, it will make things much easier than just coddling together bits of knowledge.

http://www.cs101-class.org/

I'm taking one of these classes right now and I was really impressed. (I'm taking the intro db class)


----------



## matty_AFC

Right i have changed from starting with python to starting with java. Its hard to explain why but i just have an urge to learn java and it was distracting me when doing python ( i Know weird right?) i still plan on doing python after and then c++ after that but i just want java first.

Anyway my java learning is going ok been following thenewboston's youtube tutorials and commenting all my code so i remember what certain lines of code do etc, however i'm not fully understanding everything,
so i was wondering is that something that will come as i advance through my learning and following the tutorials or should i be understanding it all as i go through it?
Also is following video tutorials enough or should i get a book? (i Plan on getting 'Thinking in Java', can't afford it for a few weeks though, no money to spare atm with xmas around the corner.)

thanks


----------



## Xcrunner

Harvard has another good one. Introduction to Programming Just posted a thread about it a few minutes ago.


----------

