+ modules

This commit is contained in:
Benjamin Qi 2020-07-14 21:22:24 -04:00
parent f198cc4c2d
commit a627d3f9d5
6 changed files with 82 additions and 93 deletions

View file

@ -26,27 +26,6 @@ All of these are provided at the IOI aside from the additional C++ reference.
- [Java](https://docs.oracle.com/javase/8/docs/api/overview-summary.html)
- [Python3](https://docs.python.org/3/reference/)
## Expected Knowledge
The remainder of this guide assumes that you know the basics of how to code in one of the languages listed above, including the following topics:
- Variables
- Data types
- Reading Standard Input
- Writing Standard Output
- Loops
- If / Else
- Logical operators
- Functions
- Basic Recursion (a function calling itself)
- Arrays
- Multidimensional Arrays
In particular, contestants using Java should be familiar with roughly the first half of AP Computer Science A.
- If you do not meet these prerequisites, see the links below to get started.
- Familiarity with [competition math](https://github.com/bqi343/USACO/blob/master/Resources/Competition%20Math.md) (ex. AIME qualification) is helpful but not required.
## Resources for Learning How to Code
If you aren't comfortable with basic coding yet, you can use the resources below. Let us know what works (or doesn't) for you.

View file

@ -50,13 +50,13 @@ See [clist.by](https://clist.by/coder/bqi343/) for an extensive list of contests
- Archive
- short statements, good editorials
## Onsite Finals
## Onsite Finals (Individual)
I'll star if I qualify. (Let me know if there's something else I should try to qualify for!!)
Let me know if there's something else I should try to qualify for!!
<resources>
<resource source="Google" title="Code Jam" url="https://codingcompetitions.withgoogle.com/codejam/" starred>25 from R3</resource>
<resource source="TopCoder" title="Open" url="https://tco20.topcoder.com/competition-overview/algorithm/algorithm-ways" starred>16; 4 from SRMs, 10 from R4, 2 from wildcard</resource>
<resource source="Google" title="Code Jam" url="https://codingcompetitions.withgoogle.com/codejam/">25 from R3</resource>
<resource source="TopCoder" title="Open" url="https://tco20.topcoder.com/competition-overview/algorithm/algorithm-ways">16; 4 from SRMs, 10 from R4, 2 from wildcard</resource>
<resource source="Facebook" title="Hacker Cup" url="https://www.facebook.com/hackercup/">25 from R3</resource>
<resource source="AtCoder" title="World Tour Finals" url="https://codeforces.com/blog/entry/56623">8 from AGC</resource>
</resources>

View file

@ -2,7 +2,7 @@
id: expected
title: Expected Knowledge
author: Nathan Wang, Benjamin Qi
description: What you're expected to know before continuing to "Bronze."
description: What you're expected to know before continuing onto the rest of USACO Bronze.
---
import { Problem } from "../models";
@ -36,7 +36,7 @@ In particular, contestants using Java should be familiar with roughly the first
## Introductory Problems
The following require relatively little programming experience and no algorithmic knowledge. You should know how to do each of these before moving onto the remainder of Bronze.
The following require relatively little programming experience and no algorithmic knowledge.
<problems-list problems={metadata.problems.general} />

View file

@ -0,0 +1,67 @@
---
id: modules
title: Modules
author: Nathan Wang, Benjamin Qi
description: How this guide is organized.
---
All material in this guide will be grouped into **modules** such as the one you're reading right now.
## Lesson
- Goal is to introduce you to the concept.
- Everything is meant to be completed in order.
- Usually begins with at least one standard problem.
- External resources (text, possibly videos) will generally be placed in tables like the one above. We'll **star** those that we expect you to read.
<spoiler title="Hidden Content">
If we expect you to spend time thinking about a sample problem before checking the solution we'll place the solution in **spoiler blocks** like this.
</spoiler>
<optional-content title="Optional Content">
It's okay to skip over these. Some material in these boxes might not be useful for competitive programming.
</optional-content>
## Implementations
Code should compile by itself, example input / output should be provided. Macros should generally be avoided.
- For Bronze and Silver, we will provide code snippets in C++, Java, and Python.
- For Gold, we will provide code snippets in C++ and Java and (sometimes) Python.
- For Platinum, code snippets might only be provided in C++.
<warning-block>
Will contain common errors that you should avoid.
</warning-block>
(code style guide?)
## Practice
<info-block title="Pro Tip">
Maybe helpful bits of advice.
</info-block>
- Link relevant past USACO problems (and other recommended problems).
- Problems should be sorted in order of how they are recommended be completed.
- Add comments regarding solution sketches.
- At some point we'll write full editorials for those problems which don't have them (or if existing editorials are poorly written).
- Difficulty ranges from "Very Easy" to "Insane." Difficulty is **not** comparable across modules (even of the same division).
- "Intro" refers to a problem that just asks you to implement a standard algorithm or data structure.
<!-- Difficulty should be comparable across a division. Say that you have *almost-solved* a question if you scored at least $n-2$ out of $n$ test cases. At least for platinum, difficulty levels should correspond approximately to the following USA Pre-college almost-solve rates on a USACO contest:
- Easy: $\ge 40\%$ (ex. Fort Moo, Team Building, Redistricting)
- Normal: $\ge 20\%$ (ex. Card Game, Balancing, Gathering)
- Hard: $\ge 10\%$ (ex. Mooriokart, Train Tracking 2, Friendcross)
Old gold problems should probably be bumped up one level. -->

View file

@ -9,7 +9,7 @@ description: How to effectively use this guide to maximize your time.
This guide is in the _pre-release_ stage, meaning it is not yet complete!
Please help us complete this guide by **giving feedback using the "Contact Us" button**<Asterisk>It's located on the bottom left of the screen. If you can't see it, open the hamburger menu by clicking the icon on the top left of the screen.</Asterisk>! You can give feedback about anything:
Please help us complete this guide by **giving feedback using the "Contact Us" button**!<Asterisk>It's located on the bottom left of the screen. If you can't see it, open the hamburger menu by clicking the icon on the top left of the screen.</Asterisk> You can give feedback about anything:
- Unclear Explanations
- Missing / Bad Problem Solutions
@ -21,7 +21,7 @@ If you found the guide useful, or if you got stuck while using the guide, please
## Changing Your Language
To change your language, click the "Language" button on the bottom left corner of the screen (or in the hamburger menu). Content may be different depending on which language is selected!
To change your language, click the "Language" button on the bottom left corner of the screen (or in the hamburger menu, depending on the size of the window). Content may be different depending on which language is selected!
<LanguageSection>
@ -70,69 +70,6 @@ Topics on this guide reflect _past_ problems, not _future_ problems. Contest pro
- Difficulty ranges from "Very Easy" to "Insane." Difficulty is **not** comparable across modules (even of the same division).<Asterisk>Difficulty refers to how challenging a problem is after reading the module, not how difficult the problem is in general.</Asterisk>
- "Intro" refers to a problem that just asks you to implement a standard algorithm or data structure.
<!--
### Modules
All material in this guide will be grouped into **modules** such as the one you're reading right now.
#### Lesson
- Goal is to introduce you to the concept.
- Everything is meant to be completed in order.
- Usually begins with at least one standard problem.
- External resources (text, possibly videos) will generally be placed in tables like the one above. Generally, we'll **star** those that are most useful for beginners.
<spoiler title="Hidden Content">
If we want you to spend time thinking about a sample problem before checking the solution we'll place the solution in **spoiler blocks** like this.
</spoiler>
<optional-content title="Optional Content">
It's okay to skip over these. Some material in these boxes might not be useful for competitive programming.
</optional-content>
#### Implementations
With examples of usage. Should compile on their own.
- For Bronze and Silver, we will provide code snippets in C++, Java, and Python.
- For Gold, we will provide code snippets in C++ and Java and (sometimes) Python.
- For Platinum, code snippets may only be provided in one language (typically either C++ or Java).
<warning-block>
Will contain common errors that you should avoid.
</warning-block>
#### Practice
<info-block title="Pro Tip">
Maybe helpful bits of advice.
</info-block>
- Link the relevant past USACO problems (and other recommended problems).
- Problems should be sorted in order of how they are recommended be completed.
- Add comments regarding solution sketches.
- At some point we'll write full editorials for those problems which don't have them (or if existing editorials are poorly written).
- Difficulty ranges from "Very Easy" to "Insane." Difficulty is **not** comparable across modules (even of the same division).
- "Intro" refers to a problem that just asks you to implement a standard algorithm or data structure.
-->
<!-- Difficulty should be comparable across a division. Say that you have *almost-solved* a question if you scored at least $n-2$ out of $n$ test cases. At least for platinum, difficulty levels should correspond approximately to the following USA Pre-college almost-solve rates on a USACO contest:
- Easy: $\ge 40\%$ (ex. Fort Moo, Team Building, Redistricting)
- Normal: $\ge 20\%$ (ex. Card Game, Balancing, Gathering)
- Hard: $\ge 10\%$ (ex. Mooriokart, Train Tracking 2, Friendcross)
Old gold problems should probably be bumped up one level. -->
## For Contributors

View file

@ -8,7 +8,13 @@ export const isModuleOrderingGroup = (x: ModuleOrderingItem): x is ModuleOrderin
const ModuleOrdering: {[key: string]: ModuleOrderingItem[]} = {
"intro": [
"using-this-guide",
{
name: "About This Guide",
items: [
"using-this-guide",
"modules",
]
},
{
name: "Getting Started",
items: [