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

Computer Architecture + IoT

Write better code as a result of creating virtual computer components and applying that knowledge in microprocessor programming.

Course Overview

The Computer Architecture + IoT program is designed for software developers that want to enrich their understanding of computing by learning about the design and assembly of computing components and devices. Knowing about how a computer works from its logic gates informs a software programmer about the code that they’re writing, giving deep significance to what happens between the running code and what the electrons do on the silicon.

Computer architecture is the study of the hardware-software boundary. Not quite electronics and not quite software engineering, computer architecture is the magic that allows us to harness the deterministic laws of physics and electricity and create computation.

Microcontrollers are small computers. They generally expose more of the hardware interface to users, and are typically used in embedded systems. Because of the raw and exposed design, microcontrollers can more readily be attached to commodity hardware components such as LEDs, infrared sensors, motion detectors, and all kinds of cool devices.

video poster

How do these two subjects fit together?

With the advent of low-priced microcomputers available for everyone to purchase and use, you can now build task-specific computing devices. To get there, you have to understand the hardware and software and how it can all fit together using the internet. Computer architecture provides the fundamentals of understanding how to interact with hardware and software and IoT allows you to create an interconnected mesh of your own custom devices. 

How much computer architecture will I learn?

You will learn how computers are put together from first principles from the smallest transistors to CPUs to modern computer architecture. While you won’t be able to get a job as a chip designer, you’ll be able to understand everything that affects your software performance from CPU cycles to memory hierarchies to input/output devices. Knowing how your software runs on the hardware makes you a better programmer. 

video poster
Background Image

What you'll learn

Read and use technical documentation about circuitry and microcontrollers to build custom-made devices, build a virtual computer from the ground up using first principles of Boolean logic, work with a real-world maker kit to master the fundamentals of building electronic circuits.

Background Image

Course projects

“Hello, MARIE!” leads you to build a fully functional virtual computer. “Hello, Internet!” combines your knowledge of programming and circuitry to integrate various separate electronic components to build an IoT device.

Background Image


- Must be able to proficiently write software in a modern computer programming language such as C++, Java, C#, Ruby, Python, or JavaScript (Node.js)

- Must have used a debugging tool to evaluate and inspect running programs

Upcoming Courses

March 30th - May 6th

Computer Architecture + IoT

| Live Online


May 3rd - June 9th (no class May 31st)

Computer Architecture + IoT

| Live Online


Course Design


Get your hands dirty and your mind ready for learning about computer architecture and the Internet of Things with hands-on electronic circuit fundamentals in real and virtual hardware.

  • Use the primitives of computing, logic and numbers, to start your journey toward building your own virtual computer

  • Get to know Ohm’s Law and how to apply it by building simple hardware circuits using a maker kit

Start building more complex virtual circuitry from Week 1 fundamentals while expanding your knowledge of electronics by experimenting with resistors, capacitors, sensors, and transducers.

  • Use logic gate diagrams and finite state machines to build complex virtual circuits

  • Use sensors and emitters to build devices that interact with the real world

Go further up the computer architecture hierarchy by learning about and implementing different types of memory architectures while continuing to broaden your understanding of electronic components and circuits to make from them.

  • Identify different types of memory in modern computer architectures

  • Write the building blocks for a virtual CPU

  • Build devices that can communicate through infrared and digital displays

Interact with microcontrollers at their lowest level through assembly language. Use that knowledge to start assembling your virtual components into a virtual computer while combining hardware components and programs into cool devices that can be used to address real-world problems.

  • Learn how to interpret assembly opcodes to program at the lowest level

  • Start organizing written components into a virtual computer

  • Start combining hardware components into problem-specific devices

Write assembly language programs to control your newly-constructed virtual computer, and to control the microcontroller and devices in your hardware kit. Take existing programs and break them apart to find out what the computer “sees” when it runs a program.

  • Implement a virtual computer

  • Disassemble computer programs and interpret the produced assembly language

  • Use an assembler and assembly to program a microcontroller from the maker kit

See into the secrets offered by circuit diagrams and microcontroller specification sheets so that you can design and build your own devices with Internet capabilities to build whatever you’d like: home automation, security devices, autonomous robots, and much more!

  • Use circuit diagrams and spec sheets to integrate an inexpensive WiFi chip to your custom device

  • Evaluate different IoT kits and boards on the market

Our Instructors

Background Image

Tyler Bettilyon


Tyler Bettilyon is an educator, technologist, writer, programmer, and all-around curious human. He holds a bachelor’s degree in computer science and earned his MBA by counterexample in San Francisco’s startup scene. After a seven-year stint building software applications, Tyler returned to his roots as a teacher and has been leading classrooms ever since. He has taught at Galvanize, The Bradfield School of Computer Science, numerous corporate offices, and founded Teb’s Lab where he publishes open-source curricula and thoughtful analysis about technology’s impact on society.

Background Image

Curtis Schlak

VP, Professional Development Curriculum

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 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.

Our Professional Development Students Work at Great Companies

Many of these companies reimburse tuition for our courses. Please click here for more information.

Hack Reactor alumni work at google
Hack Reactor Professional Development Students work at Airmeet
Hack Reactor Professional Development Students work at Citadel
Hack Reactor Professional Development Students work at Elsevier
Hack Reactor Professional Development Students work at IAC
Hack Reactor Professional Development Students work at Nisum
Hack Reactor Professional Development Students work at Pivotal
Hack Reactor Professional Development Students work at Splunk
Hack Reactor Professional Development Students work at Visa
Hack Reactor Professional Development Students work at Vmware


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.