Go to Course: https://www.coursera.org/learn/problem-solving-programming-video-games
### Course Review: Problem Solving, Python Programming, and Video Games If you're interested in diving into the world of computer science and programming through an engaging medium like video games, the Coursera course "Problem Solving, Python Programming, and Video Games" offers an excellent blend of theory, practical skill-building, and creativity. It is designed for beginners, making it perfect for those who have little to no prior programming experience but are eager to learn. #### Course Overview This course serves as an introduction to computer science and programming using Python, one of the most accessible and widely-used programming languages. With a clear focus on problem-solving, the curriculum emphasizes techniques such as abstraction and problem decomposition, allowing learners to systematically tackle computational problems. By the end, participants will be capable of coding, testing, and debugging their own Python programs based on the designs they create. #### Syllabus Breakdown The course consists of 12 modules, each building upon the last and covering increasingly complex concepts and techniques. 1. **Module 0: Introduction** - Establishes the foundational aspects of the course, including an introduction to the instructional team and the main themes. 2. **Module 1: Design Hacking Version 1** - Introduces the game design process, leveraging problem decomposition and algorithms. You’ll create the first iteration of a text-based game, "Hacking." 3. **Module 2: Program Hacking Version 1** - Focuses on basic Python programming, introducing fundamental Python expressions and types, allowing you to write, test, and debug your first game version. 4. **Module 3: Hacking Version 2** - Explores graphical libraries and problem-solving through abstraction. New concepts in Python are introduced to enhance the game. 5. **Module 4: Hacking Version 3** - Introduces selection control structures to modify game design and learn about conditionals in Python. 6. **Module 5: Hacking Versions 4 & 5** - Delve into more complex control abstractions, enabling loops and iterations, to build on your previous versions. 7. **Module 6: Hacking Version 6** - Teaches user-defined functions to improve your code quality significantly. 8. **Module 7: Hacking Version 7** - A hands-on exercise that allows you to refine and add features to your game, thus solidifying your understanding. 9. **Module 8: Poke the Dots Versions 1 & 2** - Transitioning to a new game, this module focuses on graphical game design and the introduction of classes in Python. 10. **Module 9: Poke the Dots Version 3** - Another opportunity to apply your knowledge creatively by enhancing your game. 11. **Module 10: Poke the Dots Version 4** - Introduces user-defined methods to encapsulate attributes of classes, enhancing your coding skills. 12. **Module 11: Poke the Dots Version 5** - A final module that allows you to polish your newly created game with additional features. #### Key Features and Benefits - **Interactive Learning**: The course incorporates interactive learning tools like description builders and test plan creators, which facilitate hands-on practice. - **Incremental Learning**: Each module builds on the previous one, reinforcing learnings and ensuring that you develop a solid understanding of programming concepts. - **Game Development Focus**: By using video games as a vehicle for learning, the course keeps the material engaging and relatable. - **Practical Problem Solving**: The use of real-world problem-solving techniques encourages not only technical skills but also critical thinking. - **Community Support**: Coursera provides a platform for discussions and collaborations, allowing you to learn from peers and instructors. #### Final Recommendations I highly recommend "Problem Solving, Python Programming, and Video Games" to anyone looking to jumpstart their programming journey, especially those who have an interest in video games. This course offers a unique approach that combines theoretical understanding with practical application, making it easier to grasp complex concepts. Whether you're a student, a professional looking to switch gears, or just curious about programming, this course is an excellent choice. Completing this course will not only give you a foundational understanding of programming in Python, but also equip you with valuable skills in problem-solving and design thinking that can be applied in various fields. Dive in, have fun, and perhaps discover your passion for programming and game development!
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.
Module 1: Design Hacking Version 1In 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 1In 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 2In 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 3In 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 & 5In 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 6In 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 7In 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 & 2In 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 3In 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 4In 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 5In 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.
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
excellent course. The syntax analysis was rather hard at times but it gave a more systematic approach to programming. What gained over programming skills is actually efficiency in programming.
This Course was very interesting to complete. It taught me many problem solving techniques, and had a great time to learn Python programming.
Very Informative by helping you learn programming long term!
Great course! However, not sure all the lexical stuff helped me doing the actual code writing, at least for me.
Great course! I learned a lot and it gave me a good feel for programming.