We may earn an affiliate commission when you visit our partners.
Course image
David J. Malan

An introduction to programming using a language called Python. Learn how to read and write code as well as how to test and "debug" it. Designed for students with or without prior programming experience who'd like to learn Python specifically. Learn about functions, arguments, and return values (oh my!); variables and types; conditionals and Boolean expressions; and loops. Learn how to handle exceptions, find and fix bugs, and write unit tests; use third-party libraries; validate and extract data with regular expressions; model real-world entities with classes, objects, methods, and properties; and read and write files. Hands-on opportunities for lots of practice. Exercises inspired by real-world programming problems. No software required except for a web browser, or you can write code on your own PC or Mac.

Read more

An introduction to programming using a language called Python. Learn how to read and write code as well as how to test and "debug" it. Designed for students with or without prior programming experience who'd like to learn Python specifically. Learn about functions, arguments, and return values (oh my!); variables and types; conditionals and Boolean expressions; and loops. Learn how to handle exceptions, find and fix bugs, and write unit tests; use third-party libraries; validate and extract data with regular expressions; model real-world entities with classes, objects, methods, and properties; and read and write files. Hands-on opportunities for lots of practice. Exercises inspired by real-world programming problems. No software required except for a web browser, or you can write code on your own PC or Mac.

Whereas CS50x itself focuses on computer science more generally as well as programming with C, Python, SQL, and JavaScript, this course, aka CS50P, is entirely focused on programming with Python. You can take CS50P before CS50x, during CS50x, or after CS50x. But for an introduction to computer science itself, you should still take CS50x!

What's inside

Learning objectives

  • Functions, variables
  • Conditionals
  • Loops
  • Exceptions
  • Libraries
  • Unit tests
  • File i/o
  • Regular expressions
  • Object-oriented programming
  • Et cetera

Good to know

Know what's good
, what to watch for
, and possible dealbreakers
Taught entirely by David J. Malan, recognized for expertise in CS pedagogy
Suitable for beginners, providing a foundation in Python programming
Relevant to learners seeking to strengthen existing foundations in Python
Covers essential concepts including functions, variables, loops, exceptions, and more
Emphasizes hands-on practice with exercises inspired by real-world programming scenarios
Requires no special software besides a web browser

Save this course

Save CS50's Introduction to Programming with Python to your list so you can find it easily later:
Save

Reviews summary

In-depth python course for beginners

Learners say this course on the basics of Python programming is engaging and well-structured. According to students, the lectures are easy to understand and the problem sets are approachable and well-paced. Overall, this is an excellent choice for those looking to learn Python or improve their skills.
The course's problem sets are a great way to practice your skills.
"CS50P’s problem sets are more approachable."
This course is a great option for learners new to coding.
"I found this course a great starting point in my coding journey."
"CS50P is an introductory Python course designed for both beginners and those with prior programming experience."
"The "Introduction to Programming with Python" course is an ideal starting point for beginners in the world of coding."
This course focuses solely on Python programming, making it a great option for those interested in learning the language.
"Unlike CS50X (which delves into computer science topics like pointers and memory management), CS50P focuses solely on Python."
The course's lectures are well-paced and easy to follow.
"Instructor David Malan has a unique ability to explain complex concepts clearly and concisely..."
"The video lessons are expertly designed with great visuals that make it easy to stay focused and absorb the content."
There were some technical issues with the live audio, but they should be resolved in the edited versions.
"In 2022, due to COVID-19 restrictions, CS50P shifted to an online-only format."
"Some audio issues occurred but should be resolved in the edited versions."

Activities

Be better prepared before your course. Deepen your understanding during and after it. Supplement your coursework and achieve mastery of the topics covered in CS50's Introduction to Programming with Python with these activities:
Read 'Automate the Boring Stuff with Python'
Supplement your learning with a practical guide that covers essential Python concepts and automation techniques.
Show steps
  • Acquire the book and set aside dedicated time for reading.
  • Read through the chapters and work through the examples provided.
  • Take notes and highlight important concepts for future reference.
Review Object-Oriented Programming Basics
Revisit the fundamentals of object-oriented programming to strengthen your understanding of Python's object-oriented features.
Show steps
  • Review concepts like classes, objects, methods, and inheritance.
  • Go through examples and practice writing simple Python classes.
  • Understand the benefits and applications of object-oriented programming.
Review Python Basics
Go over foundational elements of Python syntax and semantics to ensure a strong starting point.
Browse courses on Python Basics
Show steps
  • Revisit variables, data types, and operators.
  • Practice writing simple expressions and statements.
  • Review control flow concepts like if-else and loops.
Nine other activities
Expand to see all activities and additional details
Show all 12 activities
Organize Course Materials
Establish a system for organizing course materials to enhance your ability to locate and review information effectively.
Show steps
  • Create a dedicated folder or notebook for course materials.
  • Categorize and label materials according to topics or sections.
  • Keep digital and physical materials organized in a consistent manner.
Interactive Python Tutorials
Supplement course material with interactive tutorials to reinforce and expand Python knowledge.
Browse courses on Interactive Learning
Show steps
  • Find online platforms or YouTube channels that offer interactive Python tutorials.
  • Choose a tutorial that aligns with a specific concept you're learning in the course.
  • Follow the tutorial step-by-step, experimenting with the code and examples provided.
  • Take notes and ask questions if needed.
Join a Python Study Group
Engage with fellow learners to discuss concepts, share resources, and provide mutual support.
Browse courses on Knowledge Sharing
Show steps
  • Find or create a study group with other Python learners.
  • Meet regularly to discuss course materials, assignments, and projects.
  • Collaborate on projects and provide feedback to each other.
Python Coding Challenges
Practice writing and debugging Python code to solidify understanding of course concepts.
Browse courses on Coding Challenges
Show steps
  • Go to a coding challenge website or platform, such as HackerRank or LeetCode.
  • Select a challenge that aligns with your current learning objectives.
  • Read and understand the problem statement.
  • Develop a Python solution.
  • Test and debug your code until it meets the challenge requirements.
Practice Python Coding
Solve coding challenges to solidify your understanding of Python syntax and problem-solving skills.
Browse courses on Problem Solving
Show steps
  • Utilize online platforms like HackerRank or LeetCode.
  • Work through exercises from the course materials.
  • Create your own coding challenges to test your abilities.
Explore Python Libraries
Expand your knowledge by learning about and using essential Python libraries for data manipulation and analysis.
Browse courses on Python Libraries
Show steps
  • Research and identify relevant libraries for your interests.
  • Follow tutorials and documentation to understand library functionality.
  • Experiment with the libraries in your own Python scripts.
Python Code Refactor and Documentation
Improve your Python programming quality and maintainability by refactoring and documenting your code.
Browse courses on Code Refactoring
Show steps
  • Select a piece of Python code that you've written.
  • Analyze the code for potential improvements in readability, efficiency, and maintainability.
  • Refactor the code to implement the identified improvements.
  • Write clear and comprehensive documentation for the code, including comments, docstrings, and a README.
Python Project Ideas
Solidify your Python skills by developing practical projects that showcase your abilities.
Show steps
  • Identify a personal or professional need that can be addressed with a Python solution.
  • Design and plan your project, considering the scope, features, and requirements.
  • Implement your project in Python, utilizing the concepts and techniques learned in the course.
  • Test and debug your project thoroughly to ensure it meets all requirements.
  • Present your project to others via a portfolio, blog post, or GitHub repository.
Build a Python Project
Apply your Python skills to create a meaningful project that demonstrates your abilities.
Browse courses on Capstone Project
Show steps
  • Identify a project idea that aligns with your interests and course objectives.
  • Plan and design your project, including defining requirements and scope.
  • Implement your project using Python, utilizing appropriate libraries and techniques.

Career center

Learners who complete CS50's Introduction to Programming with Python will develop knowledge and skills that may be useful to these careers:
Web Developer
Web Developers design, develop, and maintain websites and web applications. They work closely with other designers, engineers, and stakeholders to create websites that are user-friendly, efficient, and visually appealing. This course is a great fit for Web Developers as it provides a strong foundation in programming with Python, which is a popular language for web development. The course also covers web design, web development, and web testing, which are all essential skills for Web Developers.
Software Engineer
Software Engineers design, develop, and maintain software applications. They work closely with other engineers, designers, and stakeholders to create software that meets the needs of users. This course is a great fit for Software Engineers as it provides a strong foundation in programming with Python, which is a popular language for software development. The course also covers software design, software testing, and software maintenance, which are all essential skills for Software Engineers.
Data Scientist
Data Scientists use data to solve problems and extract actionable insights. They work closely with other scientists, engineers, and stakeholders to develop data-driven solutions to complex problems. This course is a great fit for Data Scientists as it provides a strong foundation in programming with Python, which is a popular language for data science. The course also covers data mining, machine learning, and data visualization, which are all essential skills for Data Scientists.
Quantitative Analyst
Quantitative Analysts use mathematics and statistics to solve problems in the financial industry. They work closely with other analysts, traders, and portfolio managers to develop quantitative models that can help make investment decisions. This course is a great fit for Quantitative Analysts as it provides a strong foundation in programming with Python, which is a popular language for quantitative finance. The course also covers financial mathematics, financial modeling, and financial data analysis, which are all essential skills for Quantitative Analysts.
Data Analyst
Data Analysts mine, analyze, interpret, and present data in order to solve problems and extract actionable insights. They help businesses understand their customers, optimize operations, and make data-driven decisions. This course is a great fit for Data Analysts as it provides a strong foundation in programming with Python, which is a key skill for data analysis. The course also covers data handling, data manipulation, and data visualization, which are all essential skills for Data Analysts.
Machine Learning Engineer
Machine Learning Engineers design, develop, and maintain machine learning models. They work closely with other engineers, scientists, and stakeholders to create machine learning models that can solve real-world problems. This course is a great fit for Machine Learning Engineers as it provides a strong foundation in programming with Python, which is a popular language for machine learning. The course also covers machine learning algorithms, machine learning models, and machine learning deployment, which are all essential skills for Machine Learning Engineers.
Database Administrator
Database Administrators design, develop, and maintain databases. They work closely with other engineers, users, and stakeholders to create databases that meet the needs of the organization. This course is a great fit for Database Administrators as it provides a strong foundation in programming with Python, which is a popular language for database administration. The course also covers database design, database development, and database administration, which are all essential skills for Database Administrators.
Systems Analyst
Systems Analysts design, develop, and maintain computer systems. They work closely with other engineers, users, and stakeholders to create systems that meet the needs of the organization. This course is a great fit for Systems Analysts as it provides a strong foundation in programming with Python, which is a popular language for systems analysis. The course also covers systems analysis techniques, systems design, and systems testing, which are all essential skills for Systems Analysts.
Business Analyst
Business Analysts help businesses understand their needs and develop solutions to improve their operations. They work closely with other stakeholders to gather requirements, analyze data, and develop recommendations. This course is a great fit for Business Analysts as it provides a strong foundation in programming with Python, which is a popular language for business analysis. The course also covers business analysis techniques, business process modeling, and business intelligence, which are all essential skills for Business Analysts.
Project Manager
Project Managers plan, organize, and execute projects. They work closely with other stakeholders to ensure that projects are completed on time, within budget, and to the required quality. This course may be useful for Project Managers as it provides a strong foundation in programming with Python, which is a popular language for project management. The course also covers project management principles, project management practices, and project management tools, which are all essential skills for Project Managers.
Network Administrator
Network Administrators design, develop, and maintain computer networks. They work closely with other engineers, users, and stakeholders to create networks that meet the needs of the organization. This course may be useful for Network Administrators as it provides a strong foundation in programming with Python, which is a popular language for network administration. The course also covers network design, network development, and network administration, which are all essential skills for Network Administrators.
Information Security Analyst
Information Security Analysts design, develop, and maintain security systems to protect information from unauthorized access, use, disclosure, disruption, modification, or destruction. They work closely with other engineers, users, and stakeholders to create security systems that meet the needs of the organization. This course may be useful for Information Security Analysts as it provides a strong foundation in programming with Python, which is a popular language for information security. The course also covers information security principles, information security practices, and information security tools, which are all essential skills for Information Security Analysts.
Technical Writer
Technical Writers create and maintain technical documentation, such as user manuals, training materials, and white papers. They work closely with other engineers, users, and stakeholders to create documentation that is clear, concise, and accurate. This course may be useful for Technical Writers as it provides a strong foundation in programming with Python, which is a popular language for technical writing. The course also covers technical writing principles, technical writing practices, and technical writing tools, which are all essential skills for Technical Writers.
Computer Support Specialist
Computer Support Specialists provide technical support to users of computers and software. They work closely with users to troubleshoot problems and resolve issues. This course may be useful for Computer Support Specialists as it provides a strong foundation in programming with Python, which is a popular language for computer support. The course also covers computer hardware, computer software, and computer troubleshooting, which are all essential skills for Computer Support Specialists.
Data Entry Clerk
Data Entry Clerks enter data into computer systems. They work closely with other employees to ensure that data is entered accurately and efficiently. This course may be useful for Data Entry Clerks as it provides a strong foundation in programming with Python, which is a popular language for data entry. The course also covers data entry principles, data entry practices, and data entry tools, which are all essential skills for Data Entry Clerks.

Reading list

We've selected 14 books that we think will supplement your learning. Use these to develop background knowledge, enrich your coursework, and gain a deeper understanding of the topics covered in CS50's Introduction to Programming with Python.
Is an excellent resource for beginners who want to learn Python quickly and efficiently. It covers the basics of Python programming, including variables, data types, operators, control flow, functions, and object-oriented programming.
Practical guide to using Python for automating tasks. It covers a wide range of topics, including web scraping, data analysis, and working with APIs.
Deep dive into the Python language. It covers advanced topics such as decorators, generators, and metaprogramming.
Good choice for beginners who want to learn Python for data analysis. It covers topics such as data cleaning, data manipulation, and data visualization.
Good choice for students who want to learn Python for computer science. It covers topics such as algorithms, data structures, and object-oriented programming.
Comprehensive reference guide to the Python language. It covers all of the major features of Python, and it provides detailed explanations of how they work.
Comprehensive guide to the Python language. It covers all of the major features of Python, and it provides detailed explanations of how they work.
Concise reference guide to the Python language. It covers all of the major features of Python, and it provides quick and easy-to-understand explanations.
Practical guide to using Python for web development. It covers topics such as web frameworks, databases, and templating.
Comprehensive reference guide to the Python standard library. It covers all of the major modules in the standard library, and it provides detailed explanations of how they work.
Collection of recipes for solving common programming problems in Python. It covers a wide range of topics, including data structures, algorithms, and web development.

Share

Help others find this course page by sharing it with your friends and followers:

Similar courses

Here are nine courses similar to CS50's Introduction to Programming with Python.
Python Data Essentials: Python Introduction
Most relevant
CS50's Introduction to Programming with Scratch
Most relevant
Introduction to Computer Science and Programming Using...
Most relevant
Python Basics for Data Science
Most relevant
Introduction to Programming
Python Functions, Files, and Dictionaries
Programming for Data Science
Introduction to Machine Learning with Python
Automate the Boring Stuff with Python Programming
Our mission

OpenCourser helps millions of learners each year. People visit us to learn workspace skills, ace their exams, and nurture their curiosity.

Our extensive catalog contains over 50,000 courses and twice as many books. Browse by search, by topic, or even by career interests. We'll match you to the right resources quickly.

Find this site helpful? Tell a friend about us.

Affiliate disclosure

We're supported by our community of learners. When you purchase or subscribe to courses and programs or purchase books, we may earn a commission from our partners.

Your purchases help us maintain our catalog and keep our servers humming without ads.

Thank you for supporting OpenCourser.

© 2016 - 2024 OpenCourser