Lab Positions:
Software Engineer

General Description

The software engineer will have expertise in compilers. A person with a powerful desire to build neuromorphic systems for use by others and a strong drive to facilitate their development and deployment is sought. The successful candidate will be one of two software engineers working closely with the PI to refine and realize his vision for this innovative technology.

The Brains in Silicon Laboratory is designing a specialized hardware platform (Neurogrid) to simulate the brain and ultra-low-power chips to decode neural signals into motor commands for fully implantable neuroprostheses, projects funded by the National Institutes of Health.

Position Details

The focus of this position is to work within the existing software architecture to improve mapping Python code to our custom hardware, and enhance system functionality to better leverage the features of the hardware. This task requires learning and understanding the hardware, and its limitations, and interfacing directly with another software engineer focusing on real-time visualization. Achieving seamless software-hardware interoperation will require creativity in providing an elegant interface to improving reliability, teamwork in working within and improving the existing system architecture, and smartly deciding when and where performance is critical to perform optimizations.

  • Work closely with the PI and the other software engineer to build on the software thrust of the project.
  • Read documentation and collaborate with lab members where necessary to understand the neuromorphic hardware. This will involve looking at networks that students have made and creating your own.
  • Create network mapping algorithms that leverage additional features of the hardware in a manner that provides bandwidth efficiency and system stability.
  • Convey new ideas, extend or modify specifications, and explain results to faculty and staff, orally and in writing.
  • Contribute to deployment, training, dissemination and documentation.
  • Assist with producing a clean codebase that is employed by staff and advanced students (without modifications to the core) for lab research.

Required Qualifications

  1. BS in Computer Science (or related discipline); MS in the sciences or engineering is preferred.
  2. Minimum 1-2 years experience as a software engineer is required.
  3. Background in scientific computing with specific expertise in compilers is a strong plus.
  4. Excellent oral and written communication skills are essential for this collaborative project.

Desirable Skills

The following areas of expertise are all relevant to developing neuromorphic systems, and experience in any or all of them is considered a strong plus.

  • Strong understanding of software architecture to create sophisticated network mapping heuristics, expand and maintain existing code, and develop strong automated testing to assure modelers of a validated system.   
  • Experience using  industry-standard tools for software design, testing, and optimization.
  • Experience working in a collaborative software engineering position with contributed code totaling over 10,000 lines.
  • Familiarity with compilers or other graph-based optimization code
  • Good grasp of basic neurobiology and neural network models. 

To apply

Visit http://jobs.stanford.edu/ and enter 44349  (the Job ID) in the keyword search.