Explore techniques of refactoring code, the process of changing a computer program source code without modifying its external functional behavior, in this 14-video course exploring design patterns and challenges in refactoring code. First, learn the essential machine learning principles when planning code, including how to identify what instead of how, and to look for consistencies. You will then learn to recognize the causes of technical debts that contribute to challenges in existing code. Next, you will learn code refactoring techniques and types of processes that you can use to eliminate deficiencies in the code. This course demonstrates the refactoring capabilities provided by PyCharm to refactor Python code, and the steps involved in optimizing Python code. You will learn static code analysis of Python by using Prospector, refactoring code to ensure backward compatibility, and the role of design patterns in code refactoring, and how to use rope to refactor Python code. Finally, you will learn to recall the prominent antipatterns that potentially complicate code and code refactoring.