Are you interested in machine learning and want to learn how to program? That's why I started learning to code. In this article, I'll share a few of the best resources that helped me advance from building my first program to building my first neural network.
Picking up Python
Python is one of the most highly recommended programming languages for beginners learning to code. Python helped me understand programming concepts clearly and I like to use multiple resources to reinforce the fundamentals. Also, Python is a great choice because it powers machine learning libraries such as TensorFlow and Keras.
Here are the resources that helped me get started learning to code in Python (listed in chronological order):
- Learn to Program: The Fundamentals is an online course from Coursera. This was my first introduction to programming and Python. The course provides a thorough overview of programming concepts and is well-paced by gradually introducing new concepts and building on the foundations of Python.
- Automate the Boring Stuff with Python is a book supplemented by YouTube tutorials. Automate the Boring Stuff with Python is a fun, helpful read. Learn to write helpful Pythonic scripts as you learn the concepts and syntax.
- Think Python, 2nd edition is a book that builds on core concepts in more detail and introduces advanced features of Python without being overwhelming. Have a go at completing a few of the exercises and see what you pick up.
(I also wanted to thank the instructors and authors for making these resources freely available!)
Computer scientist Peter Norvig also has put together a great resource page worth checking out: Teach yourself programming in 10 years.
Learning machine learning
Within computer science is the field of Artificial Intelligence, and machine learning is a sub-field of AI. Machine learning is all about computers that learn tasks from experience (i.e., from lots of data) instead of being programmed like conventional software. Deep Learning is a technique using neural networks for machine learning. Here are my top three resources to get started with machine learning and deep learning for beginner programmers (all except the last resource on the list are available free to access):
- Machine Learning is Fun! is a series of articles introducing machine learning. The series provides a high-level overview, covering topics such as different types of neural networks, how they work, and what they're used for.
- Machine Learning Recipes is a YouTube series from Google developers. Short videos take viewers through setting up TensorFlow, using scikit-learn and TFLearn, the machine learning pipeline, and training a neural network.
- Grokking Deep Learning is a book that introduces deep learning. The chapters are released every few months, with the entire release scheduled for 2017. It helped me understand how neural networks work and to build a simple neural network from scratch in Python.
I also recommend an article by Rachel Thomas, a data scientist and co-founder of fast.ai. Providing a Good Education in Deep Learning emphasizes how inclusiveness should be a key responsibility in education pertaining to transformative technologies such as AI.
You can always search online to resolve errors or get answers to your questions. The Stack Overflow community, for example, is a good starting point because someone probably had the same problem and you'll find solutions to try. Python Tutor is an excellent tool for seeing what code does line by line.
I'm still on the learning path, too, but I've realized that two of the most important factors leading to success in programming—or learning anything—is time and the willingness to work on problems that are beyond your current skill level.
I started learning to program two years ago because I wanted to learn how to use machine learning and deep learning. Ideally, it would be great to have a programming resource that taught Python and machine learning concurrently, but I haven't found one yet. In the meantime, I hope the resources are useful for you in getting started with programming and machine learning.
Please leave a comment or contact me via Twitter if you'd like to share a resource you use or if you found this helpful.