Start learning Computer Programming


Programming is everywhere. It is almost an essential skill that future generations will have to know by default - like being able to read and write.
So if you've never tried this before - now is the perfect moment. Get the sense of how machines work, learn a programming language and try to build your first project. It's never too late!
Share this idea with your friends, your relatives, your colleagues. Do you have children? Do them a favour and take them to some coding school, or at least let them study online.
Here's a list of some helpful resources that beginner-programmers may find useful.

  • Lecture Courses
    • Harvard University edX: "CS50x: Introduction to Computer Science"
      An introduction to the intellectual enterprises of computer science and the art of programming.
      It's hard to find another course that could be even comparable to this Harvard CS50.
    • Udacity: "Intro to Computer Science"
      Learn and practice key computer science concepts by building your own versions of popular web applications. You’ll learn Python, a powerful, easy-to-learn, and widely used programming language, and you’ll explore computer science basics, as you build your own search engine and social network.
    • Stanford Online: "Computer Science 101"
      CS101 teaches the essential ideas of Computer Science for a zero-prior-experience audience. Computers can appear very complicated, but in reality, computers work within just a few, simple patterns. CS101 demystifies and brings those patterns to life, which is useful for anyone using computers today.
  • Tutorial Courses
    • Code Academy: "codecademy.com"
      Learn to code interactively, for free.
      Intensive programms to learn building Websites, creating Front End Web Applications and Web APIs from scratch. Tutorials on basics of Responsive Desgin, Saas, AngularJS, ReactJS, Ruby on Rails and many more.
    • Code School: "codeschool.com"
      Code School courses are organized into Paths based on technology.
      HTML/CSS and JavaScript, Ruby and Python, Git and many other course-groups that are nicely designed to learn selected topics.
    • Treehouse: "teamtreehouse.com"
      Learn Web Design, Coding & Much More.
      1000+ videos on various web design and coding topis. Quizzes and coding challenges for practicing new skills.
  • Kids
    • Tynker: "Coding Made Easy"
      Everything your child needs to learn computer programming the fun way! Ages 7+.
      Tynker is a complete learning system that teaches kids to code. Kids begin experimenting with visual blocks, then progress to JavaScript and Python as they design games, build apps, and make incredible projects.
    • Kodable: "Programming for Kids"
      Helping teachers and parents teach computer science to tomorrow’s innovators.
      Kodable translates computer science into easy-to-teach lessons and games that kids love.
    • Udemy: "Programming for Kids and Beginners: Learn to Code in Scratch"
      Learn to program, create games, have fun! For kids and beginners, parents and teachers!
      $100 course that indludes 8 hours of video, additional resources and a certificate of completion. It uses Scratch (programming language, developed by MIT) that makes programming seem like a game.
  • Books
    • Eric Matthes: "Python Crash Course"
      Python Crash Course is a fast-paced, thorough introduction to Python that will have you writing programs, solving problems, and making things that work in no time.
    • Harvey Deitel: "Java how to Program, 11th edition"
      A clear, simple, engaging and entertaining introduction to Java.
    • Cory Althoff: "The Self-Taught Programmer"
      A guide to take you from writing your first program to passing your first technical interview.


Here's a nice picture (credits to Carl Cheo) that may help you choose your first programming language (clickable):

But remember - you'll just have to start. Go ahead, pick one course and finish it. Experiment with your new knowledge and try to build something unique just by yourself. Try to feel the mechanics of software development. There are dozens of different paths, that you may choose afterwards - from building Websites to creating Mobile Apps, from studying Machine Learning to exploring Artificial Intelligence, from conducting research to launching your own product, or maybe you'll just want to apply these skills in your current job or combine them with your hobby.
My personal advise is to try out as many different fields as possible, so that you'll be aware of what is going on in contemporary world. Then pick something you like and dig deeper. Maybe you'll become the next Marc Zuckerberg. Good luck!



Links