Research Software Engineer
Job posting number: #7090065
Posted: December 3, 2021
Application Deadline: Open Until Filled
Job DescriptionAbout the Department
The Department of Computer Science is an academic teaching and research department in the College of Engineering. It is a large and complex unit that encompasses research intensive, teaching intensive and professional activities. It is one of the largest such departments in the nation by the number of faculty and students, and its total budget and size are comparable to, or larger than, a number of NC State University colleges and divisions.
Essential Job Duties
The Center for Educational Informatics (CEI) at North Carolina State University is seeking a Research Software Engineer to support the design, development, and deployment of game-based and artificial intelligence-driven learning environments. The selected candidate will be working with a small team of other talented software engineers and digital artists to create and maintain game-based and narrative-centered learning environments, artificial intelligence-driven learning technologies, and intelligent user interfaces. In addition, the Research Software Engineer will have the opportunity to collaborate with world-class AI and education researchers to directly impact the future of education.
More specifically, this position involves, but is not limited to the following:
Developing (design, code, test, maintain, and document) game-based software systems using the Unity game engine and C#.
Integrating artificial intelligence and machine learning-based technologies into game-based learning environments.
Designing and maintaining analytics pipelines capable of capturing, processing, and presenting data to support machine learning-based research.
Working closely with researchers and education stakeholders (e.g., teachers, students, museum educators) to identify and refine system requirements.
Performing detailed systems analysis to develop implementation strategies and scope projects appropriately.
Contributing to project reports and technical papers.
Giving technical demonstrations and presentations of game-based software systems and participating in meetings and conferences as needed.
Participating in fielding and deploying software systems at user sites (e.g., schools, museums, community centers).
CEI is also home to the newly awarded National Science Foundation AI Institute for Engaged Learning. The Institute’s AI-driven learning environments build on its advances in core AI on natural language processing, computer vision, and machine learning. The Engage AI Institute’s research is also informed by connections with diverse stakeholders to ensure that the Institute’s learning environments are ethically designed and promote diversity, equity, and inclusion.
This position is contingent upon funding.
Other duties as assigned.
Minimum Education and Experience
Bachelor of Science or Bachelor of Arts degree in Computer Science and at least eight years of professional experience designing and developing software applications.
Other Required Qualifications
Excellent organization and time management skills.
Programming expertise including experience with C#, Java, or C++.
A clear understanding of best practices for software design, development, and maintenance with demonstrated creativity in solving complex problems.
Ability to quickly learn and follow established development processes and standards.
Ability to take constructive feedback resulting from peer reviews, game testing, and collaborator input.
Strong written and oral communication skills required, including the ability to work collaboratively with a diverse team.
Masters degree in Computer Science or related field; or an equivalent combination of education and experience.
At least 5 years of professional experience designing and developing software applications.
Broad experience working with game engines such as Unity with an in-depth understanding of 2D and 3D graphics.
Prior experience developing serious games and artificial intelligence-based software.
Solid experience in cross-platform software design and development.
Prior experience with large-scale data processing.
Prior experience with designing, implementing, and deploying server-side software.