
This course includes our updated coding exercises so you can practice your skills as you learn.
See a demo
Begin your journey into programming with a practical roadmap to core concepts and tools. Discover five course parts, Python and object-oriented programming, and strategies for landing your first software job.
Discover how self-taught programmer Kevin Systrom co-founded Instagram with Mike Krieger in 2010 while working in marketing, built the prototype, and grew it into a $1 billion sale to Facebook.
Install python on mac and windows by following steps from python.org downloads, selecting the latest version starting with 3, running the installer, and completing the setup.
Print 'Hello world' in Idle's interactive shell, then save the file and run your program with the Run module.
Understand how Python syntax governs code structure and when syntax errors occur. Go to the reported line, fix the problem, and rerun; seek help in the self-taught Programmers Facebook group.
Explore Python basics, including indentation, keywords, and comments; type code into the shell or Idle's text editor, print hello world, and see how line-numbered examples form three lines of code.
Corey Althoff thanks you for taking the Self-Taught Programmer course and invites feedback or a review to support your programming journey and his course.
Use Python to perform math operations such as add, subtract, multiply, and divide, and learn about constants, variables, data types, incrementing and decrementing, and basic naming rules.
Learn how Python groups data into data types and that everything is an object. Explore integers, floats, strings, booleans, and none type with simple examples like Hello world.
Explore arithmetic operators in Python, including exponent, modulo, and integer division, and apply the order of operations to evaluate expressions and determine quotient, remainder, evenness, and oddness.
Explore how Python comparison operators evaluate expressions to true or false, using greater than, less than, greater than or equal to, less than or equal to, equal, and not equal.
Explore Python logical operators—and, or, and not—and how they evaluate expressions to true or false, with and requiring all true and not inverting the result.
Explore Python statements and conditional logic, including if, elif, and else blocks, and nesting concepts. Learn how simple and compound statements use expressions to decide actions.
Learn how to define and call functions in Python, use required and optional parameters, return values, and document with docstrings to specify parameter data types and enable reusable code.
Explore Python built-in functions, from print and len to str, int, float, and input, and learn how to convert data types and make decisions with if statements.
Explore how exceptions differ from syntax errors in Python, including zero division errors, converting nonnumeric strings to floats, and adding an integer to a string. See notes.
Learn exception handling in Python by using try and except to handle errors from user input, such as avoiding division by zero with a message 'B cannot be zero'.
Learn how Python variable scope controls reading and writing with global and local scopes, why the global keyword matters, and how to avoid name collisions in large programs.
Discover how to store objects in containers by using lists, tuples, and dictionaries in Python, and learn list creation, indexing, mutability, and append and pop operations.
Explore tuples, immutable containers that store ordered items with parentheses or a tuple function. Access by index, test membership with in, and use as dictionary keys for data like coordinates.
Map keys to values using dictionaries to store and retrieve data, create and modify mappings, access values by keys, check membership with in or not in, and delete with del.
Learn to nest containers in containers by storing lists, tuples, and dictionaries inside other containers, access elements by indices, and use containers as dictionary values.
Learn to manipulate Python strings through indexing, including negative indexing, slicing, case changes, concatenation, and formatting, while understanding immutability, splitting, joining, and trimming whitespace.
Master Python string operations with in and not in checks, escaping quotes, and newline escapes. Practice slicing with start and end indices, and using replace and index to locate text.
Explore how for loops enable iterating through strings, lists, tuples, and dictionaries, using an index variable and range to process items and transform data.
Learn how while loops differ from for loops, understand control flow with break and continue, and explore nested loops in Python, including avoiding infinite loops.
Explore how to organize Python projects with modules, import built-ins, and reuse code across files, including creating and importing your own modules and using math, random, statistics, and keyword utilities.
Learn to read and write files in Python, create files, and manage data using the os path function to build cross-platform paths and open files in read or write modes.
Master Python's built-in csv module to read and write csv files, manage delimiters, write rows from lists, and iterate with the reader to print data as rows appear.
Explore how Jack Dorsey became a self-taught programmer, blending city infrastructure interest with a prototype completed in roughly two weeks that birthed Twitter after dropping out of NYU.
Explore procedural programming as a style that writes a sequence of steps changing program state, highlighting global variables and side effects, and contrast with functional and object oriented paradigms.
Explore functional programming by contrasting it with procedural styles, eliminating global state, and writing functions that pass data and avoid changing external state to reduce errors.
Learn object oriented programming by modeling objects with classes, creating instances, and defining methods with self, including composition and practical examples like orange and rectangle to highlight advantages and drawbacks.
Discover the four pillars of object oriented programming: encapsulation, abstraction, polymorphism, and inheritance, and learn how to model objects with a unified state, expose a common interface, and reuse code.
Explore class variables, instance variables, and magic methods in Python, and learn how the is keyword compares objects and how repr customizes prints.
Learn object oriented programming by building an e-commerce inventory system with classes for customer, product, and inventory, including adding products, processing purchases, and stock tracking.
Learn to build a Python implementation of the card game War by defining Card, Deck, Player, and Game classes, including suits, values, shuffling, and round-by-round card comparisons.
Learn how Daniel Ek, the co-founder of Spotify, taught himself to code at 14 and built a legal music service that turned pirates into paying customers.
Learn bash, the command line interface, to navigate directories, run programs, and manage files with commands like cd, ls, pwd, mkdir, rm, echo, python, and sudo.
Open a file with vim from the command line, create data.txt, and edit text by switching between command mode, insert mode, and last line mode to write and save.
Master regular expressions to search data with grep and Python, control case with ignore-case flags, and build patterns using carrot symbol, dollar sign, brackets, and non-greedy matching.
Learn how package managers such as Pip install Python packages, manage dependencies, and work with virtual environments for Python web frameworks like Flask.
Master git and GitHub to manage code with version control, local and central repositories, and push, pull, and track history.
Explore PyCharm, a powerful interactive development environment for Python, with features like debugging, breakpoints, local history, tabs, and configurable interpreters for professional and community use.
Build a web scraper in Python to extract links from Google News using beautifulsoup, after learning HTML structure and how to parse HTML into structured data.
Discover how Steve Wozniak became a self-taught programmer, from early math and ham radio to building Apple One and Apple two, and later teaching kids about computer skills.
Explore core algorithms, including fizzbuzz, modulo checks, sequential search, palindrome, and anagram tests. See how to implement patterns to count characters and validate data.
Learn how to combine two lists in Python using zip to pair movie titles with ratings, handle unequal lengths, and print the resulting tuples.
The lecture contrasts recursion with iteration, defines base case and self-referential calls, and demonstrates the three laws of recursion with examples like 99 bottles and counting from N to zero.
Master binary search on sorted lists to locate elements in O(log n) time by halving the search range, contrasting with linear search.
Learn to find duplicates efficiently by using Python sets instead of nested loops, reducing time complexity from O(n^2) and collecting duplicates with a for loop and length checks.
Explore extracting digits from a string using Python list comprehensions to filter digits and select the rightmost digit with a negative index, demonstrated by practical examples.
Learn to find common elements between two lists in Python using a for loop or the set intersection, then convert the result back to a list.
Explore data structures like stacks and queues, learn push and pop operations, understand last-in, first-out versus first-in, first-out, and see Python examples that reverse strings and simulate ticket lines.
Explore how hash tables use hashing, modulo division, and primes to store data efficiently, address collisions, and enable constant-time lookups.
Explore how linked lists differ from Python arrays, using nodes and pointers to connect elements, enabling efficient insertions and various forms like singly, circular, and doubly linked lists.
Build a linked list by defining a node class with data and next, a list class with a head, and methods to append nodes and print the list.
Learn to search a linked list with a linear algorithm starting at the head, using a while loop to compare each node to the target and return true or false.
Margaret Hamilton, a self-taught programmer, learned in the 50s and 60s, built Apollo mission software at MIT and championed rigorous testing for ultra reliable emergency alert systems.
Apply best practices to write production-ready code, emphasizing dry, orthogonal, and single-responsibility design. Build with tests, code reviews, secure input handling, logging, and minimized attack surface.
start by climbing the freelance ladder on upwork, taking small projects to gain experience without traditional interviews. build five-star reviews and badges as you rise to larger, six-month contracts.
Learn to craft a standout freelance programming profile on Upwork by avoiding new labels, using testimonials, and highlighting automation, web scraping, and Python skills.
Learn how to apply for freelance programming jobs on Upwork, focusing on entry-level web scraping projects and budget filters. Craft tailored proposals to overcome objections and win approvals.
Land your first programming job by building projects on GitHub as your resume and pursuing freelance work. Prepare for interviews by mastering data structures and algorithms with LeetCode.
Prepare for your first full-time programming job as a junior software engineer. Practice using version control with others and pair programming to learn your team's tools and methodology.
Continue your self-taught programmer journey by diving deeper into programming, paradigms, tools, and computer science. Practice by building projects and reading others' code on GitHub to master your chosen domain.
I am a self-taught programmer. After a year of self-study, I learned to program well enough to land a job as a software engineer II at eBay. Once I got there, I realized I was severely under-prepared. I was overwhelmed by the amount of things I needed to know but hadn't learned yet. My journey learning to program, and my experience at my first job as a software engineer were the inspiration for this course.
This course is not just about learning to program; although you will learn to code. If you want to program professionally, it is not enough to learn to code; that is why, in addition to helping you learn to program, I also cover the rest of the things you need to know to program professionally that classes and books don't teach you. The Self-taught Programmer is a roadmap, a guide to take you from writing your first Python program, to passing your first technical interview. I divided the course into five sections:
1. Learn to program in Python 3 and build your first program.
2. Learn Object-oriented programming and create a powerful Python program to get you hooked.
3. Learn to use tools like Git, Bash, regular expressions and databases. Then use your new coding skills to build a web scraper.
4. Study Computer Science fundamentals like data structures and algorithms.
5. Finish with tips for working with a team and landing a programming job.
You CAN learn to program professionally. The path is there. Will you take it?