Mastercam is looking for a mathematically inclined Software Engineer to join their toolpath systems development team, which develops algorithms for milling machines. The role involves improving toolpath motion efficiency and quality, requiring strong mathematical and software development skills.
Responsibilities:
- Strong understanding of the tradeoffs between Object Oriented and Functional Programming
- Experience with Data-Parallel Programming
- Strong handle on Linear Algebra and Computational Geometry
- Familiar with iterative computational techniques, such as the Conjugant Gradient Method
- Comfortable with standard software development practices such as source control, peer reviews, and unit testing
- Able to clearly communicate with both technical and non-technical coworkers
- Demonstrates a collaborative mindset, treating knowledge as a shared, communal resource
Requirements:
- Bachelor's Degree in Computer Science, Mathematics, or Engineering
- 10-14 years of experience building commercial software in either C# or C++
- Strong understanding of the tradeoffs between Object Oriented and Functional Programming
- Experience with Data-Parallel Programming
- Strong handle on Linear Algebra and Computational Geometry
- Familiar with iterative computational techniques, such as the Conjugant Gradient Method
- Comfortable with standard software development practices such as source control, peer reviews, and unit testing
- Able to clearly communicate with both technical and non-technical coworkers
- Demonstrates a collaborative mindset, treating knowledge as a shared, communal resource
- Gifted mathematician with a love of solving complex problems and an innate hatred of inefficiency
- Knack for crafting algorithms to wring the most performance out of hardware
- Drive to constantly improve software development skills
- Passion for clean, clearly documented code
- Take the initiative
- Worked in an agile (Scrum, Kanban) software development environment before
- Experience with CNC machining
- Experience writing GPGPU or SIMD code
- Familiar with Parallel C++ Design Patterns and the C++ Standard Library
- Experience with Computational Physics algorithms
- Knowledge of 3/5-axis machining algorithms for roughing and finishing
- Experience with Volumetric and Surface Mesh Processing
- Experience with FEM as applied to physics-based machining
- Graduate degree in Computer Science, Mathematics, or Engineering