How to learn computer programming for the absolute beginner?
October 3, 2016 12:49 PM   Subscribe

I have no prior experience with computer programming, but would love to how.

What program and software do you recommend for a beginner with no experience in programming? Are there any books, excellent tutorials I should be looking into firstly? If so, what?

Mathematics isn't an area of strength for me, so I'm not sure if learning programming would be wise, if my math skills are poor. I would like to learn how to create a website, possibly a PC computer game, and artsy stuff with programming. Does anyone have any wealth of advice and information?
posted by RearWindow to Computers & Internet (12 answers total) 29 users marked this as a favorite
 
Python is an oft-recommended language for absolute beginners. That link lists a lot of guides and tutorials aimed towards people who have never programmed before.

Unless you want to work in numerical or math-heavy areas, strong mathematical knowledge is less important than a capacity for clear, logical thinking.
posted by dis_integration at 12:59 PM on October 3, 2016 [4 favorites]


Learn to code & help nonprofits: free code camp
posted by aniola at 1:10 PM on October 3, 2016 [3 favorites]


I would start by learning a basic web development framework like Rails or Django.
posted by deathpanels at 2:21 PM on October 3, 2016


There are a lot of beginning programming courses on coursera, an online mooc platform. I took this U. of Michigan beginners' course in python and thought it was effective. (I believe there is a way to audit the courses so as to not pay any enrollment fee; coursera has become less upfront about that option recently.)

This introduction to program design on another mooc platform, edX, looks interesting, too. It's based on the approach used in a well-known intro to programming text, How to Design Programs.
posted by bertran at 2:25 PM on October 3, 2016


Oh, I find there are also intro to game programming courses on these platforms, like this one, which is for the absolute beginner.
posted by bertran at 2:30 PM on October 3, 2016


CS 50 is often recommended. https://cs50.harvard.edu

Also Python is a great language to start with and there are free courses and tutorials which are very comprehensive. Although there is some debate on whether one should learner the older or newer Python.
posted by wilywabbit at 2:51 PM on October 3, 2016 [1 favorite]


I'm learning programming as a beginner, so I'll share what I've found helpful for me, and perhaps some of it will be helpful. I chose python to start with at the recommendation of several programmer friends and a chemistry teacher. I'm glad I chose this language to start with, not because I have any other language as a comparison, but because there are so may resources online for beginners who are learning this language.

Codecombat.com is great for absolute beginners. It's set up like a simple video game you play, where you write code in one panel, and the code controls a video game character in the other. You gradually progress through lessons and concepts. A lot of the beginner lessons are free, plenty to decide if it's useful to you or not, and if you progress far enough that you want to use the more advanced sections, there's a $10/month fee. I found it really useful because I could immediately start learning-by-doing, rather than watching 40 min video lectures and then trying to apply what I'd learned on my own. Also, having a visual reference for what my code was doing (in this case a simple D&D dungeon game where you fight orcs and collect gems) really helped me make the connection between what I was coding and its effects. You can choose between several languages, such as Python, Javascript, and HTML.

I'll note here that, depending on who you ask, HTML is not really a "programming language." It's a "markup language," basically a way to manually format how information is displayed in a web browser. It is useful for what it does, but you cannot use it to automate processes or solve problems like you can with a programming language. I like math, computers, and python, but I found learning HTML to be infuriating, simply because I realized it would be just as effective to use software with a GUI to achieve the same result. That, and the fact that it seemed like every 6 months the HTML that I'd learned would become "deprecated" (i.e. obsolete) and I'd have to learn everything over again. I'm only relating this because I erroneously concluded that I had no interest in programming as a hobby from my HTML experience, and I wish someone had explained the difference to me sooner. However, many people pick up HTML easily, and find it quite useful. YMMV.

"Automate the Boring Stuff with Python" by Al Sweigart is a great book for beginning Python. The fact that you can use what you learn to use your computer more efficiently means (in my case at least) that you're more likely to practice what you've learned in your daily routine. It's available in hard copy or online as a .pdf file.

"Invent Your Own Computer Games With Python," by the same author, is a beginner's book for Python where you create very simple (hangman, maze) games to learn programming concepts. It's free to read on the author's website, and you can also type in the example programs on the page and have them checked for errors.

https://inventwithpython.com/

As someone else commented, you don't need to know HTML to make a webpage anymore, and to some extent, the same goes for computer games. I've never used any of the game creation programs or online services, but a few are reviewed at http://lifehacker.com/the-best-free-tools-for-making-your-own-video-games-1689905461
I would be hesitant to spend much money on any of these, as I know that there are many available for free. Some of the websites that offer these services have a subscription you pay for, which includes online support for people such as yourself who are just learning. There are hundreds, maybe thousands of programs and websites that allow you to create websites and games without programming. If you decide to go that route, I would recommend asking a question specifically looking for either website or video game creation tools, and someone more knowledgeable than I can help point you in the right direction.

As far as programs/software to start coding with, you don't need to buy anything; python is free to install on your computer if it isn't on there already. There are beginner-friendly instructions for doing so in the Al Sweigart books and website I mentioned above.

As others have commented, programming has little to do with what we think of as traditional math skills. I've found that it has more in common with: solving riddles, solving puzzles, knitting/weaving (where a pattern is created in the cloth), following cooking recipes and making your own modifications, and learning to read and write music.

Hope some of this is helpful. Have fun!
posted by ethical_caligula at 4:26 PM on October 3, 2016 [6 favorites]


Math skills are overrated in programming. If you passed 8th grade pre-algebra, you'll be fine, and even that's overkill.

I'd suggest starting with HTML, if for no other reason than that it's very easy. It's not terribly important anymore, but it'll give you the experience of actually writing something and seeing it displayed. You can make a non-trivial HTML site in less than a week. That's good feedback to see if you want to continue on to harder stuff.

In my experience, learning HTML first makes learning PHP and JavaScript much easier. I learned HTML a long time ago, and then started learning Python when I decided o wanted to do real code. But it was hard for me to grasp what I was doing at first in Python. In contrast to HTML, much of what you'll do in a beginner Python class is extremely trivial. I tried PHP instead, and that instantly made more sense to me. People don't recommend learning PHP because it's, uh, quirky, but after I'd studied that, I went back to Python, and it made more sense.

For HTML and JavaScript, try FreeCodeCamp. There's a web-book by a guy named Shay Howe that's good as well. For Python (which you probably should learn at some point), check out Learn Python the Hard Way by Zed A. Shaw. For everything (HTML, PHP, JS, Python), I had success with both Codecademy (free) and Treehouse (paid).
posted by kevinbelt at 4:59 PM on October 3, 2016


For a basic intro to a language, I've really liked the Head First books from O'Reilly. They have a Head First Programming book in Python for those just starting out (i.e. they start from how to create a new program file). The books are mostly practical project based, so you get to do interesting things, instead of just reading. (NB: O'Reilly books are notoriously expensive, so maybe borrow this one from the library.)

On the mathematics end, you honestly don't absolutely need to know super advanced theoretical math stuff (unless that's what you've decided you actually want to program that day of course ;) ). It's more "symbolic logic" and geometry in my day to day programming.

Onto fun artsy stuff Processing is a good (user friendly and has a strong artist community) scripting language for that. It's often used for interactive art, concert visualizations, art installations, and "art games". Check out their (14 pages of!) curated digital art exhibitions. (On preview: Looks like I'm seconding B1tr0t ;) )
posted by Chicoreus at 5:50 PM on October 3, 2016


And if you're willing to buy used, the O'Reilly animal cover books can often be found fairly cheaply.
posted by kevinbelt at 8:07 PM on October 3, 2016


OK, So I'm going through the same at the moment.
I've been having a lot of sucess starting out with Processing.
I've been working through the book “learning processing” by Daniel Shiffman, it is very good and worth the £26 cover price, he is clearly a very experienced teacher.

He also has a huge resource on youtube under the title "coding rainbow".
From Learning Processing, there are at least the first 4 chapters (and some of 7 and 8) of the book in video format – the videos are a bit rough around the edges, but I’m finding him very easy to learn from.

His book nature of code is also available online for free (donations welcome) and has a free youtube version too.
posted by Dr Ew at 1:33 PM on October 4, 2016


I'd also like to add: don't get discouraged by the sheer variety of approaches to learning programming. If something isn't clicking for you, feel free to put it aside and try something else. There is no one true path or language to learn here.
posted by Aleyn at 3:26 PM on October 5, 2016 [1 favorite]


« Older Simulating 80s wallpaper for my Stranger Things...   |   "Was there a murder or wasn't there?" "Yes!... Newer »
This thread is closed to new comments.