0
$\begingroup$

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!

$\endgroup$
7
  • 1
    $\begingroup$ 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. $\endgroup$
    – Juho
    Oct 24 '20 at 15:29
  • $\begingroup$ What branch of math are you in? Find a similar branch in computer science and go from there. $\endgroup$ Oct 24 '20 at 17:09
  • $\begingroup$ @AndrejBauer I work in combinatorics and number theory. What do you suggest? $\endgroup$
    – Jiu
    Oct 25 '20 at 1:21
  • $\begingroup$ @Juho Sorry about that. $\endgroup$
    – Jiu
    Oct 25 '20 at 1:21
  • 1
    $\begingroup$ @Jiu no worries - welcome to the site! $\endgroup$
    – Juho
    Oct 25 '20 at 8:36
1
$\begingroup$

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.

$\endgroup$
2
  • $\begingroup$ 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. $\endgroup$
    – Jiu
    Oct 25 '20 at 1:18
  • $\begingroup$ 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. $\endgroup$
    – Jiu
    Oct 25 '20 at 1:19

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.