Need more information about an AoPS Academy course?

Ask AoPS Academy!

## About AoPS Academy

History & philosophy.

Art of Problem Solving textbooks have been used by outstanding students since 1993. The AoPS website launched in 2003, and its online community now has over one million users. Many of the winners of each year's International Math Olympiad use the AoPS site as a primary training resource. The AoPS Online school has over 20,000 enrollments annually in courses specifically designed for high-performing math students. Most of the winners of major American national math competitions are AoPS alumni, and thousands of our alumni enroll in top universities each year.

With AoPS Academy, Art of Problem Solving brings its curriculum and pedagogical techniques to the classroom, offering advanced math, science, and language arts courses for grades 1-12.

AoPS Academy is accredited by the Western Association of Schools and Colleges.

## Focus on Challenging Problems

A generation ago, there were many intellectual careers that required repeatedly solving routine problems. Most of those jobs are performed by computers now. Successful people in the next generation will need to develop new skills throughout their careers as their older skills become obsolete. Therefore, we go well beyond the basics in our classes, providing students a deep and rigorous curriculum while training students how to tackle difficult problems that are not replicas of problems they've already seen. This teaches students how to learn, so they'll be ready for the challenges of top-tier colleges and internationally competitive careers.

## Active Learning

Students best learn how to solve hard problems by tackling the problems themselves, not by watching passively as others do the work. In our classrooms, students solve each problem, with instructors asking motivating questions as guidance. Only after the students have solved a problem does the instructor provide direct commentary that reinforces key insights.

## Outstanding Peer Group

AoPS Academy draws strong students from many schools, giving AoPS students an outstanding peer group with whom they can learn, form friendships, and draw inspiration. Each year, the AoPS network has many students earn admission to highly selective colleges like MIT, Harvard, and Stanford. Their work in AoPS classes helps prepare them for the competitive, challenging environment they'll find in these schools.

## Communication Skills

Collaborative efforts have become crucial in most professional environments, so AoPS is expanding to language arts instruction through AoPS Academy. We extend this emphasis on communication to our math and science classes, in which students learn how to express their advanced mathematical ideas and scientific understanding clearly and rigorously.

## Meet Some AoPS Alumni

## USAMO Winners

For the past decade and a half, most of the winners of the USA Mathematical Olympiad have been AoPS students. The twelve 2019 USA Mathematical Olympiad winners shown above collectively took over 110 classes at the Art of Problem Solving Online School. The students on the the United States teams that won the International Mathematical Olympiad in 2015, 2016, and 2018 also collectively took over 110 classes with us. Photo is courtesy of the Mathematical Association of America, distributed under a CC license .

## Melody Guan

Melody earned the prestigious International Physics Olympiad Bronze medal, International Chemistry Olympiad Silver medal, and the International Biology Olympiad Gold medal, all while representing Canada. She is also a two-time winner of the Math Prize for Girls Olympiad Bronze medal and was invited to the Canadian International Math Olympiad Training Camp in 2012. Melody graduated from Harvard University in 2016 with a B.A. in Honors Chemistry and Physics as well as an M.A. in Statistics. She maintained an overall GPA of 4.0 while pursuing both degrees. While at Harvard, Melody pursued opportunities as a Proprietary Trading Intern for D.E. Shaw & Co. and as a member of the Douglas Melton Laboratory developing assays to quantify insulin production by stem-cells. Following graduation, Melody joined the Google Brain research team as a deep learning resident.

## Luke Robitaille

Luke has been studying math with AoPS since 2012. He came in second in National MATHCOUNTS in 2016 before winning in 2017 and 2018. He has also taken the USAMO five times and the USAJMO once, won the 2018 Harvard-MIT Math Tournament (HMMT), the 2018 American Regions Math League, and took home a silver medal at the 2019 Romanian Master of Mathematics competition. Luke has been invited to the Math Olympiad Program three times and was also a 2017 Spirit of Ramanujan Math Talent Initiative Winner. He likes eating pizza and says that one of the best things about math competitions is that "elegant math is fun to do."

## Celine Liang

Celine was a USA Mathematical Olympiad winner in 2015 and was a team member of the United States team that won the Romanian Masters in Mathematics competition in 2016. She has attended the Math Olympiad Summer Program twice, won first place at the Math Prize for Girls in 2014, and won the Wendy Ravech Akamai Mathematics Scholar Award in 2015. She was a gold medalist in the USA Physics Olympiad in 2014 and 2015, and was invited to the Summer Program in Applied Rationality and Cognition (SPARC) at Berkeley. Celine was also a top-10 finisher in National MATHCOUNTS and was a member of the first place California team in 2011. She has taught at a variety of programs for younger students, and participates in the DACA competitive swim team, tennis, violin, and piano.

## Espen Slettnes

Espen has taken 22 different AoPS Online courses, as well as attending classes at the Berkeley Math Circle, where he is now an instructor. He is currently interested in graph theory and has published research through the MIT PRIMES/AoPS Crowdmath project, as well as winning Project of the Year at the 2018 California Science and Engineering Festival for his college-level work in mathematics. He is both a 2018 World Science Scholar and a winner of the 2017 Spirit of Ramanujan Math Talent Initiative. Espen also took the 2018 USAJMO and won a bronze medal at the USA Physics Olympiad (USAPhO). In his spare time, he enjoys talking about math with other enthusiasts and playing board games, especially Risk.

## Maria Monks Gillespie

Dr. Maria Monks Gillespie got her start in mathematics through competitions and programs such as AoPS. A two-time MOSP qualifier, she studied mathematics at MIT, where she wrote six undergraduate research papers and was awarded the Alice T. Schafer Prize and the Morgan Prize for her work. She was a recipient of the Churchill, NSF, and Hertz graduate fellowships, and recently completed her Ph.D. at the University of California, Berkeley. She is now an NSF postdoctoral fellow at the University of California, Davis. Dr. Gillespie has taught in the AoPS Online School, as well as MOSP, IDEA MATH, Girls' Angle, and the Duluth REU over the last eight years. Most recently, she and her family founded Prove it! Math Academy , a two-week summer program for high school students designed to bridge the gap between computational and proof-based mathematics.

Evan discovered Art of Problem Solving in middle school, after hearing about Alcumus. In 2014, he earned the second-highest score in the USA Mathematical Olympiad (USAMO)—the same year that he won a gold medal on the Taiwanese team at the International Mathematical Olympiad (IMO). Evan can be found learning and teaching math all over the place: on the AoPS Community, at MIT (where he earned his BS in math, and where he is now in the PhD program), and at the Mathematical Olympiad Summer Program (MOP), where he has been a grader and is now the Assistant academic director. In his spare time, Evan enjoys playing games and blogging .

## Elissa Redmiles

Elissa is currently working on her Ph.D. in computer science at the University of Maryland, where her research interests include subjects such as cybersecurity, survey methodology, and machine learning. She has been awarded the prestigious Graduate Research Fellowship from the National Science Foundation, the National Defense Science and Engineering Graduate Fellowship from the Department of Defense, and the Facebook Fellowship. Elissa has presented her research at conferences held by The Institute of Electrical and Electronics Engineers, The Association for Computing Machinery, and The USENIX Association. She has written for Scientific American and The Conversation, and her work has been covered by the Maryland Cybersecurity Center as well as TechRepublic.

## Arjun Ramani

Arjun has participated in math research and math competitions and values the opportunities he's had to explore topics he loves with like-minded peers. In high school, he won third place at the 2017 Regeneron Science Talent Search for his research in network theory. He has also taken the USAMO and USAJMO, won prizes at the Intel International Science and Engineering Festival (IISEF), and was awarded a 2017 Davidson Fellowship for his research. Of all the kinds of math problems in the world, Arjun most enjoys probability—especially problems whose “solutions contradict your initial intuitions.” He is currently taking courses in math, computer science, and economics at Stanford.

## Blythe Davis

Blythe grew up exploring logic puzzles and games with her family. She read the Art of Problem Solving in fifth or sixth grade and took AoPS Online classes through middle and high school. Blythe's wide-ranging curiosity led her to conduct award-winning environmental research near where she grew up. She is now majoring in math at Duke University. Although she used to like that there was just one answer to most of the math problems she encountered, she now loves the complexity of research math and is delighted by how much she has yet to learn. In her free time, Blythe loves writing, reading, and paying attention to patterns, interactions, and relationships of all kinds.

## Alfredo Alef Pineda Reyes

Alfredo represented Mexico at the 2017 International Mathematical Olympiad, earning a silver medal. He also received the highest silver medal score at the 2017 Iberoamerican Mathematical Olympiad, as well as back-to-back bronze medals at the 2016 and 2017 Asia Pacific Mathematics Olympiad. In the Summer of 2017, Alfredo was invited to the first ever European Summer Program on Rationality (ESPR), an immersive summer workshop for mathematically talented students from around the globe. When not competing in the international math competition circuit, Alfredo enjoys reading and swimming. He hopes to attend MIT where he’d like to study pure mathematics.

## Girishvar Venkat

Girish encountered Art of Problem Solving for the first time in seventh grade, when he joined his middle school’s MATHCOUNTS team. In high school, besides doing graduate-level math research through MIT’s PRIMES program, Girish also earned a perfect score on the 2013 USA Mathematical Talent Search (USAMTS), attended the Mathematical Olympiad Summer Program (MOP) in 2014, and achieved honors on the USAMO, USACO, and other science and math competitions. He earned a BS in computer science and mathematics from MIT and is currently a quantitative trader at New York’s Seven Eight Capital. Girish’s advice to younger students who like math is not to get discouraged: “every time I failed, I learned a very valuable lesson.”

## Davie Rolnick

Davie was a USA Mathematical Olympiad winner in 2008, and credits much of his early math education to AoPS. He also attended the highly-selective Research Science Institute (RSI) summer program for high school students. He graduated from MIT in 2012 with a double major in mathematics and music, after which he became an instructor in the AoPS Online School. He spent a year in Berlin studying under a Fulbright grant, and then returned to MIT to pursue a Ph.D. in discrete math. When he's not doing math or singing, Davie plays word games, hikes, and studies moths (which are, after all, not dissimilar to maths).

## Francisco Proskauer

Francisco represented Puerto Rico twice at National MATHCOUNTS. During high school, Francisco was a member of the Puerto Rico team at the Central American Math Olympiad and Iberoamerican Mathematical Olympiad, winning medals twice at each event. In 2015 and 2016, he earned bronze medals at the International Mathematical Olympiad. He also participated in the first summer of the EuroSPARC (now ESPR) program. He was a frequent contributor to the AoPS Online Community, spending most of his time solving problems and posting problems from competitions, and now works for AoPS as a teaching assistant and grader. Outside of math, Francisco enjoys singing in his a capella group, fantasy sports, and listening to hip-hop. He is currently in his sophomore year at MIT studying computer science.

Derek took his first AoPS class, Introduction to Counting & Probability, when he was eight. He earned a perfect score on the 2017 AMC 8 and in 2018 was one of fewer than 250 students invited to take the USA Junior Mathematical Olympiad (USAJMO). He is also a winner of the Spirit of Ramanujan Talent Initiative, a global math outreach program that connects promising students with opportunities for advancement. In his spare time, Derek likes hanging out with friends, solving and creating puzzles, and building modular origami models. When he grows up, Derek dreams of becoming a chemist so that he can keep solving interesting problems.

## Juan Carlos Ortiz Rhoton

Juan represented Mexico at the International Mathematical Olympiad four times, earning one gold and two silver medals. He also earned a gold medal at the Asian-Pacific Mathematical Olympiad, and a gold medal with a perfect score at the Iberoamerican Mathematical Olympiad. He attended the prestigious Summer Program in Applied Rationality and Cognition (SPARC) at Berkeley, and is currently studying mathematics at MIT.

## Meet Our Curriculum Designers

## Richard Rusczyk

Art of Problem Solving was founded by Richard Rusczyk in 2003 to create interactive educational opportunities for avid math students. Richard is one of the co-authors of the Art of Problem Solving classic textbooks, author of Art of Problem Solving's Introduction to Algebra, Introduction to Geometry, and Precalculus textbooks, co-author of Art of Problem Solving's Intermediate Algebra and Prealgebra, one of the co-creators of the Mandelbrot Competition, and a past Director of the USA Mathematical Talent Search. He was a participant in National MATHCOUNTS, a three-time participant in the Math Olympiad Summer Program, and a USA Mathematical Olympiad winner (1989). He received the World Federation of National Mathematics Competitions Paul Erdös Award in 2014. He graduated from Princeton University in 1993, and worked as a bond trader for D.E. Shaw & Company for four years. AoPS marks Richard's return to his vocation - educating motivated students.

## David Patrick

Dave joined AoPS in 2004. He is the author of Art of Problem Solving's Introduction to Counting & Probability, Intermediate Counting & Probability, and Calculus textbooks, and co-author of Prealgebra. Dave earned the sole perfect score on the American High School Mathematics Examination (AHSME) in 1988 and was a USA Mathematical Olympiad winner that year. He attended the Research Science Institute (RSI) in 1987, and the Math Olympiad Summer Program in 1988, where he first met fellow student Richard Rusczyk. He also finished in the top 10 on the Putnam exam in 1991. Dave graduated from Carnegie Mellon in 1992 with a BS in Mathematics/Computer Science and an MS in Mathematics. He went on to earn his Ph.D. in mathematics from MIT in 1997. He was an acting Assistant Professor at the University of Washington from 1997 to 2001. Dave is originally from Western New York and is an alumnus of the SUNY Buffalo Gifted Math Program.

## Jason Batterson

Jason joined AoPS in 2010 to lead development of the Beast Academy series. Before joining AoPS, he taught mathematics and coached the math team at Ligon Middle School. Ligon won state MATHCOUNTS titles in 2008 and 2009, where Jason taught a future International Math Olympiad gold medalist. In addition to teaching and coaching at Ligon, Jason coached the math team at Fred Carnage Middle School for the 2009-2010 school year. Ligon and Carnage placed 1st and 2nd respectively in the state MATHCOUNTS competition in 2010, with 6 of the state's top 10 competitors coached by Jason. While teaching, Jason wrote and published Competition Math for Middle School. He enjoys puzzles, running, skiing, and playing in the pool with his kids Parker and Ada.

## Courses Overview

During the school year classes meet weekly, bringing together small groups of high-performing students to work with outstanding instructors. Our summer courses keep students sharp for the upcoming school year.

The AoPS Academy curriculum is carefully designed to prepare students for the rigors of advanced university classes and highly competitive careers. We stress both the fundamentals and extending those fundamentals to advanced applications in all of our math, science, and language arts classes. Students develop a deep understanding of new concepts, and learn how to use them in complex situations.

AoPS Academy instructors are chosen based both on proven domain expertise as well as their pedagogical skills. Many of our instructors have advanced degrees, and our curriculum is designed by experts in their fields.

## Mathematics Courses

Our math curriculum is centered on students solving problems. Rather than spoon-feed students material for them to echo, we guide them through the experience of developing new mathematical ideas. Our focus on rigor provides a thorough understanding of the fundamentals, while our approach to creative problem-solving trains students to handle novel mathematical and scientific situations. Graduates of our math program will be well-prepared to continue their math-related studies at outstanding universities, and be equipped for a rapidly-shifting professional landscape. Each class session includes:

- Extensions of past topics : Students solve challenging problems based on the previous week’s material, both to review recent topics and to hone their problem-solving abilities.
- Introduction of new fundamentals : Students explore a series of problems to add new strategies and tools to their toolboxes.
- Challenging problems : Students reinforce their understanding of their new tools by applying them to more difficult problems, some of which are drawn from major national and international contests.
- Collaborative problem-solving : Occasionally groups of students work together on particularly challenging problems, with successful groups presenting their solutions to the class.

AoPS Academy classes aren't confined to the classroom. Our classes employ many of the online resources that have been cornerstones of the AoPS online school for over a decade. Our Academic Year math courses include the following support material outside the classroom:

- Weekly homework : Students have a weekly homework set including problems with a wide range of difficulty. Students receive instant feedback on the accuracy of their work, and have access to detailed solutions after finishing each problem.
- Weekly reminder emails : Students and parents receive weekly emails detailing the students' progress and upcoming due dates.
- Thorough reporting : Students and parents can view detailed reports regarding students' performance.
- Class outlines : Students can access class outlines online. Outlines are linked to reading material, so students can review past classes, prepare for future classes, and catch up when they miss classes.
- AoPS textbooks : All students receive AoPS textbooks and have assigned reading each week in support of the weekly lesson.

## Science Courses

Our first physics class is for students who have a good understanding of Algebra 1 and want to learn more about the world around them. Our growing science program is designed to teach students to ask questions about the physical world and to design experimental frameworks to answer those questions. We use a hands-on approach to teach scientific thinking and prepare students for future study of many types of science.

## Language Arts Courses

Our core language arts classes in grades 2-12 teach students both the craft and art of effective communication. Instruction focuses on multiple components of writing, building from the fundamentals to give students a deep appreciation of language. Graduates of our language arts program will be fluent writers and excellent critical readers. They'll develop these skills by starting from words, progressing to sentences, and then organizing these sentences into well-constructed paragraphs, essays, and stories.

Class sessions include instruction in three broad areas:

- Vocabulary : Expressing oneself and understanding intricate writing starts with a mastery of the basic building blocks of language: words. Our study of vocabulary extends far beyond simply memorizing definitions. We emphasize the stems, origins, and other tools to help students develop a rich palette from which they can choose the right word at the right time.
- Grammar : Our students learn grammar by studying passages from classic literature and other primary sources, through which they learn how to comprehend complex passages. They then learn how to apply this understanding to their own writing to produce well-structured, effective prose.
- Writing : All of our core language arts instruction targets students' writing skills. Our students write, analyze, edit, and then write some more. Rewriting is at the heart of excellent writing, so many of our writing assignments are spread over several weeks, with students revisiting and refining their own work based on instructor feedback and in-class discussion of their work.

## Summer Courses

Summer learning loss is a well-documented educational concern, with students regularly losing proficiency in math and reading during their idle summer months. AoPS Academy offers summer classes in math and language arts to keep students sharp and get them prepared for the upcoming school year. Our math and language arts summer programs include a variety of two-week camps featuring activity-based learning designed to pique students’ curiosity and keep them engaged.

Our summer Math Beasts camps extend topics that students learned in the past year and allow students to explore new areas of math. Each camp features Problem Solving and Mathematical Exploration:

- Problem Solving : In Problem Solving, students review a key topic from the previous year and then explore that topic further, pushing their understanding well beyond grade level. Students engage with Problem Solving through math-related games and puzzles, challenging activities that call for group collaboration, and intriguing problems that encourage students to think in novel ways as they apply new skills.
- Mathematical Exploration : Through our Mathematical Explorations, students encounter new topics that are typically not introduced until much later in their schooling, and mathematical strategies they can apply throughout their education. This year, our camps will take on a variety of topics including spatial reasoning, pattern recognition, working backwards, invariance, graph theory, and cryptography.

Our Middle School Math Contests and High School Math Contests camps are excellent fits for students seeking to prepare for contests like MATHCOUNTS and the American Mathematics Competitions–or for students who simply want an extra challenge over the summer. In these camps, students are introduced to important new topics while reviewing and applying concepts they have already encountered to advanced problems. Students also participate in practice individual and team competitions, gaining both mathematical skills and test-taking experience that will prepare them for key events in the upcoming school year.

Our first science camp, Waves and Sound for Grades 5-6 , is a great choice for students who are curious about how the world works. Using scientific problem-solving methods, students will study the types and properties of waves, how sound waves interact with human hearing, and a surprising number of other wave phenomena in the natural world.

Our writing camps provide a venue for students to hone their writing and critical thinking skills over the summer. In Creative Writing for Grades 3-4 , students learn the craft of fiction while composing their own short stories and poems alongside their classmates. Classes feature a mix of interactive writing activities and engaging lessons in the elements of storytelling and poetry. Our Academic Essay Writing for Grades 8-10 camp introduces students to the craft of essay writing at a college level. In addition to teaching students how to plan and write an academic essay, the camp explores the purpose behind such essays, examining their role both in academic settings and in the real world. By thinking critically about academic writing as an intellectual pursuit, students become not just better writers but deeper thinkers.

Our reading and performance camps help students develop critical reading and thinking skills while polishing their presentation skills. Readers Theater for Grades 4-5 guides students through a challenging novel while training students to write, rehearse, and perform their own plays. Students in Mock Trial: Persuasive Speaking for Grades 7-8 explore a Newbery Honor Book by acclaimed children's author Avi, and then prepare for a mock civil case based on events in the book. Through their preparations, they learn the arts of clear and concise writing, argumentation, and public speaking.

## Ask AoPS Academy

I have a question about:

Your information will be used in accordance with our Privacy Policy .

## Additional Resources and Links

This page contains pointers to on-line resources that might be helpful for our participants. These links are provided for convenience only; USACO does not officially endorse or promote any of these sites or programs.

Computational Problem-Solving Before Learning to Code. Even before you have mastered coding, there are good resources out there for learning about algorithms and computational problem-solving. An excellent example is the Bebras contest , with questions that make you think algorithmically but with no coding required. This contest has been highly successful overseas (with hundreds of thousands of students participating), and a USA version has recently been established. Also see CS unplugged for another set of resources that teaches computing concepts but without programming.

Learning to Code. There are now quite a few high-quality on-line resources available for helping you get started with coding in general (not necessarily with the same algorithmic focus as USACO). Good general lists of resources are maintained by code.org , Facebook , and IT-ology . Some of the most popular novice programming environments are graphical "block-based" languages like Scratch and AppInventor (for coding Android cell phone apps), where you write programs by dragging blocks together. Other prominent sites that help teach introductory programming are Code Academy and Khan Academy .

Books on Competitive Programming. There are now several books specifically in the area of competitive programming, including Competitive Programming by Steven and Felix Halim, Programming Challenges by Steven Skiena and Miguel Revilla, and Looking for a Challenge , written by a group of authors associated with the Polish Olympiads.

Books on Algorithms. You can find many good general-purpose algorithms books out there. Some of the more popular ones include Introduction to Algorithms , by Cormen, Leiserson, Rivest, and Stein, Algorithm Design , by Kleinberg and Tardos, The Algorithm Design Manual , by Skiena, and Algorithms by Sedgewick and Wayne. Another recent publication that looks quite promising in terms of approachability is Algorithmic Thinking by Daniel Zingaro.

Online Sites / Discussion Forums .There are many good algorithmic references on-line -- for example, the collection of topics maintained at geeksforgeeks.org , or on Wikipedia. An excellent list of further on-line references appears in this CodeForces blog entry. Several former USACO finalists have also assembled useful websites with good resources, including the VPlanetCoding site by Riya Arora and a site by Benjamin Qi . One can find many videos (e.g., on YouTube) explaining how to solve various USACO problems, many of very high quality; for example, see the content at starcoder.org , produced by one of our top competitors.

Problem Archives. In addition to the old USACO problems available for practice on this site , you can find old problems from the International Olympiad in Informatics until 2007 here (the IOI is currently working on a better archiving system to make its other tasks more readily available). Other prominent "on-line judges" that include archives of hundreds of old problems include the UVa online judge , the Sphere online judge , and the WCIPEG online judge ; these sites are excellent for practice.

Other Camps and Courses in the USA. There are of course many different computing camps and programs available for high-school students in different regions of the USA, but not so many tend to focus on algorithmic problem-solving. Some notable examples of programs that do focus on algorithmic problem solving include a 2-week summer programming training camp for high-school students at the University of Central Florida, aimed at students who want to excel in programming contests like the USACO ( details ). In the Orange County Area (also in the Bay Area and online), Star League , in the Bay Area, Alpha Star Academy , X-Camp Academy , WhizKidz Computer Center , and Ascende Learning , and in Northern Virginia, Absolute Academy offer courses based on the USACO curriculum. Prof. Rajiv Gandhi organizes a Program on Algorithmic Thinking at Princeton University that provides summer program for high-school students interested in theoretical computer science. The KTBYTE program offers relevant classes in Massachusetts and also online. An organization called "Stem Ivy" offers online courses geared towards USACO training, and a CS tutoring company called Breakout Mentors also offers USACO-specific training courses. USACO sponsor EasyFunCoding offers classes that cover introductory programming up through USACO-style algorithmic problem solving. In Texas, Momentum Learning offers classes covering USACO concepts. A new tutoring operation run by USACO alums at CMU, Recursive Dragon , has recently launched.

USA Participation in Other International Olympiads. The USACO is one of several national organizations in the USA that select teams of students to participate in their respective International Science Olympiads. The most prominent are the USA Mathematics Olympiad (USAMO) , the US Physics Team , the US National Chemistry Olympiad (USNCO) , and the USA Biolympiad (USABO) .

## USACO tutoring with Mike Mossey

Your usaco journey starts with a great teacher.

Home » Resources » Creative problem-solving tips

## Creative problem-solving tips

These generalized strategies will improve your creative problem-solving abilities. I teach them to my students and rehearse them in different contexts. It’s often difficult to learn these working alone.

Try these strategies the next time you tackle a difficult problem.

- Work out an example by hand.
- Solve a simpler problem first.
- Keep this motto in mind: Any attempt is progress.
- Write down your questions.

Here’s an explanation of these:

## Work out an example by hand

Take an example problem (starting with the sample input they give) and work it through to the answer by hand. As you do, pay attention to what techniques you’re using and think about how they could be expressed in code. Then try to invent your own example input, attempting to make some variation on the problem that’s not quite what you would expect. This is a good first strategy, even before you code anything up.

## Solve a simpler problem first

This is a powerful strategy. In this strategy, you figure out how to solve some single piece of the problem before tackling the whole thing.

I work with my students a lot on understanding how to apply this, because it’s easy to misunderstand.

## An analogy: writing an algorithm to shovel a sidewalk of snow

Suppose you’re writing an algorithm to shovel snow from a stretch of sidewalk. How can we apply Solve a simpler problem first?

The first idea you might have is to shovel one shovelfull of snow. That’s the one piece of the problem, and you then extend that to the whole sidewalk later.

But another way of looking at it is this: Shoveling involves things like picking up the shovel, moving the shovel, having the ability to carry the weight of snow, and so forth. When I say solve a simpler problem first, I mean something like that. Figure out how to pick up the shovel. Then figure out how to move the shovel. And so on.

Consider how the first idea, figuring out how to shovel one shovelfull of snow, really contains the entire problem. So, it’s not a simpler piece.

In other words, don’t solve the same problem with less data, but solve simpler problems with less stuff going on. I work with my students consistently on internalize this strategy.

## Keep this motto in mind: Any attempt is progress

Working on USACO problems is a difficult experience, with progress coming in fits and starts. It’s easy to get discouraged when you get stuck, or worse, have to backtrack and throw code away. But I believe that you can learn from your mistakes. Every attempt teaches you something and gets you closer to the goal. This is why I believe so much in encouraging my students. I’m helping them see that all their attempts mean progress.

Note: This motto applies to study and preparation for the test beforehand when you have all the time you need to study and solve a problem. During the competition, with its time limits, it does become more important to save time by knowing when a path is fruitless. This is a skill you can develop only with experience. Applying this motto to your problem study can give you that necessary experience. As Will Rogers said, “Avoiding mistakes comes from experience. Experience comes from making mistakes.”

## Write down your questions

A powerful technique for dealing with confusion is to take a step back and stop trying to make direct progress. Instead, clarify your questions. Try writing down the various questions you may have about the problem even if you don’t have answers right away. Then, as you work on the problem, you may gradually find answers. In essence, you’re priming your mind to recognize answers to your questions when you stumble on them.

## Additional strategies and techniques

Read about additional strategies and techniques here:

Use pseudocode.

Use English to help.

## (818) 835-1127

©2022 mike mossey.

## ChallengHers

- Oct 7, 2023

## An Interview with Claire Zhang, USACO Top Female Winner

Updated: Oct 31, 2023

Claire’s main tip for getting better at USACO is practice— it’s crucial for learning and getting exposed to a diverse range of algorithms. In particular, she recommends the websites Usaco Guide , Codeforces , atcoder , and past USACO problems . When working on problems, she highlights the importance of not doubting your abilities but also recognizing when to move on from a problem. Maintaining consistency in solving USACO problems is a crucial yet often difficult practice, so Claire suggests time-blocking to set an amount of time aside for USACO.

When approaching a new problem, she advises testing smaller test cases first, saying “I immediately like to solve some small, easy cases, and consider extreme cases as well”. Relating the current problem to previous problems you’ve solved can also be helpful, as it provides some possible optimization options. When faced with issues such as time limit exceptions, Claire finds it helpful to find any small optimizations she can do first, before deconstructing her solution to potentially make it better or even just start over from scratch. When debugging, she notes that it can be really easy to just stare at your code and not make progress, so she suggests writing down the whole algorithm to catch small details, as well as printing variables and testing in between different methods in her code.

Outside of the competition, Claire has found USACO to be useful in many ways, as it taught her a lot about problem-solving and general coding skills. In addition, USACO is a great way to learn and apply many fundamental algorithms such as search and sort.

For young girls hoping to get involved in USACO, Claire has a couple of main tips. Firstly, don’t doubt yourself! She’s often noticed that it’s a very common thing to give up on working on USACO problems, and many girls might be afraid to start through fears of not doing well. Therefore, it’s essential to change your mindset and approach to problems and to stay persistent, even when your code’s not working or you’re stuck on a solution to a problem.

## Recent Posts

The Congressional App Challenge - Interview with Winners

Welcome to ChallengHers

- 0 Shopping Cart $ 0.00 -->

## Solving Your First USACO Problem

Many of the “Getting started” guides for USACO are geared for experienced programmers who can solve the introductory level problems easily. In fact, the official USACO training gateway says, “The techniques taught and drilled here are difficult.”

The following guide is for those who know just enough programming to start attempting bronze level problems; those who are familiar with arrays, nested loops and conditionals in any language, and ready to dive into competitive programming challenges at the bronze level of USACO.

It’s important to follow the steps for solving a programming problem in order, completing each one fully and resisting the temptation to jump ahead. The steps are:

## Read the problem’s description

Examine the input data format and test cases, identify an algorithm to solve the problem.

- Read in the input data
- Implement the algorithm
- Test the program

We will use the Square Pasture problem from a past USACO contest. You can read it at the source and it is included below for easy reference as we go through the steps to solve it. Even if you find the problem to be easy, follow the steps listed as the goal is to learn how to apply these steps to much harder problems.

Farmer John has decided to update his farm to simplify its geometry. Previously, his cows grazed in two rectangular fenced-in pastures. Farmer John would like to replace these with a single square fenced-in pasture of minimum size that still covers all the regions of his farm that were previously enclosed by the former two fences.

Please help Farmer John figure out the minimum area he needs to make his new square pasture so that if he places it appropriately, it can still cover all the area formerly covered by the two older rectangular pastures. The square pasture should have its sides parallel to the x and y axes.

INPUT FORMAT (file square.in): The first line in the input file specifies one of the original rectangular pastures with four space-separated integers x1 y1 x2 y2 , each in the range 0…10 . The lower-left corner of the pasture is at the point (x1,y1), and the upper-right corner is at the point (x2,y2) , where x2>x1 and y2>y1 . The second line of input has the same 4-integer format as the first line, and specifies the second original rectangular pasture. This pasture will not overlap or touch the first pasture.

OUTPUT FORMAT (file square.out): The output should consist of one line containing the minimum area required of a square pasture that would cover all the regions originally enclosed by the two rectangular pastures.

SAMPLE INPUT: 6 6 8 8 1 8 4 9

SAMPLE OUTPUT:

“ Farmer John has decided to update his farm to simplify its geometry ” – unnecessary detail.

“ Previously, his cows grazed in two rectangular fenced-in pastures ” – The problem has two rectangles.

“ Farmer John would like to replace these with a single fenced-in pasture of minimum size that still covers all the regions of his farm that were previously enclosed by the former two fences . ”

We need a square that will entirely cover the two rectangles.

“ Please help Farmer John figure out the minimum area he needs to make his new square pasture so that if he places it appropriately, it can still cover all the area formerly covered by the two older rectangular pastures. The square pasture should have its sides parallel to the x and y axes .” Find the smallest square, parallel to the x and y axes, that will cover both the rectangles.

With practice, you will get good at removing the parts not needed, and transforming the problem into definite mathematical statements and the question to solve.

“ The first line in the input specifies one of the original rectangular pastures with four space-separated integers x1 y1 x2 y2, each in the range 0..10. The lower-left corner of the pasture is at the point (x1,y1) and the upper-right corner is at the point (x2,y2) where x2 > x1 and y2 >y1. ”

This seems like a lot to take in, but the above lines are simply giving the lower-left and top-right coordinates of a rectangle. Now is a good time to grab a pencil and paper.

“ The second line of input has the same 4-integer format as the first line, and specifies the second original rectangular pasture. This pasture will not overlap or touch the first pasture. ”

Do not rush through the above lines. They contain a key detail: the rectangles do not overlap or touch. Draw the two rectangles on paper. Draw one side of the square that can cover both the rectangles. Next, read the explanation of the sample test case’s output.

Along with examining the input test cases, note how the output needs to be printed. In this case, the output should be on a separate line and it should be the area of the final square. They are not asking for the coordinates of the square or its side.

At this point, you will be raring to go and want to start coding with the ideas forming in your mind. Don’t. Take the time to properly identify your algorithm or you will end up redoing most parts of your code. Draw more rectangle pairs on the paper, and find the square that covers each pair of rectangles.

For each pair of rectangles, note down the x1, y1, x2, y2 coordinates and the side of each square that completely covers them. As you create more such test cases, you will start to notice a pattern. Look closely at the figures and try to find a relationship between the coordinates and the side of the final square. In the image below, the side of the square is drawn in three examples. What would be the length of the square’s side in the fourth example?

As you can see, the square’s side extends from the smallest x coordinate to the biggest. Or from the smallest y coordinate to the biggest. So, you would need to find the biggest and smallest x coordinates (call them maxX and minX). And, find the biggest and smallest y coordinates (call them maxY and minY).

The side of the square to cover both the rectangles would be whichever of the two below is greater: abs(maxY – minY) abs(maxX – minX)

In the Square Pastures problem, you may want to store the 4 x coordinates in one array and the 4 y coordinates in another array. This will make it easier to find the smallest and biggest x and y coordinates.

Implement the algorithm Now, time for the real action. The data has been read and stored in a data structure. Add code that will implement the algorithm you identified earlier. Break down the algorithm into smaller parts, implement each part and move ahead. For example, in this Square Pastures problem, you would first find the smallest and biggest x coordinates, and then the smallest and biggest y coordinates. After that, you only need to find which is bigger: abs(maxY – minY) abs(maxX – minX)

Finally, output the area of the square.

Initially, you may find the implementation part very challenging. It is quite normal to spend 3-4 or more hours on a bronze level USACO problem. As you work on more problems, the implementation part starts to come easier, you become better at catching bugs in your program and you start to use techniques that you remember from previous problems.

Test the program Test cases are provided along with each contest problem. Run the program and observe the output if it fails for any test cases. You could also add a few prints in your program to narrow down the lines of code that need modification. Furthermore, use logic to make changes in your program — make changes in the program with a purpose, not just using a trial and error method.

What next? Try to complete the Square Pastures problem in the USACO portal. Then, try some more bronze level problems. Remember, it is perfectly OK to spend many hours and even days on one problem. The satisfaction of finally solving it will be worth it. After solving a few bronze level problems independently, you could consider registering for the next USACO competition. It is free and fun, and you score points even if a few test cases pass.

408-623-4149

3312 La Costa Way San Jose 95135

## Latest Blog Posts

## Table of Contents

Usaco bronze 2023 open - feb.

Author : Nathan Wang

- Bronze - Ad Hoc Problems

For Subtask 1, we can brute-force generate every possible string S. If the string has length n n n , then there are 2 n 2^n 2 n possible such strings (in the worst case where the entire string is F). Each string takes O ( n ) \mathcal{O}(n) O ( n ) time to compute an answer, so in total this solution takes O ( 2 n ⋅ n ) \mathcal{O}(2^n \cdot n) O ( 2 n ⋅ n ) time.

## Problem Solving Process

Note: This section is intended to walk you through the problem-solving process of how to arrive at the solution, rather than just stating the solution immediately; ideally, this problem-solving process can be applied to other problems as well. If you have feedback on how well this format works for you / whether you found this section helpful, and the current date is not yet April 2024, please email me at [email protected] .

If you just want the full solution, scroll down to the "Full Solution" section below.

## Step 1: Solving the Sample Inputs

The first step is solving the sample inputs by hand. The goal is to make sure you fully understand what the problem is asking you to do.

## Step 2: Coming up with more test cases

Next, let's try coming up with more test cases we can solve by hand. Focus on two types of test cases:

- A lot of simple test cases that have some pattern to them. We want to use these to uncover patterns that we might be able to use to solve the problem. Examples: BFB , BFFB , BFFBFFB , etc.
- Edge cases -- as many as you can think of!

As you come up with these test cases, try to group them into patterns (especially for the simple test cases). For example, BFB , BFFB , BFFFB can be grouped together into a pattern like BF...FB . The goal is to come up with solutions to each of these patterns, and then try to come up with a solution to the general problem.

I came up with ~30 test cases, but the exact number doesn't really matter. Don't spend too much time on this (I spent ~4 minutes?); you can always come up with more later.

## Step 3: Solving test cases by hand

Now, we'll solve the test cases we came up with earlier by hand, trying to uncover patterns in how we solve them. Not all test case categories will have generalizable / nice solutions, and that's fine!

As an example, here's what I wrote for one of the patterns I came up with.

## Pattern 1: BF...FB

- BFB : 0 0 0 , 2 2 2
- BFFB : 1 1 1 , 3 3 3
- BFFFB : 0 0 0 , 2 2 2 , 4 4 4
- BFFFFB : 1 1 1 , 3 3 3 , 5 5 5

## Possible Solution

Do you see any patterns? (You might need to write out more cases.)

## Explanation

I arrived at the solution above solely by pattern-matching; I have no idea if it's correct. Let's try to convince ourself as to why it's correct (or if it's actually wrong)!

Can you convince yourself that this solution is correct?

If you're stuck, try using this strategy:

- Add constraints (simplify the problem as much as possible) until we reach a problem that we can solve / prove. For example, one constraint we might add is "assume the length of the string is even."
- Add back the constraints one at a time and update your solution / proof until we arrive back at the original problem.

## Try it yourself!

For this step, feel free to follow along by solving the test cases I came up with, or you can also use the test cases that you came up with.

For every pattern, try to come up with a possible solution, as well as a justification as to why that solution is correct. Not all patterns will have nice solutions -- if you can't think of anything, just move on! (Also, don't be afraid if your solution has a bunch of different cases -- "nice" solutions can still have different cases!)

You may also find it helpful to skip a complicated pattern and come back to it later after you've solved some simpler patterns. Sometimes a complicated pattern's solution is just a combination of the solution of two easier patterns!

## Step 4: Constructing a general solution

Now, try to come up with a solution for the general problem using some of the solutions we came up with earlier.

If you're stuck, the strategy from above is still applicable:

- Add constraints (simplify the problem as much as possible) until we reach a problem that we can solve / prove.

You can also go back to step 2 (come up with new small test cases / new patterns and try to find solutions to those) if you are stuck.

## Concluding Thoughts

I hope this section on the problem-solving process I used to solve this problem was helpful! This process isn't specific to this problem, so hopefully you can apply a similar process to other problems as well.

If you have feedback on whether you found this section helpful / what can be improved, and the current date is not yet April 2024, please email me at [email protected] .

## Full Solution

First, assume the starting / ending character is not F.

Split the string into "sections" such that each section has one starting character that isn't F, one ending character that isn't F, and a bunch of F's in the middle. The edge characters of each "section" can overlap. For the sample input BFFFFFEBFE , our sections are:

We will get an answer for each section and then combine the answers to get the answer for the whole string.

## Solving each section

Let's start by finding the lowest / highest possible excitement of each section. We will do this with casework:

- Is the starting / ending character the same?
- Is the length of the section even?

Let n n n be the length of the section.

## Case 1: Starting / ending is same

If n n n is even, min is 1 1 1 and max is n − 1 n-1 n − 1 . Otherwise, min is 0 0 0 and max is n − 1 n-1 n − 1 .

## Case 2: Starting / ending is different

if n n n is even, min is 0 0 0 and max is n − 2 n-2 n − 2 . Otherwise, min is 1 1 1 and max is n − 2 n-2 n − 2 .

Let x x x be the min and y y y be the max. We can achieve any value x , x + 2 , x + 4 , … y − 2 , y x, x+2, x+4, \ldots y-2, y x , x + 2 , x + 4 , … y − 2 , y .

Start with the string that yields x x x ; it's something like BEBEBEB. Changing one E to become a B will increase our answer by 2.

If we examine something like BFFFB, note that it is impossible to achieve an answer of 1 1 1 .

## Combining sections

We can add the min / max values from every section together to get the min / max values for the whole string. If we let x x x be the min for the whole string and y y y be the max for the whole string, our possible answers are x , x + 2 , x + 4 , … , y − 2 , y x, x+2, x+4, \ldots, y-2, y x , x + 2 , x + 4 , … , y − 2 , y .

## Handling F's on the first / last character

Let x x x be the number of F's at the start of the string and y y y be the number of F's at the end of the string. By inspection, these F's contribute a minimum of 0 0 0 to our excitement level and a maximum of x + y x + y x + y to our excitement level.

Note that in this special case where F is on the edge of the string, we can actually achieve any value in between 0 0 0 and x + y x+y x + y ! For example, take the string FFFB. We can get 0 by doing EBEB, 1 by doing BEBB, 2 by doing EBBB, and 3 by doing BBBB.

As a result, as long as one of x x x or y y y is not 0 0 0 , we can achieve an excitement level for our overall string of every value in between min and max. However, if both x x x and y y y are 0 0 0 , then we still can only get excitement levels in increments of 2 2 2 .

We also need to take care to handle the case where the entire string is F's properly.

## Implementation

Nathan's commented code:

Ben's code, which is a lot more concise and takes advantage of some nice similarities between cases:

## Join the USACO Forum!

Stuck on a problem, or don't understand a module? Join the USACO Forum and get help from other competitive programmers!

The first link will contain the full set of test problems. The rest will contain each individual problem and its solution.

2018 USAMO Problems

- 2018 USAMO Problems/Problem 1
- 2018 USAMO Problems/Problem 2
- 2018 USAMO Problems/Problem 3
- 2018 USAMO Problems/Problem 4
- 2018 USAMO Problems/Problem 5
- 2018 USAMO Problems/Problem 6
- Mathematics competitions
- Mathematics competition resources

Something appears to not have loaded correctly.

Click to refresh .

## IMAGES

## VIDEO

## COMMENTS

Art of Problem Solving textbooks have been used by outstanding students since 1993. The AoPS website launched in 2003, and its online community now has over one million users. ... USACO, and other science and math competitions. He earned a BS in computer science and mathematics from MIT and is currently a quantitative trader at New York's ...

USACO. Redirect page. Redirect to: United States of America Computing Olympiad; Retrieved from "https: ... Art of Problem Solving is an ACS WASC Accredited School. aops programs. AoPS Online. Beast Academy. AoPS Academy. About. About AoPS. Our Team. Our History. Jobs. AoPS Blog. Site Info. Terms.

Comprehensive curriculum for each USACO division. VPlanet provides dozens of hours of video content with in-depth algorithms and problem walkthroughs, covering all the knowledge a student needs to know to become successful. Additionally, our curriculum teaches the essential problem-solving skills that are required beyond the knowledge of ...

Modules. Source. Starred. Section. Status. No Problems Found. A free collection of curated, high-quality competitive programming resources to take you from USACO Bronze to USACO Platinum and beyond. Written by top USACO Finalists, these tutorials will guide you through your competitive programming journey.

USACO sponsor EasyFunCoding offers classes that cover introductory programming up through USACO-style algorithmic problem solving. In Texas, Momentum Learning offers classes covering USACO concepts. A new tutoring operation run by USACO alums at CMU, Recursive Dragon, has recently launched. USA Participation in Other International Olympiads.

Star League 3- Week Summer USACO Camp is a unique opportunity for interested and talented 6th - 12th grade students to improve their programming skills during summer season. Students are guided and trained by an expert faculty via utilizing national and international competitions in a fun and challenging environment.

USACO. Redirect page. United States of America Computing Olympiad. Art of Problem Solving is an. ACS WASC Accredited School.

Computing Olympiad. The goal was to create an \Art of Problem Solving" of sorts for the USACO: a one-stop-shop guide to prepare competitive programmers for the Bronze and Silver divisions of the USACO contests. My primary motivation for writing this book was the struggle to nd the right resources when I rst started doing USACO contests.

Creative problem-solving tips. These generalized strategies will improve your creative problem-solving abilities. I teach them to my students and rehearse them in different contexts. It's often difficult to learn these working alone. Try these strategies the next time you tackle a difficult problem. Work out an example by hand.

Art of Problem Solving offers two other multifaceted programs. Beast Academy is our comic-based online math curriculum for students ages 6-13. And AoPS Academy brings our methodology to students grades 2-12 through small, in-person classes at local campuses. Through our three programs, AoPS offers the most comprehensive honors math pathway ...

Maintaining consistency in solving USACO problems is a crucial yet often difficult practice, so Claire suggests time-blocking to set an amount of time aside for USACO. When approaching a new problem, she advises testing smaller test cases first, saying "I immediately like to solve some small, easy cases, and consider extreme cases as well".

Algorithmic problem solving is the art of formulating efﬁcient methods that solve problems of a mathematical nature. From the many numerical algo-rithms developed by the ancient Babylonians to the founding of graph theory by Euler, algorithmic problem solving has been a popular intellectual pursuit during the last few thousand years.

MehtA+ Competitive Programming Bootcamp is held virtually, every summer for 7th-12th graders (ages 12-18) the basics of data structures and algorithms in Python. Many entry-level computer scientist positions offer a six-figure salary. In order to land such coveted jobs, it is necessary to pass several difficult coding interviews.

Informatics competition resources are really just beginning to develop. Here are a few to help students get involved. Books. Programming Challenges by Steven S. Skiena, Miguel Revilla; Online Resources. AoPS hosts a Computer Science and Informatics Forum.; USACO Training Program

According to USACO Training section 1.2: Ad hoc problems are those whose algorithms do not fall into standard categories with well-studied solutions. Each ad hoc problem is different; no specific or general techniques exist to solve them. In this module, we'll go over some general tips that may be useful in approaching problems that appear to ...

Art of Problem Solving AoPS Online. Math texts, online classes, and more for students in grades 5-12. Visit AoPS Online ‚ Books ... Star League USACO Camps - RESIDENTIAL & DAY CAMPS. Contents. 1 Overview; 2 Locations and Dates; 3 Courses and Schedule; 4 Cost; 5 Housing / Residential;

Small live classes for advanced math and language arts learners in grades 2-12.

The steps are: Read the problem's description. Examine the input data format and test cases. Identify an algorithm to solve the problem. Code. Read in the input data. Implement the algorithm. Test the program. We will use the Square Pasture problem from a past USACO contest.

Subtask 1. For Subtask 1, we can brute-force generate every possible string S. If the string has length n n, then there are 2^n 2n possible such strings (in the worst case where the entire string is F). Each string takes \mathcal {O} (n) O(n) time to compute an answer, so in total this solution takes \mathcal {O} (2^n \cdot n) O(2n ⋅ n) time.

The first link will contain the full set of test problems. The rest will contain each individual problem and its solutions. 2021 USAMO Problems. 2021 USAMO Problems/Problem 1; 2021 USAMO Problems/Problem 2; 2021 USAMO Problems/Problem 3; 2021 USAMO Problems/Problem 4; 2021 USAMO Problems/Problem 5; 2021 USAMO Problems/Problem 6

In the latest edition of the Army War College journal Parameters, Andrew Carr argues that the rising level of complexity in the world necessitates a change in how we define strategy away from a math problem of ends + ways + means and instead look to strategy as problem-solving.1 Carr's idea is that as the amount of complexity in a situation increases, the strategy should be less focused on ...

John Scholes USAMO solutions for pre-2000 contests. AoPS wiki solutions are sometimes incorrect. American Mathematics Competitions. AMC Problems and Solutions. Mathematics competition resources. Category: Math Contest Problems. Art of Problem Solving is an. ACS WASC Accredited School.

The rest will contain each individual problem and its solution. 2018 USAMO Problems. 2018 USAMO Problems/Problem 1. 2018 USAMO Problems/Problem 2. 2018 USAMO Problems/Problem 3. 2018 USAMO Problems/Problem 4. 2018 USAMO Problems/Problem 5. 2018 USAMO Problems/Problem 6.

If you love math and want to challenge yourself with math contests like MATHCOUNTS and AMC, join the Art of Problem Solving community. You can interact with other math enthusiasts from around the world, access a rich collection of educational content and problems, and prepare for various levels of math competitions.