A sintaxe do comando cp é:
cp source target
Portanto, use este comando find :
find . -type f ! '(' -name '*.out' -o -name '*.class' ')' -exec cp -v {} homework21/ \;
Observe que o sinal -r em cp não é necessário, pois você só copia arquivos e não diretórios. Eu adicionei -v em vez disso cp é detalhado.