Он должен уметь выводить алгоритмы, а не знать их. Ровно как и математик должен уметь выводить доказательства.
На каких алгоритмах стоит потренироваться в выводе:
сортировки – от пузырька, до параллельной кеш-независимой сортировки;
динамическое программирование;
алгоритмы сжатия данных – кодирование Хаффмана, арифметическое кодирование, сжатие подпоследовательностей;
символические вычисления – как организовать;
как сделать статическую структуру динамической – как сделать быструю (O(logN)) вставку в упорядоченный массив.