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!

Studying Learning programming from scratch

  1. Jul 19, 2016 #1


    User Avatar
    Gold Member

    I wish to be able to create android and iphone games and apps but currently know nothing about programming. With this in mind, what do you suggest doing first in a form that you suggest the programming language i start learning first, textbook that i should use and program that i will write on. You can then make future suggestions and so on...
    I am very grateful if you allow yourself to answer this helpfully, thanks :)!
  2. jcsd
  3. Jul 19, 2016 #2


    Staff: Mentor

    The three most common choices:

    1) Write it for iOS using the Apple SDK and then rewrite it for Android (Objective-C / Swift for iOS and Java for Android) which is the route most game development houses go.

    2) Unity Game Engine which can export to either Android or iOS (coding in Javascript). Your games can be very immersive and quite awesome. Check out some examples at the Unity site (http://unity3d.com/)

    3) Web app using Apache Cordova and bind with either Android or iOS module (coding in Javascript or Elm)

    Since you have no programming experience, I would suggest another route by learning to code with Processing (processing.org) and then using the Processing Android mode and the Android toolkit to create an Android app. I've seen some pretty cool apps come from this mix of tools.

    Unity is definitely great for games and is platform agnostic meaning you write it for one and it works on other platforms.

    The third option is great for light weight apps (not CPU intensive eg a lot of changing graphics) that need to look the same across platforms and that don't need every device feature. Apache Cordova provides access to many common device features already. Having mastered this option, you become a web app programmer and your apps can be extended to mobile apps via Cordova.

    Elm (http://elm-lang.org/) is a relatively new programming language that surpasses and replaces Javascript on the client side. It has many cool examples at its site and it has the time-travelling debugger that can make game debug real easy.

    Here's an Elm video to watch:

  4. Jul 19, 2016 #3

    Wouldn't suggest learning the way I did, it was rather tedious, but beginner courses that walk you through entire projects are a dime a dozen! I'd check out lynda.com, codeacademy.com , teamtreehouse.com has IOS and Android tracks I believe, and pluralsight (https://www.pluralsight.com/courses/android-start-developing).

    If the end goal is to build a portfolio finding a "track" that includes version control system (like git) would be a wise choice. This way you can showcase your efforts to future employers. I believe most teamtreehouse.com tracks include tutorials on git!

    I guess if I was going to give additional advice it's try not to feel overwhelmed. You will never have the answer to everything and you will always need to turn to peers. Post on stackoverflow.com when you get stuck, google errors you find, use all resources to solve the problems in front of you!

  5. Jul 20, 2016 #4


    User Avatar
    Science Advisor

    Hey diredragon.

    Do you have any specific applications that interest you?

    Aside from tutorials and other programming specific resources, I'd recommend finding a code-base that is in line with your interests and get to a point where you can learn the existing code (that is as well written as you can find) and slowly modify and add to it.

    Think of it like learning to write from good authors - if you find a good author who writes well and learn from them then you have a better chance of doing the same.

    Writing code is like writing a book - be it a novel, textbook or something else: you have to organize your thoughts, processes, and information in a way that makes sense individually and collectively. Well written code has properties that bad written code does not and identifying these is necessary to be able to write good code.
  6. Jul 23, 2016 #5
    Start learning a programming language, and then learn about software and programs. Dive in and learn everything you can. There's numerous tutorials on how to make iOS and Android apps, you can follow them without using a lot of brainpower and/or creativity. While you go through the tutorials be attentive and try to understand as much as you can, and you will develop a more intuitive sense of how to program.
    Read as many supplemental material as you can to help your understanding. There's books, Udemy, Codecademy, the resources are endless.
  7. Oct 3, 2017 #6
    I can share my learnings with you since the time I have got hands-on with Android programming.
    Building an Android app comes down to two major skills/languages: Java and Android. Java is the language used in Android, but the Android part encompasses learning XML for the design of the app, learning the concepts of Android, and using the concepts programmatically with Java.

    Once you learn Java and XML (XML is really easy to get used to, and you should learn the language as you program your app rather than learning it beforehand like you would with Java), you need to learn how to connect these two using Android principles.

    For a total beginner, I recommend learning Java. There are no shortcuts here, you just have to learn Java.

    Now for a total beginner, I recommend YouTube tutorials to get the basic idea of how to install Eclipse (the Integrated Development Environment, or IDE, for Java) and the Java Development Kit (JDK). It also helps to get the basic idea of syntax behind Java concepts, such as for loops and if statements.But from then on, after you have learned the very basics, I HIGHLY recommend ditching the YouTube tutorials in favor of a book or a lecture series online.
    You can buy a course online or if you are looking for something free you can view this.
    Now, coming to Android Studio and Eclipse:
    Android Studio and Eclipse are IDEs or Integrated Development Environments. You could code Java using other programs that run the code, but I personally am not too familiar with these and would not recommend these at all to a beginner.

    The IDEs compile and run your code with just a touch of a button, unlike other applications where you would have to write some code to compile and then write some code to run. You have to install the Android SDK with Eclipse, but all of the installation process is covered in depth on the Android developer's website.

    I took almost exactly two months to complete my app. When I started off, I spent 4+ hours a day reading the Big Nerd Ranch book and following the tutorials to make the apps in the book. Time flew by when I was actually making my own app, because solving a small problem, such as saving data, took me a while to fully understand the material since it was new to me.

    I had a bunch of time to do this because I was on summer break and had nothing else to do. I used Google to search up any questions that I was stuck on, which was a lot of the time because I was new to Android. The top results were usually Stack Overflow, but when Stack Overflow didn't have an answer that worked for me, I posted on /r/androiddev Subreddit and they were extremely helpful.
  8. Oct 3, 2017 #7


    User Avatar
    Homework Helper
    Education Advisor
    Gold Member

    The members who responded so far seem like they are very knowledgable and studied very much programming and made some programs, and so my suggestion might not fit very well since I am not so well studied about this and only wrote some BASIC programs as a hobby; and had only one single beginning course, decades ago. What is so bad about starting with a beginning programming course from a community college, and then study upward from there? The O.P. said he seems to suggest that he does not know any computer programming yet.
  9. Oct 3, 2017 #8
    You can begin anywhere. Getting started is half done :)
  10. Oct 3, 2017 #9


    User Avatar
    Homework Helper
    Education Advisor
    Gold Member

    Maybe my point was not too clear, so let me be very blunt.

    If someone wants to learn to program and is LOST from the start, then the best option is to start in an organized community college classroom and recieve instruction in the traditional sense guided by a teacher and a textbook and the equipment made available at the institution.
  11. Oct 3, 2017 #10


    Staff: Mentor

    Good advice, IMO.
Share this great discussion with others via Reddit, Google+, Twitter, or Facebook

Have something to add?
Draft saved Draft deleted