Python is an easy to learn, powerful programming language. If you're a developer who wishes to build a strong programming foundation with this simple yet powerful programming language Python, then this course is for you.
Python is an easy to learn, powerful programming language. If you're a developer who wishes to build a strong programming foundation with this simple yet powerful programming language Python, then this course is for you.
This learning path is your step-by-step guide to exploring the possibilities in the field of Go. With this course, you'll start with understanding the principles of refactoring, & spot opportunities by identifying code that requires refactoring. Also, you will be shown how to remove Python anti-patterns from your programs in simple steps. Next, you will learn how you can increase the speed & performance of your code with quick tips, tricks, and techniques for loops, data structures, object-oriented programming, functions, and more. Finally, after all this, its time to troubleshoot Python Application Development Quickly detect which lines of code are causing problems, and fix them quickly without going through lakhs of pages.
Contents and Overview
This training program includes 3 complete courses, carefully chosen to give you the most comprehensive training possible.
The first course, Refactoring Python Code starts with teaching you to resolve Python anti-patterns with techniques and methods to improve the design of your existing code. Tackle bugs by understanding the principles of refactoring, and learn to spot opportunities by identifying code that requires refactoring. We will also show you how to build test-driven processes to make refactoring easier. This course will show you how to remove Python anti-patterns from your programs in simple steps. We cover specific techniques for refactoring and improving the sloppy Python code. Take this course if you want to have a legacy Python code base with a lot of issues. Apply real-world refactoring techniques, and turn your code into clean, efficient, and maintainable projects.
The second course, Python Tips, Tricks, and Techniques will take you from a Python outsider to an insider. You will benefit from insights from the Python documentation, PEPs, and online developer communities to learn the ultimate Pythonic ways to tackle common programming patterns. This course covers tips, tricks, and techniques for loops, data structures, object-oriented programming, functions, and more, helping you work on ordered collections and key-value stores for dictionaries. You will be able to increase the speed and performance of your code while making it easier to debug. Start writing cleaner code for your applications and learn to organize it better in just 3 hours. No other course can transform every corner of your Python code. Take this course NOW and become an overnight Python rockstar developer.
The third course, Troubleshooting Python Application Development takes you through a structured journey of performance problems that your application is likely to encounter, and presents both the intuition and the solution to these issues. You'll get things done, without a lengthy detour into how Python is implemented or computational theory. Quickly detect which lines of code are causing problems, and fix them quickly without going through 300 pages of unnecessary detail.
About the Authors:
James Cross is a Big Data Engineer and certified AWS Solutions Architect with a passion for data-driven applications. He's spent the last 3-5 years helping his clients to design and implement huge scale streaming Big Data platforms, Cloud-based analytics stacks, and serverless architectures. He started his professional career in Investment Banking, working with well-established technologies such as Java and SQL Server, before moving into the big data space. Since then he's worked with a huge range of big data tools including most of the Hadoop eco-system, Spark and many No-SQL technologies such as Cassandra, MongoDB, Redis, and DynamoDB. More recently his focus has been on Cloud technologies and how they can be applied to data analytics, culminating in his work at Scout Solutions as CTO, and more recently with Mckinsey. James is an AWS-certified solutions architect with several years' experience designing and implementing solutions on this cloud platform. As CTO of Scout Solutions Ltd, he built a fully serverless set of APIs and an analytics stack based around Lambda and Redshift. He is interested in almost anything that has to do with technology. He has worked with everything from WordPress to Hadoop, from C++ to Java, and from Oracle to DynamoDB. If it's new and solves a problem in an innovative way he's keen to give it a go.
Colibri Ltd is a technology consultancy company founded in 2015 by James Cross and Ingrid Funie. The company works to help its clients navigate the rapidly changing and complex world of emerging technologies, with deep expertise in areas such as big data, data science, machine learning, and cloud computing. Over the past few years, they have worked with some of the world's largest and most prestigious companies, including a tier 1 investment bank, a leading management consultancy group, and one of the world's most popular soft drinks companies, helping each of them to make better sense of its data, and process it in more intelligent ways. The company lives by its motto: Data -> Intelligence -> Action.
Rudy Lai is the founder of QuantCopy, a sales acceleration startup using AI to write sales emails to prospects. After taking in leads from your pipelines, QuantCopy researches them online and generates sales emails from that data. It also has a suite of email automation tools to schedule, send, and track email performance—key analytics that all feedback into how our AI generates content. Prior to founding QuantCopy, Rudy ran HighDimension.IO, a machine learning consultancy where he experienced firsthand the frustrations of outbound sales and prospecting. As a founding partner, he helped startups and enterprises with HighDimension.IO's Machine-Learning-as-a-Service, allowing them to scale up data expertise in the blink of an eye. In the first part of his career, Rudy spent 5+ years in quantitative trading at leading investment banks such as Morgan Stanley. This valuable experience allowed him to witness the power of data, but also the pitfalls of automation using data science and machine learning. Quantitative trading was also a great platform from which to learn deeply about reinforcement learning and supervised learning topics in a commercial setting. Rudy holds a Computer Science degree from Imperial College London, where he was part of the Dean's List, and received awards such as the Deutsche Bank Artificial Intelligence prize.
This video provides an overview of the entire course.
This video is all about refactoring and its benefits.
Learn about clean code
Go through the DRY principle
In this video, we will understand the refactoring principles.
Learn about PEP8
Action DRY: the rule of three
Refactor if it helps you understand
There are a plethora of tools in Python that can help you refactor or write code cleanly the first time.
Learn about IDEs: Visual Studio Code, PyCharm, and Eclipse
Learn about Linters: Pylint, PEP8, and McCabe
Learn about Formatters: autopep8
This video is an overview of Python anti-patterns.
Learn about Python anti-patterns
Learn about the playbook: spot the problem, fix the problem
Go through the types of Python anti-patterns
In this video, we will go through the various types of Python anti-patterns.
Go through the various types of Python anti-patterns
Go through misapplied OOP
Duplicate code
This video is about Playbooks for removing anti-patterns.
Separate the general and the specific
Keep it simple
Move features around
In this video, we will be refactoring through splitting up functions.
Learn about Symptom
Learn why does splitting up the function helps
Refactor by hand
In this video, we will be refactoring through merging functions.
Learn about symptom
Learn why does splitting up the function helps
Refactor by hand
In this video, we will replace complex expressions with inner function calls.
Learn about symptom
Know what fix is needed
Learn why inner function calls help
In this video, we will be refactoring through local variable creation.
Learn about symptom
Know what fix is needed
Learn why local variables help
In this video, we will be assessing the correct class for fields and methods.
Explore the four situations
Understand the results
In this video, we will be moving functions around different classes to group functionality.
Move fields and methods
Create and merge new classes
Extracting common functionality into mixins
In this video, we will refactor delegate classes to remove double dependencies.
Learn about Delegates
Know why to hide delegates
Hide Delegates
In this video we will be removing middlemen classes to reduce needless complexity.
Know what middlemen classes are
Remove middlemen classes
This video is an introduction to pattern based refactoring.
Learn about Design Patterns
Learn about Creational Patterns
Learn about Structural Patterns
In this video, we will be using encapsulation methods for refactoring.
Look at a problem solution pair
Analyze the result
In this video, we will be removing multiple checks for None in your Python code.
Identify the issue
Create the Null object class
Use the Null object class
This video is all about Python refactoring using conditionals.
Combine conditional statements
Replace conditional with subclasses
In this video, we will be using rope, a Python refactoring library.
Know what a rope is
Understand what rope can do
Use features in rope
This video will show how to use codemods.
Learn about codemods
Explore the features and options in codemods
We will explore the tools available for refactoring, in this video.
Learn about PyCharm
Extract methods
Create new modules
This video gives an overview of the entire course.
Learn about creating empty lists then filling it with a for loop can be improved.
Create lists with list comprehensions
Modify lists with list comprehensions
In this video, we will see how to reduce for if loops into a simple one-liner.
Collapse conditional statements in for loops with list comprehensions
Learn how to operate on lists of lists with nested list comprehensions.
Operate on lists of lists with nested list comprehensions
Learn How to simplify the way you collapse nested lists.
Simplify the way you collapse nested lists
There are shortcuts to some common list operations that are not trivial to implement from scratch.
Reverse a list with slices
Head and tail a list with slices
In this video, we will learn about avoiding Key Errors.
Learn How to avoid KeyErrors with the defaultdict data structure
Learn about how to simplify the way you collapse nested dictionaries.
Simplify the way you collapse nested dictionaries
In this video, we will explore a surprising application of dictionaries to create Python switch statements.
Create Python switch statements
Learn how to merge two dictionaries with just one line of code.
Merge two dictionaries with just one line of code
Learn how to create a dictionary with list comprehension in Python.
Create a dictionary with list comprehension in Python
This video shows you how to count the occurrences of items quickly with Counter.
Learn how to count occurrences of items quickly with Counter
Explore the results
This video will show you how to create stacks or queues with deque objects.
Learn what Stacks or queues are
Create Stacks and queues with deque
Analyze the results
This video will show you how to group related values with tuples and sequences.
Group related values with tuples and sequences
Analyze the results
This video will show you how to gather unique sets of values with sets and frozensets.
Gather unique sets of values with sets and frozensets
Analyze the results
This video will show you how to power up your dictionaries with Ordered Dictionaries.
Learn how to power up your dictionaries with Ordered Dictionaries
Analyze the results
This video will show you the new ways of calling functions with arguments and kwargs.
Learn the new ways of calling functions with arguments and kwargs
Analyze the results
This video will show the implementation of one line functions with lambdas.
Understand one line functions with lambdas
Analyze the results
In this video we will see how to segment the code with functions within functions.
Segment your code with functions within functions
Analyze the results
This video will show how to create dynamic functions by returning functions.
Create dynamic functions by returning functions
Analyze the results
This video will show how to power up your functions by wrapping them with decorators.
Power up your functions by wrapping them with decorators
Analyze the results
In this video we will see How to copy and clone objects in the right way.
Copy and clone objects in the right way
Analyze the results
In this video, we will focus on the mini-classes of Python: namedtuples.
Understand mini-classes of Python: namedtuples
Analyze the results
Learn how to create smart values with static methods and properties.
Learn how to create smart values with static methods and properties
Analyze the results
This video will show the comparison of two different objects.
Compare two different objects
Analyze the results
Learn how to do real OOP by implementing abstract base classes in Python.
Understand OOP by implementing abstract base classes in Python
Analyze the results
This video will show how to enumerate the indices of your loops with no extra lines.
Enumerate the indices of your loops
Analyze the results
Learn how to underscore useless variables to make your code easier to look at.
Understand underscore useless variables
Make your code easier to look at
Analyze the results
This video will show uncommon “for..else” loop to end your iteration.
Understand the uncommon “for..else” loop to end your iteration
Analyze the results
In this video you will learn about pretty printing any Python Data Structure.
Learn about pretty printing any Python Data Structure
Analyze the results
This video shows how to manage your dynamic resources carefully with Context Managers.
Manage your dynamic resources carefully with Context Managers
Analyze the results
This video gives glimpse of the entire course.
Time is of essence and timeit is your tool. In this video we explore timeit.
Understand what is timeit
Set up our timing experiment
Run our timing experiment
In this video, we will look at profile module and understand where time is spent.
Understand what is profiling
Understand how Profiling our Fibonacci sequence generator is done
Profile the sequence generator using the least recently used cache
In this video we will explore and understand tips and tricks which will allow us to track time more precisely using cProfile.
Understand the difference between cProfile vs profile
Explore and create artificially slowed functions
Understand profiling using cProfile
In this video we will understand the memory_profiler.
Explore how to go about profiling a simple function
Explore and understand how profiling manual garbage collection is done
This video is all about reducing the execution time and memory consumption.
Understand what are slots
Create classes that use slots
Inspect the performance of slots vs class dicts
In this video we will use tuples instead of lists when your data does not change.
Understand what are tuples and how to declare them
We will see by example that tuples are fasters than lists
We will understand why are they faster than lists
Save on memory consumption with generators instead of lists.
What are generators?
Why are they memory efficient?
Implementing generators
Generators are designed for a specific purpose, here is when not to use them.
when you need features from a list
when you need to iterate through a list multiple times
Chain together a series of processes so one output is another's output.
Composing two generators
Using parenthesis to define generator comprehensions
Illustrate why we need to move from Python lists to NumPy arrays
Problem 1: Memory consumption of lists for large amounts of data
Problem 2: Dynamic Typing
Show how we can use NumPy and the different ways we can create NumPy arrays
The difference between NumPy arrays and lists
Creating NumPy arrays from Python lists
Creating NumPy arrays from NumPy helpers
Show that for large n, NumPy arrays are much faster than list comprehensions
Setting up our problem with list comprehensions
Setting up its cousin in NumPy
Comparing their performance
Show how to use broadcasting - applying binary functions on arrays of varying length
What is NumPy's broadcasting?
Broadcasting: an example
How broadcasting works - three examples
Show the simple interface of numexpr and where we can use it to optimize
What is numexpr?
How to use numexpr?
Use cases of numexpr
If you have a list of URLs, serially requesting the HTML body of each page is super slow
Using requests to scrape the HTML of a web URL
Timing 10 web scraping requests
What are coroutines and how they help you request all webpages at once
What is gevent?
What are semaphores?
Creating a gevent scraper
What is event driven concurrency, and how that can speed up web scraping
What is tornado?
What is an IO Loop?
Creating a tornado based scraper
Futures and asyncio driven concurrent web scraping
What is asyncio?
await and async
Creating an asyncio based scraper
Introduce the audience to parallel programming concepts.
What is parallel processing?
Embarrassingly parallel and less embarrassingly parallel
The global interpreter lock of Python
Show how the decorate-sort-undecorate pattern can be beaten
The decorate-sort-undecorate pattern
Beating the DSU pattern with a sort key
Show how we can use Pool to achieve multiprocessing
What is Pool?
Our first process Pool
Asynchronous process Pools
In this video we will understand how we can stop processes from interfering with each other using locks.
We will be using multiprocessing.Value to share variables
Why does it not add up?
Using a lock to remove overwrites
This video covers the effects of many processes.
Using the logging module
Creating the right logger format for multiprocessing
Logging multi-processes
This video is focused on understanding how to copy and clone objects the right way.
Identify the wrong object instance
Use the correct object clone
This video will show us how to mini-classes of Python: namedtuples
Learn about mini-classes of Python
In this video we will understand how to create smart values with static methods and properties.
Create smart values with static methods and properties
In this video we will be understanding how to compare two different objects.
Understanding how to compare two different objects
In this video we will explore how to do real OOP by implementing abstract base classes in Python.
Do real OOP by implementing abstract base classes in Python
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.
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.