We may earn an affiliate commission when you visit our partners.
Eric Grimson, John Guttag, and Ana Bell

This course is the first of a two-course sequence: Introduction to Computer Science and Programming Using Python, and Introduction to Computational Thinking and Data Science. Together, they are designed to help people with no prior exposure to computer science or programming learn to think computationally and write programs to tackle useful problems. Some of the people taking the two courses will use them as a stepping stone to more advanced computer science courses, but for many it will be their first and last computer science courses. This run features lecture videos, lecture exercises, and problem sets using Python 3.5. Even if you previously took the course with Python 2.7, you will be able to easily transition to Python 3.5 in future courses, or enroll now to refresh your learning.

Read more

This course is the first of a two-course sequence: Introduction to Computer Science and Programming Using Python, and Introduction to Computational Thinking and Data Science. Together, they are designed to help people with no prior exposure to computer science or programming learn to think computationally and write programs to tackle useful problems. Some of the people taking the two courses will use them as a stepping stone to more advanced computer science courses, but for many it will be their first and last computer science courses. This run features lecture videos, lecture exercises, and problem sets using Python 3.5. Even if you previously took the course with Python 2.7, you will be able to easily transition to Python 3.5 in future courses, or enroll now to refresh your learning.

Since these courses may be the only formal computer science courses many of the students take, we have chosen to focus on breadth rather than depth. The goal is to provide students with a brief introduction to many topics so they will have an idea of what is possible when they need to think about how to use computation to accomplish some goal later in their career. That said, they are not "computation appreciation" courses. They are challenging and rigorous courses in which the students spend a lot of time and effort learning to bend the computer to their will

What's inside

Learning objectives

  • A notion of computation
  • The python programming language
  • Some simple algorithms
  • Testing and debugging
  • An informal introduction to algorithmic complexity
  • Data structures

Traffic lights

Read about what's good
what should give you pause
and possible dealbreakers
Builds a strong foundation for beginners who want to learn the Python programming language
Examines some simple algorithms, which are fundamental in computer programming
Develops testing and debugging skills that are essential for programming
Provides an informal introduction to algorithmic complexity, a key concept in computer science
Introduces data structures, which are essential for organizing and managing data in programming

Save this course

Create your own learning path. Save this course to your list so you can find it easily later.
Save

Reviews summary

Rigorous introduction to cs and programming

According to learners, this course provides a solid foundation in computer science concepts and programming using Python. Students widely praise the challenging problem sets, noting they are difficult but highly rewarding for learning. While many find it an excellent introduction for beginners, a significant number of reviewers mention the pace is fast and the course requires a significant time commitment. It focuses on computational thinking and theory using Python as a tool, rather than just language syntax. Overall, it's considered a rigorous and valuable first step into the field, though prospective students should be prepared for its demanding nature.
Emphasis on computational thinking, not just coding.
"It's not just about Python syntax; they really teach you *how* to think like a computer scientist."
"The course stresses fundamental concepts and problem-solving approaches using Python as a tool."
"I appreciate that the focus was on algorithms and data structures rather than just basic programming commands."
Excellent intro to CS concepts for beginners.
"This course gave me a very solid foundation in both Python and fundamental computer science concepts."
"It provides a great starting point for absolute beginners who want to learn programming and CS principles."
"I feel much more confident tackling other programming challenges after completing this intro."
Problem sets are tough but incredibly rewarding.
"The problem sets were definitely hard, but solving them made me learn so much more than lectures alone."
"Assignments are rigorous and require deep thinking, which is exactly what I needed to grasp the material."
"Although difficult, working through the problems was the most valuable part of the course for me."
Requires significant time investment weekly.
"Plan to dedicate substantial time each week, particularly for the problem sets. It's not a light course."
"This course demands a serious time commitment if you want to keep up and truly learn."
"I spent many hours every week on the assignments, which was necessary but challenging alongside other commitments."
Can be fast-paced and difficult for newcomers.
"As a complete beginner, I found the pace incredibly fast, especially after the first few weeks. Had to rewatch lectures."
"The course is very challenging, perhaps too much so if you have absolutely no prior logical thinking background."
"Be prepared to spend a lot of time outside of lectures understanding the concepts and solving problems."

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 Introduction to Computer Science and Programming Using Python with these activities:
Read 'Automate the Boring Stuff with Python'
This book provides a comprehensive overview of Python programming and will help solidify your understanding of core coding concepts.
Show steps
  • Get a copy of the book
  • Read the book at your own pace
  • Complete the exercises in the book
Join a study group or online forum for Python programmers
Networking with peers will broaden your perspectives on the subject and potentially introduce you to new topics.
Show steps
  • Find a study group or online forum for Python programmers
  • Join the study group or online forum
  • Participate in discussions and ask questions
Complete coding practice drills
Constantly write code and practice using the Python language to solidify understanding of course concepts.
Browse courses on Python
Show steps
  • Find a Python coding practice website or app
  • Set aside time each day or week to practice coding challenges
  • Start with easy coding challenges and gradually increase the difficulty
Five other activities
Expand to see all activities and additional details
Show all eight activities
Follow video tutorials on advanced Python concepts
Guided tutorials will allow you to learn at your own pace and focus on specific areas where you need improvement.
Browse courses on Python
Show steps
  • Find a video tutorial series on advanced Python concepts
  • Watch the videos and take notes on the key concepts
  • Practice the concepts you learn in the videos by coding along
Participate in coding competitions and hackathons
Coding competitions and hackathons will test your skills and help you learn new technologies.
Browse courses on Python
Show steps
  • Find a coding competition or hackathon that you are interested in
  • Register for the competition or hackathon
  • Prepare for the competition or hackathon by practicing and studying
  • Participate in the competition or hackathon and do your best
Organize your notes and learning materials
Cleaning up your notes and materials will make it easier to find and review them later.
Browse courses on Python
Show steps
  • Gather all of your notes and learning materials
  • Organize the materials by topic or date
  • Store the materials in a safe and convenient location
  • Review the materials regularly
Create a blog post or video tutorial on a Python topic
Creating content will help you solidify understanding of a topic by breaking it down and explaining it to others.
Browse courses on Python
Show steps
  • Choose a Python topic that you are familiar with
  • Write a blog post or create a video tutorial on the topic
  • Publish the blog post or video tutorial and share it with others
Build a data analysis tool using Python
Creating a real-world project not only tests your skills, it helps you grasp the principles of computation, algorithms, data analysis, and coding concepts as a whole.
Browse courses on Python
Show steps
  • Identify a real-world problem that you can solve using data analysis
  • Design a data analysis tool that will solve the problem
  • Build the data analysis tool using Python
  • Test and iterate on the data analysis tool until it is working correctly

Career center

Learners who complete Introduction to Computer Science and Programming Using Python will develop knowledge and skills that may be useful to these careers:
Computer and Information Research Scientist
Computer and Information Research Scientists conduct research to advance computing technology. This course can help build a foundation for this career by introducing core programming concepts and providing hands-on experience with Python. The course's focus on algorithms, complexity, and data structures will also help develop problem-solving and analytical skills that are essential for this role.
Software Developer
Software Developers design, build, and maintain software applications. This course can help build a foundation for this career by providing a comprehensive introduction to programming using Python. The course also covers concepts such as algorithms, complexity, and data structures, which are essential for designing efficient and scalable software solutions.
Data Scientist
Data Scientists use scientific methods to extract insights from data. This course can help build a foundation for this career by introducing core programming concepts using Python, including data structures and algorithms. The course also covers basic statistical concepts, which are essential for understanding and analyzing data.
Machine Learning Engineer
Machine Learning Engineers design and build machine learning models to solve complex problems. This course can help build a foundation for this career by providing a comprehensive introduction to programming using Python. The course also covers concepts such as algorithms, complexity, and data structures, which are essential for designing and implementing machine learning models.
Web Developer
Web Developers design and build websites and web applications. This course can help build a foundation for this career by providing a comprehensive introduction to programming using Python. The course also covers concepts such as algorithms, complexity, and data structures, which are essential for designing and implementing efficient and scalable web applications.
Database Administrator
Database Administrators design, build, and maintain databases. This course can help build a foundation for this career by providing a comprehensive introduction to programming using Python. The course also covers concepts such as algorithms, complexity, and data structures, which are essential for designing and implementing efficient and scalable databases.
Computer Network Architect
Computer Network Architects design and build computer networks. This course can help build a foundation for this career by providing a comprehensive introduction to programming using Python. The course also covers concepts such as algorithms, complexity, and data structures, which are essential for designing and implementing efficient and scalable computer networks.
Information Security Analyst
Information Security Analysts protect computer systems and networks from unauthorized access. This course can help build a foundation for this career by providing a comprehensive introduction to programming using Python. The course also covers concepts such as algorithms, complexity, and data structures, which are essential for understanding and mitigating security vulnerabilities.
Systems Engineer
Systems Engineers design, build, and maintain computer systems. This course can help build a foundation for this career by providing a comprehensive introduction to programming using Python. The course also covers concepts such as algorithms, complexity, and data structures, which are essential for designing and implementing efficient and scalable computer systems.
Computer Systems Analyst
Computer Systems Analysts study how businesses use computer technology. They find ways to improve the efficiency of computer systems and make them more useful for the business. This course can help build a foundation for this career by providing a comprehensive introduction to programming using Python. The course also covers concepts such as algorithms, complexity, and data structures, which are essential for understanding and improving the efficiency of computer systems.
IT Manager
IT Managers plan, organize, and direct the activities of an organization's IT department. They are responsible for ensuring that the organization's IT systems are reliable, efficient, and secure. This course can help build a foundation for this career by providing a comprehensive introduction to programming using Python. The course also covers concepts such as algorithms, complexity, and data structures, which are essential for understanding and managing IT systems.
Computer Hardware Engineer
Computer Hardware Engineers design, build, and test computer hardware. This course can help build a foundation for this career by providing a comprehensive introduction to programming using Python. The course also covers concepts such as algorithms, complexity, and data structures, which are essential for understanding and designing efficient and reliable computer hardware.
Computer Network Administrator
Computer Network Administrators install, maintain, and troubleshoot computer networks. This course can help build a foundation for this career by providing a comprehensive introduction to programming using Python. The course also covers concepts such as algorithms, complexity, and data structures, which are essential for understanding and managing computer networks.
Database Developer
Database Developers design and build databases. This course can help build a foundation for this career by providing a comprehensive introduction to programming using Python. The course also covers concepts such as algorithms, complexity, and data structures, which are essential for designing and implementing efficient and scalable databases.
IT Support Specialist
IT Support Specialists provide technical support to users of computer systems. This course can help build a foundation for this career by providing a comprehensive introduction to programming using Python. The course also covers concepts such as algorithms, complexity, and data structures, which are essential for understanding and troubleshooting computer systems.

Featured in The Course Notes

This course is mentioned in our blog, The Course Notes. Read two articles that feature Introduction to Computer Science and Programming Using Python:

Reading list

We've selected 21 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 Introduction to Computer Science and Programming Using Python.
Is written by the same instructors as the course and covers the same topics. It can be used as a textbook for the course or as a reference.
Comprehensive guide to Python that covers everything from the basics to advanced topics such as data science and machine learning. It good choice for beginners who want to learn Python in depth.
Provides an introduction to the Python language and computational thinking. It's a great resource for beginners who want to learn the basics of programming, and it's also helpful for people who want to refresh their skills.
Gentle introduction to Python that is written for beginners. It good choice for beginners who want to learn Python at their own pace.
Teaches you how to use Python to automate boring tasks. It's a great resource for people who want to learn how to use Python for practical purposes.
Good choice for students who want a more comprehensive introduction to Python and computer science. It covers a wide range of topics, from basic programming concepts to object-oriented programming.
Classic textbook on algorithms and data structures. It covers a wide range of topics, from basic algorithms to advanced data structures.
Is another classic textbook on algorithms. It covers a wide range of topics, from basic algorithms to advanced data structures.
Good introduction to data analysis using Python. It covers the basics of data analysis and provides many examples of how to use Python to analyze data.
Good introduction to machine learning using Python. It covers the basics of machine learning and provides many examples of how to use Python to build machine learning models.
Good introduction to deep learning using Python. It covers the basics of deep learning and provides many examples of how to use Python to build deep learning models.
Good introduction to natural language processing using Python. It covers the basics of natural language processing and provides many examples of how to use Python to build natural language processing models.
Good overview of computer science. It covers the history of computer science, the different areas of computer science, and some of the key concepts of computer science.
Classic work on the nature of intelligence and consciousness. It challenging read, but it is also a very rewarding one.
Classic work on astronomy. It beautiful and inspiring read, and it provides a good overview of the universe.

Share

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

Similar courses

Similar courses are unavailable at this time. Please try again later.
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 - 2025 OpenCourser