15 Homework 10A
Due:
Tuesday, 3/19 at 9PM
This assignment may be done with an approved PARTNER.
What to Download:
There is no starter file for this assignment. Please produce a plain text (extension .txt) or markdown (extension .markdown or .md) file with your answers. If using Markdown, use code blocks like:
```
Code goes here
```
To identify code.
Submit your completed file (with extension .txt, .md, or .markdown) to the HW10A assignment on Gradescope.
15.1 Intro
Throughout the last nine weeks, you’ve been learning software specification techniques, and the language LSL that we built specifically to make it easier for you to learn those techniques.
However, none of what we have taught you is exclusive to LSL, and very little is even all that much easier to do in LSL than through combinations of other systems, at least once you learn the tools: there just isn’t a single system that can do all of it nearly as well, and there certainly isn’t one that is as simple to use.
While we’ve covered various techniques, the core of what we have been teaching you involves writing properties down as code and then using random generation to exercise those properties, possibly on hundreds, thousands, or even millions of examplse. This technique, Property Based Testing (PBT), is widely supported, with good libraries written in nearly every programming language.
15.2 Problem 1
In this assignment, we want you to first identify a PBT library in a programming language that you have used outside of CS2800. If all your programming experience is CS2500 & CS2800 and you are not taking CS2510 concurrently (in which case, use Java), look for a Racket PBT library. Often times these libraries have the name "Quickcheck" in their name, after the system, created in 1999, that originated the idea.
15.3 Problem 2
Once you have identified your library, your next task is to write a memo that summarizes its strengths and weaknesses. Both try it out yourself, but also produce annotated examples explaining how the examples work. You may not simply duplicate official or unofficial documentation for the library (that is plagiarism: this must be your own work), though you clearly can read and learn from those.
Produce at least three examples, and at least a few paragraphs describing the library.
The audience for this should be coworkers at a software coop or company where you are working. Imagine you are tasked with explaining how the system works, and assessing its strengths and weaknesses.
15.4 Problem 3
Understanding the technical mechanism of the library is one thing, but why should this be done? Imagine you are writing a separate memo to a manager at the same software coop or company. For this problem, you should write several (>=2) paragraphs justifying why use of this library should be incorporated. What benefits might you gain? What drawbacks do you expect? Are the drawbacks inherent to the approach, or details of the library you identified in Problem 2? Imagine that the manager has access to your more technical explanation from Problem 2, but may not want to read them.