IMDEA initiative

Home > Open Positions > Developers

JavaScript programmer

The IMDEA Software Institute is seeking a person for the position of Research Programmer.

Job location

IMDEA Software Institute is a research institution focused in software development technologies. The institute is located in Madrid, Spain.

Required education

Masters degree in Computer Science or related areas.

Professional experience

Valuable but not mandatory.

Job description

The selected candidate will work in collaboration with researchers from the institute in a project related with computer security and electronic voting (e-voting) technologies. Concretely, the main purpose of the project is the automatic generation of secure JavaScript (JS) code for an e-voting system. The project consists of generating secure JS code from the specification of cryptographic primitives. The primitives are formally verified and translated to JS using a tool developed at Microsoft Research. The generated JS is then automatically plugged into an existing e-voting client. The candidate will be assigned this latter task of developing a tool for automatically plug the JS code into an existing JS client, while preserving secure properties of the code.

The project will be developed jointly with a company expert in e-voting technologies, so the candidate will be required to collaborate with members of the company to achieve the project goals.

Among the list of tasks of the position are the following ones:

  • Navigate and understand the existing JS code implementing the e-voting client.
  • Collaborate in designing secure code interfaces for plug the secure JS code into the existing e-voting client.
  • Develop a tool for automatically generate the JS interfaces designed.
  • Define code tests to check correct functionality and performance.
  • Collaborate in writing project deliverables and documentation.

The selected candidate will work in a dynamic and flexible environment involved in a research project related with computer security and e-voting topics. The candidate is expected to be self-motivated, self-organized to achieve project objectives and to work autonomously with a problem-solving mentality.

Required technical skills

  • Knowledge of JavaScript language and programming.
  • Experience/knowledge of Abstract Data Types (ADT) programming (e.g.: lists, trees).
  • Basic knowledge of code parsing concepts/elements (e.g.: AST, ...).
  • Basic knowledge of security vulnerabilities of JavaScript code.
  • Experience in using code repositories: SVN, GIT.
  • Strong mathematical background.
  • Experience working in research projects and publishing research work.

Desired technical skills

  • Knowledge of common web cryptographic APIs and providers (Bouncy Castle, Forge, ...).
  • Some experience/knowledge of Python programming.
  • Ability to read and write English is desirable.
  • Knowledge of Machine Learning / Data Analysis methods.

Start date



Negotiable depending on candidate experience and expertise.

Contract type

Temporary. Full time.


Applications should be completed using this application form. Please select "Research / Development Engineer" and include Reference "javascript programmer 20171011"