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.
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.
/* 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.