We may earn an affiliate commission when you visit our partners.
Course image
Duane Szafron and Paul Lu

This course is an introduction to computer science and programming in Python. Upon successful completion of this course, you will be able to:

1. Take a new computational problem and solve it, using several problem solving techniques including abstraction and problem decomposition.

2. Follow a design creation process that includes: descriptions, test plans, and algorithms.

3. Code, test, and debug a program in Python, based on your design.

Read more

This course is an introduction to computer science and programming in Python. Upon successful completion of this course, you will be able to:

1. Take a new computational problem and solve it, using several problem solving techniques including abstraction and problem decomposition.

2. Follow a design creation process that includes: descriptions, test plans, and algorithms.

3. Code, test, and debug a program in Python, based on your design.

Important computer science concepts such as problem solving (computational thinking), problem decomposition, algorithms, abstraction, and software quality are emphasized throughout.

This course uses problem-based learning. The Python programming language and video games are used to demonstrate computer science concepts in a concrete and fun manner. The instructional videos present Python using a conceptual framework that can be used to understand any programming language. This framework is based on several general programming language concepts that you will learn during the course including: lexics, syntax, and semantics.

Other approaches to programming may be quicker, but are more focused on a single programming language, or on a few of the simplest aspects of programming languages. The approach used in this course may take more time, but you will gain a deeper understanding of programming languages. After completing the course, in addition to learning Python programming, you will be able to apply the knowledge and skills you acquired to: non-game problems, other programming languages, and other computer science courses.

You do not need any previous programming, Python, or video game experience. However, several basic skills are needed: computer use (e.g., mouse, keyboard, document editing), elementary mathematics, attention to detail (as with many technical subjects), and a “just give it a try” spirit will be keys to your success. Despite the use of video games for the main programming project, PVG is not about computer games. For each new programming concept, PVG uses non-game examples to provide a basic understanding of computational principles, before applying these programming concepts to video games.

The interactive learning objects (ILO) of the course provide automatic, context-specific guidance and feedback, like a virtual teaching assistant, as you develop problem descriptions, functional test plans, and algorithms. The course forums are supported by knowledgeable University of Alberta personnel, to help you succeed.

All videos, assessments, and ILOs are available free of charge. There is an optional Coursera certificate available for a fee.

Enroll now

Here's a deal for you

Save money when you learn with a deal that may be relevant to this course.
All coupon codes, vouchers, and discounts are applied automatically unless otherwise noted.

What's inside

Syllabus

Module 0: Introduction
In Module 0, you will meet the instructional team and be introduced to the four themes of this course: computer science, problem solving, Python programming, and how to create video games.
Read more

Traffic lights

Read about what's good
what should give you pause
and possible dealbreakers
Develops problem solving (computational thinking), problem decomposition, algorithms, abstraction, and software quality
Builds a strong foundation for beginners in computer science
Teaches Python programming, a widely used language in industry
Uses problem-based learning methodology
Offers a comprehensive study of computer science concepts

Save this course

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

Reviews summary

Intro to python and problem solving with games

According to learners, this course provides a solid and engaging introduction to computer science, problem-solving, and Python programming. Students frequently highlight the use of video game projects as a fun and effective way to learn, making complex topics more accessible. The course is often praised for its clear explanations and well-structured content, particularly suitable for absolute beginners. Some learners found the initial pace slow or the focus heavily on design/problem-solving theory before coding, while others appreciated this foundational approach. The Interactive Learning Objects (ILOs) and forum support are noted as helpful resources.
Strong emphasis on design & theory.
"The course places a strong emphasis on problem-solving techniques before jumping into coding, which is valuable."
"It focuses heavily on the design process - descriptions, test plans, algorithms - which is a different approach than just coding."
"Some found the initial focus on design and theory a bit slow, but it builds a solid foundation."
ILOs and forums provide support.
"The Interactive Learning Objects were great for getting immediate feedback on my designs and code."
"Forum support was responsive and helpful when I got stuck on assignments."
"The ILOs are like having a virtual TA guiding you through the design steps."
Concepts explained thoroughly.
"The lectures were clear and concise, making the core programming concepts easy to grasp."
"I found the explanations of lexics, syntax, and semantics particularly helpful for understanding programming languages."
"The instructor's explanations are very easy to follow, even when dealing with new ideas."
Accessible for absolute beginners.
"As someone with absolutely no prior programming experience, this course was the perfect starting point."
"The instructor does a great job of breaking down complex ideas into easy-to-understand pieces for newcomers."
"It's designed very well for people who have never coded before, building up concepts gradually."
Uses video games for hands-on coding.
"The programming assignments, specifically the video game projects, made learning incredibly fun and motivating."
"Building the simple games step-by-step really solidified my understanding of the concepts."
"I appreciated how the video games provided a practical application for everything we were learning in Python."
Pace felt slow initially to some.
"The first few modules felt a bit slow as they focused more on theory than actual coding."
"While thorough, the pace might be a little too slow for someone who has seen basic programming concepts before."
"It ramps up nicely, but getting through the initial theoretical modules took some patience."

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 Problem Solving, Python Programming, and Video Games with these activities:
Read 'Head First Python' by Paul Barry
This book provides a comprehensive and engaging introduction to Python, covering core concepts and best practices.
View Head First Python on Amazon
Show steps
  • Read through the book's chapters on basic Python syntax, data structures, and object-oriented programming.
  • Complete the practice exercises and quizzes provided in the book to reinforce your understanding.
  • Review the book's summary and key takeaways to solidify your knowledge.
Organize Your Course Materials
Staying organized is crucial for effectively managing your coursework and retaining information.
Show steps
  • Create a system for organizing your notes, assignments, quizzes, and exams, ensuring they are easily accessible and well-structured.
  • 定期回顾你的笔记和材料,以巩固你的理解,并识别需要进一步关注的领域。
Review Functions
Functions allow us to reuse code and improve the quality of our code, improving our ability to solve problems in Python.
Browse courses on Functions
Show steps
  • Review function syntax to refresh your knowledge about defining functions using the def keyword, specifying parameters, and using the return statement.
  • Practice writing and testing simple functions, such as finding the maximum or minimum of two numbers, converting temperatures between Celsius and Fahrenheit, or calculating the area of a circle.
Four other activities
Expand to see all activities and additional details
Show all seven activities
Review Object-Oriented Programming Concepts
Object-oriented programming is a fundamental concept in Python and understanding it is critical for developing more complex and maintainable programs.
Show steps
  • Revisit the basics of OOP, including the concepts of classes, objects, inheritance, and polymorphism.
  • Review examples and practice creating your own classes and objects in Python.
Practice Problem Decomposition
Problem decomposition is a crucial skill for solving complex problems, and practice is key for developing proficiency.
Browse courses on Problem Decomposition
Show steps
  • Identify a complex problem to work on, such as creating a program to simulate a game of chess or managing a budget.
  • Break down the problem into smaller, more manageable subproblems, focusing on identifying the key components and relationships between them.
  • Develop a step-by-step plan for solving each subproblem, considering different approaches and potential challenges.
Design Your Own Mini-Game
Designing and implementing even a simple game requires applying multiple concepts in Python and allows for creativity.
Browse courses on Game Design
Show steps
  • Brainstorm ideas for a simple game that can be implemented with the Python constructs you have learned so far.
  • Design the game mechanics, including the rules, objectives, and player interactions.
  • Implement the game using Python, paying attention to the flow of the game, user interface, and error handling.
  • Test and debug your game thoroughly, ensuring it runs smoothly and meets the design specifications.
Participate in a Python Coding Challenge
Participating in coding challenges provides an opportunity to apply your Python skills in a competitive setting and learn from others.
Show steps
  • Find a Python coding challenge or competition that aligns with your interests and skill level.
  • Study the problem statements carefully and brainstorm potential solutions.
  • Implement your solution in Python, paying attention to efficiency, correctness, and documentation.
  • Submit your solution and review the results, analyzing your performance and identifying areas for improvement.

Career center

Learners who complete Problem Solving, Python Programming, and Video Games will develop knowledge and skills that may be useful to these careers:
Python Developer
A Python Developer is a software engineer who specializes in the Python programming language. They are responsible for designing, developing, and maintaining software applications using Python. This course provides a solid foundation in Python programming, including the basics of the language, data structures, algorithms, and object-oriented programming. It also covers advanced topics such as GUI programming, web development, and data science. This course will help you build the skills you need to become a successful Python Developer and help prepare you for roles in a variety of companies and industries.
Software Engineer
Software Engineers design, develop, and maintain software systems. They work on a variety of projects, from small mobile apps to large enterprise systems. This course provides a broad overview of software engineering, including topics such as software design, software development, and software testing. It also covers specific programming languages and technologies, such as Python, Java, and C++. This course will help you build the skills you need to become a successful Software Engineer, regardless of the industry or company you work for.
Data Scientist
Data Scientists use data to solve problems and make decisions. They work in a variety of industries, including healthcare, finance, and retail. This course provides a solid foundation in data science, including topics such as data analysis, data mining, and machine learning. It also covers specific programming languages and technologies, such as Python, R, and SQL. This course will help you build the skills you need to become a successful Data Scientist and help prepare you for roles that require data management, predictive analytics, or knowledge of data mining tools and software.
Web Developer
Web Developers design, develop, and maintain websites and web applications. They work on a variety of projects, from small personal websites to large e-commerce platforms. This course provides a broad overview of web development, including topics such as HTML, CSS, JavaScript, and web design. It also covers specific web development frameworks and technologies, such as Django and React. This course will help you build the skills you need to become a successful Web Developer and help prepare you for roles involving programming with web technologies.
Game Developer
Game Developers design, develop, and maintain video games. They work on a variety of projects, from small mobile games to large console games. This course provides a broad overview of game development, including topics such as game design, game development, and game testing. It also covers specific game development tools and technologies, such as Unity and Unreal Engine. This course will help you build the skills you need to become a successful Game Developer and help prepare you for roles in a variety of gaming companies.
Computer Scientist
Computer Scientists conduct research in the field of computer science. They develop new theories and algorithms, and design new programming languages and software systems. This course provides a broad overview of computer science, including topics such as computer architecture, operating systems, and artificial intelligence. It also covers specific programming languages and technologies, such as C++, Java, and Python. This course will help you build the skills you need to become a successful Computer Scientist and help prepare you for roles at tech companies where you can lead research and development initiatives.
IT Specialist
IT Specialists provide technical support to users of computers and software. They troubleshoot problems, install and maintain software, and train users on new technologies. This course provides a broad overview of IT, including topics such as computer hardware, software, and networking. It also covers specific IT support tools and technologies, such as Microsoft Windows, Linux, and Cisco. This course will help you build the skills you need to become a successful IT Specialist and help prepare you for roles in a variety of companies and industries.
Quality Assurance Analyst
Quality Assurance Analysts test software to ensure that it meets quality standards. They write test cases, execute tests, and report defects. This course provides a broad overview of quality assurance, including topics such as software testing, test management, and test automation. It also covers specific quality assurance tools and technologies, such as Jira and Selenium. This course will help you build the skills you need to become a successful Quality Assurance Analyst and help prepare you for roles in a variety of companies and industries.
Technical Writer
Technical Writers create documentation for software and other technical products. They write user manuals, technical reports, and white papers. This course provides a broad overview of technical writing, including topics such as technical writing principles, documentation tools, and user experience. It also covers specific technical writing tools and technologies, such as Microsoft Word, Adobe FrameMaker, and MadCap Flare. This course will help you build the skills you need to become a successful Technical Writer and help prepare you for roles in a variety of companies and industries.
Systems Analyst
Systems Analysts analyze and design computer systems. They work with users to understand their needs and design systems that meet those needs. This course provides a broad overview of systems analysis, including topics such as systems analysis techniques, systems design, and systems implementation. It also covers specific systems analysis tools and technologies, such as UML and ERD. This course will help you build the skills you need to become a successful Systems Analyst and help prepare you for roles in a variety of companies and industries.
Database Administrator
Database Administrators manage and maintain databases. They ensure that databases are available, reliable, and secure. This course provides a broad overview of database administration, including topics such as database design, database management, and database security. It also covers specific database administration tools and technologies, such as MySQL, Oracle, and SQL Server. This course will help you build the skills you need to become a successful Database Administrator and help prepare you for roles in a variety of companies and industries.
Network Administrator
Network Administrators manage and maintain computer networks. They ensure that networks are available, reliable, and secure. This course provides a broad overview of network administration, including topics such as network design, network management, and network security. It also covers specific network administration tools and technologies, such as Cisco routers and switches. This course will help you build the skills you need to become a successful Network Administrator and help prepare you for roles in a variety of companies and industries.
Project Manager
Project Managers plan, execute, and close projects. They work with stakeholders to define project goals, develop project plans, and track project progress. This course provides a broad overview of project management, including topics such as project planning, project execution, and project closure. It also covers specific project management tools and technologies, such as Microsoft Project and Asana. This course will help you build the skills you need to become a successful Project Manager and help prepare you for roles in a variety of companies and industries.
Business Analyst
Business Analysts analyze business needs and design solutions. They work with stakeholders to understand their needs and design solutions that meet those needs. This course provides a broad overview of business analysis, including topics such as business analysis techniques, business process modeling, and requirements gathering. It also covers specific business analysis tools and technologies, such as BPMN and UML. This course will help you build the skills you need to become a successful Business Analyst and help prepare you for roles in a variety of companies and industries.
IT Architect
IT Architects design and implement IT solutions. They work with stakeholders to understand their needs and design solutions that meet those needs. This course provides a broad overview of IT architecture, including topics such as IT architecture principles, IT architecture frameworks, and IT architecture tools. It also covers specific IT architecture tools and technologies, such as TOGAF and Archimate. This course will help you build the skills you need to become a successful IT Architect and help prepare you for roles in a variety of companies and industries. This course may be particularly useful for those who wish to specialize in software architecture.

Reading list

We've selected 13 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 Problem Solving, Python Programming, and Video Games.
Comprehensive introduction to Python programming. It covers all the basics of Python, including data types, control flow, functions, and object-oriented programming. It good choice for beginners who want to learn Python in depth.
This free online book comprehensive introduction to Python programming. It covers all the basics of Python, and it includes many examples and exercises. It good choice for beginners who want to learn Python at their own pace.
Teaches how to use Python to automate tasks. It covers a wide range of topics, including web scraping, data analysis, and file manipulation. It good choice for beginners who want to learn how to use Python for practical applications.
Teaches data structures and algorithms in Python. It covers a wide range of topics, including linked lists, trees, and graphs. It good choice for intermediate students who want to learn how to implement data structures in Python.
Comprehensive introduction to algorithms. It covers a wide range of topics, including sorting, searching, and graph algorithms. It good choice for intermediate students who want to learn more about algorithms.
Classic introduction to algorithms. It covers a wide range of topics, including sorting, searching, and graph algorithms. It good choice for intermediate students who want to learn more about algorithms.
Guide to writing clean and maintainable code. It covers a wide range of topics, including naming conventions, formatting, and testing. It good choice for intermediate and advanced students who want to learn more about software development.
Classic guide to design patterns. It covers a wide range of design patterns, including creational patterns, structural patterns, and behavioral patterns. It good choice for intermediate and advanced students who want to learn more about software design.
Classic guide to computer science. It covers a wide range of topics, including algorithms, data structures, and programming languages. It good choice for intermediate and advanced students who want to learn more about computer science.
Fast-paced introduction to Python programming. It covers the basics of Python, and it includes many projects that allow readers to practice their skills. It good choice for beginners who want to learn Python quickly and easily.

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