First of all, I’d just like to say a huge thank you to everyone who has welcomed this roadmap (I originally posted it on reddit in /r/LearnPython.

Since it was so popular, I decided to post it here too as posts on reddit tend to get lost in the vast amount of other posts.


Here’s a Python road-map to take you from complete beginner to advanced with machine learning or web development. I don’t know what area of computer science you’re interested in (AI, web dev, data science etc.) but I’d say do everything up to intermediate and then branch off. You’ll need everything up to AND INCLUDING intermediate to have any chance of passing a tech interview for a software engineering role at a top tech company such as Google, Amazon and Facebook etc. Hopefully, this provides some framework for you to get started on.

Although I have Web Development in the advanced section, it is not an advanced topic to get into. However, I would say become comfortable with the basics of Python first or you’ll just drown in an information overload and not much will make sense. Web development is a very, very big topic so take your time in learning different components of it. Don’t expect to understand the majority of that list over-night!

For more of an in-depth roadmap for the beginners and early intermediate stages check out the Table of Contents for Slither into Python.

Beginner

  • Data Types
    • Lists
    • Strings
    • Tuples
    • Sets
    • Floats
    • Ints
    • Booleans
    • Dictionaries
  • Control Flow/Looping
    • for loops
    • while loops
    • if/elif/else
  • Arithmetic and expressions
  • I/O (Input/Output)
    • Sys module
    • Standard input/output
    • reading/writing files
  • Functions
  • Exceptions and Error Handling
  • Basics of object oriented programming (OOP) (Simple classes).

Intermediate

  • Recursion
  • Regular Expressions
  • More advanced OOP
    • Inheritance
    • Polymorphism
    • Encapsulation
    • Method overloading.
  • Data Structures
    • Linked lists
    • Stacks, Queues
    • Binary Search Trees
    • AVL Trees
    • Graphs
    • Minimum Spanning Trees
    • Hash Maps
  • Algorithms
    • Linear Search
    • Binary Search
    • Hashing
    • Quicksort
    • Insertion/Selection Sort
    • Merge Sort
    • Radix Sort
    • Depth First Search
    • Breadth First Search
    • Prim’s Algorithm
    • Dijkstra’s Algorithm.
  • Algorithmic Complexity
    • Big O notation

Advanced - A.I. / Machine Learning/ Data science

  • Statistics
  • Probability
  • Brute Force search
  • Heuristic search
    • Manhattan Distance
    • Admissible and Informed Heuristics
  • Hill Climbing
  • Simulated Annealing
  • A* search
  • Adversarial Search
    • Minimax
    • Alpha-Beta pruning
  • Greedy Algorithms
  • Dynamic Programming
  • Genetic Algorithms
  • Artificial Neural Networks
  • Backpropagation
  • Natural Language Processing
  • Convolutional Neural Networks
  • Recurrent Neural Networks
  • Generative Adversarial Networks

Advanced - Full stack web development

  • Computer networks (Don’t need to go into heavy detail but an understanding is necessary)
  • Backend web dev tools (This is for app logic and interfacing with databases etc).
    • flask
    • django
  • Front end framework (This is for communicating with the backend)
    • Angular 6+
    • React/Redux (These are libraries not frameworks but most consider them a framework)
  • With frontend you’ll also need
    • HTML
    • CSS
    • Javascript (also good to learn typescript which is used in angular. It makes writing Javascript nicer).
  • Relational database (Pick one and learn it, they’re all fairly similar)
    • MySQL
    • PostgreSQL
  • Non-relational
    • MongoDB
    • Apache Cassandra (Wide-Column)
  • Caching Systems
    • MemcacheD
    • Redis
  • Cloud computing knowledge is important nowadays
    • AWS (Offers the most services and has a 1 year free tier)
    • Google Cloud
    • Azure

Other ‘Must Knows’

  • Version Control
    • Git (start using Github straight away, it’s your portfolio!!!)
  • SQL (Relational and Non-Relational Databases - Almost everywhere nowadays)
  • Code Quality / Engineering Best Practices
  • Basics of Cloud Computing - Pick a provider and start learning (AWS recommended - biggest selection of services)
  • Scalable Systems Design - (https://github.com/donnemartin/system-design-primer)

Resources

Intermediate Level Resources

  • Algorithms and Data Structures in Python by Goldwasser and Goodrich

Web Development Resources

  • Django for Beginners: Learn web development with Django
  • Flask Web Development: Developing Web Applications with Python 2nd Edition
  • Learning React: Functional Web Development with React and Redux
  • The ng-book: The in-depth, complete and up-to-date book on Angular

A.I / Machine Learning Resources

  • Artificial Intelligence with Python: A Comprehensive Guide to Building Intelligent Apps for Python Beginners and Developers
  • Python code for Artificial Intelligence: Foundations of Computational Agents
  • Building Machine Learning Systems with Python
  • Learning scikit-learn: Machine Learning in Python
  • Clean Code by Robert Martin (How to write good code)
  • The Pragmatic Programmer by Andrew Hunt (General software engineering / best practices)
  • Computer Networking: A Top-Down Approach (Networks, useful depending on the field you’re entering, anything internet based this stuff will be important)
  • The Linux Command Line, 2nd Edition (Install the Linux operating system and get used to using the command line, it’ll be your best friend).
  • Artificial Intelligence: A Modern Approach

Online courses:

I am not a fan of Youtube for learning as you’re just being hand-fed code and not being given any exercises to practice with so I won’t be linking Youtube video series here. In fact I’m not a fan of video courses in general but these two are good.

  • Udemy - Complete Python Masterclass (This is for beginners stage).
  • Coursera - Deep Learning Specialization by Andrew Ng (Advanced - A.I.)

Most importantly, practice, practice, practice. You won’t get anywhere just watching videos of others programming. Try dedicate an hour a day or 2 hours a day on the weekend if you can.

Side Note: If you’re going for a job at a top tech company like Google or Amazon then Dynamic Programming and matrix manipulation are ‘must knows’, I can almost guarantee you they will come up in a technical interview.

If you’re still lost in the beginners stage, check the table of contents of Slither into Python to help you out a little further!