top of page

Scientific Programming Student

LOCATION

Instituto de Telecomunicações, Lisboa

WORKING HOURS

Part Time

DEADLINE

January 15, 2023

The job in a nutshell

Implementation and validation of a robust parallel communication protocol for multiple ScientISST Core devices

about the role

You will be working closely with the EmotiphAI team in their efforts of parallel computing of 10-20 ScientISST devices. Your goals are to address each of the following constraints a time: 


  • Data should be collected from multiple devices (at least 10);

  • Data should be collected from all the channels (8);

  • The code should be optimized to run in a Raspberry Pi 4. If a bottleneck is found in the Raspberry Pi 4 that cannot be solved, other alternatives should be studied.

  • The system should be able to (1) communicate the data with no to low data loss, (2) store the data from all the devices without losing data due to parallelism problems, and (3) send the data to the visualization platform in real-time;

  • Every code iteration should be tested to ensure that, if an issue occurs (e.g. data loss), we can pin point what section of the program has the problem.

  • The device should be able to reconnect and resend data if it loses WiFi connectivity;


Work Plan

Here is a calendar plan for the next 6 months:


  • Learn ScientISST API and the firmware debugging tools (1 week)

  • Format and reinstall the Raspberry Pi with the Raspberry Pi OS Lite. This is to ensure there isn’t an unknown program running in the background interfering with the Raspberry Pi’s performance (2 days)

  • Communication Test: Write a python script that acquires, in parallel, data from at least 10 devices. Do not process the data in any way for now. Ensure you use mutexes and locks whenever necessary (3 week)

  • Ensure the code does not crash or stall if one (or more devices) die. For example, if one of the devices runs out of the battery the acquisition for the remaining devices should continue without any hiccups (2 week)

  • If a connection to a device is lost, attempt to reestablish the connection. Make all code changes necessary, including on the firmware and on the ScientISST Python API (2 - 6 weeks)

  • 3 x 2h using 10 devices at 8 channels 100hz

  • Storage Test: Store all acquired data in a single hdf5 file (2 - 4 weeks)

  • Real-time Visualization Test: Design and implement a way to send the acquired data in real-time to a back-end/front-end client (2 - 4 weeks)

  • Modify EmotiphAI’s code to visualize data in real time (2 weeks)

  • Write an article about everything you’ve found throughout the development (3 weeks)

materials

To work with us, you will be given the following at your responsability:

  • Microsoft Surface with Linux

  • Raspberry Pi 4

  • Routers and Ethernet cables

  • 10 ScientISST Core devices

YOUR PROFILE

Mandatory:

  • A completed BSc. in Computer Science/Engineering, Electrical Engineering, or related field, or being in the last semester of it.

  • Being currently pursuing a MSc. in the same field.

  • Proficiency in Python and C/C++.

  • Strong theoretical knowledge of computer networks, distributed systems and parallel computing. 

  • Experience with Git version control.

  • Ability to work by deliverables.

  • Excellent time-management and organisation skills.

  • Good formal writting in English.

Would be good:

  • You want to do your master's thesis with us (you are in the last year).

  • Work experience in the field.

COMPENSATION

A monthly net of 486-875€, depending on your academic background and qualifications.

YOUR NEXT STEPS

Ready to be the next ScientISST?

Prepare your CV and write a simple motivation letter,

and upload them in the application form:

In the form, select the position

Scientific Programming Student

bottom of page