We hold a programming contest each fall and spring semester with free food and (sometimes) prizes. All students are welcome to participate! You don't want to miss this!
We are grateful to National Instruments for their generous sponsorship of the Fall 2010 and Fall 2011 programming contests. Among other prizes, NI has provided a grand prize of a Lego Mindstorms robotics kit, which uses National Instruments technology.
We are grateful to Trent Voigt, CEO of JetPay.com for generous sponsorship of the Fall 2007 and Spring 2008 programming contest.
This was the first-ever collaborative, heuristic programming contest, on the Traveling Salesman Problem. More information on the contest can be found here.
The following students scored the top three spots: Erica Wilson, Chiam Chiam, and Yanxin Lu. More information on the contest can be found here.
The following students scored the top three spots: Ryan Henning, Chris Vaszauskas, and Chiam Chiam. More information on the contest can be found here.
This was a team competition. The following teams scored the top three spots:
Chris Vaszauskas, Mitchell Mebane, and Tak-Chien Chiam placed first, second, and third. More information on the contest can be found here.
Nick Soltau, Greg McNew, and Tak-Chien Chiam placed first, second, and third. The top prize given away was a Dell PC. More information on the contest can be found here.
Nick Soltau, Brett Phillips, and Greg McNew placed first, second, and third for their efforts. The prizes included an iPod, iTunes gift certificates, Chili's gift certificates, a Dell PC, movie passes, and more. The contest was sponsored by JetPay.com. More information on the contest can be found here.
We had a very exciting contest. Mitchell Mebane, Nick Soltau, and Brett Phillips placed first, second, and third for their efforts. The prizes included an iPod, iTunes gift certificates, Chili's gift certificates, a Dell PC, movie passes, and more. The contest was sponsored by JetPay.com. More information on the contest can be found here.
We had a great contest, Mitchell Mebane, Brett Phillips, and Bobby Carroll placed first, second, and third for their efforts. The prizes included a $50 gift certificate, a computer, books, t-shirts, and free pizza for all. Here's a list of people who signed up. Orie Achonwa also did a nice writeup of the contest.
With thanks to Altex of Waco for their sponsorship of the contest grand prize. Nate Roberts and Nick Soltau came in the top two finishers. Please see the contest results here.
Big thanks to everyone who came out to compete, to Dr. Sturgill for providing the pizza, and to Matt Aars for helping set up the contest environment.
See some sample problems here:
The computer science department at Baylor is offering three 1-unit courses on competitive learning. Each of the courses is focused on developing problem solving and programming skills on interesting programming problems. The three courses are Competitive Learning levels I, II, and III, with each course building on the previous one. There is no expectation of homework outside of the class meetings.
The prerequisite for level I is Data Structures and Algorithms (CSI 3334). The prerequisite for level II is level I, and the prerequisite for level III is level II. However, if you have not had the prerequisite but you have strong problem solving and/or programming skills, you are still encouraged to talk to the professors about taking the course -- we are willing to make exceptions.
If you would like to take any of these courses you will need to get permission to register from one of the instructors. Please email Dr. Hamerly to get permission so you may register. The courses may appear closed on the Baylor registration website; this is simply because you need permission to register.
The courses generally meet Monday afternoons in Rogers 113. Check the Baylor course listings page for the latest details.
Please see this syllabus for more details on the courses. The course number is 4v96, sections 1, 2, and 3.
If you are participating in the current offering of the competitive learning course, this section is for you.
Here are some basic instructions for getting started with PC^2, our contest submission and judging software.
If you are taking section two or section three of this course, you get to write one or two problems of your own. We eventually convert these problems to LaTeX, and put them into our problem repository. Your problem might be used later in the course or to support one of our local programming contests. When you write a problem for the course, we will eventually need:
The problem statement is a description of the problem, along with what we hope will be an unambiguous specification of what the input and output will look like. Although a problem may have a short mathematical description and a direct connection to a well-known algorithm, we expect you will want to obscure this a little bit by dressing the problem up with an entertaining story. Likewise, instead of connecting the problem directly to a well-known algorithm, think about how you design your problem so that the programmer must adapt a common algorithm in some way.
Eventually, we will convert your problems to latex. This sample problem is an example of the latex source for a very simple problem. In addition to the problem statement itself, the latex source includes meta-information that we can use to search for problems of particular types or particular difficulty levels. These macros are defined in the icpc_problem.sty file. If you want to write your problem in latex, these two files should be enough to get you started.
We'd like a working solution to your problem. This helps us to gauge the difficulty of your problem, and it also help you to refine your problem and make sure your input and output are correct. We usually call the sample solution, "soln.cpp", but you can write your sample solution in just about any language you want. Here is an example soln.cpp for the simple problem statement given above.
Normally, you will want to test candidate solutions on a large set of test cases. Some of these will be hand-selected, difficult inputs. Others can just be randomly generated tests. You will need to provide an input generator that creates both types of inputs. Normally, this will be called something like "gen.cpp", but you can use other languages if you want to. Perl can be particularly convenient for generating some types of inputs. For the simple problem above, the file gen.cpp is the input generator we use.