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.