25

In order to do well in a Computer Science related field, a college student has to do much more than just getting a degree—they must go above and beyond to be competitive with others in the field.

As a CS student, I'm relatively comfortable with the software aspect of IoT, but less happy with the electronics side and the overall construction of an Internet-enabled sensor/device.

In terms of IoT, what can I do to develop my skills? Particularly, I'm interested in things that might not be taught in college for my CS course, in order to help me in future with getting a job or progressing in the field.

  • 3
    Can you do any IoT related assignment at college? Buy a few Raspberry Pi Zero W (or similar, but those are the cheapest), an think up a project. Maybe get a sensor hat; failing that, find a free JSON API which will feed you data, and publish the data to a web site. Then work your way up. Look into Zigbee and MQTT. Publish a few GitHub projects, or websites, which you can show people. Maybe get involved in a larger, existing FOSS project. Start small, work your way up, adding complexity, and make it visible, then add it to your CV. – Mawg Apr 10 '17 at 7:07
  • FWIW, I see a lot of Zigbee job openings, but so far none for MQTT, but I would still be looking into MQTT if I were you. – Mawg Apr 10 '17 at 7:07
16

I have been a university tutor in a department that now teaches IoT and your observations are right when it comes to getting your hands dirty with some toys rather than just a degree. A lot of computer scientists work in collaboration with engineers such as communication engineers, production engineers to come up with unique solutions where IoT becomes an interesting application.

I think you can start by looking into different communication protocol stacks like:

  1. IEEE 802.15.4 which includes fields like wireless sensor networks and the well-known ZigBee. Have a look at Contiki-OS and RIOT-OS. The sensor nodes themselves do cost a bit more, but a university department which might work in the field might provide you some to play around with.

  2. Expensive tools which, I suggest you can start understanding if you reach out to a research institute and/or industry are Weightless P, SigFox, LORAWAN, etc. These will give you detailed insights on telecommunication, stacks like 3G and LTE and their participation in IoT and Industry 4.0.

  3. IoT is progressing in the fields of smart home and automation, so you can look at tools like openHAB and OpenThread and as a computer science student develop useful APIs.

  4. Last, but not the least, any kind of open source platform device like Raspberry Pis and or other microcontrollers can be used in conjunction with wireless communication modules of the above mentioned technologies to come up with simple and/or complex IoT solutions.

Tools

As an IoT tech guy, programming languages like C/C++, Java, and Python will take you a long way. Frontend development, HTML, CSS, JavaScript, and jQuery, etc. will give you a better understanding of handling Internet datatypes like JSON, XML, plain text, CBOR, etc. and backend like Node.js, Flask by Python, and Ruby on Rails will help you set up server client models most frequently used.

Git and open-source repositories will give you a leap into applications and various APIs that can be used for your upcoming projects.

The more you dive deep, the better your tool handling skills and understanding of IoT will occur.

7

IoT runs the gamut of computing, and covers a huge range of technologies, implementations, and tactics. The nutshell is that it just means things are connected to a comms channel, e.g., the internet. Understanding how things connect to things is probably the key: messaging, eventing, streams.

I'd grab a few small devices, doesn't matter what they are, but the easiest is Arduino-based or Pi-based. Get something with WiFi or something that is backed by an existing cloud, e.g., Photon.

Stick some sensors on it. Temperature is the canonical example. Start sucking in data and storing it. Then take that data and analyze it; any number of ways to do that.

If you're more interested in the analysis side (communication isn't really the difficult thing here--libraries handle that whether it's WiFi, BT, ZigBee, ...) then there are lots of datasets, e.g., NYC subway turnstile data.

7

The Internet of Things is huge. It consists not only of the computer science behind it, but also of household applications such as the Google Home, etc. If you end up going into sales, knowing something about available devices could be helpful.

I personally recommend a few things:

1. Subscribe to good magazines.

There are tons of magazines and up-to-date articles available out there which will help keep you in sync with what is happening in the IoT world; IoT evolution magazine is one that I frequently read. Another one with a lot of valuable technical information is this M2M magazine.

2. Get some IoT devices.

This doesn't do much for your computer science, but it does familiarize you with what is available. Depending what field you work in, a broad general sweeping knowledge of what is available could be helpful. Consider getting a few IoT switches and installing, or even creating IoT devices of your own around the house.

Just my 2 cents (which rounds down in Canada), but hope it helps!

  • 1
    Broad background is hugely useful - even if it only helps you talk to experts in other areas. – Sean Houlihane Apr 10 '17 at 14:20
3

As the other answers have stated, the best way to learn is by doing—in this case, diving in and designing a device from start to finish to get a feel for the processes and steps involved in IoT development.

It's a very similar problem to one which you come across in software engineering/programming—a lot of University courses teach their students computer science, i.e. the theory and concepts behind software development. But, after 3 or 4 years of learning, they're tossed out into the world to find a programming job, and they lack the actual practical skills you need to be a successful developer.

In India, there are claims that only 7% of graduates are actually employable as a software engineer, because:

While the vast numbers of engineering students in the country study their textbooks, give their exams and collect their degrees, it is only when they encounter the real world problems do they realise their shortfall. By then, they have to take extra time in order to skill themselves or suffer unemployment.

I'm sure you can see the parallel here—if you want to enter the field of IoT, you need to be able to understand how to develop a device and the infrastructure it needs.


A few things to consider, though, when you do start making your prototype:

  • It doesn't need to be revolutionary—as a learning project, there's nothing wrong with doing something simple. The key bit here is to have an achievable, specific goal.

  • Once you have your goal, break the task into steps. It will be hard; if it's your first project, you're bound to feel a bit lost. The important thing here is to...

  • Have a group of people who can help you. If you're at an educational institution, you're in luck—there will be loads of passionate, knowledgeable people. It's almost certain that they'll be interested and wanting to help you; after all, everyone should be their because Computer Science is their passion!

If you can't find anyone who can help, there are always sites for enthusiasts, experts and power users who can give you some suggestions!

3

I would suggest doing your own project.

I found Derek Molloy's book Exploring BeagleBone very good.

You could then do the following

  • Get a Beaglebone Black
  • Do all the projects in Derek's book, (a good intro to electronics and sensors for IoT)
  • Extend a project
  • Publish your project on GitHub or Bitbucket

When you go for an interview you can now talk about the IoT project that you did. Mention that it is currently running live and that it is on GitHub if the employer wants to find out more.

That shows an employer that you are genuinely interested in IoT, have competency in the field and is a great talking point for an interview.

2

If you've not built an implementation of an embedded application, you'll be well behind your more experienced peers. Clearly you will be limited by your chosen field, but ideally you should have practical experience with the whole stack - sensor to value-proposition. What is most valuable at this stage is finding problems, rather than a good result.

2

Step 1: Stop spending so much time playing video games

Step 2: Start a simple project and get really good at Google searching. Break each piece of the project into smaller, more manageable bits. Solve each problem one at a time, then move on to the next until your project is complete.

You will learn valuable lessons along the way that you can then use in other, more complicated projects.

For example, I'm currently working on an auto sun-tracking solar panel that logs charge and battery data to an online dashboard. The first thing I had to do was figure out how to make an led blink on an ESP8266 using the Arduino IDE. Then I had to figure out how I was going to get light and voltage readings with and analog input. Each step took anywhere from an hour to days to figure out, but so far I've learned much about electronics and how the code I write interacts with each component.

Of course the idea for your project has to be something that you feel passionate enough about to see it through to completion.

The main thing I always find is that if I'm having fun with it, the more I want to do it. But really, there is not much about IoT that isn't fun!

1

I used to be a Computer Geek, my downfall was maths, because of learning difficulties my basic maths is at the level of a reception class student, and it will always be.

The way I learnt about computers, experimentation, youtube, trial and error, patience.

90% of computers is patience and the other 10% is repetition.

If you have an interest in computers, nurture it and raise it like your own child. Your interest will thank you one day.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.