420: Computer Science Research ================================ Independent research in Software Construction Methods under Dr. Keith Gallagher. Topics ------ - Clean-room software development methodology - Rapid prototyping and iterative development - Formal methods and correctness proofs - Survey and critique of industry development practices Projects -------- Triangle Classifier (``420/tri/``) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ A clean-room development exercise producing a triangle classification program. Given three side lengths, the program validates input, determines if a valid triangle can be formed, and classifies it as equilateral, isosceles, or scalene. The project was developed iteratively under Dr. Gallagher's clean-room methodology, with separate modules for input validation (``prelim_check.c``), triangle testing (``is_triangle.c``), and type classification. .. code-block:: c void is_triangle(unsigned long a, unsigned long b, unsigned long c) { if ((a + b) > c && (a + c) > b && (b + c) > a) { if (a == b && b == c) printf("%lu %lu %lu: equilateral\n", a, b, c); else if (a == b || b == c || a == c) printf("%lu %lu %lu: isosceles\n", a, b, c); else printf("%lu %lu %lu: scalene\n", a, b, c); } else { printf("%lu %lu %lu: not a triangle\n", a, b, c); } } Knockout Tournament (``420/ko/ko.c``) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ A rapid-prototype exercise implementing a knockout (single-elimination) tournament scheduler. Demonstrates how clean-room and prototyping methodologies differ in practice by tracking multiple development iterations. .. code-block:: c /* Prototype entry point — functionality stubbed for first iteration */ int main(void) { do_something(); return 0; } Notes ----- This course produced a written survey comparing clean-room and rapid-prototyping methodologies, evaluating their applicability to real-world software projects.