Sou estudante de graduação em matemática e fiz minha graduação em ciência da computação. Eu mantenho um blog chamado Math ∩ Programming no qual exploro aplicações da matemática na programação (e vice-versa), e tenho que admitir que acho a maioria dos aspectos menos matemáticos da ciência da computação bastante secos e sem inspiração (basicamente, minha oposição a todos os hacks ridículos que entram na programação de sistemas na minha experiência na indústria).
Por outro lado, no meu blog, analiso problemas como reconhecimento facial (um pouco de álgebra linear), métodos de criptografia, máquinas de Turing e autômatos celulares, modelos para prever a atividade de serial killers, mecanismos de busca e vários outros conceitos matemáticos . A melhor parte é que eu consigo implementar as idéias, e todas as minhas!
Para fazer com que seu amigo goste de programar como todos nós, ache-o realmente interessanteprojeto. O aspecto da programação não ficará sem ele trabalhar em direção a um produto que ele considera bonito. Quanto aos idiomas, recomendo o Mathematica, o Racket (um derivado do Scheme muito amigável, mas ainda poderoso), o Python e o Haskell. O Mathematica é provavelmente o melhor, porque ele pode implementar seletivamente suas próprias funções matemáticas e usar as bibliotecas incorporadas do Mathematica para concluir o projeto (por exemplo, escreva uma função que calcule os coeficientes de Fourier e use o Mathematica para o restante da análise, como como filtragem, geração de imagens etc.). Até os tópicos básicos como integração oferecem alguns projetos fascinantes (regras de quadratura diferentes, integração monte carlo, uma transição suave para o aprendizado de máquina com grandes conjuntos de dados).
Além disso, parece que muitas das respostas aqui são de pessoas que não praticam matemática ou que não usaram as linguagens sugeridas para fazer software matemático. A razão pela qual as pessoas recomendam Haskell é porque é o mais próximo possível de uma implementação literal da teoria das categorias e se encaixa bem com algumas definições matemáticas de alguns conceitos básicos. Mas se o seu amigo tem quase a sua idade, ele não está pronto para a teoria das categorias matematicamente (essa maturidade é mais ou menos inútil até a faculdade, e muito difícil de ensinar a si mesmo) e, como primeira língua, Haskell é o mais inclinado.curva de aprendizado das línguas sugeridas (talvez o Prolog seja mais íngreme). Eu usei Haskell para implementar um compilador Javascript e acabei com um belo e elegante código, mas para coisas intuitivas como mutação variável, você já precisa se envolver em mônadas não triviais.
Python e Mathematica serão muito mais amigáveis, e o Mathematica tem a curva de aprendizado mais superficial simplesmente porque todas as bibliotecas são empacotadas em uma ótima interface de usuário com documentação incrível (basta pressionar F1!). Por outro lado, há um livro que ouvi (mas não li) que fornece uma transição para a matemática avançada e uma introdução a Haskell simultaneamente . Parece ter avaliações positivas da Amazon, então você pode querer dar uma olhada. Ele pode mudar para linguagens como C # e Java se quiser fazer coisas da indústria, mas é mais provável que ele nunca precise entrar nessa selva (e muita coisa da matemática da indústria é pura Matlab).
Mas, como eu disse, com o projeto certo, aprender o idioma se torna uma alegria, qualquer que seja o projeto.