Multicore computers are becoming increasingly common, and we'd like the GNU core utilities (coreutils) to take advantage of them. It'd be a big project to do this with all the utilities, so let's experiment on one key utility: GNU sort.
To start with, we'll learn a bit about how sort is built and maintained, including the construction tools Git, the Autotools, and gnulib. We'll practice by fixing a not-generally-known bug in the alpha version of GNU sort: it mishandles merges of more than (approximately) 1000 files, in some cases.
We'll then investigate performance improvements that will help sort become more parallelizable; or in some cases, just faster. This may involve some algorithms from Knuth volume 3. For multithreading, we will investigate which threading technology to use, e.g., threadlib and GNU Pth.
All this will require benchmarks, which we'll need to create.
If time permits, we can generalize our approach so that it handles at least one other GNU program (say, du).