Research Programmer II - Mathematical Applications
Under general direction, this position performs scientific programming projects that require mathematical maturity, understanding of modern computer architectures, experience with mathematical software packages, and classified domain knowledge. Individual will be the in-house specialist in code optimization, help research staff improve their programming skills, and improve, optimize, and maintain a complex library of subroutines. Incumbent will also support our high-performance computing system administration effort.
1. Coaches individual research staff members to improve their programming skills.
2. Assists research staff members with particular code debugging and optimization problems.
3. Optimizes the mathematical algorithms in the CCR software library across varied computing architectures, and assists research staff to contribute new software to the library.
4. Documents our programming tool set using CCR's internal wiki, technical reports, code examples, and videotaped technical talks.
5. Monitors the high-performance computing environment as seen by research staff, and makes or recommends changes to our programming tool set.
6. Achieves and maintains expertise in all computer languages, math libraries, and mathematical software packages in use at CCR.
7. Achieves and maintains expertise in parallel programming tools and paradigms in use at CCR, including but not limited to CUDA, MPI, threads, HTCondor and SLURM.
8. Maintains expertise in numerical libraries and solvers.
9. Becomes familiar with the technical aspects of communications protocols and signal processing as needed to support research projects.
10. Stays current with outside progress in software and software development tools.
11. As directed, writes special-purpose programs and utilities.
12. When required, assists with system administration of CCR's high-performance computing network.
13. Performs other duties as assigned.
• BS/BA Degree in Mathematics, Computer Science, or related field.
• Four or more years of programming experience.
• Competence using programming languages such as C, C++, or Fortran 90 for mathematical applications, and higher-level languages like Perl, Python, or Julia for prototyping.
• Knowledge of parallel computing, including MPI, OpenMP, Posix threads, or CUDA GPU programming.
• It is preferred that the candidate have knowledge of mathematical algorithms, analysis of algorithms, code optimization, and computer languages equivalent to a B.S. in Computer Science.
• Familiarity with commercial and open source mathematical packages such as Matlab, Octave, Sage, Maple, BMP, Magma, Mathematica and Macsyma preferred.
• Excellent interpersonal skills and ability to communicate effectively both orally and in writing with all levels of employees.
• Ability to teach effectively.
• Ability to work evenings and weekends to meet the needs of the organization.
• Ability to obtain and maintain necessary clearances.
• Ability to attain within one year and maintain security certifications required by DoD Dir 8570.