Achieving Peak Performance in Competitive Programming


Last week, I wrote about the concept of mental representations, an important topic in Peak by Anders Ericsson and Robert Pool. According to the authors, learners seeking expertise should have as their goal a virtuous cycle between mental representations and deliberate practice: Deliberate practice should produce more effective mental representations, and more effective mental representations should drive better practice.

This week I’ll be covering the other half of that virtuous cycle, deliberate practice.

« Continue »

Mental Representations for Competitive Programming Practice

Psychologist and deliberate practice pioneer K. Anders Ericsson has been studying and writing about deliberate practice for decades, and his landmark 1993 paper provides an accessible introduction to the topic. This year, he published his first book-length exploration of deliberate practice for a general audience. Peak: Secrets from the New Science of Expertise explains the […]


Three-Dimensional Dynamic Programming for UVa 10755

Two weeks ago, I introduced the concept of memoization for dynamic programming, using as an example UVa 787. That problem involves operations on a sequence of integers, a one-dimensional structure. UVa 10755: Garbage Heap increases the problem complexity by organizing its integer data into a three-dimensional shape, a rectangular parallelepiped. Nevertheless, we can use memoization […]


Dynamic Programming Basics for UVa 787

In programming contests, some algorithms and techniques get more emphasis than they do in school or in professional programming work. One such technique is dynamic programming. CP3 has this to say about dynamic programming: This technique was not known before 1940s, nor frequently used in ICPCs or IOIs before mid 1990s, but it is considered […]


Write Your Own Manual

You can become a better software developer by improving your ability to organize information. A key part of that skill is being able to communicate what you know in writing. Whether you’re enlightening your peers on Stack Overflow or writing FAQs for your team, it’s good to have a reputation as a person who Knows […]


Rules for Working Intensely

Cal Newport likes to distill the components of productivity into the following formula: Work Accomplished = Time Spent x Intensity We all have 24 hours per day, excluding the occasional leap second. That plus the need for sleep puts an upper limit on the Time Spent component of the formula. Intensity, in theory, has no […]


The Trouble With Books

I love the idea of books. Years ago, I used to browse in bookstores. I bought paper copies of some of the books I looked at, and read some of the books I bought. Once Amazon came along, I clicked around their suggested items list for ideas. These days, I keep an Amazon wish list […]


A Career Skill: Organizing Information

Another session of Top Performer is underway, and one of the goals of the early lessons is finding a skill that is important for success in your career. That has me thinking about skills for programmers. Today I’m going to focus on one particular skill that is critical for programmers working on a team, and […]