Developing the basics: The resources available to you
So many choices, so little time
The internet is full of information . Where can you find the best resources for learning to program from scratch? We will answer this question and provide the best resources according to our developers on where you can find study material, and the benefits and drawbacks of each.
What do we need to consider
So we have the language we want to learn (Python). We have a great tool with which to program (PyCharm Edu). Are we finished now? Can we go and binge watch the latest season of Game of Thrones despite our “friends” dropping spoilers on Facebook and pretty much ruining all the good surprises? No, we can’t. Now is the hardest part, deciding on the learning course we will use to teach us all the things we need to know about coding, to a level that we can call ourselves pretty good developers. We are looking for a rounded experience which covers all the basics and has a strong foundation which can be built on, if we want to develop this further.
We should be able to do the basic fundamental daily programming tasks. At the very minimum:
- Basic syntax of the language: statements and expressions
- What variables are and how to assign a variable
- Know the basic data types like integers, floating points, and strings, and the operands to manipulate them
- Know and be able to use the basic control structures: conditionals and loops
- Be able to decompose code into functions and methods
- Use some basic data structures
- Understand arrays or list types
- Understand dictionaries
- Record data structure classes in Python
- Iterate over arrays
- Read and write from files
- Be able to debug code
- Know the basics of good coding style
What options do we have
There are certain choices out there, following a course path is one of the favored methods. Following a course someone has put together specifically has a lot of advantages if the course is done well. This is useful if you have no idea where you want to start or what you want to achieve as they will prescribe a series of tasks and lecture about code principles. These can take various formats such as books or online courses.
The other options are to choose where you want to get to; for instance, if you want to build a website with animations, and that’s it, then you have to learn some foundations, and then learn the parts as you go, as you progress through your project. This is ultimately harder but arguably more rewarding as you will make a lot of mistakes but at the same time learn a lot. There is method to this madness as you learn to problem solve. The key here though is finding a good mentor, and with communities around the internet, this actually shouldn’t be too difficult to do (once you have gotten over your crippling anxiety of talking to new people and asking for help).
A lot has changed in the world of learning to program since this blog post was first written. One of the biggest changes has been the introduction of JetBrains Academy. The resources listed in this blog post are still very, very good and are highly recommended by past and present students. This is the kind of platform I wish had existed when I was learning to program. It is the perfect mix of hands-on practice, with theory, with real projects, with a personalized learning path that makes sure you know where you have gaps in your knowledge that you need to fill.
JetBrains Academy is a hands-on platform for learning to program. It offers a holistic approach to learning in which you study the theory and immediately put it into practice by building working applications. By the end of the Python for Beginners track, you’ll know the main concepts of Python and the syntax of the language as well as write well-readable code and create your first algorithm, and more. Moreover, you’ll get experience with professional development tools — JetBrains IDEs, and have a portfolio of projects to show off to potential employers!
You can start learning at JetBrains Academy for free with a 7-day trial. What’s more, you can extend it by up to 2 months by working on your first project!
A freshman way to learn coding
University-led online platform learning courses called MOOCs are very popular. Learning programming through an online course is an incredible opportunity which hasn’t been around for long. When done well the combination of media available to a learner can help to provide a variety of ways to show the same concept. This is a massive advantage if you don’t always pick up the concepts immediately. When they are provided through different media such as a video demonstration, and then backed up further with a text handout which goes over the same idea again, you have a better chance of understanding the idea. At this point, understanding is the key to learning. If a course also includes practical tasks to do, then regarding learning, you have hit the jackpot. While there are a lot of great courses out there for learning, several are held in high esteem:
This course, while not language-specific, is said to be one of the best, though also most challenging, courses to learn computer science and programming. It is a Harvard University course which has been opened up to the public. It has produced an incredible amount of skilled developers and combines a great mix of lectures, extra reading, and practical exercises. The best part of this is not only is it an incredible course – all of the course is free to take.
This course, put together by RICE University is hosted on the Coursera MOOC platform. There are a lot of introductory programming courses on here, though this one stands out and has mentions on a few sites such as coursetalk.com for being a great course to learn programming. With it being on Coursera, you have the option to audit the course for free. What this means is you can access the learning materials but… you will not be graded or receive a certificate to show for your efforts. This isn’t the end of the world; as long as you can demonstrate your abilities, a certificate is not always important.
This course is hosted on Coursera and made by the University of Toronto, it comes highly recommended by the ex-pupils of this course. The videos are much shorter than other courses at 6-10 minutes, as opposed to full hour-long lectures, so it is more digestible for people who can’t spare hour-long stints of concentration.
Once you know a bit about Python fundamentals, you can check out the course made by Berkely, School of Information. It is a resource with a Google Colab notebook, Python practice problems and solutions. Each problem highlights a few different skills, and they gradually become more complicated. It also provides additional resources to support each question, as well as additional Python coding exercises for more practice.
There are of course a lot of other really great MOOC type courses, but these three deserve particular attention according to people who have gone through the process of learning Python and programming with university-run MOOCs.
Some of my favorite MOOC platforms are found below, a search on the programming language you wish to learn will normally turn up some quite exceptional courses:
- Coursera: https://www.coursera.org/
- edX: https://www.edx.org/
- Udemy: https://www.udemy.com/topic/python/
- Stepik: http://welcome.stepik.org
- Khan Academy: https://www.khanacademy.org/welcome
- Udacity: https://www.udacity.com/
- Future Learn: https://www.futurelearn.com/
- Cognitive Class: https://cognitiveclass.ai/
*There are many more platforms, the reason these are particularly my favorite is they have at least some way to take the courses for free, which means you can try and go through the courses without limitation. Other good course providers though don’t offer free access are Lynda.com and not to mention all the courses available on pluralsight.com.
Other means and methods
If MOOC type education is not to your fancy, then there are also online tutorial type courses run by individuals and businesses. These courses offer practical learning into the Python language though tend not to be backed up with video lectures over concepts, but focus mainly on the code and practice demonstrations. If you prefer to simply get on and practice coding there are a lot of options out there. Some of the most cited and highest reviewed are:
- Codecademy has a free option for users to take advantage of and a set of lessons which teach you the fundamentals of programming in Python. It doesn’t have any videos, and instead, you run tasks through the platform itself being tracked on your progress. The classes build up gradually and have great community support so if there is any part you get stuck on the chances are you can find an answer quite easily.
- PyCharm Edu from JetBrains is a learning application you can download. It integrates the PyCharm IDE with a learning plugin which will take you through a series of Python lessons to get you ahead with Python learning. The system is free and used by many universities to teach coding to students. The benefit of using this system is the tool which it comes from. If your goal is to become a professional developer then learning to use this IDE early on can really help you get to grips with how great tools can help you achieve top-quality code. The system has ongoing tests to make sure the lessons and concepts are sinking in and it is free to use, there are zero hidden costs, making it an ideal entry-level system to get started with programming.
- Free Code camp an incredible free resource which will take you through the technical parts of learning development. Mainly concentrated on the web development technologies it does not include a Python language module. If you are thinking about web development specifically, then this might be a useful resource to take advantage of.
- Code School could be good though there is not so much free content to try. The first lectures on “Try Python” though seem like a good first stepping stone and come recommended as they are both entertaining and informative.
- CodeHS is a classroom programming learning platform. As a free user, you will have access to one course as an introduction to programming. Though this is simple, this type, of course, can help you start the process as you can actually see the effects of the code on the sprite inside the program. The free version is in a programming language known as Karel.
Best books for learning to program Python
There are again a lot of books out there for people who want to learn programming . The best books on learning programming have to really cover the subjects in depth and engage the learner, without making any assumptions about their knowledge. Most can be good for certain parts of the language, but it is quite rare to have a fully comprehensive book which can take a user from zero knowledge to an ability to program in a language, with good explanations and background knowledge and lots of practice in coding itself (very important). Without further ado here are the books you should get your hands on if you want to learn how to program Python (according to the people who have done it):
- O’Reilly Head First series – HeadFirst Python – This series of books is most new developers’ go-to resource for learning a technical language. The books are set out in a way which is conducive to learning, they are fun, full of examples, stories, and exercises. They basically use the latest research in cognitive science and learning theory to craft a ‘multi-sensory’ learning experience; everything a budding learner needs to get started. They can be expensive but the quality of the books should far outweigh the price; as you can get by with just the one book.
- Think Python: How to Think Like a Computer Scientist. Again this is a course in a book, which builds on the user’s knowledge and offers a lot of exercises to try out (online version of the book).
- Learn Python the Hard Way: A Very Simple Introduction to the Terrifyingly Beautiful World of Computers and Code. As with the others, this is a course in a book, whereby as a learner you will follow 52 exercises. It also has over 5 hours of video in an included DVD. Or you can take this online and read it on the web.
Computer programming in general and non-specific languages
- Head first Design patterns: again the O’Reilly series of Head First, this book in the series is great for learning the design patterns which come up through every developer’s career, helping you to quickly code better.
- Learning to Program – Stephen Foote. Has great projects to work through.
- Clean code – Robert C. Martin. This book is known by most professional developers for its advice on code, programming and the art of software development. The Clean Coder, the second title in the series, is also noted as being an incredibly useful book for developers who want to improve.
- inventwithpython.com has a couple of Python learning books available online which you can read for free.
Best sites for learning to program Python
A good place to start (if you are learning Python) is here wiki.python.org. We are in an age where there are loads of places to find information on just about any subject. There are a few very good sites you can use to find the droids you are looking for.
- pythonchallenge.com a place to get Python challenges and code against the system. If you enjoy gamification in your learning, this is a good site.
- developers.google.com/edu/python an intermediate eBook available online for extending your Python knowledge.
- learnpython.org again a site offering some tutorials for a few programming languages for free.
- comparite.ch/python-courses has resources for learning Python in the context of ethical hacking.
- python.swaroopch.com a Byte of Python is a free online manual which covers a lot of aspects of python.
- codesdope.com again another site dedicated to learning computer languages, free to use and with a nice practice section to test yourself on what you have learned.
Again there are many more; these few are just the ones which came up the most. A very comprehensive guide to python resources can be found here: codeconquest.com/blog/the-50-best-websites-to-learn-python/
More other mentions
There are a lot of people who have put together lessons for YouTube, more than can be mentioned here, check them out. In terms of watchers and subscribers Python Tutorial for Beginners series by ProgrammingKnowledge seems to be the series to watch.
So in conclusion
Depending on your preference for learning there is a platform or method ready to help you learn. So with all this possible information, where do you even begin?
For me, I am going to combine a couple of media. And dabble in each. The reason being as I will explain in a later blog it can really help to mix your learning up a bit and do the same subject matter in different ways. For example, if I take the course An Introduction to Interactive Programming in Python (parts 1 & 2) to begin with, then after a week or so also begin a book on Python, it is likely that the same topics will come up. Because of the difference between learning the subject in one media and then learning it again in a second way, it effectively creates interval learning which is a powerful method of rote learning. An example would be if you heard a word, which maybe you didn’t understand, then it was explained. A week or so later this same word came up, again you didn’t understand, but this time when the explanation came you suddenly remember hearing this before. A couple more of these same events come up you are each time making a stronger and stronger association, and it will come to you naturally and easily – more on this later.
So for me, the following combination should suffice.
PyCharm EDU and Stepik, this is the JetBrains system for learning Python. It includes the IDE and an adaptive course for personalized learning to advance the learning effectively. I will begin with the Introduction to Python and move onto the Adaptive Python which should see me through this project. I will augment this course with the HeadFirst books by O’Reilly which are a great way of learning new technical concepts. The two I will use are HeadFirst Learn how to Program and Headfirst Learn Python. These books can be found for most languages and technologies and offer a nice textbook style of learning. I will include the CS50 course, for an overview of computer science as a whole, which should help with the concepts and understanding. Finally, An Introduction to Interactive Programming in Python (parts 1 & 2) will be used to provide some video tutorials to round out the full learning experience.
These should fulfill enough of the requirement to get to the level I would like to be. Proficient enough that I am comfortable initiating any new project; with enough understanding that I can produce a working minimum viable product.
Keep following this journey for more insights, ideas, and information to help yourself on your own personal quest to become a developer.
Oh and if you have any awesome learning resources you would like to share with us, please comment below. I would be really interested to hear if there is a sweet secret system which I missed here.