Requirements Checker (stage 5 -- Extensibility Assessment)

Due: Wed Mar 18 by 11pm

Overview

Oh no! CS has changed the structure of their requirements! And they want to reuse your checker.

For this (last) assignment with Requirements Checker, we want you to assess how well your existing infrastructure could support the 2020 CS ScB requirements. Yes, we're going back in time to simulate this. This is so that we can point you to another set of real requirements that actually need(ed) supporting: there's nothing artificial here.

To be clear: we are not asking you to reimplement your checker. Rather, we are looking for a technical assessment of whether what you've already done could also support the 2020 requirements, which had a more complicated structure.

In the 2020 requirements, the upper level courses were structured around what we called “pathways”. A pathway consisted of two 1000-level courses in the same area, along with intermediate courses (like linear algebra, software engineering) that supported that area. ScBs had to complete two pathways. They also needed a 1000-level “breadth” course that was not in the set of courses for either pathway. The capstone course had to be in the same area as one of the pathways.

Assignment Tasks

Task 0: Make a folder named extension in your requirements checker repo. In it, you will put two md files: ANALYSIS.md and LEARNING.md.

Task 1: In ANALYSIS.md, do a technical assessment of how well your existing implementation would support the 2020 ScB requirements, with particular attention to how you separated the requirements from the code. To help you structure your response, consider the following conditions that distinguish between the 2025 and the 2020 CSCI requirements:

  1. The intermediate requirements that said ABs had to take 3 courses touching on two areas, and ScBs had to take 5 courses touching on all three areas.
  2. The pathway requirements that said a pathway consisted of two courses (one of which had to be designed "core") and intermediate courses.
  3. The breadth requirement that consisted of a 1000-level course that was NOT in either pathway.
  4. The capstone requirement that consisted of a 1000-level course from the capstone list (same list as for 2025), and was in one of the pathways used for the ScB (but could be an additional course beyond the ones used for the pathway itself).

For each of these four conditions, discuss the extent to which your current way of capturing requirements would let you express the condition. There are two facets here: can you express the requirement at all with your current approach, and can you express it cleanly (for review by an expert in the requirements who doesn't read code). For the former, either sketch out how you could do it or talk about where you would be stuck.

Task 2: In the second part of your technical assessment, focus on what part of the checking code would have to be modified to support the 2020 requirements. We're looking for details at the level of “add a file to directory X with the constraints”, “modify function Y in file F to check/do Z”, “redesign algorithm A in file F so that ...”. Again, you are not producing the new code, only assessing what might need to change in your existing codebase.

Task 3: Write a LEARNING.md file like you did on the previous assignment. You don't need to keep a reflection journal. What are you feeling prepared for and underprepared for in order to conduct such an analysis?

Submission

Push everything to your repo by the deadline.

Grading

We'll be looking at the accuracy of your answer and whether you are providing your analysis in suitable technical language and depth. The standard for “suitable” is “do you show that you understand any issues that you raise”. For example, if you said “this wouldn't work because my CSV file is too limited”, we would consider that a low quality answer because you haven't explained the nature of the limitation. An answer doesn't need to be long in order to be suitably technical. Shorter answers are better. Please use paragraphs and other punctuation to ensure readability.