Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

Teaching myself computer programming Where should I start?

  1. Apr 22, 2012 #1
    Can someone give me a general sort of outline of what I should teach myself and in what order? or supply me a link that has a neat pdf?
  2. jcsd
  3. Apr 22, 2012 #2
    Presuming you want to know some general programming, as opposed to specialized programming of - for example - microcontrollers, I suggest you start with a clean but powerful language such as Python. Here's a good tutorial. There really isn't a general curriculum when it comes to learning how to program. Basically, you learn the basic ideas and a programming language or two, and then you learn whatever you're most interested in. I also often suggest new programmers take a look at Teach Yourself Programming in Ten Years, which I think is a very good read.
  4. Apr 23, 2012 #3
    Hello there Marie

    Python is a good language to start off, since I heard it is a very easy language to learn. There are some colleges that start off with Java or C++. However if you have a goal in mind you want to accomplish in the long run, you should state it. Different languages are good for different things.
  5. Apr 23, 2012 #4


    User Avatar
    Science Advisor

    Hey mariexotoni.

    For an environment that's easier to learn and get something up and running, I would recommend something like Python, Visual Basic, and other scripting or interpreted languages. Most people would recommend something like Python, but I actually like BASIC.

    - Get something up and running quickly, good for creating stuff without having to learn absolutely how everything works
    - Good to get a feel of the basic programming ideas and constructs in procedural programming

    - Not a good foundational for general serious coding: things work, but you don't actually know why
    - Can be misleading if you aren't aware of the above

    Usually from this you go to something a bit more 'in-your-face' like Java, C, C++. These are the kinds of languages used in professional development and also cover the OOP (Object Oriented Paradigm) that is common. This is what a lot of people write code in and especially with C++ since you can compile it to an optimized executable which means code runs as fast as it can if the compiler does its job well.

    - Better at understanding what is going on (especially for C,C++).
    - A good idea of the languages used in serious development

    - Even at this level, you still won't really understand how it all really works

    Then if you want to really know what is going on, you look at Assembler and Machine Language. Not for the faint of heart!

    - If you can code in this, then you will without a doubt know how everything works: period
    - If you ever need to write optimized code that a good compiler can't create or that you can guarantee runs in x clock-cycles, then this is what you need.
    - If for some god awful reason you need to debug a compiled library, then at least you can understand what the hell the error message is

    - It takes a long time to learn properly
    - Very painful
    - Usually un-necessary for the majority of purposes
    - Most compilers are good enough to produce fast enough code

    The above is for procedural programming only (Note that VB is not entirely procedural so if you want procedural look at QBASIC for BASIC language)

    It's up to you how far you want to go in terms of understanding, but if you are curious and want to write something up quickly, I'd probably check out Python. If you end up going all the way with assembler, then I think you'll pretty much know everything there is to procedural programming for x86 architectures (and easily be able to transition to other architectures as well).
  6. Apr 23, 2012 #5
    There's free online CS courses at Udacity. I took the CS101 - How To Build A Search Engine course to learn Python and it was excellent, and now that the course is finished, you can take it at your own pace. It will teach you some basic computer science concepts, and enough Python syntax to build a web crawler and search engine program. It's a very gentle introduction to programming. :)

    I'm taking the Web Programming course now, and it's great too, although it assumes you have at least CS101 under your belt.
  7. Apr 24, 2012 #6
    what pdf's/videos can i use to learn python? and what should i learn before i start python?

    i am starting from nothing, basically. only know how to navigate a computer and install crap.
  8. Apr 24, 2012 #7
    i'm afraid of using python..i've played with it a little and it's too.. like
    i don't understand it
    i type 2+2
    and it can generate 4
    and it's not because of something i did, or some process that makes sense to me
    it just works..

    i don't really want to use python. i'd rather start with java..

    but i don't think that's a good idea.
  9. Apr 24, 2012 #8
    To be perfectly honest, that's the beauty of it. You don't want to have to mess around with messy stuff such as memory management or - worse - accessing CPU registers. There is a huge difference between learning how a computer works on the inside and learning to program.
  10. Apr 24, 2012 #9
    okay. i wish i could just know more about it and why it works like that. but i'm playing with python and those udacity courses :) guess i'm just gonna start from here

    thanks everyone
  11. Apr 24, 2012 #10
    Nothing's stopping you from learning more, of course. :smile: The Wikipedia page on computers should give you a general idea of how things work. Though, if I may make a suggestion, I would only seriously start learning about the underlying physical architecture once you have some programming experience under your belt - preferably in a lower level language such as C. Then, you can get started with assembly (most likely under the x86 architecture, which you're probably using if you have an Intel or AMD processor) and learn exactly how stuff works along the way. (Assembly Language Step-by-Step is a particularly good book.)
  12. Apr 25, 2012 #11
    I think you will like Udacity! :) Make sure to check out the discussion forums there's a great community of students there.

    Java will be more complicated than Python, and even in Java, you will perform the 2 + 2 calculation and not see how it works. I think Python is a good starting language because you can get results quickly without having to make a framework for your program - which is 90% of the programming battle.

    Focus on solving some problems, you will learn things along the way and the next steps will become clearer to you. The language you use is not as important as understanding how to take a problem and break it down into something you can program. If you learn Java you will spend more time learning object oriented concepts which are not necessary for basic programming.

    Project Euler has a nice list of problems you can try, some are easy, some are hard, see how you go.
Share this great discussion with others via Reddit, Google+, Twitter, or Facebook