Research Software Engineer
The Research Software Engineer will be an integral member of the Murthy research lab in the Princeton Neuroscience Institute at Princeton University. The lab is focused on cutting-edge computational neuroscience research, studying how the brain processes sensory information, mediates decision-making and learning, and drives behaviors. The Research Software Engineer will collaborate with researchers and provide computational expertise in algorithm development and selection, code development, and optimization to create efficient and scalable research code.
The Research Software Engineer will work remotely but interact directly (via video conferencing) with faculty, student/postdoctoral researchers, and technical staff. They will also interact with other research software engineers that provide support for applications within the Princeton Neuroscience Institute (PNI) as well as the University as a whole.
The ideal candidate will have a strong background in scientific programming and familiarity with academic research. They will be able to translate academic research code into production quality, stable and documented code.
Examples of code bases that the candidate would be working with are available at: https://github.com/murthylab.
This is a 1 year term position with the possibility of renewal contingent upon satisfactory performance and continued funding.
- Lead and co-lead the design and construction of research software systems for data processing and analysis.
- Understand and address software engineering questions that arise in research planning.
- Maintain knowledge of current and future software development tools and techniques, programming languages, and computing hardware, including deep learning.
- Provide technical expertise and guidance for improving the performance and quality of neuroscience codebases.
- Develop graphical interfaces and/or APIs to interact with algorithms and data processing pipelines to facilitate internal usage and external deployment.
- Parallelize, debug, port, and optimize performance of existing research computing codes.
- Bachelor’s degree in computer science, neuroscience or a related field with strong computational emphasis. A masters or Ph.D. in a related field is preferred.
- Strong programming skills, particularly in the languages used in scientific computing applications: Python, MATLAB, and C/C++.
- Experience with modern software development practices: version control, unit testing, continuous integration, packaging/distribution across OS and environments.
- Programming experience in one or more of the following: machine learning, signal processing, and/or computer vision.
- Experience with modern deep learning frameworks such as TensorFlow 2 (preferred) or PyTorch.
- Parallel programming experience on workstations (concurrent C++, ZMQ, Python multiprocessing) and computational clusters (OpenMP, SLURM).
This position is subject to the University's background check policy.
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. EEO IS THE LAW.