C++ (Numerics) Software Developer
- Source: LinkedIn
- Remobi
- Remote
- United States
- Mid level
Job Description
C++ (Numerics) Software Developer
Contract type: B2B / Freelance
Location: Fully remote (European Union)
About the client
Our client is a leading supplier of advanced process modelling software and digital design and operation technology to the process industries. Their products help customers explore the process decision space rapidly, reduce uncertainty and risk, and make better, faster and safer design and operating decisions through a deeper understanding of their processes.
Their products are built on a sophisticated, state-of-the-art software platform that supports all aspects of developing large-scale mathematical models, their formal validation, and a range of mathematical computations based on these models.
The role
We are seeking a highly motivated C++ Software Engineer with a particular focus on advanced numerical methods applied to the solution and optimisation of large systems of nonlinear equations. You will join an international, friendly and supportive development team, designing and implementing new functionality and influencing the future architecture of a state-of-the-art mathematical modelling environment.
Responsibilities
- Design, implement and extend advanced numerical methods for large-scale system simulation and optimisation, for both conventional and High-Performance Computing hardware platforms
- Devise and implement novel solution algorithms in collaboration with senior and principal software developers
- Develop new functionality with a focus on software quality, long-term maintainability and testability, using appropriate design and testing methodologies
- Understand user requirements from internal and external users and translate these into development projects
- Investigate and resolve critical bugs efficiently
- Provide technical support to internal and external users
- Collaborate closely with fellow developers, architects, the Quality Assurance team and Consultant Engineers
Essential qualifications and experience
- MSc or PhD in Applied Mathematics or Numerical Analysis, with proven direct expertise (including scientific publications) in at least one of the following: linear/nonlinear algebraic systems; ordinary and/or partial differential/algebraic systems; solution of nonlinear programming/mixed integer optimisation problems; distributed computation; data-driven modelling and/or machine learning
- Good knowledge of algorithms relevant to at least two of the above topics
- Experience of C++ programming
- Demonstrable object-oriented software design skills
Desirable
- Experience developing multi-threaded applications
- Familiarity with unit testing frameworks (e.g. CppUnit, gtest) and integration testing
- Version control systems, especially Git
- Exposure to Continuous Integration systems (e.g. Jenkins)
- Cross-platform software development (Windows and Linux)
- Scripting languages such as Python
- Data formats such as XML, JSON and HDF5
Skills and attributes
- Ability to understand complex technical concepts
- A desire to learn and strong problem-solving skills
- Ability to work independently and as part of a team
- Strong oral and written communication
Skills
- cplusplus
- Devise
- cppunit
- Jenkins
- Python
- xml-format
- JSON
