Software Engineer Placement/Internship: GNAT DAS: AI Automated Fuzz Testing for C using LLMs
Software Engineer Placement/Internship: GNAT DAS: AI Automated Fuzz Testing for C using LLMs

Software Engineer Placement/Internship: GNAT DAS: AI Automated Fuzz Testing for C using LLMs

Bristol Internship No home office possible
A

At a Glance

  • Tasks: Join us to innovate automated fuzz testing for C applications using AI and LLMs.
  • Company: AdaCore helps developers build safe, secure, and reliable software for critical industries.
  • Benefits: Enjoy flexible work arrangements, continuous training, and a supportive team culture.
  • Why this job: Be part of a cutting-edge project that shapes the future of software development.
  • Qualifications: Strong interest in dynamic analysis, good knowledge of C and Python, and familiarity with LLMs required.
  • Other info: Internship duration is 3 to 9 months in our Bristol office, with university agreement.

AdaCore: Helping Developers Build Software That Matters

Everything we do at AdaCore is centered around helping developers build safe, secure and reliable software.

For 30 years, we\’ve partnered with global leaders in aerospace & defense, air traffic management, space, railway and financial services. We\’ve developed tools and services simplifying high-integrity software development through a subscription-based model. As demand for secure applications grows in industries like automotive, medical, energy, and IoT, we\’re adapting our proven technologies to assist a new generation of developers.

Our 150 global experts based in the US, France, Germany, the UK, and Estonia, collectively develop cutting-edge technologies to address the challenges of high-grade software development.

Joining AdaCore is about joining a culture of innovation, openness, collaboration and dependability, which defines how we work together, with our customers and partners.

Context

Developed at AdaCore, the GNAT DAS tool suite (https://www.adacore.com/dynamic-analysis) includes GNATfuzz (https://www.adacore.com/dynamic-analysis/gnatfuzz), an advanced fuzz testing solution for Ada applications. GNATfuzz was designed to utilize multiple backend fuzz testing solutions, including AFL++, and includes advanced branch-solving algorithms like RedQueen and Symbolic Execution. GNATfuzz targets and finds bugs in Ada applications and linked C and C++ libraries. The next phase in the evolution of this product is to replicate the success of GNATfuzz for Ada by supporting the C programming language. There are multiple challenges to overcome in the automation of test cases and test harnesses for C applications and libraries; these include automated build infrastructures and support for buffers and pointers. Utilization of AI forms a part of the strategy of this internship; AdaCore would like to better understand the benefits of AI over more traditional forms of static analysis. Candidates for this position should have a strong interest in automated dynamic analysis verification and a good understanding of Large Language Models (LLMs) and other AI components. A good working knowledge of C and Python programming languages is essential. Experience with Libclang is highly beneficial.

Goals

The internship\’s overall goal is to progress the state of the art in automated fuzz testing for C applications. This is then split into 3 research areas; the number of applicable goals will depend on the length of the internship.

Goal 1: Automatic generation of C test harnesses

  • Create a manual harness for marshaling primitive C types (ignore pointers initially) from binary test cases
  • Genericize the test harness design into a template that can be populated via the fuzzing tool
  • Automate a static analysis of user code bases to capture required data elements and populate the test harness template

Goal 2: Investigate the benefits of AI for test harness generation

  • Multiple directions can be taken here, including:
  • Groupings of pointers to buffers and buffer sizes
  • Help with advanced concepts like function pointers
  • Identification of interesting subprograms for fuzzing (subprograms at the boundary of a system call tree)
  • Identification of code regions not suitable for fuzzing (i.e. permanent loops, blocking calls, file IO, retained state)
  • Auto-mocking of non-fuzzable function calls

Goal 3 (stretch): Automatic generation of interesting values (corpus generation)

  • Generate a corpus via static analysis tooling like Libclang
  • Investigate the benefits of corpus generation via AI, multiple directions can be taken here, including:
  • Perform a benchmark comparison of AI vs compiler-generated objects
  • Generation of interesting values for solving complex branch conditions and therefore increasing coverage

Skills required/nice to have

  • Experience/interest in fuzz testing or other forms of dynamic analysis and/or compilation (GCC or LLVM)
  • Good programming skills in Python and C
  • Experience/interest in C language interfaces (libclang)
  • Solid understanding and interest in LLMs and other primary aspects of AI

Timeframe & Location

During 2025 – 3 to 9 months – Bristol office

We are looking for a candidate who can do a placement with an agreement established by the university/school.

Beyond the job

We\’re a global organization driven by diverse backgrounds, fostering innovation through an open exchange of ideas. We welcome applicants of all backgrounds, celebrating diversity in ethnicity, nationality, gender, age, religion, abilities, sexual orientation, veteran or marital status.

Our commitment is to help our teammates, wherever they are based, feel comfortable and satisfied, by encouraging flexibility to ensure them a healthy work-life balance. Additionally, we prioritize individual development by offering continuous training from day one with a personalized onboarding plan.

Software Engineer Placement/Internship: GNAT DAS: AI Automated Fuzz Testing for C using LLMs employer: AdaCore

At AdaCore, we pride ourselves on being an exceptional employer, fostering a culture of innovation, collaboration, and dependability. Our Bristol office offers a supportive environment where interns can thrive, with access to continuous training and personalized onboarding plans that promote individual growth. Join us to work on cutting-edge technologies in AI and dynamic analysis, while enjoying a healthy work-life balance and the opportunity to contribute to meaningful projects in high-integrity software development.
A

Contact Detail:

AdaCore Recruiting Team

StudySmarter Expert Advice 🤫

We think this is how you could land Software Engineer Placement/Internship: GNAT DAS: AI Automated Fuzz Testing for C using LLMs

✨Tip Number 1

Familiarize yourself with GNATfuzz and its functionalities. Understanding how this tool works will give you a significant advantage during the interview process, as you can discuss its features and potential improvements.

✨Tip Number 2

Brush up on your knowledge of C and Python programming languages. Since these are essential for the role, being able to demonstrate your coding skills through practical examples or projects can set you apart from other candidates.

✨Tip Number 3

Engage with the community around fuzz testing and AI in software development. Participating in forums, attending webinars, or contributing to open-source projects can help you gain insights and make valuable connections that may benefit your application.

✨Tip Number 4

Prepare to discuss the challenges of automating test cases for C applications. Think about specific scenarios where you could apply your knowledge of AI and dynamic analysis to solve real-world problems, showcasing your problem-solving skills.

We think you need these skills to ace Software Engineer Placement/Internship: GNAT DAS: AI Automated Fuzz Testing for C using LLMs

Strong programming skills in C
Proficiency in Python
Experience with fuzz testing and dynamic analysis
Familiarity with Libclang
Understanding of Large Language Models (LLMs)
Knowledge of automated build infrastructures
Ability to create and automate test harnesses
Experience with static analysis tools
Problem-solving skills
Interest in AI applications in software testing
Understanding of C language interfaces
Analytical thinking
Collaboration and communication skills

Some tips for your application 🫡

Understand the Role: Make sure to thoroughly read the job description and understand the specific requirements for the Software Engineer Placement/Internship. Highlight your interest in automated dynamic analysis and familiarity with AI technologies.

Tailor Your CV: Customize your CV to emphasize your programming skills in C and Python, as well as any experience with fuzz testing or dynamic analysis. Include relevant projects or coursework that demonstrate your capabilities in these areas.

Craft a Compelling Cover Letter: Write a cover letter that showcases your passion for software development and your understanding of the challenges in automated fuzz testing. Mention any specific experiences with LLMs or Libclang that relate to the internship goals.

Showcase Your Projects: If you have worked on relevant projects, whether academic or personal, be sure to mention them. Discuss how they relate to the goals of the internship, particularly in terms of automated test harness generation or AI applications in software testing.

How to prepare for a job interview at AdaCore

✨Show Your Passion for AI and Fuzz Testing

Make sure to express your genuine interest in automated dynamic analysis and the role of AI in fuzz testing. Share any relevant projects or experiences that highlight your enthusiasm for these topics.

✨Demonstrate Your Programming Skills

Be prepared to discuss your experience with C and Python programming. You might be asked to solve coding problems or explain your approach to specific programming challenges, so brush up on your skills beforehand.

✨Understand the GNAT DAS Tool Suite

Familiarize yourself with the GNAT DAS tool suite and its components, especially GNATfuzz. Understanding how it works and its applications will show your commitment and readiness to contribute to the team.

✨Prepare Questions About the Internship Goals

Think of insightful questions regarding the internship's goals, particularly around the automation of test harnesses and the use of AI. This will demonstrate your critical thinking and eagerness to engage with the challenges presented.

Software Engineer Placement/Internship: GNAT DAS: AI Automated Fuzz Testing for C using LLMs
AdaCore
A
  • Software Engineer Placement/Internship: GNAT DAS: AI Automated Fuzz Testing for C using LLMs

    Bristol
    Internship

    Application deadline: 2027-03-13

  • A

    AdaCore

Similar positions in other companies
UK’s top job board for Gen Z
discover-jobs-cta
Discover now
>