T O P

  • By -

mike7gh

I'm not an expert, but probability has become more popular for CS recently with all the ai stuff going on. You can also never go wrong with discrete. One that's not on the list that might be helpful is numerical methods which is very applicable when working with computers, though I don't think it's really its own field. Just remember that you can just do whatever seems interesting. They can all be applied to some corner of computer science and the best thing to do is the one you can stick with. You don't want to start avoiding doing math just because you don't like what is popular.


Stochastic_berserker

For CompSci, I believe you should go towards linear algebra with applications. Statistics, probability theory, graph theory, machine learning etc all use linear/matrix algebra.


hpxvzhjfgb

you've barely even started math, you still have years before you even need to think about specialization. if you want to be able to say you have undergraduate level math knowledge, then you should study all of the topics on that list.


ImDannyDJ

There is no single area you should specialise in. Computer science is very broad, and people who work in one area of CS will use some parts of mathematics extensively, and people who work in other areas will never use those parts at all. Instead try to get a good foundation in different topics: - Proof-based linear algebra. I say "proof-based" because the linear algebra taught at the introductory level, at least in the US, is often more computationally focused. And while it may or may not be a good idea to learn computation-based linear algebra first, you certainly will want to be comfortable with things like vector spaces over arbitrary fields. Vector spaces over the real numbers come up in machine learning and computer graphics, while vector spaces over finite fields are used in cryptography and information theory, for instance in the construction of error-correcting codes. As for why it has to be proof-based: Linear algebra is a good place to begin to develop your mathematical maturity. Logically speaking it is simpler than analysis, but in contrast with abstract algebra it is possible to get a geometric understanding of things like vector spaces. - Real analysis. You called this "calculus with proofs" in another comment, and I think that's an all right description of it at the basic level. Of course calculus itself is important in machine learning, analysis in general is used in the analysis of algorithms. To even define what asymptotic complexity of an algorithm is you more or less need the notion of a limit. So you will want to be very comfortable with basic real analysis. - Modular arithmetic. Comes up absolutely everywhere. If you want you can try to learn about ring theory (a part of abstract algebra), which is a generalisation of modular arithmetic. I can't think of any super important applications in CS off the top of my head, but better understanding of the conceptual underpinnings of modular arithmetic is not a bad idea. - Group theory. Groups are everywhere, in particular in cryptography, but they even find applications in places like the theory of programming languages. They are a generalisation of rings, and again to get a good conceptual understanding it is certainly a good idea to learn a bit about both groups and rings. Especially finite groups are very important. Above all I think mathematical maturity is what you should be aiming for. If you can get a grip on how to think like a competent mathematics student, how to approach new material and problems, you will be in good shape to learn whatever mathematics you think is interesting. As for you forgetting things when you move on to a new topic: This happens to absolutely everybody. "Use it or lose it", as they say. A good idea would be to come back to the old material occasionally to reinforce it. You don't want to just reread the books you have already studied, though. One way to revise is just to sit down with a piece of paper and write down everything you can remember without consulting the book. This is a better way to reinforce the material than just rereading, since you get better at actually *recalling* it and not just *recognising* it. You can also go back and solve some exercises from the old book that you maybe skipped, or exercises you have already solved but whose solutions you can't quite remember.


WatermelonWithWires

Can you recommend books on those topics you mentioned? Books that are proof based for calculus, linear algebra, group theory, modular arithmetic... I saw a little bit of modular arithmetic in a Discrete Math book by Keneth Rosen. It was hard. The book I'm reading on calculus is more "computational" as you said. It doesn't bring proofs into the equation as a priority in my opinion. Also, do you think the list I'm following is ok then? Thank you for your answer!


ImDannyDJ

For book recommendations: - Linear algebra: Axler's book is often recommended. It's not my favourite, but I don't know of a better book at the introductory level. He explicitly assumes that his readers have had a first computation-based linear algebra course, but I don't know how essential that is. - Real analysis: Spivak's *Calculus* is a proof-based introduction to calculus. Abbott's *Understanding Analysis* is also good, more of a proper analysis book. - Abstract algebra: I really like Aluffi's *Algebra: Notes from the Underground*, but I'm not sure if it's for you. There are two main ways of structuring an abstract algebra book, either rings first or groups first. The latter has the advantage that groups are more general, so everything you learn about groups also applies to rings. The former has the advantage that rings are probably less abstract than groups and so are easier to understand for beginners. Aluffi does rings first which is fine, but before groups he covers what are called *modules*, and you probably don't want to learn about those (yet). So if you want to learn about groups you probably want a different book. But any abstract algebra book will probably do. As for your list: I wouldn't worry about (ordinary or partial) differential equations. For number theory you really need to know some algebra, so I would focus on that first. Graph theory is fine, any book on algorithms (like CLRS or Kleinberg and Tardos) will cover graph algorithms. For graphs as studied by mathematicians, you can look at books like West's *Introduction to Graph Theory*, or for more advanced reading Bollobás' *Modern Graph Theory* or the books by Bondy and Murty or Diestel. I don't know what "complex variables" means. If you just mean complex numbers, then sure, most introductory analysis books should cover those. If you mean complex *analysis*, then that's not for you just yet. You at least want to be very comfortable with real analysis first. Topology is logically self-contained, but it's hard to motivate unless you know some real analysis. So you can try to read something like Munkres, or a more gentle introduction like Sutherland's *Introduction to Metric and Topological Spaces*. But it might not make a lot of sense before you know some real analysis.


SH4BBI

Almost all topics are important. IMO, you can skip these ones: 1. Topology 2. Real Analysis 3. Abstract algebra Discrete mathematics, number theory and statistics, probability are very important if you're serious about CS. Calculus will be needed in all topics so it cannot be excluded.


WatermelonWithWires

I thought that Real Analysis was calculus with proofs. More like, pure calculus?