Assistant Research Programmer / Research Programmer / Senior Research Programmer - National Center
The National Center for Supercomputing Applications (NCSA) at the University of Illinois at Urbana-Champaign provides supercomputing and advanced digital resources for the nation's scientific enterprise. At NCSA, University of Illinois faculty, staff, students, and collaborators from around the globe use advanced digital resources to address and research grand challenges for the benefit of science and society. NCSA has been advancing one third of Fortune 50 companies for more than 30 years by bringing industry, researchers and students together to solve grand challenges at rapid speed and scale.
NCSA is currently seeking one or more Assistant Research Programmer/Research Programmer/Senior Research Programmer(s) to develop and engineer scientific software in support of projects and research which can include elements of data analysis, data ingestion and integration from heterogeneous sources, cybersecurity, web front ends, back end services that scale, as well as databases. The incumbent will interact with people in a wide range of educational, scientific, and engineering disciplines to design, develop, and support advanced software tools in areas such as civil and environmental engineering, biology, geoscience, digital humanities, library science, hazard management, medical informatics, astronomy, and computational science. Creativity, independence, a strong work ethic, as well as coordination with the project principal investigator(s) will be critical. The incumbent will also have the opportunity to 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 of the Assistant Research Programmer:
- Research, engineer and develop software that addresses real world complex problems with simple interfaces to powerful backend tools and analyses across basic science, engineering, the humanities and social sciences, both independently and in collaboration with team members. Building on an up-to - date knowledge of current scientific tools, work with students/faculty collaborators to develop software meeting novel needs, prototyping new software frameworks, and iteratively refining the software with stake holders over time.
- Develop software with researchers across a variety of domains to build on in project needs as well as design and support cyberinfrastructure in support of a broad range of communities.
- Use independent discernment to research, evaluate and integrate collaborative input and design new approaches and techniques to address project specific needs and critical technological challenges.
- Evaluate the strengths and weaknesses between varieties of novel approaches within the scientific software infrastructure community.
- Communicate findings with project colleagues, including primary investigators, to be used as needed in current programming and design efforts.
- Research and employ methodologies and develop code which supports an environment of secure systems and design and develop security oriented programs which by nature defend against disruption or misdirection of services.
- Track research activity in relevant fields both programmatic and domain specific, following current journal/conference publications, attending workshops, etc.
Qualifications of the Assistant Research Programmer
Required Education and Experience:
- Bachelor's degree required, preferably in computer science or related field. Alternative degree fields will be considered if accompanied by equivalent experience (depending on nature and depth of experience as it relates to current NCSA business needs).
- Ability to clearly communicate results and their importance (verbally and in writing).
- Course level experience in software development and/or relevant programming experience.
- Web development (e.g. server side scripting, client side frameworks, HTML5, CSS, REST, OAuth).
- Databases (e.g. MySQL, MongoDB, PostgreSQL).
- Linux DevOps experience with rapid prototyping.
- Contributions towards research publications.
- Experience in one or more of the following:
- Machine learning or data mining.
- Natural language processing.
- Geospatial data management and programming.
- High-speed, real-time data analysis.
- Computer vision or graphics.
- Parsers and protocol analyzers.
- HPC environments, cloud computing, and/or systems administration.
- Networking/security protocol or log analysis.
- Authentication/Authorization protocols & standards (e.g., SAML, OAuth, TLS, Kerberos).
Key Responsibilities of the Research Programmer
These include the key responsibilities for the Assistant Research Programmer with the addition of the following:
- Publish and present innovative software solutions as well as scientific results at national and international conferences.
Qualifications of the Research Programmer
Required Education and Experience:
These include the requirements of the Assistant Research Programmer with the addition of the following:
- One to three years of relevant software development experience.
This is the same as the preferred experience for the Assistant Research Programmer.
Key Responsibilities of the Senior Research Programmer:
These include the key responsibilities for the Research Programmer in addition to the following:
- Oversee multiple projects: ensure deliverables and deadlines are met, contribute to proposals, and guide developers in project management.
Qualifications of the Senior Research Programmer
Required Education, Experience, and Training:
These include the requirements for the Research Programmer with the addition of the following:
- Five years of experience in software development.
These include the preferred experience of the Assistant Research Programmer and Research Programmer with the addition of the following:
- Proficient in three or more programming languages with an ability to explain/decide why one would be utilized over another in different development scenarios.
- Subject matter experts on one or more technologies.
- Ability to establish a software development effort from the ground up (build software from scratch).
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 visit http://www.ncsa.illinois.edu or email firstname.lastname@example.org.
To apply, please create your candidate profile at http://jobs.illinois.edu and upload your cover letter and CV/resume by the close date (9/4/2018). 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 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. To learn more about the University's commitment to diversity, please visit http://www.inclusiveillinois.illinois.edu
College Name or Administrative Unit: Vice Chancellor for Research
Category: Academic Professional
Title: Assistant Research Programmer / Research Programmer / Senior Research Programmer - National Center for Supercomputing Applications (A1800371)
Open Date: 06/12/2018
Close Date: 09/04/2018
Organization Name: Supercomputing Applications