Problem Solving in Practice: The Indispensable Programming Mindset and the Essence of Optimization in the AI Era
When AI writes the code, your job is to think — master the core algorithmic thinking that keeps engineers irreplaceable.
💡 Why learn problem solving in the age of AI?
“If AI can already write code quickly, why should we still spend time learning algorithms and problem-solving techniques?”
The answer: AI has changed how code is produced, but the ability to understand a problem, design a solution, and judge the result remains indispensable.
Code that runs is not the same as a problem that is solved. Faced with different constraints, data sizes, and use cases, we still need to ask: Is the solution correct? Have we overlooked any edge cases? Is there a more efficient approach?
This course is not about memorizing solution templates, nor does it assume there is only one standard way to think about each problem.
Through a large number of real-world problem-solving examples, we will walk through the process from understanding a problem and exploring different ideas to designing and optimizing a solution. Along the way, we hope you will start to notice the connections between different problems, distill the concepts and techniques worth keeping, and ultimately develop a problem-solving mindset of your own.
🎯 What you will learn
- Problem decomposition and the problem-solving mindset: Learn from real-world examples how to analyze requirements, understand constraints, and find promising directions toward a solution.
- Algorithm design and performance optimization: Explore the principles behind different solutions, understand time and space complexity — for example, the difference between
and — and the trade-offs between different choices. - AI collaboration and code review: Practice checking AI-generated solutions for correctness, spotting potential issues, and thinking about how to improve them further.
- From problems to real applications: Extend the concepts of algorithms and data structures to real software components, and see how this knowledge applies to real engineering problems.
👥 Who this course is for
- Programming learners: You already have basic programming skills and want to build a stronger problem-solving mindset through real-world examples.
- Programming contestants: You are preparing for or taking part in programming competitions and want to see different problem-solving strategies, broaden your perspective, and gain practical experience.
- Software developers: You want to sharpen your skills in problem analysis, performance optimization, and code review, so that your technical judgment is better grounded.
- AI-assisted developers: You often generate code with AI and want to do more than get an answer — you want to understand, verify, and improve the solutions AI gives you.
📌 Before you start
You should be comfortable with at least one programming language, including basics such as variables, conditionals, loops, functions, and arrays, and be able to write simple programs on your own.
The concepts in this course are not tied to any particular language. Example code will use whichever language suits the problem and context, and you are welcome to follow along in a language you are familiar with.
No advanced mathematical background is required. Necessary concepts such as time and space complexity will be explained through practical examples during the course.
Some problems come from online judges such as LeetCode, as well as officially published past competition problems. The course links to the original problem statements rather than reproducing them, so we recommend creating accounts on the relevant platforms to submit and verify your own solutions. This course does not represent the position of any competition organizer or problem-solving platform.
Units on working with AI will use AI tools to generate solutions and then review them. You can use any AI chat tool or coding agent you are familiar with; some services may require an account or a paid subscription.
Problem-solving ability comes not only from how many algorithms you know, but from how many problems you have seen, how many possibilities you have considered, and whether you can apply past experience to new challenges.
In an era when AI can quickly turn ideas into code, we have more opportunities to try different solutions and keep improving them through implementation and verification. As the barrier to implementing ideas keeps falling, the ability to come up with good ideas and judge whether they are feasible becomes all the more worth developing.