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

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
Module 1: Design Hacking Version 1
In Module 1, you will explore the game creation process that is used in this course. You will use this process to design Version 1 of the first game, Hacking. You will use two problem-solving techniques: problem decomposition and algorithms. You will explore five criteria for problem decomposition: experiential decomposition, feature selection, problem refinement, spatial decomposition, and temporal decomposition. To create your design for Hacking Version 1, you will use three interactive learning objects: the description builder, functional test plan builder, and algorithm builder.
Module 2: Program Hacking Version 1
In Module 2, you will discover how lexics, syntax, and semantics can be used to understand and describe programming languages. You will use these concepts to understand your first Python statement (expression statement), first three Python expressions (literal, identifier, function call), and first five Python types (int, str, float, function, NoneType). You will use these Python constructs to write, test, and debug Hacking Version 1, a text-based game version. You will then reflect on your game version by using a third problem-solving technique called abstraction, including the specific technique of solution generalization, to solve similar problems.
Module 3: Hacking Version 2
In Module 3, you will identify solution issues in your game. You will apply a second form of the abstraction problem-solving technique, called using templates, to solve a solution issue by using a graphics library. You will then use lexics, syntax, and semantics to learn two new Python statements (assignment, import), two new Python expressions (binary expression, attribute reference), and one new Python type (module). You will employ these Python constructs and a simple graphics library to write, test, and debug Hacking Version 2.
Module 4: Hacking Version 3
In Module 4, you will modify your game design to support multiple gameplay paths using a new problem decomposition criteria called case-based decomposition, which utilizes a selection control structure. You will learn one new Python statement (if), one new Python expression (unary expression), and one new Python type (bool). You will employ these Python constructs to write, test, and debug Hacking Version 3.
Module 5: Hacking Version 4 & 5
In Module 5, you will modify your game design using two new abstraction techniques, called control abstraction and data abstraction. You will explore two different control abstractions, called definite and indefinite repetition. You will learn two new Python statements (for, while), four new Python expressions (subscription expression, expression list, parenthesized expression, list display), and three new Python types (tuple, list, range). You will employ these Python constructs to write, test, and debug Hacking Version 4 and Hacking Version 5.
Module 6: Hacking Version 6
In Module 6, you will learn a new control abstraction called a user-defined function. You will learn how to implement user-defined functions using two new Python statements (function definition, return). You will employ these Python constructs to significantly improve the quality of your code in Hacking Version 6.
Module 7: Hacking Version 7
In Module 7, you will not learn any new problem-solving techniques or Python language features. Instead you will exercise your problem-solving skills and practice the language constructs you already know to improve your proficiency. You will add some fun features to the Hacking game by designing, coding, testing, and debugging Hacking Version 7.
Module 8: Poke the Dots Version 1 & 2
In Module 8, you will design and implement Version 1 of a new graphical game called Poke the Dots. You will then modify your game design using data abstraction to create user-defined classes. You will learn two new Python statements (class definition, pass) that will allow you to construct your own Python types. You will employ these Python constructs to implement Poke the Dots Version 2.
Module 9: Poke the Dots Version 3
In Module 9, you will not learn any new problem-solving techniques or Python language features. Instead you will exercise your problem-solving skills and practice the language constructs you already know to improve your proficiency. You will add some fun features to the Poke the Dots game by designing, coding, testing, and debugging Poke the Dots Version 3.
Module 10: Poke the Dots Version 4
In Module 10, you will modify your game design using a new form of control abstraction called user-defined methods. User-defined methods allow you to restrict access to the attributes of a class to improve data abstraction. You will employ user-defined methods to implement Poke the Dots Version 4.
Module 11: Poke the Dots Version 5
In Module 11, you will not learn any new problem-solving techniques or Python language features. Instead you will exercise your problem-solving skills and practice the language constructs you already know to improve your proficiency. You will add some fun features to the Poke the Dots game by designing, coding, testing, and debugging Poke the Dots Version 5.

Good to know

Know what's good
, what to watch for
, 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

Save Problem Solving, Python Programming, and Video Games to your list so you can find it easily later:
Save

Reviews summary

Python programming for problem solvers

Learners say this in-depth course provides a solid understanding of Python programming, problem-solving, and computer science fundamentals. It features interactive exercises and projects that gradually build learners' skills. While some learners found the course challenging, many appreciated its thorough explanations and clear videos. The course also delves into the lexical, syntactic, and semantic aspects of Python, which some learners found to be overwhelming but others found to be informative.
The course is demanding, but it equips you with valuable knowledge of Python and programming practices.
"I am incredibly grateful for this course. The depth and detail of the content provided me with an extensive understanding of the subject matter."
"It is a challenging course, but at the same time it allows you to learn a lot about the python language and how to develop a project from scratch."
"This course took a fair amount of effort, (I'm not a programmer), but it was an effective use of time whilst engaged in a Covid isolation after returning from a trip abroad, followed by a later lock-down."
The course places a strong emphasis on lexical, syntactic, and semantic analysis, which some learners found to be overwhelming but others found to be beneficial.
"Kursus ini memberikan pemahaman mengenai ilmu komputer khusunya pemrograman bahasa python. Selain itu, kursus ini juga mempelajari PVG atau python vidio game, dimana python dan vidio game digunakan untuk mendemonstrasikan ilmu komputer dengan konsep yang lebih menyenangkan, sehingga belajar tidak jadi membosankan namun lebih menyenangkan"
"This course provides an understanding of computer science, especially python programming."
"Great course! I learned a lot and it gave me a good feel for programming."
The course provides comprehensive and well-organized explanations of Python concepts and programming techniques.
"Many thanks to the instructional team for offering the course in such a structured way."
"A great course for introduction to Python and Video Games. I took this course to get more insights on Python since I learned a little before college started and now, I got a feel of this new type of skill."
"Found this to be a very thorough introduction to Python and quite different from other programming courses I have participated in."
The course uses a hands-on approach with projects and exercises that allow learners to apply their knowledge and develop their skills.
"I really liked the program. I knew python before starting this course and I could program in it but I always lacked confidence that I might not know some basics."
"This course takes you from a beginner and develop you to become to an intermediate level."
"This course was exactly what I was looking for, I needed an intro to programming within video games but all the other courses I have taken did not go into the concepts in depth."
Some learners found the initial theoretical discussions to be dry and overwhelming.
"More than just a python tutorial, the course develops a correct approach to the whole programming process."
"The course is very boring. Hard to stay awake"
"This course seems like it could be interesting but the initial legwork to get the software and everything is too steep."

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

Here are nine courses similar to Problem Solving, Python Programming, and Video Games.
Introduction to Programming
Most relevant
Computer Science 101: Master the Theory Behind Programming
Most relevant
Introduction to Computer Science and Programming Using...
Most relevant
Compose and Program Music in Python using Earsketch
Most relevant
Intro to Computer Science
Most relevant
404: Programming Languag
Most relevant
Introduction to Open Source Application Development
Most relevant
Introduction to Programming
Most relevant
Principles of Computing (Part 1)
Most relevant
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