1. Limited time only! Sign up for a free 30min personal tutor trial with Chegg Tutors
    Dismiss Notice
Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

Self-studying Programming

  1. Dec 14, 2015 #1
    So I'm in high school and I wanted to self-study programming. In summer I completed the course Introduction to Computer Science and Programming Using Python on edX . I really liked it. I was wondering what I should do next and from where? Should I learn a different language (C , C++ and from where?) or learn more about CS (algroithms , OOP etc.)

  2. jcsd
  3. Dec 14, 2015 #2
    It depends on what kind of programming you want to do exactly. If for now you're just exposing yourself to programming, I'd recommend Java. Java is a very widely used programming language, and it's not too hard to master the fundamentals of Java if you know Python. Java will also allow you to learn those important CS concepts(specifically OOP). EJ Media's channel has some great tutorials on Java-


    Also, it's very important to apply the concepts you're learning. When I tried to learn programming on my own, I didn't get very far because I couldn't apply them to learn how they actually worked. I'd highly recommend making an account on Programmr, it's a great way to program exercises made by other people to apply all those concepts you've learned and actually make something. They have exercises for Java as well as many other languages-


    Also, this is an old resource, but it still applies to the fundamentals of Java. It's got some great quizzes, reviews and exercises with each chapter-


    Codecademy is also a very good resource for learning, they have a Java class now and classes on other languages(like Python, HTML/CSS and SQL)-


    Again, it can depend on what exactly you want to learn programming for. If you're interested in the software development field and becoming a programmer, then all the resources listed above are great. But of course, there are different reasons to learn programming. For example, the programming a scientist may use could be very different from the programming a software engineer would use. Scientists today now need to know basic computer concepts and programming more than ever to make complex models so they can analyze processes. This type of programming generally involves a procedural programming language instead of an object-oriented one, which the software engineer would generally prefer OOP because it's much more efficient in making applications.

    For now, I'd stick with learning Java. It's a good language to learn and fairly easy to learn if you have a foundation in a language such as Python. Keep applying yourself and make some applications by yourself! Make a game, or a calculator or a website even! Good luck!
  4. Dec 14, 2015 #3
    Really depends on what you want to do with that knowledge. If you're interested in pursuing a degree in computer science or if there's something specific you're interested in (like web development is quite different from a cs degree).

    I'm of the opinion that learning more languages isn't something you should be aiming at specifically unless you need that specific language for something you're interested in. Once you already know one language it's very easy to pick up another when needed really fast, there's however some point to being comfortable with different programming paradigms (OOP, functional, logic etc.) but that usually comes after you already know the basics of data structures and algorithms.

    Assuming you're interested in computer science and "traditional programming" you probably should get comfortable with OOP at least to level where you know what an object and inheritance is after that you could look at data structures and algorithms.
    One idea here would be to check out programming competitions aimed at high school students, usually you can find material relating to that teaching you algorithms and data structures.

    Some topics to start with:
    Data structures:
    Linked lists, Trees, hash tables
    Search algorithms: BFS, DFS, Dijkstra's algorithm, A*,minimax (look up dynamic programming)
    Sorting: bubble sort, insertion sort, quicksort, hashsort, mergesort (what are the advantages of each, for which data structures are they're useful?)

    Here's an university course covering this and more http://ocw.mit.edu/courses/electric...ntroduction-to-algorithms-fall-2011/index.htm however I suspect it's a bit to advanced for you right now but essentially you want the same topics but perhaps with less of the mathematics.

    Another idea would be to simply do your own programming project and learn whatever you need as you go, that way you learn things that you find interesting and are directly useful for you.

    Again all this is assuming you're interested in cs, math or programming competions. If you want to do web development or creating apps you won't need (all of) this and you probably better of just starting coding and learning as you go.
Share this great discussion with others via Reddit, Google+, Twitter, or Facebook