This course is designed for those who want to go beyond theoretical knowledge and develop skills in working with production code. Regardless of your level of experience - whether you are a junior developer looking to improve your skills or a data specialist who wants to structure your code - the course will help you move on to more complex tasks.
The 30-Day Design Challenge
The course offers 30 engaging software design assignments that will unlock your potential in problem-solving and creative programming approaches. You will encounter tasks of varying complexity: from simple examples focusing on design principles to deep practical exercises, such as creating an API with FastAPI and SQLAlchemy, working with GUI code, functional and object-oriented programming, as well as detailed type annotations in Python.
About the Author: ArjanCodes
My name is Aryan, I am a software developer and educator with a passion for creating beautiful, efficient, and reliable software.
I was born in a small village in the north of the Netherlands in 1977. From a young age, I was fascinated by technology, especially computers. When I was 9 years old, I persuaded my parents to buy our first computer, a Commodore 16, which sparked my love for programming. I spent days playing and creating code in Basic.
I was always interested in how to make programs more efficient and organized, so they would be easier to modify. At the age of 10, I was already thinking about separating data and business logic!
My passion for programming led me to study computer science at university, where I delved deeper into the world of programming and earned a PhD in computer graphics. I worked at the university for 10 years, teaching computer science to students and developing effective methods for easy comprehension of information.
After a while, I realized that I wanted to apply my skills in practice. I left the university and founded a software company with a friend, developing several products used by thousands of people. This gave me valuable lessons in creating scalable software and flexible architectures that allow for quick adaptation.
Watch Online 53 lessons
| # | Lesson Title | Duration | Access |
|---|---|---|---|
| 1 | Welcome! Demo | 01:59 | |
| 2 | Solution: KISS | 02:14 | |
| 3 | Solution: Type Annotations | 09:34 | |
| 4 | 5 Tips To Achieve Low Coupling In Your Python Code | 18:30 | |
| 5 | Solution: Decoupling | 03:31 | |
| 6 | Solution: DRY | 03:42 | |
| 7 | F-strings In Python_ Everything You Need To Know | 23:29 | |
| 8 | Solution: String Formatting | 02:33 | |
| 9 | Solution: Law Of Demeter | 03:19 | |
| 10 | Solution: Better Discounts | 04:32 | |
| 11 | The Strategy Pattern_ Write BETTER PYTHON CODE Part 3 | 15:31 | |
| 12 | How to Implement the Strategy Design Pattern in Python | 27:20 | |
| 13 | Solution: Payment Strategy | 03:08 | |
| 14 | Why the Plugin Architecture Gives You CRAZY Flexibility | 24:06 | |
| 15 | Solution: Plugins | 05:52 | |
| 16 | Functions vs Classes_ When to Use Which and Why_ | 10:49 | |
| 17 | Solution: Object Oriented To Functional | 06:32 | |
| 18 | Cohesion and Coupling_ Write BETTER PYTHON CODE Part 1 | 26:14 | |
| 19 | Solution: Cohesion | 03:53 | |
| 20 | Which Software Architecture Should You Use_ MVC, MVP, or MVVM_ | 24:27 | |
| 21 | Solution: MVP | 05:18 | |
| 22 | Composition Is Better Than Inheritance in Python | 23:29 | |
| 23 | Solution: Inheritance | 03:39 | |
| 24 | Dependency INVERSION vs Dependency INJECTION in Python | 17:52 | |
| 25 | Solution: Abstraction | 02:26 | |
| 26 | You Can Do Really Cool Things With Functions In Python | 19:47 | |
| 27 | Solution: Higher-Order Functions | 03:12 | |
| 28 | Solution: Configuration | 02:59 | |
| 29 | Next-Level Concurrent Programming In Python With Asyncio | 19:19 | |
| 30 | How To Easily Do Asynchronous Programming With Asyncio In Python | 23:09 | |
| 31 | Solution: Concurrency | 08:18 | |
| 32 | Solution: Refactoring | 03:36 | |
| 33 | A Deep Dive Into Iterators and Itertools in Python | 21:01 | |
| 34 | Solution: Itertools | 02:10 | |
| 35 | Solution: Inappropriate Intimacy | 01:58 | |
| 36 | End of Part 1 | 00:32 | |
| 37 | Real-Life Case of the Command Design Pattern | 32:25 | |
| 38 | Solution: Undo/Redo | 03:32 | |
| 39 | Raw SQL, SQL Query Builder, or ORM? | 16:19 | |
| 40 | Solution: SQL to ORM | 04:29 | |
| 41 | Solution: Unit Tests (Basic) | 02:48 | |
| 42 | Solution: Unit Tests (Advanced) | 02:15 | |
| 43 | Solution: Operations Layer | 04:35 | |
| 44 | Solution: Ticket Cancellation | 03:32 | |
| 45 | Observer Pattern Tutorial: I NEVER Knew Events Were THIS Powerful | 15:17 | |
| 46 | Solution: Messaging | 04:30 | |
| 47 | Attrs, Pydantic, or Python Data Classes? | 17:10 | |
| 48 | Do We Still Need Dataclasses? // PYDANTIC Tutorial | 16:33 | |
| 49 | Solution: Validation | 02:30 | |
| 50 | Let's Take The Bridge Pattern To The Next Level | 17:13 | |
| 51 | Solution: Bridge | 04:52 | |
| 52 | Solution: Mixins | 03:33 | |
| 53 | Wrapping Things Up | 00:57 |
Get instant access to all 52 lessons in this course, plus thousands of other premium courses. One subscription, unlimited knowledge.
Learn more about subscription