We may earn an affiliate commission when you visit our partners.
Course image
Michael Eramo

Have you ever wanted to build your own online multiplayer game that you and your friends could play?  How about wanting to build your own chat room like the golden AOL chat rooms from the 1990's that you and your friends could "hang out" it.  Want to learn the underlying principles of how programs like these work - how they can communicate and send data back and forth from one computer to the next over the internet?  If the answer is yes, then please consider taking this course.

Read more

Have you ever wanted to build your own online multiplayer game that you and your friends could play?  How about wanting to build your own chat room like the golden AOL chat rooms from the 1990's that you and your friends could "hang out" it.  Want to learn the underlying principles of how programs like these work - how they can communicate and send data back and forth from one computer to the next over the internet?  If the answer is yes, then please consider taking this course.

I know in my own journey with Python and computer science, once I got past the basics...the fundamentals...the whole "this is a for loop.  Can you print the first 100 even numbers?" type exercises, the doors really opened up.  There was only one problem:  the doors opened up to a HUGE space, with very little guidance.  Python is great because you can do so much with it, especially when you start to bring in new modules and libraries that give added functionality.  While there are ample beginner resources out there willing to hold your hand and guide you through the learning, I felt there were significantly less targeting this intermediate audience...The audience that has learned the basics and are now looking for something more...

In this course, I decided to focus my intermediate projects around networking applications; I wanted to write programs that could talk to each other online, both across my local area network and across the internet as a whole.  With this in mind, I asked myself what are some fun and engaging projects students would enjoy learning with and what external modules and libraries should we know to accomplish these projects.   In this course we will complete the following:

  • A two-way terminal based chat introducing the socket module

  • A terminal based chat room introducing the threading module

  • A GUI chat room introducing the Tkinter module

  • How to configure your router to allow communication from an external network

  • An advanced GUI chat room with admin window introducing the json/pickle modules

  • An online multiplayer game introducing the Pygame module

Each project builds on the knowledge gained during the previous projects.  In our culminating project, when we attempt to create our own online multiplayer game, we will be generating IPV4/TCP sockets to connect computers to a server running on a machine with a static IP and port forwarding enabled, creating various threads to run processes concurrently on our machines, we'll use json to serialize python objects such as our game state and game players, and have a full interactive GUI interface using Pygame.

By the end of this course you will have multiple projects you can share with friends or family, have them run a client script from their house, connect to your server script, and show off all you learned. 

Enroll now

What's inside

Learning objectives

  • Networking fundaments such as ip and port addresses, ipv4, tcp, and udp protocols.
  • How to set up your own home network with static ip addresses and port forwarding so anyone can connect to your programs over the internet.
  • How to use the socket module to create a basic two way chat in the terminal.
  • How to use the threading module to create a basic chat room in the terminal.
  • How to use tkinter module to make a gui chat room like the old aol chat rooms.
  • How to use the json module to create an advanced gui chat room with and admin window.
  • How to use the pygame module to make your own online multiplayer game.
  • Show more
  • Show less

Syllabus

Installation and Setup
Course Preview
Python Installation and Setup
VS Code Installation
Read more

Traffic lights

Read about what's good
what should give you pause
and possible dealbreakers
Bridges the gap between basic Python knowledge and practical network application development, offering a guided path for intermediate learners
Culminates in building an online multiplayer game using Pygame, providing hands-on experience with game networking concepts
Covers networking fundamentals like IP addresses, TCP/UDP protocols, and socket programming, which are essential for network application development
Includes GUI chat room projects using Tkinter, offering practical experience in building graphical user interfaces for network applications
Teaches how to configure a home network with static IP addresses and port forwarding, enabling external access to created applications
Introduces JSON and Pickle modules for serializing Python objects, which is useful for transmitting data between networked applications

Save this course

Create your own learning path. Save this course to your list so you can find it easily later.
Save

Reviews summary

Practical python network applications

Learners say this course offers a highly practical, project-based approach to Python network programming. Students appreciate building real applications like chat rooms and a multiplayer game using sockets, threading, Tkinter, and Pygame. While the course provides a solid foundation for applying Python to networking, some reviewers note that it assumes a good grasp of Python basics and that setting up external connections like port forwarding can be challenging and may require additional research. Overall, it's seen as rewarding for those looking to move beyond beginner concepts.
Best for intermediate Python users.
"You definitely need to be comfortable with Python fundamentals before starting this course."
"Found some parts challenging as it moved quickly, assuming prior knowledge of certain concepts."
"This isn't a beginner Python course; it builds on existing skills."
"Recommend having a solid grasp of Python before attempting the projects."
Learn socket, threading, Tkinter, Pygame.
"Learned to use socket, threading, and Tkinter effectively through the projects."
"The Pygame section was a fun introduction to game networking concepts."
"I appreciate that it covered Json and Pickle for data handling."
"Exposed me to useful modules I hadn't used before, like threading for concurrency."
Great hands-on coding exercises.
"The hands-on projects are the best part of the course; they really make you learn."
"Building the chat application from scratch was a great way to understand how things connect."
"I finally understood sockets by coding the examples alongside the instructor."
"Creating the multiplayer game was challenging but incredibly rewarding."
External connection setup can be tricky.
"Setting up port forwarding outside my local network was the most difficult part."
"Needed to consult external resources to fully grasp the firewall and router setup."
"The section on connecting to the outside world could use more detailed troubleshooting help."
"Struggled a bit with getting the WAN communication to work reliably."

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 The Art of Doing: Python Network Applications with Sockets! with these activities:
Review Basic Python Syntax
Solidify your understanding of Python syntax to ensure a smooth learning experience in the course.
Browse courses on Python Syntax
Show steps
  • Review data types, loops, and conditional statements.
  • Practice writing simple Python scripts.
Review: Python Network Programming Cookbook
Gain practical insights into network programming with Python through real-world examples and recipes.
Show steps
  • Read relevant chapters on socket programming and network protocols.
  • Experiment with the code examples provided in the book.
Socket Programming Exercises
Reinforce your socket programming skills by completing a series of exercises.
Show steps
  • Find socket programming exercises online.
  • Complete the exercises, focusing on different socket types and protocols.
Four other activities
Expand to see all activities and additional details
Show all seven activities
Write a Blog Post on Sockets
Solidify your understanding of sockets by explaining the concepts in a blog post.
Show steps
  • Research socket programming concepts.
  • Write a clear and concise blog post explaining sockets.
  • Include code examples and diagrams.
Expand the GUI Chat Room
Extend the GUI chat room project by adding features like user authentication, private messaging, or file sharing.
Show steps
  • Plan the new features and design the user interface.
  • Implement the new features using Tkinter and Python.
  • Test the application thoroughly.
Review: Black Hat Python
Explore network security concepts and Python's role in building security tools.
Show steps
  • Read chapters related to network sniffing and packet manipulation.
  • Experiment with the code examples, focusing on security aspects.
Create a Network Monitoring Tool
Build a tool that monitors network traffic and displays relevant information.
Show steps
  • Design the tool's architecture and user interface.
  • Implement the tool using Python and relevant libraries.
  • Test the tool and document its functionality.

Career center

Learners who complete The Art of Doing: Python Network Applications with Sockets! will develop knowledge and skills that may be useful to these careers:
Network Programmer
A network programmer specializes in creating software that enables communication between devices over a network. This work often involves designing, developing, and maintaining network protocols and services. This course helps build a foundation for a career as a network programmer by providing hands-on experience in creating network applications using Python. The course covers essential networking concepts such as TCP and UDP connections, socket programming, and setting up network communication. Through projects like building a two-way terminal-based chat and a GUI chat room using Tkinter, learners gain skills in handling data transmission and managing concurrent connections, directly applicable to network programming tasks. Furthermore, learning to configure routers and implement port forwarding, as taught in this course, provides practical knowledge necessary for real-world network application deployment. Creating an online multiplayer game with Pygame offers exposure to advanced networking techniques.
Game Developer
A game developer is involved in the creation of video games for various platforms. This role can encompass many responsibilities, including programming game logic, designing gameplay mechanics, and implementing network functionality for multiplayer games. This course helps build a foundation for aspiring game developers, particularly those interested in online multiplayer games. The culmination of this course is the creation of an online multiplayer game using the Pygame module, which provides experience in developing game interfaces and handling network communication between players. The networking fundamentals covered in the course, such as TCP/UDP protocols and socket programming, are essential for developing networked games. Moreover, the course's focus on threading and data serialization using JSON prepares learners to manage concurrent game processes and transmit game state information efficiently, all critical skills for a game developer.
Technical Writer
Technical writers create documentation for software, hardware, and other technical products. This includes writing user manuals, API documentation, and tutorials. This course helps build the foundation for aspiring tech writers, particularly those interested in specializing in network or security software. Knowledge of networking principles is crucial for accurately explaining these applications. This course will provide practical experience in building network applications using Python, giving you a deeper technical understanding. You will gain expertise in concepts like TCP/UDP protocols, socket programming, and data serialization, which are essential for documenting network-related products effectively. The hands-on projects, such as building chat applications and multiplayer games, will give you valuable real-world examples to draw from in your writing. Furthermore, this course will help enhance your ability to effectively communicate complex network concepts to a broader audience.
Application Developer
Application developers design, develop, and maintain software applications for computers and other devices. This often includes creating user interfaces, implementing application logic, and ensuring seamless communication with other systems. This course may be useful for application developers interested in building networked applications. By focusing on network application development with Python, the course provides practical experience in creating applications that communicate over a network. Projects like building a terminal-based chat room and a GUI chat room using Tkinter helps build understanding of user interface design and network communication. The course also covers essential Python modules like socket, threading, and JSON, which are commonly used in application development. Understanding how to configure networks for external communication, as taught in this course, provides valuable insights into deploying applications in real-world environments. An application developer might find this course useful.
Software Engineer
Software engineers are involved in the design, development, testing, and maintenance of software systems. This role requires a strong understanding of programming principles, data structures, and algorithms. This course helps build the skills needed for software engineering, particularly for projects involving network communication. Through hands-on experience with Python and network application development, learners can gain practical knowledge of socket programming, threading, and data serialization. Creating chat applications and an online multiplayer game provides exposure to real-world software development challenges. The course's coverage of networking concepts, such as TCP/UDP protocols and port forwarding, is beneficial for software engineers working on distributed systems or network-dependent applications. A software engineer may find this course a good introduction to networking.
Quality Assurance Engineer
Quality assurance engineers are responsible for testing software and hardware to ensure that it meets quality standards. This includes writing test cases, executing tests, and reporting defects. The skills honed in this course may be a good addition to a quality assurance engineer's toolkit, especially for those involved in testing network-related applications. The course provides an overview of Python, socket programming, and other concepts, which are valuable in understanding how applications communicate over the network. Quality assurance engineers can leverage these skills to design more effective test cases and identify potential defects. The advanced GUI chat room project may especially be relevant.
Full-Stack Developer
Full stack developers work on both the front-end and back-end of web applications. This requires a broad understanding of various technologies, including front-end languages like HTML, CSS, and JavaScript, and back-end languages like Python. This course may be particularly useful for full stack developers interested in incorporating real-time communication features into their web applications. While the course focuses on desktop applications, the underlying networking concepts and Python skills are transferable to web development. The course covers the fundamentals of socket programming, threading, and data serialization using JSON, which can be applied to building real-time features. Understanding how to set up network communication and handle concurrent connections, as taught in this course, provides valuable insights for full stack developers. A full stack developer might find this course worthwhile.
Cybersecurity Analyst
Cybersecurity analysts protect computer systems and networks from cyber threats. This involves monitoring security systems, analyzing security breaches, and implementing security measures. This course may be relevant for cybersecurity analysts as it provides a foundational understanding of network communication. By learning how to create network applications using Python, cybersecurity analysts gain insights into how data is transmitted and received over a network. The course covers essential networking concepts, such as TCP/UDP protocols and socket programming, which are relevant to understanding network vulnerabilities. Moreover, the skills learned in this course can be used to develop tools for network monitoring and security analysis. A cybersecurity analyst might find this course relevant.
Network Administrator
Network administrators are responsible for maintaining and managing computer networks. This includes configuring network devices, troubleshooting network issues, and ensuring network security. This course may be valuable for network administrators as it provides a deeper understanding of network communication protocols and application development. Through hands-on experience with Python and network application development, network administrators can gain insights into how applications interact with the network. The course covers essential networking concepts, such as TCP/UDP protocols, socket programming, and port forwarding, which are relevant to network administration tasks. Understanding how to configure routers and set up network communication, as taught in this course, provides practical knowledge for network administrators.
DevOps Engineer
DevOps engineers focus on automating and streamlining the software development and deployment process. This role requires a broad understanding of both development and operations. This course may be beneficial for DevOps engineers as it provides practical skills in network application development and network configuration. By learning how to create network applications using Python, DevOps engineers gain insights into how applications communicate over a network. The course covers essential networking concepts, such as TCP/UDP protocols, socket programming, and port forwarding, which are relevant to deploying and managing network applications. A DevOps engineer might find the course useful.
Data Scientist
Data scientists analyze large datasets to extract meaningful insights and inform business decisions. This role requires a strong understanding of statistical analysis, machine learning, and data visualization. This course may be tangentially related to data science, particularly if the data scientist is working with network data. While the course focuses on network application development, the Python skills learned can be applied to data analysis tasks. The course covers essential Python modules, such as JSON, which are commonly used for data serialization and exchange. A data scientist focusing on network data might find this course helpful.
Systems Administrator
Systems administrators are responsible for the configuration, maintenance, and reliable operation of computer systems and servers. This includes installing new hardware and software, managing user accounts, and ensuring system security. This course may be related for systems administrators as it provides a foundational understanding of network communication and system interaction. While the course focuses on network application development, the Python skills learned can be applied to automating system administration tasks. The course covers essential networking concepts, such as TCP/UDP protocols and socket programming, which are relevant to understanding how systems communicate with each other. A systems administrator focusing on network operations might find this course helpful.
Technical Support Specialist
A technical support specialist provides assistance to users who are experiencing technical problems with computer systems, software, or hardware. This involves troubleshooting issues, providing guidance, and escalating complex problems to senior staff. This course may be of limited use for technical support specialists as it provides an understanding of network applications. While the course focuses on network application development, the Python skills learned are not directly relevant to providing technical support. The course covers networking concepts, which can be useful for troubleshooting network-related issues, but would not play a major role. A technical support specialist might find the course helpful.
Web Developer
Web developers create and maintain websites. This involves writing code, designing layouts, and ensuring that websites are functional and user-friendly. This course may be somewhat useful for web developers, especially those interested in learning more about back-end networking. While the course focuses on network application development outside of the web browser, the Python skills learned can be valuable. The course covers modules, such as JSON, which are used in web development as well. A web developer might find the course helpful.
IT Manager
An IT manager oversees the information technology infrastructure within an organization. This includes managing IT staff, planning technology upgrades, and ensuring that IT systems meet business needs. This course may be of limited value for IT managers. While the course provides an understanding of network application development using Python, the technical details may not be directly applicable to the management responsibilities of an IT manager. However, the course may provide helpful context. An IT manager might find the course helpful.

Reading list

We've selected two 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 The Art of Doing: Python Network Applications with Sockets!.
Provides practical recipes for network programming tasks in Python. It covers various networking protocols and techniques, offering hands-on examples that complement the course material. It is particularly useful for understanding real-world applications of sockets and network communication. This book can be used as a reference to deepen your understanding of the course.
Explores the darker side of Python programming, including network sniffing, packet manipulation, and building security tools. While not directly related to the course's projects, it provides a deeper understanding of network security concepts and how Python can be used in that domain. This book is more valuable as additional reading than as a current reference.

Share

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

Similar courses

Similar courses are unavailable at this time. Please try again later.
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 - 2025 OpenCourser