New ideas are all around us, but only a few will change the world. That's our focus at JPL. We ask the biggest questions, then search the universe for answers--literally. We build upon ideas that have guided generations, then share our discoveries to inspire generations to come. Your mission--your opportunity--is to seek out the answers that bring us one step closer. If you're driven to discover, create, and inspire something that lasts a lifetime and beyond, you're ready for JPL.
Located in Pasadena, California, JPL has a campus-like environment situated on 177 acres in the foothills of the San Gabriel Mountains and offers a work environment unlike any other: we inspire passion, foster innovation, build collaboration, and reward excellence.
This unique opportunity is part of the Autonomous Systems Division, which is responsible for technology development, advanced concepts, design, development, delivery, integration and test, verification and validation, and operation of Command and Data Handling (C&DH) Hardware, Flight Software, Power Systems, Robotic Systems, and Guidance and Control.
As a summer intern for the Small-Scale Flight Software Group, you will be working for JPL's Flight Software and Avionics Systems Section that provides leadership and unique world-class expertise in Avionics Systems Engineering, Flight Software, and Avionics Integration, Test, and Operations. One of the Small-Scale Flight Software Group products is a reusable open source software framework called F Prime (F') that was developed with the goal of providing low cost embedded flight software for many different small spacecraft and testbed projects. F' is delivered in three major parts: a C++ reusable component framework, a code generation tool set, and a Ground Data System (GDS). The GDS is written in Python. It consists of a socket server to enable communications with a target C++ F' based system, and client graphical user interface applications to enable control and monitoring of the embedded target. There are client APIs to provide a framework for performing integration testing. The F' open source distribution is located at https://github.com/nasa/fprime.
The intern will have the opportunity to enhance our F' open source product line by performing feature enhancements, resolving known bugs, and updating and creating documentation. The position involves software development to maintain legacy tools and C++ code bases and potentially create new capabilities. The intern will contribute in one or more of the following ways:
Learn about embedded middleware and improve our C++ component framework code base.
Work with the CMAKE build system to enhance and develop new build system features
Implement new advanced telemetry filtering, search, analysis, and visualization capabilities utilizing technologies such as Elastic Search, Google Charts, etc.
Enhance and refactor the F' code generation capability, which generates C++ and various other products from our domain specific XML.
Enhance and refactor the front-end software modeling language (F") and associated visualization and editing tools
Develop tools for software testing at the unit and integration test levels.
Present work for peer reviews to mentors and the Small-Scale Flight Software group.
Must be currently enrolled at an accredited college or university studying Computer Science, Software Engineering, or related subject matter;
Must be available to work full-time (40 hrs/wk) for 10 to 12 weeks;
Must have completed minimum two years of an accredited engineering or science undergraduate course of study;
Must have a minimum cumulative GPA of 3.0 out of 4.0;
Must be able to learn new technologies quickly and work independently;
A working knowledge of C++ language useful in understanding the F' framework;
Understanding of CMake and GNU Make build systems;
An interest and some exposure to embedded systems including a basic understanding of C programming and microprocessors;
Knowledge of software design patterns such as:
Singleton, Observer, Mediator, etc. useful;
Knowledge of concepts used within declarative interface definition languages.
Familiarity with Unified Modeling Language or at least one other method of software modeling and code generation desirable;
Knowledge of a techniques and frameworks used for unit and integration test (e.g. JUnit, etc.) desirable;
Knowledge of continuous build integration and test concepts;
Model View Controller (MVC) architecture familiarity is a plus;
Knowledge of a web framework such as Flask, VUE, etc. is desirable;
Knowledge of basic middleware concepts (i.e. broadcast, publish-subscribe, etc.).
U.S. Citizen or Permanent Resident