News
Week 3: Building or Adapting a GrammarWritten on 13.05.26 by Alexi Turcotte Howdy! I will add some new material in a few minutes which goes over some issues you may face when adapting a grammar into fandango-rs. The document has a walkthrough of me taking the JavaScript ANTLR grammar, using the fandango-py tooling to convert it, and step-by-step fixing issues and trying to… Read more Howdy! I will add some new material in a few minutes which goes over some issues you may face when adapting a grammar into fandango-rs. The document has a walkthrough of me taking the JavaScript ANTLR grammar, using the fandango-py tooling to convert it, and step-by-step fixing issues and trying to shed some light on the opaque error messages you will no doubt face. |
Your LanguagesWritten on 11.05.26 (last change on 11.05.26) by Alexi Turcotte Hey all! More info on developing your grammars is forthcoming, as well as a summary of Friday's discussion. As promised, here is the list of languages people are initially working on: Lea: Julia Hey all! More info on developing your grammars is forthcoming, as well as a summary of Friday's discussion. As promised, here is the list of languages people are initially working on: Lea: Julia BTW, let me know if you'd like to switch languages, from here on it'll be on a first come, first serve basis for language changes. |
Week 1 & 2 UpdatesWritten on 04.05.26 by Alexi Turcotte Howdy! Action Item: Please share your programming language rankings with us by Wednesday via submission in CMS. We'd like to finalize the language assignments by Friday. Hope you had a nice weekend! Besides the above action item, a few minor updates: 1. Updated the material for the Week 1 & 2… Read more Howdy! Action Item: Please share your programming language rankings with us by Wednesday via submission in CMS. We'd like to finalize the language assignments by Friday. Hope you had a nice weekend! Besides the above action item, a few minor updates: 1. Updated the material for the Week 1 & 2 Tasks (a few little fixes), and shared a PDF version of the slides instead of Keynote. 2. I will share a few more tutorial documents throughout the week, namely discussing combining constraints, generation goals, fixers, and the more advanced evolutionary algorithm. 3. The plan for this Friday is to first discuss the Week 1 & 2 Tasks, discuss programming language assignments, and I will then present some material on how to prepare a grammar for the language you will have chosen. 4. There's also now a forum set up in CMS. Best, Alexi |
Week 1 & 2 Slides and TasksWritten on 27.04.26 by Alexi Turcotte Hey all! 1. The slides from the meeting, and 2. A much more detailed document, walking you through setting up your first fandango-rs crate, as well as three tasks to complete, one thinking, one reading, and… Read more Hey all! 1. The slides from the meeting, and 2. A much more detailed document, walking you through setting up your first fandango-rs crate, as well as three tasks to complete, one thinking, one reading, and one implementing. Please read and work on these tasks before the next seminar meeting. While you go about getting your first crate up and running, think of a preferably ranked list of at least three programming languages you'd like to fuzz in this course. We will likely ask you to submit list before the seminar meeting next week so that we can ensure a good spread of unique programming languages. Besides that, if you encounter any insurmountable difficulties when following the tasks, particularly if the instructions are unclear or you struggle with implementing the extra constraint, let us know! Now, let's find tons of compiler bugs. |
Important: Register in LSF by May 15Written on 27.04.26 by Andreas Zeller Dear all, Please be reminded that you need to formally register for the seminar "exam" in LSF by May 15, 2026. Do not forget to do so; we'd suggest that you register right now. You can also always un-register by that date, should you find the seminar is not to your taste (and register again if… Read more Dear all, Please be reminded that you need to formally register for the seminar "exam" in LSF by May 15, 2026. Do not forget to do so; we'd suggest that you register right now. You can also always un-register by that date, should you find the seminar is not to your taste (and register again if your mood changes). However, be also reminded that we're always here to help you make your participation a success :-) Looking forward to working with you, Andreas + Alexi |
Twelve test generators for twelve programming languages
In this seminar, we will study and develop _test input generators_ for 12 statically typed programming languages, including Java, Go, Rust, Kotlin, Scala, Haskell, ML, and other languages of your choice.
At CISPA, we have developed test generators that produce test inputs in highly complex formats and languages. Recently, we have been successful in getting these generators to produce lots of valid and diverse C programs. We can feed these into a C compiler and see what happens. (Some compilers actually crash.)
Our method requires (1) a _grammar_ of the programming language in question (these are always already available), and (2) a set of _constraints_ that define rules such as definition before use, proper scoping, or basic type correctness. We already have such constraints in place for the C language. Since the rules do not vary much across languages, adapting the C rules to another programming language may take only a few days.
In this seminar, we will study different programming language concepts each week, with each participant focusing on applying that concept to the generator for their chosen language, and then discussing together how these concepts are realized. At the end of the seminar, your generator may be included in a high-profile scientific publication we plan to write in the summer, with you as a co-author!
Requirements: To be successful in this seminar, you need:
* basic knowledge of grammars, as you would typically have gained in introductions to computer science
* a good understanding of the semantics of programming languages, such as identifier usage, scoping, typing, and more.
Constraints are specified in Rust, so knowledge of Rust will be helpful. However, you will be able to learn Rust during the seminar.
Successful participation in "Security Testing" or equivalent knowledge of structured fuzzing is a plus.
