Bachelor's degree or equivalent in computer science, engineering, applied math, sciences, or related computational field.
Minimum of 4 years as a Research Software Engineer or equivalent experience.
Proficiency in programming languages such as Python, C++, R, MATLAB, Julia.
Expertise in machine learning algorithms and familiarity with AI frameworks like TensorFlow, PyTorch, or Scikit-learn.
Experience with large datasets and familiarity with GPU computing environments.
Proven ability to produce readable code and comprehensive documentation.
Strong technical communication skills for diverse audiences.
Responsibilities
Collaborate with university researchers to tailor software solutions to research needs.
Implement AI and machine learning in software engineering projects for specific domains.
Develop open-source software solutions based on researcher requirements, both independently and collaboratively.
Establish best practices for software projects, including version control and continuous integration.
Document projects to ensure sustainability and accessibility for future users.
Enhance code performance and quality by engaging with ongoing research efforts.
Serve as a bridge between researchers and computational staff, particularly regarding GPU cluster issues.
Benefits
Opportunities for professional development through Princeton Research Computing.
Participation in a community of research software engineers.
Access to continued learning in software development tools and techniques.
Full Job Description
Responsibilities
Application of Domain Expertise:
Initiate and maintain open collaboration with researchers across Princeton University. Regularly meet with, listen to, and ask questions of researchers to ensure the engineered solutions fit the research need.
Apply AI and machine learning algorithms to software engineering projects in the researcher's specific domain.
Research Software Engineering
Working independently with minimal guidance to understand and translate research priorities into flexible software solutions.
Collaborate with a team to develop comprehensive open source software solutions and models based on researcher-provided requirements and desired outcomes. Conduct independent or team research to identify and solve problems, and provide detailed documentation for the research team.
Contribute to software solutions by establishing project-specific best practices, including version control, continuous integration and delivery, software design, and programming models.
Ensure long-term maintainability, sustainability and open access by thoroughly documenting projects. Provide support for the use of software libraries, including detailed documentation that is accessible to both researchers and future Research Software Engineers.
Provide technical expertise and improve the performance and quality of new and existing code bases through hands-on work with ongoing research.
Collaborate with researchers to ensure solutions meet their needs, addressing software engineering questions during research planning. Communicate software engineering concepts to project teams with varying levels of expertise. Serve as a liaison with Princeton Research Computing staff on GPU cluster-related issues.
Professional Development
Learn the underlying science, mathematics, statistics, data analysis, and algorithms of computational research questions through independent research, studying existing code bases, and staying current with publications.
Build awareness of software development tools and techniques, best practices in software engineering, programming languages, high-performance computing hardware, and computational research solutions.
Participate in a community of research software engineers and engage in continued professional development opportunities at Princeton Research Computing.
Qualifications
Essential Qualifications:
Bachelor's degree or equivalent in computer science, engineering, applied math, sciences, or related computational field.
A minimum of 4 years as a Research Software Engineer or equivalent experience (e.g. graduate school, industry experience, open-source software development, etc.).
Proficiency in programming languages used in AI and computational research (e.g. Python, C++, R, MATLAB, Julia).
Expertise in machine learning algorithms and techniques. Familiarity with AI frameworks like TensorFlow, PyTorch, or Scikit-learn.
Experience working with large datasets and familiarity with GPU computing environments.
Demonstrated success: Consistently using conventional and readable coding style. Creating comprehensive and well-written documentation. Using version control systems.
Demonstrated successes contributing to a collaborative research team.
Ability to work independently.
Strong written and oral technical communication skills with the ability to present complex research findings to technical and non-technical audiences.
Preferred Qualifications:
Expertise in conducting research in Artificial Intelligence and Machine Learning. Contributions to open-source libraries and publications in relevant journals or conferences are highly valued.
Experience participating in multiple software development projects simultaneously, ensuring timely delivery and adherence to quality standards. An eagerness to take on more responsibility and develop project management skills.
A Masters/Ph.D. in computer science, applied science, or other related field with a strong computational focus or equivalent experience in a research setting preferred.
Standard Weekly Hours
36.25
Eligible for Overtime
No
Benefits Eligible
Yes
Probationary Period
180 days
Essential Services Personnel (see policy for detail)