How to Bridge the Knowledge Gap Between Computer Science Education and IoT Development

If your background is in computer science (CS), you will no doubt have knowledge of programming languages and may be able to craft expert software. What happens however when you foray into the world of the Internet of Things or IoT device development? You may find simply having knowledge of software development is not enough. You will need to learn about electronics and deeper-level hardware design; something that is not typically covered in a CS curriculum.

The Internet of Things is a multibillion dollar industry and is projected to grow into the trillion dollar range by 2025. However, being a relatively new and specialized industry, there are not enough seasoned embedded engineers to meet this growing demand. As such, persons from other technical fields such as computer science will enter this industry to fill the gap.

There is a problem with this however. The typical CS program does not cover the low-level hardware skills required to effectively develop IoT devices. Unlike other cutting edge fields like artificial intelligence, data science and machine learning that exist within the digital domain,  IoT developers may need to work with hardware at a level that they were not exposed to previously.

The reason for this is that many IoT devices are based on microcontroller devices. To properly program these devices, you need to have a low-level understanding of the underlying hardware. The devices are so resource-constrained that without this specialized knowledge, you will not be able to work effectively on these devices.

While some employers are willing to train you with these skills, highly competitive environments, like startups, will require you to bring skills to the table and be up and running quickly.

Since you may not be exposed to this in the standard CS curriculum, this can leave recent graduates and even those exposed to fields like mobile or web development, with a crucial gap in the knowledge required to successfully undertake IoT developer positions.

Bridging the Gap

In order to bridge the gap between what you learn in school and what is needed in the industry, here are five strategies you can use to make yourself more viable in the IoT industry and gain the skills you need to excel.

Enroll in a MOOC

If you already possess an undergraduate degree, Massive Open Online Courses or MOOCs are a great way to supplement your understanding of IoT and fill the gap in your knowledge. Course providers like edX, Cousera and Udacity provide an excellent way to learn the skills needed to be more competitive in the market. Almost all the material is provided at absolutely no cost though you may need to pay a small fee for a verified certificate.

Consider Enrolling in a Master’s Program

Sometimes the best way to fill your knowledge gap is to study more. Many graduate schools are willing to accept computer science graduates into more hardware-based electrical engineering or embedded systems engineering programs. The only requirement is that you take what are known as levelling courses to fulfill any prerequisites for the program.

Pursue a Double Major

There is no better way to get the knowledge you need than to pursue a double major in an engineering or engineering technology program. Consider enrolling in an electrical engineering or electronics engineering technology program to get the skills you need. These programs will provide more practical labs and deeper knowledge of hardware that is required to successfully design IoT devices.

Add More Hardware Courses in Your Free Electives

Adding some electronics engineering or engineering technology specific courses is a great way to add knowledge you may be lacking in your education. Doing a few courses in AC and DC circuits, a microprocessors course and possibly a course in digital electronics will expose you to some of the things required to function in the industry.

Teach Yourself

Sometimes you may not be able to afford the extra costs or time of additional college courses, and this may be the case if you are already have in a CS degree. If you are in such a scenario, you may opt to teach yourself. Since you have already been exposed to math skills like calculus, discrete mathematics and linear algebra, you will have the skills needed to teach yourself. These topics are what you need to learn to overcome the competition and bridge any knowledge gap:

  • DC Circuits
  • AC Circuits
  • PCB Design
  • Microcontroller Timers
  • Watchdog Timer
  • UART
  • SPI
  • I2C
  • USB
  • CAN
  • LIN
  • Ethernet
  • WiFi
  • ISM Band
  • Bluetooth
  • LoRa
  • IMUs
  • Optoelectronics
  • REST
  • GCC
  • GDB
  • Bootloaders
  • Low Power Optimization
  • ARM Architecture
  • RISC V Architecture
  • Digital Image Structure
  • Audio Processing

Additionally, you should be able to use an oscilloscope, function generator and multimeter at the bare minimum. This list is by no means comprehensive, but it will give you a good head start on what you need to know to be successful.

Also remember that nothing beats getting your hands dirty and doing your own projects. Grab an Arduino or Raspberry Pi and build something! Build something for your pet, for your home, your mom or your spouse. Getting your hands dirty is a great way to learn one of the fundamental skills an IoT designer must have - troubleshooting.

No matter which path you take to getting the skills you need for IoT development, work hard and stay creative!

Armstrong Subero, BA ’19, BA’19, AS ‘19

Written by Armstrong Subero, BA ’19, BA’19, AS ‘19

Armstrong Subero works with the Ministry of National Security for the Port of Spain, Trinidad and Tobago. He is an author, blogger and software engineer, as well as the co-founder of He has written "Programming PIC Microcontrollers with XC8" published by Apress Media LLC and "Codeless Data Structures and Algorithms" also published by Apress Media LLC.

Subscribe to the Thomas Edison State University Blog and get the latest updates delivered straight to your inbox.

!-- start Main.js DO NOT REMOVE -->