Computer Science Educators Asked by Neelesh V on December 29, 2020
I am currently in the 10th grade. I would like to get started in competitive programming. This are the things I know now:
Mathematics – Currently in pre-calculus Well Mathematics in my country is pretty unstructured. You would be studying bits of everything, and not one after the other. So I self studied up to Algebra II (Algebra I, geometry) so that I can cover it in more depth than in my school, though in school I’m learning through trigonometry stuff, algebra I & II stuff and geometry in varying orders.
Programming:
1.Knows the basics of C, Python, C++(main currently learning)
CS50X completed
HTML,CSS ,JS and sqlite3 with python
What I want to learn for competitive programming(I am unsure):
Discrete Mathematics
Algorithms
Data Structures
4.Dynamic Programming
and I am hoping you’ll help me to structure the remaining necessities and knowledge required. I found some blogs at many places but they were incomplete i.e. they are not well enough for beginners to you know get started on.
I am aiming currently for IOI.
UPDATE:
I am from India.
National qualifications:
These are the stages of IOI qualification in my country:
1.Zonal Olympiads – Either written(pen & paper) or Programming or both
(about 500-800 participants in each)
3.Next if qualified National training camp(about 30)
4.Top 4 are chosen from it to represent at IOI.
Edit: I am from India.
Edit: I am currently taking discrete mathematics online.
I believe I know where to practice.
Which should be first book/course/material to learn?
If your aiming for the IOI, the first step has to be figuring out how to get onto your country's delegation. In the USA (where I am), that means USACO. If not, then you will have to determine what that pathway is. Every country has some method of determining delegates.
The next step would depend a lot on how those delegations are formed within your country. You may have to join a team, and there will presumably be some sort of coach. Most of your preparation and learning will probably focus on the competition used in your country.
And in terms of what to study, the competition itself looks to be very, very focused on algorithms. Until you can find more specific resources to the competitions within your own nation, you could spend time practicing the older, published IOI problems and Project Euler problems, which seem similar in nature.
It's hard to be more specific than that without knowing your country of origin.
Good luck!!
Correct answer by Ben I. on December 29, 2020
I can recommend two things. Project Euler is great for sharpening your algorithmic skills. Also, you can sign up for USACO's training program. It is excellent and you can compete in the USACO competition. It's completely free.
Answered by ncmathsadist on December 29, 2020
Ben's answer on how to find and join a team is spot on. I'll address what you should be studying.
Competitive programming generally is about correct use of algorithms and data structures. There are college courses available on youtube for mastering that subject. At a bare minimum, you should be comfortable implementing a linked list, graph, stack, heap, and binary search tree from scratch (a lot of these require recursion). Once you've mastered those, try to find an algorithm that is reliant on each one to help you build pattern recognition for quickly identifying when a problem calls for a certain structure.
So many problems are graph problems at their core (including most tree problems), so expanding in that area is always good. Dynamic programming will be useful as you approach upper level problems that have strict space and runtime requirements.
Good luck, and remember that programming is not always linear progression. You may struggle for months and have a major breakthrough when you least expect it.
Answered by guitarcat on December 29, 2020
Get help from others!
Recent Questions
Recent Answers
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP