- Job Number: 39997507
- Santa Clara Valley, California, United States
- Posted: Nov. 2, 2015
- Weekly Hours: 40.00
Apple’s Platform Architecture Exploratory Design group is looking for an exceptional engineer to design and integrate software for new technologies. Join a team of highly innovative scientists and engineers to research, architect and implement new technologies. This position requires a self-driven engineer with great initiative.
- Has advanced programming skills in C/C++/Python/Unix. Knowledge of Matlab and R is a plus.
- MS/PhD in CS/EE/Mathematics preferred. Exceptional candidates from other disciplines will be considered.
- Has a deep understanding of how computers really work and the theory of computing, not just layers of abstractions. Understands that an operating system is nice to have, but not necessary to run their programs on a computer.
- Thinks that programming is fun. Cannot imagine not coding.
- Can implement software from the low level (e.g.: assembly, microcode, drivers) to a very high level (e.g.: machine learning in Python, data visualizations).
- Expertise: A good candidate should have work or academic experience in at least one of the topics from list A and one from list B. The list is not exhaustive and other similar topics are acceptable.
- LIST A: Applied Algorithms Topics. (Experience in at least one of the following):
- Developed and implemented mathematically sophisticated algorithms in areas such as: machine learning, signal processing, computer vision, speech recognition, robotics, algorithmic trading, natural language processing, linear algebra, numerical solution of complex mathematical problems.
- Developed constraint solvers, search algorithms.
- Developed non-graphics/GPGPU code in a GPU programming language.
- Implemented robust and presentable data visualizations and demo software.
- LIST B: Systems Programming Topics. (Experience in at least one of the following):
- Written bare metal programs, firmware or microcode.
- Implemented a programming language.
- Worked on compilers, assemblers, linkers, device drivers.
- Coded in assembly language for numerical routines, power viruses, cache and TLB thrashers, interrupt handlers etc.
- Implemented memory allocators, virtual memory management etc.
- Developed architecture simulators.
- Debugged large scale programs or done silicon bring up.
- Optimized data structures for cache/TLB/SIMD performance.
- Developed software with components in multiple languages: e.g.: Python : Cython : C++, Matlab : C/C++
The key responsibility is exploring and prototyping mathematically sophisticated algorithms and implementing software infrastructure and instrumentation necessary for algorithm exploration. The role requires creative focus and self-direction to aid the team in exploratory tasks that are only loosely specified without getting distracted and the maturity to realize that some investigations are rapidly productized while others may require tenacious effort to prove their benefit for adoption in products.