Mathematics for Computer Science (2017) [pdf] 156 points by Schiphol 34 days ago | hide | past | favorite | 29 comments

 How can one solve optimization problems like Cookie Clicker or https://qewasd.com in practice? Optimizing shortest paths is nice, but what about more complex causal structures, with preconditions, mutually exclusive choices, and varying resources?
 A few tools that I use for solving optimization problems in practice are:- MiniZinc, https://www.minizinc.org/ a constrain set programming language that can also optimize an objective- Picat, http://picat-lang.org/ a general purpose language that specializes in logic and optimization
 Interesting that they call this “Mathematics for Computer Science”. In my university it was simply computer science and programming was computer engineering.
 In the US, at least, computer engineering != programming. Computer engineering is more commonly (when you look at the courses) electrical engineering with a digital logic focus with some additional programming courses (often the first 2-4 CS courses). Programming falls squarely within computer science.
 Sometimes business-y programming falls into Software Engineering or Management Information Systems but programming around operating systems, compilers, databases, graphics, etc. is squarely within CS.
 Same in Australia
 Same in Brazil.
 The second author, F Thomson Leighton, doesn't just work at Akamai Technologies, he's the co-founder and CEO.
 Concrete mathematics by Knuth oren and patashnik is very good as a primer too
 I have a background in some computer related mathematics, not once in my entire life has anything but the most trivial of it (basic logic equivalences) been of any use. That's deeply sad.
 Just for perspective, math (and some compsci) students (and practitioners) would consider everything in the linked book to be "trivial math". That's because this book is a compilation of surface level sampling from various branches of math.Mathematicians' version of your lamentation would probably look something like "I studied all the ins and outs of measure theory/functional analysis and category theory/algebraic geometry for four years and all I do today is teach engineering students calculus and freshman math majors - elementary real analysis. That's deeply sad". :)
 A fair lament, surely. Teaching stuff that has no immediate use displaces stuff that may be. It's not that simple because I think learning maths teaches you a broader, more rigorous way of thinking, but still, maybe maths education needs to look at itself hard.
 I highly recommend reading chapter 9 (number theory) just for the sheer fun of it. Number theory is one of the oldest and yet probably the most surprising branches of mathematics.
 does anybody uses this math in their daily job? perhaps in some fancy R&D lab in a few fortune 500?
 As a web dev I needed to know some trig to visualize a star shaped diagram. Not that advanced, I know.In HFT firms you need to know some calculus as some of your data are going to be mathematical objects that are squarely in the field of calculus.Game devs need to know about matrices and quaternions. Mostly on how to use it, no proofs necessary.There are some fields and exploit chains where knowing some math to advanced math is necessary for hacking. For example checkout Triton and PIN from Intel and SMT solvers. I needed to instrument a binary program in class and use Triton to make an SMT equation, solve it and crack a password that way.Data scientists need to know statistics but you could argue they aren’t software devs but I bet some of them are both while having data scientist as a title.When performing speed optimization experiments, it is necessary in some cases to know statistics as you’re really finetuning things. Simply hitting run for a few times and observing a 5x to 10x speedup doesn’t fall into this category, as the speedup is obviously visible. I am talking about stuff that you can’t distinguish that easily.In general life, I would say strong knowledge about statistics is helpful. It helped me accurately assess the covid threat where I live. It also taught me to take every small chance out there. If I take enough chances then the likelihood of me hitting one of them becomes very very likely. I played poker as a teenager and have used statistical/chance-based thinking ever since and it helped me to experience more certainty in uncertain situations. I have played enough hands to know what a 1% chance of losing feels like (it feels like paying a fee to win the other 99 times, on average. Except if you’re not paying attention. Then it feels like you shouldn’t have lost and you’re probably going on tilt.).That’s what I know so far.
 >In general life, I would say strong knowledge about statistics is helpful. It helped me accurately assess the covid threat where I live. It also taught me to ... and have used statistical/chance-based thinking ever since and it helped me to experience more certainty in uncertain situations.Interesting. Are there any specific books you would recommend for this sort of thinking, or are just basic stats books good enough?
 Not an expert but IMO: Understand the basics of the first uni statistics and probability course really well on a usage level (plug and chuck + some intuition level).Second, google on lying with statistics.
 Thanks.> plug and chuckDid you mean plug and chug?
 Yea, was writing on phone (and too quickly, English being my second language).
 I always find the fascination of programming courses with mathematics to be interesting. In my mind, it is pretty clear that programming is a technique, that can be applied in any field. There is of course the field of programming programming languages, which does tend to require mathematical knowledge. Statistics is also an extremely broadly applicable mathematical tool, used today in almost any field.But in general, knowledge of biology or sociology is about as likely to be useful in your programming career as knowledge of mathematics is - domain-specific knowledge of the domain you are programming for is the real key. If you're programming a biology or sociology tool, those will be more useful than maths. If you're programming a mathematical tool, of course maths is extremely important. If you're programming a library of base algorithms, algorithm knowledge is important.
 I believe whatever field field we are working, eventually we have to provide a computable model for that, and we have to know some math.For sociology, you can use graph to model friendship relation, for example.
 This is a computer science course, not a programming one
 I was going to assume that I did -- until I actually looked at the PDFs Table of Contents. I was hoping they'd cover more linear algebra techniques and get into data-driven mathematical modeling, but nada. I feel like if you are developing a course like this today techniques like SVD, PCA, DMD etc. would be included.
 There are a wealth of such books. For example, elementary stuff[0] and more advanced stuff[1].[0] Math For Machine Learning by Deisenroth, Faisal, Ong:https://www.google.com/books/edition/Mathematics_for_Machine...[1] Foundations of Data Science by Blum, Hopcroft, Kannan:
 This looks like a standard “Discrete Mathematics” course, or an “Introduction to Proofs” type course, where the style is definition-theorem-proof. If linear algebra were to be introduced in this class, then it would likely be at a theoretical level where linear algebra would be introduced through definition-theorem-proofs, starting with proving trivial things like (−1)v=−v.It would probably take an entire semester to get to more advanced topics in linear algebra. This is typically its own course and isn’t the computational version.Despite the book’s title this course is more geared towards getting students ready for Algorithms and other CS theory level courses.
 It often seems to me that I haven't learned much lately, and then I see something which makes me think "I would not have even have understood what this is about two years ago." What people need to do well and grow in their vocation and avocations is to understand the field, and understanding is not just a matter of knowing a collection of immediately-relevant facts. Learning (more than just knowing) this math and other concepts is the sort of thing that leads to understanding; for one thing, it provides an explanation and justification for the pragmatic facts and links them as a cohesive whole.
 Companies doing clinical trials of new medical devices or drugs require at least statistics to generate the evidence required to satisfy regulators. Calculus may be necessary to identify flow rates, etc.
 In my company the development of anything mathematical is the domain of DS or DA; Engineering deals with operations / integration / scale but rarely looks inside.

Search: