
Software Developer (Compiler Construction)
- Ottawa, ON
- Permanent
- Full-time
- Security from the Inside Out:
- Fortify Static Code Analyzer:
- Design and implement static analysis algorithms based on recent relevant computer science research and literature.
- Develop new analysis features and add support for new languages and language features.
- Apply recent research developments from computer science literature where we can benefit from upgrading our algorithms and program representations.
- Write specifications for features as they are implemented.
- Analyse the quality of security finding results and product performance characteristics.
- Maintain the Fortify SCA code base using good software engineering practices.
- Collaborate with a project team of other software engineers, security researchers, and quality engineers, to develop reliable, cost-effective, and high-quality solutions.
- Master's degree or Ph.D. (preferred) in Computer Science or equivalent, with emphasis on programming languages, static program analysis, compilers, or software security.
- Solid enterprise Java backend engineering skills
- Excellent written and verbal communication skills; Ability to effectively communicate design proposals and specifications.
- Qualified candidates have prior expertise in or knowledge of one or more of the following areas:
- Background in knowledge of compiler internals, static code analysis algorithms (abstract interpretation, dataflow, higher order analysis, buffer analysis, shape analysis, separation logic, context-insensitive incremental analysis).
- Background in Compiler construction (frontends, IR, type inference, program transformations) in one or more programming languages
- Background in the software security domain
- Programming skills in additional coding languages and frameworks and desire to learn new programming languages
- Compiler tools (LLVM, MLIR, Rust HIR/MIR, Eclipse JDT, etc.)
- Build systems (make, cmake, gradle, ant, mvn, msbuild, sbt)
- Experience with software systems running on multiple platform types.