Research Programmers

User Services Directorate

The National Center for Supercomputing Applications (NCSA) advances discovery and innovation through extreme-scale computing, science-enabling software, and the skills of our expert staff. The center is part of the flagship University of Illinois at Urbana-Champaign—a world leader in research, teaching, and public engagement—and is located in a micro-urban community that combines cultural vibrancy with affordability and quality of life.

For more than 30 years, NCSA has partnered with visionaries to discover solutions to grand challenges for the benefit of science and society. Our advanced digital resources and world-class staff push research beyond the unimaginable. Can you imagine? We can.

In this role you will provide advanced applications support for campus and national users of campus and national computing platforms to allow these users to productively achieve their research goals through effective use of the computing platforms. Advanced applications support within the scope of this position spans advanced user support activities across a range of existing and developing areas. The areas include: application optimization, parallelization, scaling and algorithm development; application of artificial intelligence techniques in scientific computing; accelerator use in applications; grid-based applications; scientific visualization; ISV applications support. You will participate in the advanced research support programs of the Illinois Research IT Research Software Collaborative Service serving the University of Illinois campus, other National Science Foundation (NSF) projects, the c3.ai Digital Transformation Institute, and/or any new projects requiring advanced research support for the larger user community. Creativity, independence, a strong work ethic, as well as coordination with project principal investigator(s) will be critical. This position will represent the group at meetings, give presentations at conferences or other venues, and contribute to publications and grant proposals.

NCSA is committed to increasing the diversity of the campus community. Candidates who have experience working with a diverse range of faculty, staff, and students, and who can contribute to the climate of inclusivity are encouraged to apply.

Key responsibilities

Assistant Research Programmer

The Assistant Research Programmer, both independently and in collaboration with team members, will perform the following:

  • Research Application Duties
    • Provide general and in-depth support/guidance in multiple areas of specialization, which include the following: accelerator programming, algorithm and library analysis, evaluation, selection, and implementation; architectures; system hardware and software; system and application performance simulation and modeling; and application performance evaluation.
    • Work collaboratively with research groups to assist in enhancing performance of their codes, with a special focus on advanced cluster architectures, cloud resources and large shared memory systems, allocated through projects and programs such as NCSA strategic efforts, the Extreme Science and Engineering Discovery Environment project, Research IT Research Software Collaborative Service and the c3.ai Digital Transformation Institute.
    • Enable users to adopt new paradigms and algorithms, such as the use of artificial intelligence, machine learning and deep learning with their scientific applications, use of accelerators such as general-purpose graphical processing units (GPUs) and field-programmable gate arrays (FPGAs).
    • Use available software tools to analyze performance of workflows and codes, as well as assist in identifying and installing appropriate software libraries, and collaborating with users to use them effectively.
    • Apply, when available, domain knowledge to improve academic research applications to help researchers define and solve leading edge problems, provide consulting expertise to researchers across a variety of science and engineering domains to leverage synergies across projects, and contribute to community codes to support a broad range of communities.
  • Research Communication:
    • Interact with staff and users in a wide range of educational, scientific, and engineering disciplines using all manner of communication modes: in person, email, ticket system, chat/IM, and phone.
    • Contribute to user training as appropriate (i.e., author and maintain documentation and training materials, provide classroom- and/or web-based training, present seminars/tutorials at workshops, etc.).
    • Represent the group at meetings and give presentations at conferences or other venues.
    • Contribute to publications, technical reports, and documentation.
    • Serve on relevant conference publication review committees.
    • Communicate findings from research development activities above with project colleagues, including primary investigators, to be used as needed in advanced user support collaborations.
  • Proposal Development:
    • Contribute to benchmarking efforts, as required.
    • Participate in requirements gathering from key proposal stakeholders.
    • Contribute to proposal document writing.
Research Programmer

These include the duties of the Assistant Research Programmer with the addition of the following:

  • Research Application Duties:
    • Using independent discernment, design new approaches and techniques in resolving project specific problems.
    • Serve as primary point of contact for several science and engineering teams: understand project goals, computational and data requirements, benchmark and/or model application performance, tune or optimize applications for specific HPC platforms.
  • Research Communication:
    • Publish and present results of research and development at national and international conferences.
Senior Research Programmer

These include the duties of the Research Programmer with the addition of the following:

  • Research Application Duties:
    • Mentor junior team members on advanced research computing, including novel techniques and methods in the field.
  • Proposal Development:
    • Author funding proposals related to primary responsibilities. This can include system operation and center best-practices related activities.
Lead Research Programmer

These include the duties of the Senior Research Programmer with the addition of the following:

  • Research Application Duties:
    • Technical lead for one or more advanced research computing collaborations.
    • Technical lead for process improvements.
  • Research Communication:
    • Lead development of publications, technical reports, and documentation.
  • Proposal Development:
    • Lead and contribute to benchmarking efforts, as required.

Required education and experience

Assistant Research Programmer
  • BA/BS degree (advanced degree preferred) in engineering, mathematics, science, computer science, or related field. Alternative degree fields will be considered if accompanied by equivalent experience.
  • At least one year of experience in programming, development, optimization, porting, and/or scaling libraries or application codes.
  • Six months of experience researching, presenting, and/or publishing technical projects or papers in a professional or academic setting.
Research Programmer

These include the requirements of the Assistant Research Programmer with the addition of the following:

  • At least three years of experience in programming, development, optimization, porting, and/or scaling libraries or application codes.
Senior Research Programmer

These include the requirements of the Research Programmer with the addition of the following:

  • At least five years of experience in programming, development, optimization, porting, and/or scaling libraries or application codes.
Lead Research Programmer

These include the requirements of the Senior Research Programmer with the addition of the following:

  • At least seven years of experience in programming, development, optimization, porting, and/or scaling libraries or application codes.

Preferred experience

Assistant Research Programmer
  • At least one year of programming experience on high performance computers including development, optimization, porting, and/or scaling one or more parallel libraries or application codes written in Fortran, C, and/or C++, Python, and utilizing programming models such as MPI and OpenMP.
  • At least one year of experience developing codes to take advantage of specialized hardware (GPUs, Cell, SSE, etc.) using programming models such as OpenACC and CUDA.
  • At least one year of experience with data analytics paradigms including Hadoop, Spark, R, etc.
  • At least one year of experience with machine learning and deep learning methods, such as TensorFlow and PyTorch.
  • At least one year of work in one or more of the following areas: parallel algorithms, performance analysis, code tuning, performance simulation or modeling of parallel application behavior.
  • At least one year of use of high-performance computers to solve large-scale science and engineering problems.
  • At least one year of development and presentation of technical training material and web-based technical documentation.
  • At least one year using HPC tools: debuggers, performance tools, simulators.
  • Ability to clearly communicate results and their importance (verbally and in writing).
  • Ability to provide input for reports, presentations, and grant proposals.
Research Programmer

These include the preferred experience of the Assistant Research Programmer with the addition of the following:

  • At least three years of programming experience on high performance computers including development, optimization, porting, and/or scaling one or more parallel libraries or application codes written in Fortran, C, and/or C++, Python, and utilizing programming models such as MPI and OpenMP.
  • At least three years developing codes to take advantage of specialized hardware (GPUs, Cell, SSE, etc.) using programming models such as OpenACC and CUDA.
  • At least three years using data analytics paradigms including Hadoop, Spark, R, etc.
  • At least three years of experience with machine learning and deep learning methods, such as TensorFlow and PyTorch.
  • At least three years working in one or more of the following areas: parallel algorithms, performance analysis, code tuning, performance simulation or modeling of parallel application behavior.
  • At least three years of using high-performance computers to solve large-scale science and engineering problems.
  • At least three years of developing and presenting technical training material and web-based technical documentation.
  • At least three years using HPC tools: debuggers, performance tools, simulators.
Senior Research Programmer

These include the preferred experience of the Research Programmer with the addition of the following:

  • At least five years of programming experience on high performance computers including development, optimization, porting, and/or scaling one or more parallel libraries or application codes written in Fortran, C, and/or C++, Python, and utilizing programming models such as MPI and OpenMP.
  • At least five years' experience developing codes to take advantage of specialized hardware (GPUs, Cell, SSE, etc.) using programming models such as OpenACC and CUDA.
  • At least five years' experience with data analytics paradigms including Hadoop, Spark, R, etc.
  • At least five years' experience with machine learning and deep learning methods, such as TensorFlow and PyTorch.
  • At least five years working in one or more of the following areas: parallel algorithms, performance analysis, code tuning, performance simulation or modeling of parallel application behavior.
  • At least five years of using high-performance computers to solve large-scale science and engineering problems.
  • At least five years developing and presenting technical training material and web-based technical documentation.
  • At least five years using HPC tools: debuggers, performance tools, simulators.
Lead Research Programmer

These include the preferred experience of the Senior Research Programmer with the addition of the following:

  • At least seven years of programming experience on high performance computers including development, optimization, porting, and/or scaling one or more parallel libraries or application codes written in Fortran, C, and/or C++, Python, and utilizing programming models such as MPI and OpenMP.
  • At least seven years developing codes to take advantage of specialized hardware (GPUs, Cell, SSE, etc.) using programming models such as OpenACC and CUDA.
  • At least seven years' experience with data analytics paradigms including Hadoop, Spark, R, etc.
  • At least seven years' experience with machine learning and deep learning methods, such as TensorFlow and PyTorch.
  • At least seven years working in one or more of the following areas: parallel algorithms, performance analysis, code tuning, performance simulation or modeling of parallel application behavior.
  • At least seven years of using high-performance computers to solve large-scale science and engineering problems.
  • At least seven years developing and presenting technical training material and web-based technical documentation.
  • At least seven years using HPC tools: debuggers, performance tools, simulators.

This is a regular academic professional position at NCSA and is an annually renewable, 12/12, 100%-time appointment with regular University benefits. Salary is commensurate with experience and start date will be as soon as possible after the close date of the search. Applicants must possess required education and experience by start date of position. Interviews and hires may occur before the closing date; however, all applications received by the closing date will receive full consideration. For further information regarding our application procedures, you may email fijalkov@illinois.edu.

To apply, please create your candidate profile at jobs.illinois.edu and upload your cover letter and CV/resume by the close date, November 23, 2020. Contact information for three references must be included on the application. For full consideration, candidates must complete the Hiretouch application process by the above date. The University of Illinois conducts criminal background checks on all job candidates upon acceptance of a contingent offer.

The University of Illinois conducts criminal background checks on all job candidates upon acceptance of a contingent offer. As a qualifying federal contractor, the University of Illinois System uses E-Verify to verify employment eligibility.

The University of Illinois is an Equal Opportunity, Affirmative Action employer. Minorities, women, veterans and individuals with disabilities are encouraged to apply. For more information, visit http://go.illinois.edu/EEO.

For further information regarding our application procedures, you may visit www.ncsa.illinois.edu or email NCSA-HR@illinois.edu.