Code Reviews ======================= The purpose of code reviews is to improve the performance of agents for future competitions. We want to find faults in an agent, say "Alice," who has just lost to another agent, say "Bob". We assume, with high probability, there must be something wrong with Alice and we want to locate the program lines that contain possible faults. Hopefuly those faults explain why Alice loss and other potential problems. In other words, we want to map a loss to a set of faults. We use the following protocol: 1. Bob's developers discuss Alice' code; Alice' developers take notes. Bob's developers come up with a set of hypotheses that might explain the loss. 2. Alice's developers respond to the set of hypotheses. They propose a sequence of steps to avoid this kind of loss in the future. Bob's developers take notes. 3. Bob's developers comment on the sequence of steps. Alice' developers take notes. 4. The developers of Alice explain their testing approach and show their test cases down to the unit test cases. While doing this Bob's developers look for good qualitities in the code: -- Maintainability -- Good OO Style -- Test Coverage -- Good process (e.g., naming conventions for variables) -- Best practices Once a team has spoken, the entire class and teaching staff may respond after each step. Team member performance in reviews counts towards class participation. The result of the review should be that agent Alice improves. Schedule: Each team plays once the role of Alice and once the role of Bob. | Alice / Bob | Date | +=========================+==================+ | Nerdicide / Athena | Tuesday 10/27 | | Jack Bauer / Sweet | Friday 10/30 | | Athena / Lightning | Tuesday 11/10 | | Black and Gold / Peon | Friday 11/13 | | Stepdad / EasternWind | Friday 11/13 | | Sweet / Jack Bauer | Tuesday 11/17 | |Lightning/Nerdicide | Tuesday 11/17 | | Peon / Black and Gold | Friday 11/20 | | EasternWind / Stepdad | Friday 11/20 | +--------------------------------------------+ To prepare for the code review, both teams should get together, exchange software, agree on a game where Alice lost to Bob, and prepare a history of how to find the faults. Code Review 101 http://portal.acm.org/citation.cfm?id=1562764.1562778&coll=portal&dl=ACM Kode Vicious: Kode Reviews 101