My questions:

- Are there universites offering a B.Sc. in computer science aimed solely at giving the best training to future theoretical computer science researchers?

(in the universities I checked, the programs are a combination of training people for research and training people to be programmers in the industry).- As it seems not to be the case in most universities, is there a reason not to offer such programs? (financial maybe)

The motivation for the questions:

I am a mathematics M.Sc. student. I had several conversations with researchers (full/associate professors) in theoretical computer science when I was looking for a thesis advisor. Three of them mentioned to me that they wish they would have learnt more mathematics in their basic training (two of them had a B.Sc. in mathematics and computer science and said they wished they did an M.Sc. in mathematics as well and one of them studied computer science only for a B.Sc.). Their comments referred to funtional analysis (by a researcher in metric embeddings), to group theoretic constructions of expander graphs, etc.

This led me to check the program in computer science and here is what I found:

If a student really tries to get as much cs-theory and mathmematics in his B.Sc, he can study: 38% theoretical computer science, 40% mathematics with mathematics students, 6% mathematics with cs-students only, 16% technical courses. This amounts to 16% waste of time (for a future theoertical cs researchers) and 6% non-optimal use of time (as these math courses with cs-students feel a bit like high-school math).

I included the basic programming courses under theoretical cs because I believe they are essential in order to "know what you're talking about" when studying algorithms, computability, etc. The situation is even a little worse from the perspective of this student because I included all the graduate courses in theoretical cs offered to undergrads, so he will have less theoretical cs courses to take during the M.Sc.

It seems like a much better choice for a future cs theory researcher is to study mathematics and take the cs theory courses (together with the most basic programming courses) as the "free choice" courses. I feel lucky to have done that as it seems that I would not have received such an excellent training if I had gone for the university's fixed cs+math program.

I think that the cs world could benefit alot if universities offered both B.Sc. and M.Sc. programs in "mathematics and theoretical computer science". This can be good both in giving a better training and in encouraging future colloboration.

So here's another question:

Do you agree that such programs ("mathematics and theoretical computer science") are a better alternative to cs-only programs or math+cs program which include many technical courses, as far as future theoretical cs researchers are concerned?

## 1 Answer

One downside is the "all eggs in one basket" problem. If you're sure you want to go into theoryCS, then this is great. But if you want to hedge your bets, then some more programming and general CS courses at the undergrad level would be helpful. Also, even within theoryCS, a solid understanding of computer science at large helps with asking *new* questions about other models of computation, or evaluating the value of theoretical questions motivated by some practical applications.