In case you missed it, here’s part one: Ask John: Competition Teams – Part One – How to get started
I read through the first blog you posted on starting competition teams, but need practice material. What are some good resources I can use to help them practice and prepare?
Before you start practicing and participating in competitions, be sure your students know their fundamentals VERY well. There is nothing worse than throwing a student into a contest situation unprepared where he or she is doomed to fail. Allowing a student to endure a CS contest with a zero score, or even worse, a negative score is the result of just plain bad strategy and coaching. This leaves a bad taste in their mouth, and you will probably lose them for any future participation. Just like you wouldn’t put a ball player into a game situation without sufficient practice and skill repetition, you should not do the same with your students. Give them a fighting chance before you put them under the pressure of a competition. Unfortunately, I’ve seen this happen time and again, and it makes me feel bad for the student, and makes me angry that the coach would do this to them.
Computer programming fundamentals includes basic output and formatting, using conditional statements, and using loops. They need to know how to use all of the different data types, as well as some basic data structures, like arrays, sets, and maps. For the written test, they need to know their number bases, understand basic logic theory using NOT, AND, OR, XOR, and be able to interpret programming code segments that deal with data types, expressions, all of the different operators, input, output, conditionals, loops, nested loops, and arrays.
Most importantly for the programming portion of CS contests, they need to be able to input from files. In Java, the Scanner class is very handy in doing this. For a good tutorial on Java file input, see Lesson 3B at the oncslessons.net website. Also available at this site are updated UIL Bytes videos, including a demonstration of the how to solve the UIL DryRun problem, a good lesson series on number bases, as well as reviews for the first fifteen questions on the UIL test. The UIL Bytes page has a number of videos that will help with some aspects of the computer science competition.
Gina Wilder says this about preparing your students.
Teach students the concepts they need to be successful. For hands on, make sure they know how to input data from a file. Start with easy problems and build. Consider pairing your experienced student with your newbies. Take a challenging problem and work through it as one big group. For independent practice, use sites such as codingbat.com. I like to alternate between written tests, concept worksheets, and hands-on packets. You might start by having the kids take an old UIL test, then have them research the problems they missed. Once they’ve completed their research (or dead ended), go over the test as a group. Encourage students to share the knowledge they gained through their research. There will still be plenty of problems that you have to work and explain. Pick a concept or two from the test and dig in deeply—printf, for example. Then, do some hands-on problems. This order of activities would probably take 3 weeks to complete. Once you complete the cycle, start over.
There are several quality sources from which good practice materials can be found and acquired. UIL itself has past tests and programming packets available for purchase, and there are several 3rd-party vendors who have some good stuff to help you out. ACSL has past competition materials available for purchase, and USACO has an online training environment that is excellent for developing your students’ programming abilities.
Louis Fleming suggests this list of materials and resources for practicing.
Dr Brad Kjell – http://www.oopweb.com/Java/Documents/JavaNotes/VolumeFrames.html Includes self grading quizzes and flash cards
CodingBat.com – free online coding practice
Codinggame.com – Interactive game style coding practice
O(N)CS Lessons – http://oncslessons.net/ – Study materials and Videos
A+ Computer Science – apluscompsci.com – Practice Tests – Programming packets – Online programming practice
Technomustang.com http://technomustang.com/ – Practice Worksheets
Big Java – Cay Horstmann – Check Amazon
The most important thing to do is to practice, practice, and practice some more. Schedule a regular time each week, either before or after school, and insist that your team members attend. Encourage them to practice on their own as well to further develop their own knowledge and skills.
The second most important thing to do is to participate in as many practice competitions as you can find time for, either face-to-face, or online. The face-to-face competitions often require a long day trip, and perhaps even an overnight, depending on how far away the competition is. You must convince your district leaders that this is well worth the investment in time and funds, as it will better the chance for students to be successful and quite possibly enhance their college scholarship opportunities. Nothing can replace the experience of practicing under the pressure of an actual contest.
Thanks for all you do for your students, and for our future technology leaders!
About Ask John
As he always emphasizes in his classes, courses, and workshops, there is no such thing as a silly question, except for the one you do not ask. John Owen has taught high school Computer Science very successfully for many years, and has a team of CS colleagues who are ready and willing to lend their expertise, experience, and wisdom to help you become a better computer science teacher. This blog is for you! Ask your questions, and he will do his best to give you sound advice that will get you back on track with whatever issues you encounter, and for which you seek answers.
Have a Question?
CS Teachers are encouraged to submit their questions about teaching CS or other aspects of CS education. Send your question to email@example.com and we’ll be sure to let you know if your question is featured in the Ask John column of the WeTeach_CS Blog.