One of the first questions people ask when beginning to take an Intro Programming course, is how do you test someone’s ability to code? The general answer is having students code on paper, by being asked questions which challenge them to write a program using skills they should have mastered. The next question tends to be why. The testing questions are much more concise and pointed than large scale programming projects assigned as homework. To some students the idea of testing small scale problems for a subject which seems to have only large scale applications seems futile. A general answer most professors give is that in the industry, a portion of your interview will require solving problems similar to those given on a midterm. On a larger scale, however, learning how to solve small-scale programming or logic problems efficiently has much more benefit to programming than just preparing you for an interview.
Participating in the Herbert Summer Competition has established in my eyes that being able to solve small-scale and pointed programming problems is an important skill. Throughout each level of Herbert, the programming challenges increase in difficulty, as well as in the amount of skills which are being tested. In large scale programming projects, it is highly likely that a broad range of skills will be necessary – various data structures, iteration, recursion, runtime efficiency, etc. – yet depending on the variability or broadness of a project, it is possible that these skills will be used in relatively the same manner time and time again. Or there may be a variety of other factors that lead to a lack of practice. A competition like Herbert provides a platform in which to practice logical thinking and problem solving skills, in a unique programming language, and in a different manner than usual.
Aside from interning, one thing that summer break always seems to provide is a chance to get away from school work. However, this always leads to a less than smooth transition when coming back to school. As a college student, and an engineering student specifically, there is no such thing as “Syllabus Week”, and the first day of lecture is just that; a first day of lecture. Within the first two weeks, I am already studying for a physics midterm, and having a long break from logical problem solving comes as a handicap when courses move that fast. There is no two weeks to transition back into using my brain regularly. Participating in the Herbert Summer competition has acted as a much needed challenge while I have been away from school. The puzzles were challenging but enjoyable. Each level increase brings a unique puzzle, and it is very clear that they were built carefully and precisely. Adaption is a common skill necessary to proceed throughout Herbert, as the algorithm or thinking behind what may have worked to solve a previous puzzle, will not work down the road. Herbert challenges one to constantly build upon problem solving ability. Another feature I find very interesting and true to programming itself, is that there is no one right answer. There is the right answer that fits the correct efficiency, and completes the goal properly, but there is more than one way to get to that solution.
Overall, I have gained a lot of insight through participating in the Herbert Summer Competition. I believe that the skills which Herbert puzzles challenge, and focus on, are important skills to practice as a Computer Science Major. I believe that practicing these skills on a unique, and small-scale level aside from my large-scale programming intern work, will greatly benefit me when I begin taking classes again focused on logical thinking and puzzle solving. I also found Herbert to be fun. I generally spend my summers, or free time, playing Candy Crush and working to solve problems in that regard, but actually solving problems through coding language has proved to be a much more exciting task – and one which I think will yield myself a larger reward once the school year begins.