Formal Methods Engineer - IOE

Logo of Input Output

Input Output

πŸ“Remote - United Kingdom

Job highlights

Summary

Join IO as a Formal Methods Engineer to work closely with an engineering team and provide high assurance and mathematical rigor to design and implementation. You will build on formal artifacts developed in R&D or later in the development process, develop specifications, and refine them towards high-quality designs and practical implementations.

Requirements

  • Deep thinking, problem solving
  • Ability to understand and translate overview of complex ideas and break it down simply for yourself and others
  • Software engineering skills
  • Bridge between research and engineers
  • Translate and reshape information for the coders to understand properly
  • Telling researchers when there is a discrepancy - feedback to research
  • To be able to receive input from researchers thoroughly understand and translate information into final code
  • Continuously brings fresh ideas to the mix
  • Be versatile and enjoy a fast-paced, ever-changing environment
  • Be a savvy problem solver
  • Ability to explain complex concepts in documents and presentations
  • A higher degree in Computer Science or a related field or currently pursuing one
  • Experience in a functional language, preferably Haskell
  • Experience working and collaborating with Git
  • Prior experience with theorem provers or model checkers is essential

Responsibilities

  • Build formal artifacts from R&D and architectural guidance, and business and engineering requirements
  • Model the performance of formally specified systems
  • Refine specifications, using the performance models and simulations to gauge the impact of design decisions during refinements
  • Discover new properties about the specifications and their implications
  • Prove properties of the specifications and of the correctness of refinement steps
  • Report on your work, in the form of blog posts, technical report documents, presentations at internal seminars, as well as at workshops and conferences, and/or by contributing to academic papers
  • Participate in code reviews
  • Contribute property-based tests, both for testing properties of the executable specifications/prototypes, and for verifying production code against the executable specifications
  • Contribute to the implementation, extension, and maintenance of custom static analysis tooling
  • Work in an international team across multiple time zones
  • Break down large and complex tasks assigned to you into workable items, and work on them independently
  • Share specialized knowledge with other team members

Benefits

  • Remote work
  • Laptop reimbursement
  • New starter package to buy hardware essentials (headphones, monitor, etc)
  • Learning & Development opportunities
  • Competitive PTO

Share this job:

Disclaimer: Please check that the job is real before you apply. Applying might take you to another website that we don't own. Please be aware that any actions taken during the application process are solely your responsibility, and we bear no responsibility for any outcomes.
Please let Input Output know you found this job on JobsCollider. Thanks! πŸ™