Closed iiliffe closed 3 years ago
topic list reworked more to my liking - each dot point could be fleshed out separately: Many problems or their solutions will involve specific theory or algorithms, such as:
Also, many solutions make use of common general approaches, such as:
By solving more problems, you will develop the ability to quickly and instinctively determine which of these might be useful for a new problem.
I got rid of a few things as they didn't quite fit with my restructure, lmk if any of them should be readded. Outstanding stuff that i cbs working on:
Above issues still stand, but:
I agree, we'll probably make this one the problem walkthrough + beginner training and resources, and put "the world of CP" as a blog post or something. Will also address other points, probably Jeffrey work on them since he is the newest to CP I think. Would put AtCoder/Codeforces as the only beginner recommendations due to availability of editorials, beginner-friendly contests, large pool of problems available and good support. ORAC is nice but it can get frustrating without easily accessible help. Resources I would only put Guide to CP, or https://cses.fi/book/book.pdf if they can't get a copy of the book, then at the end recommend taking COMP4128, and https://cp-algorithms.com/ for further learning when they are ready. Remove everything else. Condense contests into like 4-5 lines. Similarly for picking language. Merge training & learning, can probably fit it into 4-5 lines as well.
I made a lot of changes, still haven't added example problem. Training now only mentions Atcoder and Codeforces, while resources mentions Guide to CP and Competitive Programming as the books to use, with cp-algorithms.com for once they are done with those. Training/learning sections have been heavily expanded. Language picking has been simplified, contests has been simplified. Additional resources shortened as one of the links provided is a list with a description of each item, so no point in us adding those again.
Added A+B as an example problem.
intent of example problem was actually to be interesting and have some problem solving, so I'll write a walkthrough for social distancing (rationale above) unless you disagree still looks likes a lot of stuff can be cut down to absolute essentials, and moved over to world of cp. Note that I think we agreed that CP101 should target someone who has never seen a programming problem before - so barely even worth listing a book or more than one or two websites, as they should try a few problems first to see if they actually like solving problems
Removed book references (only recommend USACO guide now). Removed Atcoder, so training only recommends Codeforces. Kept the description of how to find approachable problems by rating, how to find editorials, etc. Removed some of programming language information, just kept that Python is a lot slower than C++/Java.
Review of CP101 version https://github.com/unswcpmsoc/main-website/blob/db14593f10b41c4d3e0223d8eb495e0bdce22fec/content/cp101.md line numbers refer to raw text file
8: Broken markdown. Also what is the purpose of this sentence?
16: Most of these dotpoints feel like they should be under a later heading called "What are the benefits of doing CP?" ("How does this help us as competitors?" is weird wording). IMO when introducing CP, just about the first thing should be giving a simple but somewhat interesting problem example. In any case, I think to answer the heading of "what is CP" there needs to be an example of a problem or more precise explanation of what type of problems you solve.
16: All these backslashes are doing my head in lol. Since these dotpoints are so huge, maybe just make the first line a bold subheading and the rest is just normal body text? Maybe just me but having almost the entire document in dot points is a bit funny.
24: "most university programming problems should become a breeze for you" seems like an unhelpful and misleading exaggeration. Perhaps Rephrase as "By doing CP as a hobby, approaching university programming problems will become less daunting." (the intent behind the statement is fine)
28: "... are likely going to be what you do everytime with CP". What is this trying to say? 31: this list of competitions deserves its own big subheading. Links to the official pages for all the competitions mentioned would be nice.
34: "univeristy" typo. Also "in which" is confusing, just start a new sentence 37: "region" should be "region's" 41: This is in quote marks, who said it? 44: indented dot points are broken 54: this shouldn't be under competitions
57: "socialize" should be "socialise" 59: "favor" should be "favour"
68: "write and run a code" should be "write and run code" 72: "Most of the time this is not an issue" seems inaccurate, maybe "For many simpler problems, this will not be an issue" 74: "it is recommended" seems a tad too forceful 76: "only need to fill in types" can go I think. might be confusing, but it is saying something simple and pretty obvious. or if you thought it was worth mentioning, maybe it isn't obvious idk. 78: change "most" to "many" 80: "language" should be plural, "langauges" typo
83: put these under the other section with training links 86: "Kickstarter" should be "Kick Start"
89: grammar is scuffed for the title. 89: this section seems a bit all over the place organisation wise, content is good though. steps 2 and 3 seem to be on contest technique, which might deserve its own section (and there is definitely more that can be added in terms of contest technique) the "final step" would fit under this too, and could be elaborated on? step 4 is training technique and could go in some other section? step 1 is not useful. 93: scuffed grammar. also I think this list would be useful with at least a high level overview of each topic, and/or some grouping of topics, e.g. dp and graphs are "umbrella" topics, comp geom and string processing are nicher, ad hoc and greedy are problem solving techniques rather than algorithmic techniques (something like this). 110: is "practice, practice and practice" actually a mantra lmao, probably should be "practise" in any case. second sentence grammar is dodgy.
117: Might be just me but I imagine an important thing you need to make clear to a person completely new to CP, which anyone who has ever solved a problem just takes for granted, is that you are writing code that solves a problem for any input, and an automatic judge will make sure you have the right output for some hidden representative set of possible inputs. Might be just me, maybe this fact is obvious. if you agree, this explanation goes hand in hand with an example problem, like how I began the first workshop. 119: I guess I'm saying that I feel like conveying the above is much more useful and important for understanding than, for example, listing out verdicts without any context. 127: "analyzing" should be "analysing", similarly for "penalizes"
137: heading is dodgy, also most stuff here could go in a "training" section. commentary on each listed site would help. 151: cooked link 162: some commentary on the focus, benefits and disadvantages of all these resources would really help.