Research Software Engineer II

Requisition # 2024-18904
Date Posted 2 months ago(4/16/2024 11:14 AM)
Research Computing
Information Technology
Job Type


What if you could have an impact on the future of embedded operating systems? If that idea appeals to you, Princeton University's Research Computing department is recruiting a Research Software Engineer to join the fast-growing RSE group. 

In the RSE Group, we collectively provide computational research expertise to multiple divisions within the University. As a central team of software experts, we are focused on improving the quality, performance, and sustainability of Princeton's computational research software. Our group is committed to building collaborative and inclusive environments in which the best software engineering practices are valued, and to sharing and applying cross-disciplinary computational techniques in new and emerging areas. 

In this position, you will become an integral part of Amit Levy's group in the Computer Science department. Your main responsibilities will involve building a hardware-based infrastructure, developing tests, debugging, refactoring, and developing code for the TockOS project. TockOS is an embedded operating system designed for low-power microcontrollers. It prioritizes security, extensibility, and reliability. Developers can build sensor networks, security-critical devices, and wearables while conserving battery life.  

If you have a background in operating systems, drivers, system software, DevOps, and an interest in the Rust programming language, you have the right skill set to immediately impact multiple high-profile research projects. This role functions within a dynamic, supportive team environment that permits diverse backgrounds to thrive, including those wanting to make a career change and those with non-traditional career tracks, educational paths, or life experiences. If this environment sounds like a strong match or even an exciting challenge, we encourage you to apply and use your cover letter to explain why you would be a good fit for the role. 

This is a fixed-term position that is guaranteed until March 2026. Based on funding availability and performance, there is a possibility of an extension beyond that date. 


Application of Domain Expertise:

  • Conduct independent studies, including reading publications and studying existing code bases, to gain a basic understanding of embedded systems. Use this knowledge to effectively communicate and collaborate with researchers on software development projects. 
  • Collaborate with researchers to understand their needs and develop software solutions to support their work. 
  • Maintain effective communication with researchers to ensure software development aligns with the research objectives. This will involve occasionally leading team meetings.



  • Working independently, or as a self-directed team member, create a hardware-based test infrastructure specifically designed for embedded systems and write new test cases. 
  • Integrate continuous integration (CI) processes for Rust code within the GitHub workflow, enhance CI features based on input from developers and the community, and coordinate testing efforts for OS releases. 
  • Troubleshoot and debug code issues incorporating Miri analysis and fuzzing techniques. 
  • Write efficient, robust, and maintainable code that is well-documented and tested. 
  • Participate in supporting the application's user community by tracking and organizing Github pull requests and issues as well as maintaining software documentation. 
  • Write technical reports and documentation to communicate research findings and software development processes. 
  • Manage software projects by developing project scopes and planning delivery timelines. Communicate project plans and progress updates with the scientific research team to ensure that software development aligns with research objectives. 
  • Communicate software engineering concepts to project teams with varying levels of software engineering knowledge. 


Professional Development:

  • Keep up-to-date with new software technologies and tools that could improve research outcomes. 


Essential Qualifications:

  • A minimum of 4 years as a Research Software Engineer or equivalent experience (e.g., graduate school, industry experience, open-source software development, etc.) 
  • Strong programming skills, particularly in low-level languages like C or, preferably, Rust; the language used in TockOS. 
  • Experience with test-driven development workflows with Git. 
  • Experience with code performance tuning using performance analysis tools (e.g. profilers). 
  • Demonstrated success in: 
  • Consistently using conventional and readable coding style. 
  • Creating comprehensive and well-written documentation. 
  • Developing and maintaining reproducible build systems. 
  • Background in operating systems sufficient to be able to understand the algorithms used in TokOS and communicate effectively with researchers. 
  • Ability to learn new concepts and technologies beyond the area of core knowledge. 
  • Ability to communicate effectively with a diverse user base with varied technical proficiencies. 
  • Experience working in an academic research environment. 
  • Experience with Linux. 
  • Demonstrated successes working in a collaborative software development environment ("team science", often geographically distributed) and independently. 
  • Education: A Bachelor's degree in computer science, engineering, sciences, or a related computational field is required. 


Preferred Qualifications:

  • Experience with DevOps and Cloud systems administration. 
  • Background in operating systems development and embedded systems. 
  • A Master's/Ph.D. in computer science, applied science, or another related field with a strong operating system focus or equivalent experience in a research setting is preferred. 


Princeton University is an Equal Opportunity/Affirmative Action Employer and all qualified applicants will receive consideration for employment without regard to age, race, color, religion, sex, sexual orientation, gender identity or expression, national origin, disability status, protected veteran status, or any other characteristic protected by law. KNOW YOUR RIGHTS

Standard Weekly Hours


Eligible for Overtime


Benefits Eligible


Probationary Period

180 days

Essential Services Personnel (see policy for detail)


Estimated Appointment End Date


Physical Capacity Exam Required


Valid Driver’s License Required


Experience Level

Mid-Senior Level



Sorry the Share function is not working properly at this moment. Please refresh the page and try again later.
Share on your newsfeed

Connect With Us!

Join our Talent Network to receive updates about working at Princeton.

Princeton University job offers are contingent upon the candidate’s successful completion of a background check, reference checks, and pre-employment screening, as applicable.

If you have questions or comments regarding the iCIMS Privacy Policy or iCIMS FAQs, please contact

Go to our careers site.