Important Resources

Websites, articles, topics, and videos compiled by TWU students.

Websites

Kattis

Kattis is an online platform for competitive programming. It provides a collection of programming problems that are used in various programming competitions and educational contexts.

  • Problem Sets: Kattis offers a diverse range of problems categorized by difficulty, covering algorithms, data structures, and mathematical challenges.
  • Submission: Users can submit solutions in multiple programming languages, such as python or c++. The system evaluates submissions against a set of test cases to determine correctness and efficiency.
  • User Profiles: Competitors have profiles where they can track their progress, see problem-solving statistics, and compare their performance with others. You can join the TWU group and see others scores by creating an accout >> profile settings >> university.
  • Contests: Kattis hosts periodic contests that allow users to test their skills in a timed environment, simulating real competitive programming scenarios. This is great experience to prep you for the ICPC competition environment.

CodeForces

Codeforces is a popular online platform for competitive programming. It is widely used by both novice and experienced programmers to practice their coding skills and participate in contests.

  • Problem Sets: Codeforces offers a wide range of programming problems across various difficulty levels. Problems are categorized by tags, such as algorithms or data structures, making it easier for users to find and practice specific topics.
  • Contests: The platform regularly hosts contests, including short contests (like Codeforces Rounds) and longer, more challenging competitions. These contests are timed and are a great way to test and improve problem-solving skills.
  • User Ratings: Codeforces has a rating system that ranks users based on their performance in contests. Ratings help gauge the skill level of competitors and foster a competitive environment.
  • Community: The platform features a strong community with forums where users can discuss problems, share solutions, and ask for help. There are also blogs and tutorials that provide insights and learning resources.

Neetcode

NeetCode.io is a platform designed to help users prepare for technical interviews and improve their problem-solving skills. It offers a range of resources and tools for coding practice and interview preparation.

  • Problem Sets: NeetCode.io provides curated lists of problems that are commonly asked in technical interviews. These problems are organized by difficulty and topic, making it easier to focus on specific areas.
  • Solutions and Explanations: Each problem comes with detailed solutions and explanations, helping users understand the underlying concepts and improve their problem-solving techniques.
  • Interview Preparation: The platform offers mock interviews and practice questions that simulate real interview scenarios, allowing users to test their skills in a realistic setting.
  • Study Plans: NeetCode.io features structured study plans and guides to help users systematically prepare for interviews and cover important topics effectively.

USACO Guide

USACO Guide is a website with a roadmap for leading programmers through important concepts and problems seen in the USACO contest.

  • Learning Paths: The guide is divided into multiple levels (Bronze, Silver, Gold, and Platinum), mirroring the divisions in USACO contests. Each level provides a step-by-step curriculum, including theory and practice problems.
  • Curated Problem Sets: The guide features a collection of problems from USACO contests and other sources. Problems are categorized by topic (such as data structures, algorithms, and computational geometry) and difficulty.
  • Comprehensive Tutorials: For each topic, there are detailed tutorials explaining essential concepts, techniques, and algorithms, with code examples to reinforce learning.
  • Study Resources: The guide also includes additional resources, such as tips for improving coding skills, links to external tutorials, and advice on how to approach USACO contests.

Articles / Books

Competitive Programmer's Handbook

"The Competitive Programmer's Handbook" by Antti Laaksonen is a comprehensive guide for competitive programming. It covers essential topics and techniques used in programming competitions, offering a detailed understanding of algorithms and problem-solving strategies.

  • Algorithms and Data Structures: The book provides in-depth coverage of fundamental algorithms and data structures, including sorting, searching, and graph algorithms.
  • Problem-Solving Techniques: It explores various problem-solving techniques and strategies, helping readers develop efficient solutions for complex problems.
  • Mathematical Concepts: The handbook includes important mathematical concepts relevant to competitive programming, such as number theory, combinatorics, and probability.
  • Implementation Tips: Practical tips for implementing algorithms and managing performance issues are discussed, aiding readers in writing efficient and correct code.
  • Practice Problems: The book features numerous practice problems with solutions, allowing readers to apply what they have learned and refine their skills.

Videos

Video1

Video description

  • Algorithms and Data Structures: The book provides in-depth coverage of fundamental algorithms and data structures, including sorting, searching, and graph algorithms.
  • Problem-Solving Techniques: It explores various problem-solving techniques and strategies, helping readers develop efficient solutions for complex problems.
  • Mathematical Concepts: The handbook includes important mathematical concepts relevant to competitive programming, such as number theory, combinatorics, and probability.
  • Implementation Tips: Practical tips for implementing algorithms and managing performance issues are discussed, aiding readers in writing efficient and correct code.
  • Practice Problems: The book features numerous practice problems with solutions, allowing readers to apply what they have learned and refine their skills.