We use cookies on this website to make it function correctly and to achieve the purposes illustrated in the cookie policy. By continuing to browse, you agree to the use of cookies. Cookie Policy

Networking + Reactive Programming

Write better code with a sound knowledge of networks, their protocols, and how to consume and broadcast events using reactive programming.

Course Overview

The ability to understand how networking works is a big deal. Networks are what make almost all possible modern programming possible. Getting a deep understanding of all of that is a delightful and daunting task. This class provides a journey from simply knowing how to connect to WiFi to understanding how computers communicate with one another in intimate detail.

Dealing with asynchronous information that comes from possibly multiple sources over a network can overwhelm the mental model of programmers attempting to handle the disparate information sources. This can manifest itself in a variety of ways, usually in intractable code that becomes impossible to understand and, therefore, impossible to maintain. To manage that, we introduce the concept of Reactive programming, a programming paradigm with an axiom that all things are asynchronous, to just deal with it.

video poster

Background Image

What you'll learn

Design and implement complex network architectures to support running complex software applications in a secure environment, build a network server to properly handle multiple requests, and use reactive programming techniques in the front-end to marshal incoming and outgoing events for near real-time applications.

Background Image

Course projects

“HTTP Me” challenges you to create the majority of a modern HTTP server in C with lots of help along the way. “Spreadsheet 3000” allows you to build a modern, reactive front-end powered by your HTTP server using reactive programming techniques to manage the interactivity of the application.

Background Image

Prerequisites:

- Must be able to program in a “server-side” language like Ruby, Node.js (JavaScript), Python, C#, or Java

- Must be able to program JavaScript in the browser

Upcoming Courses

Mar 15 - Mar Apr 7

Networking + Reactive Programming

| Live Online

$1,400

May 11 - Jun 3

Networking + Reactive Programming

| Live Online

$1,400

Course Design

Week by Week

Jump into “real-time” Web applications from first principles! You’ll start on three different paths: taming the chaos of front-end chaos, learning C to write a network server, and getting to know how networks are put together.

  • Use reactive extensions to create a simple application

  • Use C to write a simple network server

  • Understand the different types of network devices used to connect modern computers

The data that flows across a network is formatted into some kind of protocol. You’ll learn how those protocols complement one another to provide different types of communication from the lowest layer of wires and WiFi up to the highest layer of your applications. You’ll use that knowledge to design your own application protocol for use with your reactive application!

  • Configure software firewalls to control incoming and outgoing network traffic to a computer

  • Examine data frames and extract IP datagrams, TCP packets, and UDP packets using network sniffing tools

  • Review the “bad” protocols still found on the Internet

Continue to build on your previous work by integrating Web sockets and security into your C-based network server. Extend your reactive front-end with modifiers and sophisticated subscription models to power complex and unique graphical human interfaces.

  • Learn the difference between symmetric and asymmetric key cryptography and how its used to secure a communication channel

  • Implement your own application protocol through Web sockets between your front-end and your network server

Finalize your application by connecting the dots between your front-end, your network server, and an out-of-process server that your server proxies to. Then, ship it and deploy it to your favored cloud hosting provider for the world to use!

  • Use error handling techniques to correctly implement the protocols handled by your application

  • Set up a GitLab CI/CD pipeline to build the components of your application for deployment to hosting providers

Instructor Spotlight

Background Image

Curtis Schlak, VP, Professional Development

Curtis Schlak’s software development career spans more than two decades in software, energy, finance, legal, and education. He has worked as an individual contributor and has led teams of nearly 200 people. He has worked or consulted at Barclays Capital, Bank of America Merrill Lynch, British Petroleum, CITGO Petroleum, Ernst & Young, and Microsoft. He has led software teams at startups like KickFire and DataCert. His consulting firm leads the training and adoption of Feature-Driven Development in the US. He has created and delivered consumer and enterprise training for hundreds of people through The Iron Yard, Hack Reactor, App Academy, and Galvanize. He has a BS in Mathematics, BA in English, and MS in Computer Science. He is currently working on his PhD in Computer Science.

Background Image

Daniel Billotte, Principal Instructor

Daniel Billotte’s career as a software engineer began in the mid 90’s, as the Internet was coming of age. He’s worked at large companies like Netscape, AOL, and Canon, as well as smaller companies and entrepreneurial ventures of his own. He has also worked extensively in the printing industry at every level from cleaning floors to building a globally deployed print-shop workflow tool. He helped start the first coding bootcamp in Phoenix in 2014. Daniel enjoys frontend web, but his passion is for building scalable backend systems that use cool technologies like neural networks. When he isn’t working or playing with his family, he’s riding his mountain bike, learning DSP/audio programming and audio circuit engineering, or breathing new life into an old truck. Daniel has a BS in Computer Science from Arizona State University.

FAQ

Our favorite applicant is someone who enjoys learning and participating in a dynamic learning community. We look for learners that are curious and motivated to further their craft. A learner who has grown tired of either unfocused or inefficient courses that have failed to take them to the next level.

Our application process is simple. Your application will help us learn more about you and should only take five minutes to complete. The application includes information about your educational background, programming experience, employment, and motivations for taking this course. We will review your application and either email any follow-up questions or accept you into the course. Once you’re accepted, you’ll sign an enrollment agreement and pay for the course.

Our typical course is six weeks long and consists of two evening classes per week. Our evening classes are 90 minutes long. Classes are recorded in case you are not able to attend them live. You can expect four to six hours per week outside of class for work on prepping for the next class and/or working on focused projects.

Some of our courses require prerequisite skills or knowledge. If applicable, we ask about this in the application process.

Yes, you can. The live classes, homework, and projects are optional. We encourage you to participate in all to get the most out of your investment in the course. To receive a certificate, you must score 70% or higher on the course project(s).

Yes. If your employer reimburses for education or professional development, we will make it easy for them to reimburse your participation in our courses. 

Universities typically only focus on computer science theory. We blend computer science theory with practical programming practices and thought leadership strategies to create more relevant courses. This format has more real-world applications that will help you advance your career.