We may earn an affiliate commission when you visit our partners.
Course image
Dr. Mohammad Nauman

So you have taken an initial programming course or have learned the basics on your own. However, when you look at other people's code, or listen to their discussions, you see many concepts that seem alien stuff that you don't understand. So, the question is: how do you go from a beginning level programmer to the expert level? How do you become a guru?

Read more

So you have taken an initial programming course or have learned the basics on your own. However, when you look at other people's code, or listen to their discussions, you see many concepts that seem alien stuff that you don't understand. So, the question is: how do you go from a beginning level programmer to the expert level? How do you become a guru?

This course answers this question. In it, we will be building on top of your existing basic understanding of the Python language (and programming in general). We will cover concepts that will take you to the next level of programming expertise. These will include language constructs that are typically not covered in a beginner level course. Concepts like generators, decorators, callbacks, higher order functions, context managers and others.

We will also discuss some tools that are not difficult but are essential to the life of a professional programmer. An example of this is logging for tracking down bugs a simple technique that is used in all production level software but is never touched upon in typical programming courses.

We will discuss parallel programming multi-threading and synchronization issues another important concept you must understand to code in a production environment. We discuss these through a case study to explain WHY you need them as well as HOW to use them.

Closely related to this, a highly important concept in today's programming practice is the idea of asynchronous programming more commonly known as asyncio. Python and Javascript two of the most influential languages in today's development are heavily focused on this new paradigm and we will cover this in a very intuitive, easy to understand manner. For all concepts, we take a case study-based approach and motivate why we need the concepts we're seeing and how everything fits together.

Remember: the most important reason you're paying for a course is support. So, please ask questions in the Q&A forum if you ever get stuck. I have a maximum response time of around 15 hours not average, maximum. Please use this to your advantage ask questions and you should be able to breeze through this course and go beyond a basic level of programming to the next level where your code will take less time to write ... will be clean and much easier to maintain.

What will I learn?

  • Cross-cutting Tools (logging and testing)
  • Caveats in usage of lists
  • Intermediate Python concepts such as decorators, generators, context managers
  • Parallel programming, multithreading, synchronization, locks
  • Asynchronous programming (asyncio)
  • Plotting data
  • Regular Expressions (and how to not have headaches when using them)

About the instructor:

  • Teacher and researcher by profession
  • PhD in Security and a PostDoc from Max Planck Institute for Software Systems, Germany
  • 17+ years of working with computers and 15+ years of teaching experience
  • 10+ years of working professionally as a Linux System Administrator/VoIP DevOp including 5+ years of provable track record on UpWork (with 5.0 star rating there)

Target Audience:

Anyone who:

  • Has a basic understanding of Python but wants to take their skills to the next level
  • Wants to learn the tools and techniques used by expert professional programmers

What you need to know:

You should have knowledge of basic usage of Python (variables, conditionals, loops, basic list and dictionary usage, basic file handling)

Enroll now

What's inside

Learning objectives

  • Take your python skill to the next level
  • Stunning support. i answer questions on the same day.
  • Learn cross-cutting tools (logging and testing)
  • Understand caveats in usage of lists
  • Learn intermediate python concepts such as decorators, generators, context managers
  • Learn parallel programming, multithreading, synchronization, locks
  • Use asynchronous programming (asyncio)
  • Plot data
  • Modular regular expressions (and how to not have headaches when using them)

Syllabus

Introduction
Environment Setup and Jupyter Notebook
Cross-cutting Tools
Logging (and how to debug code in realtime)
Read more
Practice Activity: Logging
Testing and Test Driven Development (TDD)
Testing Examples
Practice Activity: Testing
Intermediate Programming Concepts
List Mutability and Deep Copying
Practice Activity: List Mutability
Generators and Memory Efficiency
Generators Case Study
Higher-Order Functions
Callbacks
Practice Activity: Generators
Time Saving Features
Decorators
Decorator Case Study - Memoize
Practice Activity: Decorators
Context Managers
More on Context Managers
Practice Activity: Context Managers
Parallel and Asynchronous Programming
Multithreading - Multiple Tasks Simultaneously
Synchronization Issues and Locks
Practice Activity: Multithreading
Practice Activity: Locks
Asynchronous Programming (Asyncio, Async/Await)
Practice Activity: Asynchronous Programming
Functional Programming
Basics of Functional Programming, Map
Filter and Reduce, Rationale for Functional Programming
Practice Activity: Functional Programming
Applications
Plotting Intro
Plotting Case Study
Practice Activity: Plotting
Pattern Matching with Regular Expressions
Modular RegExp (and How Not to Have Headaches with RegExp)
Extracting Matched Strings with RegExp
Practice Activity: Regular Expressions
Extra Resources
Bonus Lecture

Good to know

Know what's good
, what to watch for
, and possible dealbreakers
Develops advanced Python concepts such as decorators, generators, context managers, and asynchronous programming, which are core skills for professional programmers
Covers intermediate Python features and tools, helping learners enhance their coding skills and efficiency
Emphasizes practical knowledge by incorporating case studies and hands-on activities, allowing learners to apply concepts directly
Provides a comprehensive understanding of cross-cutting tools (logging and testing) and their importance in professional development
Instructed by Dr. Mohammad Nauman, an experienced researcher and teacher, ensuring quality instruction
Suitable for individuals with a basic understanding of Python who seek to advance their programming skills to the expert level

Save this course

Save Beyond Basic Programming - Intermediate Python to your list so you can find it easily later:
Save

Activities

Be better prepared before your course. Deepen your understanding during and after it. Supplement your coursework and achieve mastery of the topics covered in Beyond Basic Programming - Intermediate Python with these activities:
Review Python Basics
Refreshes basic Python concepts to provide a stronger foundation for learning intermediate concepts
Browse courses on Python
Show steps
  • Review variables, data types, and operators
  • Practice writing simple Python scripts
Organize Course Notes and Materials
Improves organization and facilitates easy access to course materials
Show steps
  • Review lecture notes, assignments, and other course materials
  • Create a structured system for organizing these materials
  • Use digital tools or physical notebooks to maintain the organization
Engage in Python Discussion Groups
Fosters collaboration, knowledge sharing, and peer support
Show steps
  • Join online forums or discussion groups dedicated to Python
  • Participate in discussions, ask questions, and share knowledge
Three other activities
Expand to see all activities and additional details
Show all six activities
Work through Python Coding Exercises
Provides hands-on practice to reinforce understanding of intermediate Python concepts
Browse courses on Python Programming
Show steps
  • Attempt coding exercises from online platforms like LeetCode or HackerRank
  • Implement the solutions in Python
  • Debug and refine the code
Study Advanced Python Techniques
Enhances understanding of complex Python concepts through guided learning
Browse courses on Advanced Python
Show steps
  • Identify specific Python techniques to focus on
  • Find reputable online tutorials or courses covering these techniques
  • Follow the tutorials, complete exercises, and implement examples
Read 'Effective Python'
Provides insights into best practices and code quality in Python
Show steps
  • Obtain a copy of the book
  • Read through the book, making notes and highlighting key concepts

Career center

Learners who complete Beyond Basic Programming - Intermediate Python will develop knowledge and skills that may be useful to these careers:
Software Engineer
Software Engineers apply their understanding of computer science and software engineering principles in their daily work. It is crucial for Software Engineers to have a grasp of intermediate programming concepts such as decorators, generators, context managers, the caveats of list usage, higher-order functions, and callbacks. By enrolling in this course, you will develop these abilities, alongside tools that are not difficult but essential to the life of a professional programmer such as logging for tracking down bugs and even some exposure to parallel programming, multithreading, and synchronization issues. These concepts will provide you with a foundation to advance your career as a Software Engineer.
Data Scientist
Data Scientists use scientific methods, processes, algorithms, and systems to extract knowledge and insights from data. They are required to have expertise in handling, preparing, and managing complex datasets. This course covers essential concepts like data plotting and functional programming basics such as map, filter, and reduce. These concepts are highly relevant to the field of Data Science, as they provide a structured approach to working with data. By understanding these techniques, you'll be able to improve your data analysis and visualization skills, which are essential for success as a Data Scientist.
Web Developer
Web Developers are responsible for the design and development of websites and web applications. In today's fast-paced development landscape, web developers need to stay updated with the latest tools and techniques. This course covers concepts like asynchronous programming (asyncio) which is becoming increasingly common in the development of modern web applications. Additionally, you will gain exposure to cross-cutting tools like logging and testing, which are essential to maintain high-quality code and improve productivity.
Mobile Developer
Mobile Developers create and maintain mobile applications for various platforms like iOS and Android. It is essential for Mobile Developers to have a strong foundation in programming and an understanding of mobile-specific technologies. This course offers a deep dive into intermediate Python concepts like decorators, generators, and context managers. These concepts are crucial in mobile development as they offer ways to write clean, efficient, and maintainable code. By mastering these techniques, you can enhance the performance and user experience of your mobile applications.
DevOps Engineer
DevOps Engineers bridge the gap between development and operations teams, ensuring smooth delivery, deployment, and maintenance of software applications. They require a comprehensive understanding of software development processes, tools, and infrastructure. This course provides exposure to parallel programming, multithreading, and synchronization issues – concepts that are essential for DevOps Engineers. By understanding how to manage concurrent tasks and handle synchronization, you can contribute to the efficient and reliable operation of software systems.
Quality Assurance Engineer
Quality Assurance Engineers are responsible for testing and ensuring the quality of software applications. They need to be proficient in testing techniques, tools, and methodologies. This course offers training in cross-cutting tools such as logging and testing, which are essential for Quality Assurance Engineers. By learning how to effectively log and test code, you can contribute to the development of high-quality software products.
Systems Administrator
Systems Administrators maintain and manage computer systems and networks. They require a deep understanding of operating systems, networking, and system administration tools. This course covers topics like logging and context managers, which are crucial for Systems Administrators. By gaining proficiency in these concepts, you can efficiently manage system logs, track system behavior, and troubleshoot issues, contributing to the smooth operation of IT systems.
Data Analyst
Data Analysts collect, clean, analyze, and interpret data to extract meaningful insights. They need to be proficient in data analysis techniques and tools. This course offers training in data visualization and regular expressions. These concepts are essential for Data Analysts as they help in presenting data in an easily understandable format and extracting valuable information from text data. By mastering these techniques, you can become more effective in communicating data-driven insights.
Database Administrator
Database Administrators are responsible for managing and maintaining databases. They need to have a strong understanding of database systems, data structures, and query optimization. This course covers topics like context managers, which are useful for managing database connections and transactions. By understanding how to use context managers effectively, you can improve the efficiency and reliability of your database operations.
Technical Writer
Technical Writers create and maintain technical documentation, such as user manuals, white papers, and training materials. They need to have a clear understanding of technical concepts and the ability to communicate them effectively. This course offers training in writing clear and concise documentation. Additionally, you will gain exposure to tools like logging and testing, which are essential for documenting software systems. By mastering these techniques, you can become more proficient in producing high-quality technical documentation.
Product Manager
Product Managers are responsible for defining, developing, and launching new products or features. They need to have a clear understanding of market trends, customer needs, and product development processes. This course may be helpful for Product Managers as it offers training in understanding intermediate Python concepts and tools. By gaining proficiency in these concepts, you can contribute to the development of innovative and user-friendly products.
Business Analyst
Business Analysts gather and analyze business requirements to help organizations improve their processes and systems. They need to have a strong understanding of business principles, data analysis techniques, and project management. This course may be helpful for Business Analysts as it offers training in data visualization and regular expressions. By gaining proficiency in these concepts, you can contribute to the effective analysis and communication of business data.
Project Manager
Project Managers plan, execute, and close projects. They need to have a strong understanding of project management methodologies, risk management, and stakeholder management. This course may be helpful for Project Managers as it offers training in understanding cross-cutting tools like logging and testing. By gaining proficiency in these concepts, you can improve the planning, execution, and delivery of your projects.
Technical Support Specialist
Technical Support Specialists provide technical assistance to customers and users. They need to have a strong understanding of technical products and services, as well as excellent communication and problem-solving skills. This course may be helpful for Technical Support Specialists as it offers training in understanding intermediate Python concepts and tools. By gaining proficiency in these concepts, you can become more effective in providing technical support and resolving customer issues.
Computer Systems Analyst
Computer Systems Analysts study the needs of businesses and design and implement computer systems to meet those needs. They need to have a strong understanding of computer hardware, software, and networks, as well as systems analysis and design techniques. This course may be helpful for Computer Systems Analysts as it offers training in understanding intermediate Python concepts and tools. By gaining proficiency in these concepts, you can contribute to the design and implementation of effective computer systems.

Reading list

We've selected seven books that we think will supplement your learning. Use these to develop background knowledge, enrich your coursework, and gain a deeper understanding of the topics covered in Beyond Basic Programming - Intermediate Python.
Provides a deep dive into the Python language, covering advanced topics such as decorators, generators, and metaprogramming.

Share

Help others find this course page by sharing it with your friends and followers:

Similar courses

Here are nine courses similar to Beyond Basic Programming - Intermediate Python.
Certified Associate in Python Programming Certification...
Introduction to Open Source Application Development
Concepts in Python: Loops, Functions and Returns
Selenium WebDriver 4 With Python - Novice To Ninja [2024]
Complete Guide to Python Multithreading and...
Problem Solving, Python Programming, and Video Games
Python for the Absolute Beginner
Python Programming Essentials
Data Analyst Nanodegree
Our mission

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.

Affiliate disclosure

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.

© 2016 - 2024 OpenCourser