Hello computer scientists,

I am a mathematician. I have taken some undergraduate courses in C++, Python, assembly language, boolean algebra, logic, graph theory, etc. I would like to learn more about computer science because I think it's cool. Could you give me some advice as to where to start? Thanks!

• While interesting, your question is unfortunately not a good fit for any SE site as it seems open-ended (and opinion based). We like questions that have a specific, concise answer.
– Juho
Oct 24 '20 at 15:29
• What branch of math are you in? Find a similar branch in computer science and go from there. Oct 24 '20 at 17:09
• @AndrejBauer I work in combinatorics and number theory. What do you suggest?
– Jiu
Oct 25 '20 at 1:21
– Jiu
Oct 25 '20 at 1:21
• @Jiu no worries - welcome to the site!
– Juho
Oct 25 '20 at 8:36

This sounds like a better fit for say academia.stackexchange, as this is mostly subjective, so bear in mind this is mostly "just my opinion".

My advice would be to start with Algorithms, at a high level: learning about the big algorithmic paradigms (greedy, dynamic, linear programming...), runtime analysis (all the landau notations and derivatives, amortised analysis...), and go through the sorting algorithms at least. A good resource for that could be [1]. This part should be seen as "fun problem solving" I reckon.

In parallel, I would study the foundations of computer science and computability (easier if you've studied Logic before):

• Starting with finite automata/rational languages, and grammars
• Building your way up to Turing Machines (with equivalency to recursive functions and lambda calculus)
• Finally getting to the distinction between computable and undecidable

Along the way you should have got a small introduction to complexity theory, which should enable you to understand what the classes P and NP are, as well as what an NP-complete problem is.

[1] Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, and Clifford Stein. 2009. Introduction to Algorithms, Third Edition (3rd. ed.). The MIT Press.

• Thank you for the suggestions! These are interesting topics! I have done some algorithms, none of runtime analysis. I know automata and regular languages. In the course of logic, there is a chapter about recursive functions and Turing machines. I don't know much about P and NP.
– Jiu
Oct 25 '20 at 1:18
• Apart from these, I would also like to take something more practical. For example I don't know how to set up v2ray for Ubuntu and I couldn't understand the instructions.
– Jiu
Oct 25 '20 at 1:19