I'm a second-year student outside of computer science, and I've decided to try out for my school's programming competition. The event is in roughly two or three months, although staying consistent may be difficult alongside coursework and self-study in software development.
The competition uses C# console programs. There will be five problems in one hour, with judging based on functionality (50%), program structure and design (30%), and output (20%). The expected topics seem to include arrays, strings, dictionaries, hash sets, basic algorithms, and possibly BFS or DFS for simple tree or graph problems.
I'm not very confident and expect some competitors to have more experience, but I still want to prepare seriously and participate. Which problem patterns should I prioritize with this limited time? Are there useful C#-specific resources or practice methods? Also, how can I improve my speed and ability to break problems down under time pressure? I'd especially appreciate advice on what to focus on and what to skip.
2 Answers
Start with exactly the topics you expect to see instead of trying to learn all of competitive programming. Practice arrays and strings, frequency counting with dictionaries, membership checks with hash sets, sorting, two-pointer or sliding-window problems, prefix sums, and simple simulation. After that, add basic BFS and DFS if you have time.
For C#, make sure you can write fast input parsing, use List, Dictionary, HashSet, Queue, Stack, sorting methods, and string-building tools without constantly looking up syntax. Build a small template and practice writing it from memory. Since the scoring includes structure and output, keep your solutions readable and test edge cases carefully.
Speed comes from timed repetition, not just reading explanations. Begin with untimed problems so you learn the patterns, then do short sets of two or three problems with a strict limit. Eventually simulate the full five-problem, one-hour format.
When stuck, write down the inputs, outputs, constraints, and a few small examples. Try a simple brute-force approach first, then look for repeated work that can be removed with a dictionary, sorting, prefix sums, or a better traversal. Keep a mistake log and redo missed problems a few days later. With only two months, consistency matters more than attempting advanced topics.
You don’t need to feel ready before starting. Even a regular 30–45 minute practice session is useful, and reviewing why you got stuck is often more valuable than immediately moving on to another problem.

A good way to find weak spots is to work offline from a blank file. Try implementing common input, collection, and traversal patterns without searching. Anything you can’t reproduce quickly becomes a focused review topic.