Apply computer science, engineering, and mathematical analysis concepts and principles in the development of software for the target application. Work closely with cross functional members of the engineering organization to develop and evaluate interfaces between hardware and software, and operational performance requirements and design of the overall system. Support and participate in all phases of the software development life cycle, including requirements analysis, design, implementation, integration, and test autonomous systems that go on unmanned aerial, ground, and water vehicles. Develop software test procedures, software programs, and related documentation. Utilize modeling tools and equipment to establish operating data, conduct experimental tests, and evaluate results. Participate in peer reviews, identify, track and repair defects. Utilize a variety of software languages (i.e., C++, C, Python) on Windows, Linux, mobile platforms, and embedded systems that are installed in mobile platforms.