Computer networks play an important role in the daily operations of businesses, universities, and governments. Unfortunately, these networks are often configured (or programmed) incorrectly, resulting in security breaches and network outages. Consequently, Professor Gember-Jacobson has designed a system for automatically repairing errors in network configurations. However, the system takes more than 8 hours to compute repairs for large networks and the repairs it produces may be difficult for humans to understand.
This project will focus on designing heuristics to compute repairs more quickly and ensure the resulting repairs are easy for network operators to understand. Several students will work in close collaboration with Professor Gember-Jacobson to: (1) explore how to narrow the location of errors to specific lines of configuration, thereby reducing the space of possible repairs; and (2) identify factors that impact how easily a network operator can understand a repair and integrate these factors into the ranking of repairs. The project will involve a mix of reading related work, analyzing existing network configurations, surveying network operators, extending existing algorithmic techniques, and writing code. You will learn how to configure enterprise-grade computer networks, gain experience working with a large body of code, improve your skills in designing and evaluating algorithms, and help improve the networks you use every day.
Students should be familiar with the Java programming language and basic data structures; if you have taken COSC 102, then you should have these skills. Familiarity with graph algorithms (covered in COSC 302), context-free grammars (covered in COSC 304), or network routing algorithms (covered in COSC 465) is beneficial, but not required.