An open API service indexing awesome lists of open source software.

https://github.com/johnwickerson/hsv


https://github.com/johnwickerson/hsv

Last synced: 5 months ago
JSON representation

Awesome Lists containing this project

README

          

# Hardware & Software Verification

This is the homepage of the above-named module, which is offered to MSc and 4th-year MEng students at Imperial College London.

* The module is run by [Dr John Wickerson](https://johnwickerson.github.io/).

* Worksheets are available for [Dafny](dafny), [Isabelle](isabelle), and [SymbiYosys](yosys).

* All coursework is to be done in pairs. Please use [this spreadsheet from October 2025](https://imperiallondon.sharepoint.com/:x:/r/sites/elec70056-202510/Shared%20Documents/General/pairings.xlsx?d=we69152f13a3b464f9027c023502c868d&csf=1&web=1&e=opwcVl) to support this. The spreadsheet contains two sheets. The first sheet contains students who have already paired up. The second sheet contains students who are still looking for a pair. Please enter yourself initially onto the second sheet, and then once you have found a pair, please move yourselves over to the first sheet.

* All coursework is due at 15:00 on Friday 12 December 2025 (the last day of Autumn term).

* The Isabelle coursework for 2025 is [now available](isabelle/2025).

* The Dafny coursework for 2025 is [now available](dafny/2025).

* The SymbiYosys coursework for 2025 is [now available](yosys/2025).

## Summary of past coursework questions

Click on the links below to access the coursework questions (with model answers) from previous years.

- [Dafny 2019](dafny/2019): bubble sort; selection sort; insertion sort; shellsort; Johnsort.

- [Isabelle 2019](isabelle/2019): irrationality of 2*sqrt(2); L-numbers; pyramidal numbers; `opt-NOT` is effective; `opt-NOT` is idempotent; `opt-DM` is sound; `opt-DM` and `opt-NOT` never increase area; `opt-DM` and `opt-NOT` never increase delay; constant folding; circuits with fan-out.

- [Dafny 2020](dafny/2020): zeroing an array; backwards selection sort; recursive selection sort; early-termination bubble sort; cocktail-shaker sort.

- [Isabelle 2020](isabelle/2020): irrationality of 3/sqrt(2); centred pentagonal numbers; Lucas numbers; balanced circuits; NAND gates.

- [Dafny 2021](dafny/2021): array of multiples of two; exchange sort; Fung sort; odd/even sort; bubble sort with triples.

- [Isabelle 2021](isabelle/2021): factorising circuits; divisibility of powers; binary coded decimal.

- [Dafny 2022](dafny/2022): counting squares in a grid; binary search; quicksort.

- [Isabelle 2022](isabelle/2022): full adders; fifth powers; `opt-ident` is sound and never increases area; `opt-redundancy` is sound and never increases area.

- [Dafny 2023](dafny/2023): integer square roots; analogue-to-digital conversion; stupidsort.

- [Isabelle 2023](isabelle/2023): introducing and eliminating XOR gates; lists of clones; analogue-to-digital conversion; Fermat's Last Theorem.

- [SymbiYosys 2023](yosys/2023): binary-to-BCD conversion; verifying a circular queue.

- [Dafny 2024](dafny/2024): verifying SAT solvers.

- [Isabelle 2024](isabelle/2024): introducing and eliminating NAND gates; conversions between numbers and lists of digits; verifying SAT solvers.

- [SymbiYosys 2024](yosys/2024): verifying a multiplier.

- [Isabelle 2025](isabelle/2025): estimating computational complexity of `opt-NOT` and `factorise`; proving that even-length palindromes are divisible by 11; reducing SAT queries to 3SAT form.

- [Dafny 2025](dafny/2025): doublesort.

- [SymbiYosys 2025](yosys/2025): verifying a divider.