<p>What you have discovered is that there is a vast difference between math and CS. Each of those fields can in some ways apply the other for some things but the thinking process is quite different.</p>
<p>The math you need for things like cryptography is quite advanced and depends on a deep knowledge of other things.</p>
<p>If you want to learn mathematics, then you need to study mathematics. The sorts of things you study from math in an undergraduate CS program is a tiny fraction of math as a whole. Discrete math is important to a lot of CS so it is normally studied. But number theory is pretty esoteric and requires its own insights. Insight in math isn't easily transferred from one subfield to another.</p>
<p>Crypto isn't my field (or interest) so I can't provide specific guidance, but if I wanted to study it, I'd find a good book and see whether I could understand it or had to go back to basics.</p>
<p>I'd also look at the requirements of a good cryptography course at a good university and look at what prerequisites are needed.</p>
<p>The <a href="https://math.duke.edu/courses/mathematical-cryptography" rel="noreferrer">Duke University course</a> has many prerequisites including multivariate calculus, linear algebra and differential equations. I'm guessing that your undergrad CS program didn't include much of that.</p>
<p>Note also that crypto stands on the cusp between math and CS and requires applications of both fields. It is an applied field with theoretical underpinnings. If you studied a rather different applied math field (engineering) then they might be lots of gaps.</p>
<p>Get studying.</p>

CC BY-SA 4.0
2022-06-06T13:41:42.630Z
https://www.ioenotes.edu.np/ioe-bct-syllabus
(look up to first 4 semesters engineering mathematics)

They taught us all math indeed, 4 engineering mathematics that are taught to every engineering branches. But our math was based on solving problems rather than deriving, proving etc.
kudmea
CC BY-SA 4.0
2022-06-06T13:44:35.573Z
I dont think Calculus is relevant.
My choices of areas would be: (a) Abstract algebra (group theory going on to rings and fields) (b) Basic number theory (modular arithmetic) (c) Combinatorics (d) Linear algebra. See https://www.reddit.com/r/crypto/comments/cdgfp2/math_prerequisites_for_cryptography/
Rushi
CC BY-SA 4.0
2022-06-06T13:46:18.743Z
@Rusi, I just listed the requirements for the course at Duke. They include a lot of multivariate calculus. I was a bit surprised myself.
Buffy
CC BY-SA 4.0
2022-06-06T13:46:41.740Z
Yes @kudmea engineering math -- solving problems -- and higher math -- proving results -- is *fundamentally* different like Horowitz and Art Tatum.  I would not put one above the other (the "higher" notwithstanding). But one does not do much for the other
Rushi
CC BY-SA 4.0
2022-06-06T13:50:40.373Z
Yeah I know Buffy. And I never miss the opportunity to point out that calculus is as likely relevant  to most things math as arcane assembly tricks is to programming   Its there for hoaryness not relevance reasons.  I enjoyed it when I studied math.  But that does not change the fact that it takes up **way** too much room in the curriculum.  Main point (for OP) is that UG calculus is just tricks for solving problems and misleads students to what math is on a broader perspective.. Real and complex analysis which is just 2nd level calculus may be better for that
Rushi
CC BY-SA 4.0
2022-06-06T14:47:27.900Z
@Rusi, What? No graph theory?
Solomon Slow
CC BY-SA 4.0
2022-06-06T14:50:06.973Z
@SolomonSlow GT for CS is kosher. For crypto?? Dunno... I'm hardly claiming my list is complete or optimal -- just a direction for OP. Yeah... So there's the larger q: Is OP asking about math for CS or math for crypto?
Rushi
CC BY-SA 4.0
2022-06-07T10:35:01.433Z
@Rusi the college I went to required 4 terms of Calculus (one taught by Whitehead's granddaughter) and Statistics, none of which I have needed to write any programs. But, it was a good mental workout, right?
Scott Rowe
CC BY-SA 4.0
2022-06-07T11:02:49.397Z
@ScottRowe «4 terms of calculus» oooooof. Calculus -- ok. 4 terms?! Thats what I am complaining about. As for mental workout, there are a variety avenues for that.  [JSpolsky](https://www.joelonsoftware.com/2005/12/29/the-perils-of-javaschools-2/) famously claimed *Java is not, generally, a hard enough programming language that it can be used to discriminate between great programmers and mediocre programmers*  (because they dont learn to grapple with pointers).  He's right and wrong. Right because its true wrong because you can find more useful kinds of "hardness" for quality discrimination
Rushi
CC BY-SA 4.0
2022-06-08T10:24:53.420Z
@Rusi I thought that making a multi-threaded and multi-process database transaction server was sufficiently hard, but not everyone agrees. No calc or statistics involved. How does one become 'great' at something? There are good answers here...
Scott Rowe
CC BY-SA 4.0
2022-06-09T03:35:07.153Z
Concurrency is a can of worms that I'd rather leave unopened @ScottRowe! But if you like we can continue on chat
Rushi
CC BY-SA 4.0
2022-06-09T09:53:11.023Z
@Rusi Right, but a server process really doesn't have any interaction between threads, so it was kind of a lame brag. No need to continue. Lots of pointers, though, it was in C. Found a new use for the comma operator to make the I/O fast.
Scott Rowe
CC BY-SA 4.0
2022-06-06T13:33:30.773Z
2022-06-06T13:49:36.737Z
2022-06-06T13:49:36.737Z
Buffy
<p>What makes you think that &quot;almost everyone&quot; knows things like elliptic curves (your 3rd link)? That is pretty advanced math. In fact, it was developed by mathematicians who may not have been programmers at all. Don't feel bad that with only undergraduate knowledge you haven't mastered all of this.</p>
<p>Computers were developed for doing computations. Ballistic trajectories and such. Those computations come from physics, and as such have been studied long before there were electronic computers. So a good part of computer science consists of other sciences (graph theory, partial differential equation solving, cryptography) that happen to suit being done on a computer. To know all of this you'd need to study all those other sciences.</p>

CC BY-SA 4.0
2022-06-07T10:39:20.393Z
Programming definitely got off to a bad start with all that WW2 codebreaking stuff. But then, many new technologies were initially developed as munitions.
Scott Rowe
CC BY-SA 4.0
2022-06-07T11:06:00.763Z
@ScottRowe Codebreaking is a "bad start"? It likely shortened the war considerably. Are you saying things would be better if WWII had been a bit longer?
Muzer
CC BY-SA 4.0
2022-06-07T13:34:37.500Z
@ScottRowe I'm not sure that code breaking was the main application that computers were intended for. Look up what ENIAC stands for. Likewise, what motivated Babbage? Zuse seems to have had aerodynamics as application in mind.
Victor Eijkhout
CC BY-SA 4.0
2022-06-07T20:15:31.373Z
Well, you mentioned rocket trajectories, and the first rockets were in WW2, as best I recall. And who wanted those tables of logarithms done, long before computers existed? Some General I think... Who was that guy who broke Enigma? Computer theorist, I think.
Scott Rowe
CC BY-SA 4.0
2022-06-08T04:13:07.767Z
@ScottRowe ...I don't know whether or not you mean Turing by 'the guy who broke Enigma' or the Polish mathematicians whose work was fundamental to breaking Enigma (see [here](https://en.wikipedia.org/wiki/Enigma_machine#Breaking_Enigma); like much work it's more complicated than one person doing it solo)? If you do mean Turing, please read about him; he had a tragically short life but was incredibly brilliant.
auden
CC BY-SA 4.0
2022-06-06T13:48:03.270Z
2022-09-24T20:30:59.823Z
2022-09-24T20:30:59.823Z
Victor Eijkhout
<p>Computer science emerged out of a branch of mathematics, and many of the sub-branches of modern computer science also emerged from branches of mathematics.  That means that there are deep, pervasive links between the two fields, and you don't have to dig too far to find them.</p>
<p>However, it is usually unnecessary to be fluent in the parent mathematical field in order to be an excellent practitioner of the child CS field.</p>
<p>The reason that your undergraduate program didn't cover the mathematics so deeply is because the deeper mathematics mostly doesn't help you to engineer, produce, or code better, and what gains there are falter in the face of a simple cost-benefit analysis.  It takes a <strong>lot</strong> of effort and time to become a Yuval Filmus, who is, after all, a mathematician, and the benefits to coding and engineering are quite small relative to that effort.</p>
<p>If your goal is engineering, then, your efforts are better spent elsewhere.</p>
<p>Now that my answer is done, I will also dispense some advice:</p>
<ul>
<li><p>If you are fascinated by the mathematics, then that is a reward in and of itself, and the meager gains in engineering will be well worth it because, given the expense of learning the mathematics, few of your peers will be able to do the handful of new things that you can now do.  Therefore, if you are interested in the mathematics for the sake of the mathematics and interest, absolutely pursue it.  You'll gain good rewards, both in life and in engineering.</p>
</li>
<li><p>However, if you are interested in the mathematics mostly for the gains you'll get as an engineer, I would not advise you to head far in that direction.  You will find it a very difficult hill to climb.  It won't feel especially rewarding, it <em>will</em> feel especially hard, and the engineering rewards will be few and far between.</p>
</li>
</ul>

CC BY-SA 4.0
2022-06-06T14:13:14.913Z
So people like yuval filmus are with math degree and minor in cs or sth like that right?
kudmea
CC BY-SA 4.0
2022-06-06T14:43:27.627Z
@kudmea I mean, according to his resume (linked from his [homepage](https://yuvalfilmus.cs.technion.ac.il/)), it appears that his degrees are in CS.  However, he's clearly a mathematician at heart.  You can see that in his posts, his research interests, and his publications :)
Ben I.
CC BY-SA 4.0
2022-06-07T10:28:30.430Z
I will always yearn for a world where programming had emerged from electronics and engineering instead of mathematics. *sigh*
Scott Rowe
CC BY-SA 4.0
2022-06-07T10:42:46.390Z
In a little corner of the British Library, I saw a bust of Michael Faraday, 10 feet away from an Enigma encoder.
Scott Rowe
CC BY-SA 4.0
2022-06-07T12:40:41.417Z
@kudmea Maybe. Or they may just have a degree in CS and have spent a lot of time involved with the math side of things. Or they may even have a completely unrelated degree. It’s not so much important _what_ degree you have, especially if it’s just an undergraduate degree, what matters is what experience you have and what you do with it. I have no formal degree myself and can argue about graph theory or set theory as they apply to coding just as well as my co-workers who have CS related degrees despite this.
Austin Hemmelgarn
CC BY-SA 4.0
2022-06-07T14:29:59.580Z
@kudmea There are a lot of double majors with one degree in math and the other in another STEM field because it makes sense practically--it's relatively cheap because there are a lot of course overlaps (at my university, math+CS had one of the lowest total credit requirements for any double major) and it's really hard to get a high paying job in pure math vs. really easy to get a job in a lot of those other fields, so having the double major provides a good fallback if the math thing doesn't work out.
user3067860
CC BY-SA 4.0
2022-06-07T16:25:00.950Z
Actually @ScottRowe you can find *competing* histories - CS = math. And CS = machine engineering. See https://m-cacm.acm.org/magazines/2014/1/170862-actually-turing-did-not-invent-the-computer/fulltext for a contra mainstream view
Rushi
CC BY-SA 4.0
2022-06-08T04:15:39.157Z
@ScottRowe I mean...to some extent, arguably, it did! Computer science *theory* emerged from math, certainly, but programming? See for instance the Computer History Museum in San Jose (wonderful museum, for the record). Mechanical computers, electromechanical, analog - these were all engineering, and eventually, electronics problems! The women who were referred to as computers and eventually became the first programmers were programming solutions to engineering problems. I could go on :)
auden
CC BY-SA 4.0
2022-06-08T10:32:23.507Z
@AudenYoung I suppose I was saying that if I had to choose between a guy in an attic 200 years ago developing electromagnetism and a bunch of people who favored genocide creating crypto as war tool as the better way to cause humanity to move forward, I would say that there should be more children in school and less wars. It's not an engineering problem, or even a political one: it's a psychological problem. So if math can start wars, I certainly hope it can stop them. Feeding people stops a lot of wars.
Scott Rowe
CC BY-SA 4.0
2022-06-09T11:16:47.737Z
«War is father of all, and king of all. He renders some gods, others men; he makes some slaves, others free» (Heraclitus near 3 millennia ago) So @ScottRowe...  Yes "It's a psychological problem" So for better or worse our computers today come from WWII research. Also the fact that every other country has enough nukes to end our existence.
Rushi
CC BY-SA 4.0
2022-06-09T11:51:04.540Z
@Rusi Evolution always wins, just like gravity always has the last word. So I am sanguine about humanity's future: either we deserve to exist, or we don't. Doesn't stop me being annoyed about the past though.
Scott Rowe
CC BY-SA 4.0
2022-06-09T12:09:01.423Z
Continue on chat @ScottRowe
Rushi
CC BY-SA 4.0
2022-06-06T14:08:04.857Z
2022-06-06T14:08:04.857Z
Ben I.
<p>There is math and math and ... and math. [See <a href="https://www.youtube.com/watch?v=OmJ-4B-mS-Y" rel="nofollow noreferrer">Map of Math</a>].
Its very important to not get sidetracked by getting dazzled!</p>
<p>Just as there is music and music ... and music.</p>
<p>Let's look a little deeper at the music analogy.</p>
<ul>
<li>Just sticking to piano. Compare<br />
<a href="https://www.youtube.com/watch?v=p1-uOCXQ_0I" rel="nofollow noreferrer">Horowitz</a>, <a href="https://www.youtube.com/watch?v=bzMyhzadzTQ" rel="nofollow noreferrer">Art Tatum</a> and <a href="https://youtu.be/X7ti6HUX5xQ" rel="nofollow noreferrer">Utsav Lal</a></li>
<li>Or <a href="https://www.youtube.com/watch?v=kbJcQYVtZMo" rel="nofollow noreferrer">Beethoven</a> with <a href="https://www.youtube.com/watch?v=r9UjNZXmpwk" rel="nofollow noreferrer">Dagar brothers</a></li>
</ul>
<p>Its not often that devotees of one form will be drawn (much) to the others.</p>
<p>More important:</p>
<p><strong>Practice of one form will not conduce to (much) development on the other sides</strong></p>
<p>Yeah...Yeah. There are famous exceptions like Ravi Shankar <a href="https://youtu.be/hg6nTQFHf78" rel="nofollow noreferrer">collaborating</a> with Yehudi Menuhin. But <em>these are exceptions!</em></p>
<p>Two points I'd like to leave you with:</p>
<ul>
<li><p>99.9% of those who are inspired to play an instrument by looking at someone like Horowitz will not even nearly approximate Horowitz</p>
</li>
<li><p>95% of those who do try (assuming the attempt is not a trivial 1 month attempt) will go on to become better than they were before.<br />
See this compressed <a href="https://www.youtube.com/watch?v=OOLkwCLaad0" rel="nofollow noreferrer">progress story</a></p>
</li>
</ul>
<p>So just as in music there is no alternative but to practice, math is likewise.  Take the area you want to be good at...</p>
<p><strong>And work at it!</strong></p>
<hr />
<p>PS. Yuval Filmus usually writes at CS-SE.<br />
All your examples are from Crypto-SE.
Notice? They are different!</p>
<p>PPS. If Yuval Filmus is your idol you should ask Yuval Filmus!
Maybe on CS-SE... Maybe on meta-CS-SE</p>
<hr />
<h2>Added later</h2>
<p>This <a href="https://youtu.be/eSFA1Fp8jcU" rel="nofollow noreferrer">YouTube video</a> seems like a nifty taste of the difference between CS-math &amp; math-math.</p>

CC BY-SA 4.0
2022-06-07T10:26:33.717Z
"*Math and math! What is math??!?*" (paraphrase)
Scott Rowe
CC BY-SA 4.0
2022-06-07T11:06:33.737Z
Not sure what you're asking @ScottRowe. In any case I added a first line.  Not mathematically very astute but ok as a conspectus
Rushi
CC BY-SA 4.0
2022-06-09T10:12:47.293Z
Ok, you can find a video clip by searching for "Brain and brain! What is brain?" It's cute. Anyway it is like the old joke where a musician asks a cab driver how to get to Carnegie Hall. The cab driver says "*Practice!*"
Scott Rowe
CC BY-SA 4.0
2022-06-06T13:23:13.957Z
2022-06-20T04:37:10.743Z
2022-06-20T04:37:10.743Z
Rushi
<p>As others have pointed out, you shouldn't really feel bad about not knowing these things; you say you have studied computer engineering rather than computer science, and there seems to be, in many places, a distinction between 'engineering' and 'science' in that the engineers learn how to do things - the formulas, algorithms etc - whereas the scientists learn why you should use certain formulas and algorithms. And that leaves us with a lot of computer engineers who feel frustrated that they don't understand theory better (as well as a number of computer scientists who couldn't string a piece of code together if their lives depended on it).</p>
<p>You should see your frustration as a good thing - it makes you want to learn more. The process of learning can be deeply rewarding in itself and on top of that, there are many indications that continuing to learn all your life may be an important factor in avoiding dementia in later life.</p>

CC BY-SA 4.0
2022-06-09T10:15:19.387Z
Right, "Use it or lose it"
Scott Rowe
CC BY-SA 4.0
2022-06-09T06:48:20.893Z
2022-06-09T06:48:20.893Z
j4nd3r53n
<p>You are asking two related questions:</p>
<ul>
<li>Does college prepare one to answer random questions on <a href="https://crypto.stackexchange.com">Cryptography</a>?</li>
<li>How does one get better at answering such questions?</li>
</ul>
<p>The first question is answered (implicitly) in your post:</p>
<blockquote>
<p>We never had to do such theoretical questions in college. We didn't learn to do such proofs. Our exams never tested us on deriving something.</p>
</blockquote>
<p>The only conclusion is that your college education didn't focus on theorem proving; it had different aims, presumably preparing you for the job market.</p>
<p>Is this typical? Are you lacking knowledge which is commonplace in CS, to paraphrase your penultimate paragraph? Let's break this down to two questions:</p>
<ol>
<li>Do CS programs usually aim at imparting theorem proving skills?</li>
<li>Are CS programs which aim at imparting such skills successful in imparting them?</li>
</ol>
<p>The answer to the first question depends on the type of the program: the country, the type of academic institution, and so on. In Israel, traditionally CS programs are highly theoretical, whereas in the US, only half the degree is focused on the major, and the mathematical level is dramatically lower (proof-based math classes, which our undergraduates start taking during their very first semester, are delayed until the third year in the US).</p>
<p>The answer to the second question depends on many factors, include student motivation. According to my experience, the typical student can write a proof (they have to, in order to pass some of the more theoretical classes), but they don't have a deep understanding of the material, and so won't be able to answer random questions on Cryptography.</p>
<p>Indeed, people who are answering such questions are mostly (though not exclusively) experts on the topic, who have spent many years honing the relevant skills. It's not fair to compare yourself, a college graduate, to someone who is doing their PhD, let alone someone who is faculty. You simply have less experience than these folks. Moreover, people doing their PhD are more naturally inclined toward mathematical thinking (that's why they chose to do a PhD in such a topic), and so they are (much) better than average; all the more so for faculty.</p>
<p>Finally, how do you get better? Study, Practice, and Talent (a complex combination of nature and nurture). But first, you need to have realistic expectations so you don't get discourage. Don't expect to be at the level of a world expert right away. You get better with time. Studying in a structured setting and collaborating with peers and more senior experts is a great help. Research is a lifelong endeavor, and we are constantly learning and improving. This is a big topic which really merits its own separate discussion.</p>

CC BY-SA 4.0
2022-06-14T21:44:33.383Z
This is the first time I've seen a question directly about a stack exchange user, and now it is answered by that user.  Nice!  I hope you got a kick out of it 
Ben I.
CC BY-SA 4.0
2022-06-14T19:06:45.683Z
2022-06-14T19:06:45.683Z
Yuval Filmus
<blockquote>
<p>But this is really making me hurt that i don't know what almost everyone knows in cs.</p>
</blockquote>
<p>Why?</p>
<p>This is the most important question... why is that? What does it matter?</p>
<p>There is a much more philosophical question at the heart of this post that I think you need to address. For example, what is &quot;joke math&quot;? What is serious math? Your version of serious math to me is joke math to me, and my version of serious math is joke math to a MSc/PhD. For this reason, I don't think it's worth talking about because it's too subjective and ill-defined. This becomes a fruitless endeavor because every time you get better, your window will shift, and it's a never ending chase that you don't resolve if your intention is to &quot;become good at math&quot;.</p>
<p>Ask yourself another question, suppose you got all this information in the span of a second, then what? I suspect you would feel happy for a brief period and be back to the same empty void that is making you &quot;really hurt&quot;.</p>
<p>I disagree with people telling you to study math here, I think you should do that <em>after</em> you have spent time figuring out, deeply, why you feel this way, and whether it is a phantom of inadequacy or not. Only then can you decide for yourself whether pursuing mathematics more formally is something you should consider. Life is unbelievably short, make your time worth it.</p>

CC BY-SA 4.0
2022-06-07T05:12:02.893Z
+1 from me. However this is the wellknown philosophy problem called Meno's paradox https://faculty.washington.edu/smcohen/320/menopar.htm
Rushi
CC BY-SA 4.0
2022-06-09T03:32:11.123Z
Personally, I value math and research(not that practical things are not great) that is why I was mesmerized. But I looked at yuval filmus's biography, he is multiple degree holder and has a PhD. That explains. And I have always felt I have lacked in cs related math compared to conventional one, so I wanted to fix this.
kudmea
CC BY-SA 4.0
2022-06-09T05:02:29.997Z
*CS related math* is a worthy goal @kudmea! And in most schools badly addressed. Your question strongly suggests *crypto related math* — similar but different.  You should edit it accordingly. Just one more note. When I was a student theory & research were v close. Nowadays research almost means opposite of theory. Bar and gantt charts and little content
Rushi
CC BY-SA 4.0
2022-06-09T10:03:28.820Z
@kudmea Keep in mind that some people start their 'work' (what they become known for) fairly late in life. There is a famous photographer who first picked up a camera at age 70, as I recall. (Now you can't help but pick up a camera at age 2, but you get the point.)
Scott Rowe
CC BY-SA 4.0
2022-06-06T23:01:28.533Z
2022-06-06T23:01:28.533Z
Water
<p>If by mathematics you mean exactly that, mathematics, not including logic or even if you mean the kind of mathematics used in cryptography, then I don't have much to add.</p>
<p>However, if you mean a mathematical approach to computer science or programming then have a look at the following keywords: formal methods, formal verification, model checking, SMT solvers, Event-B, Hoare-Floyd logic, the Z formal notation, the Coq proof assistant, Isabelle/HOL, Temporal Logic of Actions (TLA), Communicating Sequential Processes (CSP), <span class="math-container">$\pi$</span>-calculus, linear time temporal logic (LTL), type theory, category theory, relation algebra, and a very long etcetera.</p>
<p>All that is mathematics for computer science. Most of those topics has nothing to do with traditional math such as calculus, linear algebra, geometry, continuous functions, integrals, derivatives, etc.</p>
<p>&quot;Ben I&quot; said in an answer above:</p>
<blockquote>
<p>The reason that your undergraduate program didn't cover the
mathematics so deeply is because the deeper mathematics mostly doesn't
help you to engineer, produce, or code better, and what gains there
are falter in the face of a simple cost-benefit analysis.</p>
</blockquote>
<p>In my opinion this is not right. There's a body of mathematics and logic that is tantamount to your value as a software developer. Unfortunately, most CS curricula don't tech that or does it in optional courses, while forcing you to take courses on mathematics which will not help you to maximize your programming/CS skills.</p>

CC BY-SA 4.0
2022-06-15T21:35:53.417Z
My "mostly" was an important hedge :) In truth, I expect that the large majority of programmers never use (at least in any way that they are aware of) even a bit of what you've outlined. It's easy to demonstrate that, too. Go to 10 random programmers and ask them which of those topics they feel that they know well. That's what I mean about the diminishing returns: you can study a LOT and still gain very little "practical" in your day-to-day. (FWIW, I support learning regardless, but I am perhaps more sympathetic than you are to degree programs that choose to deemphasize mathematics.)
Ben I.
CC BY-SA 4.0
2022-06-25T00:26:05.700Z
It's difficult to state, because if you know something that really solves a problem, it justifies a lot of time spent learning many other things. You never know what specific things will turn out essential in the future.
Scott Rowe
CC BY-SA 4.0
2022-06-15T21:16:17.043Z
2022-06-15T21:16:17.043Z
Maximiliano Cristia
<p>This question is bothering me since I started using Stack Exchange. I just want to share examples of people that made me surprised.</p>
<ul>
<li><a href="https://crypto.stackexchange.com/questions/100450/how-to-prove-that-crc-with-an-initial-value-of-zero-is-linear">How to prove that CRC - Cyclic Redundancy Checksum - with an initial value of zero is linear?</a></li>
<li><a href="https://crypto.stackexchange.com/questions/98009/could-this-be-a-secure-multiparty-secret-sharing-scheme">Could this be a secure multiparty secret sharing scheme?</a></li>
<li><a href="https://crypto.stackexchange.com/questions/99875/can-there-be-identical-elliptic-curve-groups-of-points-from-different-irreducibl">Can there be identical elliptic curve groups of points from different irreducible polynomials in binary extension fields?</a></li>
</ul>
<p>I am talking about the users who are doing the math in answers. It is not joke math, it is serious math that is too tough for me to understand.</p>
<p>I am undergraduate student who is graduated from college. But we never had to do such theoretical questions in college. It was mostly numbers based instead of formulas based. And we didn't learn to do such proofs even though we did study theory of computation. We didn't have to prove a lot of dangerous looking things in that subject as well. Instead it was included for few marks and we were supposed to write the gist of that (rather than proving them).</p>
<p>We did discrete mathematics as well and we never had to study about such stuff. It was about graph theory and stuff, and our exams never tested us on deriving something, nor did the teacher's slides focus on it.</p>
<p>But this is really making me hurt that I don't know what almost everyone knows in CS.</p>
<p>Almost all posts of Yuval Filmus in cs.stackexchange.com surprises me. He has an unimaginable amount of knowledge and can prove anything and everything. How can one become near to that level of rigour? Honestly, this surprises me thus I am asking. I studied computer engineering in college which is a mixture of CS and electronics/communication engineering.</p>

CC BY-SA 4.0
2022-06-07T09:21:42.307Z
If you already know something, it seems obvious. If you don't, it seems impossible. And if you want to become really good at something, do it regularly for 10 years.
Eric Duminil
CC BY-SA 4.0
2022-06-07T10:21:42.957Z
"*Mathematics not make one great.*" (paraphrase)
Scott Rowe
CC BY-SA 4.0
2022-06-07T11:16:50.283Z
"i don't know what almost everyone knows in cs" don't confuse 'best' with 'average'. As an example: if there are millions of programmers in the world and you are right at the 99th percentile for programmers there would still be *tens of thousands* of programmers better than you. You can look at that one piece of information in two ways: yay I'm in the top 1% or wow look at all these people who are so much better than me. And that's *on top of* the fact that you are talking about multiple different disciplines. *Exceedingly* few people are experts in more than one.
Jared Smith
CC BY-SA 4.0
2022-06-07T12:22:01.380Z
As Jared says. "almost everyone" is entirely wrong. A very small cadre of highly specialised people know this stuff, it's greek to the rest of us. The kind of deep number-theory and mathematical material you're looking at is a whole branch of mathematics and computer-science that most people never learn. I don't know it, and I'm a software dev who's been working professionally for a decade!
Ruadhan2300
CC BY-SA 4.0
2022-06-07T13:10:38.063Z
I just want to point out that Yuval Filmus, assuming this is his real name, is an Associate Professor at Technion, a school well-known for theoretical CS (https://yuvalfilmus.cs.technion.ac.il). The answer to *"How do I get that good at theoretical CS?"* is *"study it for all your adult life and also have a lot of innate talent"*. If you expected that your undergrad degree in a related field would you bring you anywhere close to that level of knowledge, you had too high expectations ;)
xLeitix
CC BY-SA 4.0
2022-06-07T13:43:19.770Z
All those examples are from cryptography stack exchange. Cryptography is a branch of computer science which is literally all about coming up with and analyzing complicated math problems. The stuff cryptography experts deal with on a daily basis is far more math-heavy than in any other branch of CS. Most of what they talk about is black magic to most computer scientists with other specializations. Stackoverflow and even Security SE are so scared of them, they exiled them to their own site :)
Philipp
CC BY-SA 4.0
2022-06-08T04:16:48.877Z
@Philipp And most employers will not find this level of mathematics useful, applicable, or even comprehensible. As important as cryptography is, significant portion of the CS workforce don't have to do mathematics at this level, so almost no employers will expect this unless you're specifically hired to to cryptography.
Nelson
CC BY-SA 4.0
2022-06-08T07:41:13.433Z
"How does one become good at mathematics?" I have been trying to figure that out my whole life.
Agnishom Chattopadhyay
CC BY-SA 4.0
2022-06-08T07:43:16.213Z
Every mathematician/computer scientist I know is learning things that they do not know constantly. They solve clever problems, yes, but learning new things is part of the process. If you intend to become a mathematician, you will have to become comfortable with learning new and very obscure things from the literature and your colleagues every day
Agnishom Chattopadhyay
<self-learning>
How does one become great at computer science mathematics?
# How does one become great at computer science mathematics?

(Asked by: username_0 on 2022-06-06)

This question is bothering me since I started using Stack Exchange. I just want to share examples of people that made me surprised.

* [How to prove that CRC - Cyclic Redundancy Checksum - with an initial value of zero is linear?](https://crypto.stackexchange.com/questions/100450/how-to-prove-that-crc-with-an-initial-value-of-zero-is-linear)
* [Could this be a secure multiparty secret sharing scheme?](https://crypto.stackexchange.com/questions/98009/could-this-be-a-secure-multiparty-secret-sharing-scheme)
* [Can there be identical elliptic curve groups of points from different irreducible polynomials in binary extension fields?](https://crypto.stackexchange.com/questions/99875/can-there-be-identical-elliptic-curve-groups-of-points-from-different-irreducibl)

I am talking about the users who are doing the math in answers. It is not joke math, it is serious math that is too tough for me to understand.

I am undergraduate student who is graduated from college. But we never had to do such theoretical questions in college. It was mostly numbers based instead of formulas based. And we didn't learn to do such proofs even though we did study theory of computation. We didn't have to prove a lot of dangerous looking things in that subject as well. Instead it was included for few marks and we were supposed to write the gist of that (rather than proving them).

We did discrete mathematics as well and we never had to study about such stuff. It was about graph theory and stuff, and our exams never tested us on deriving something, nor did the teacher's slides focus on it.

But this is really making me hurt that I don't know what almost everyone knows in CS.

Almost all posts of username_19 in cs.stackexchange.com surprises me. He has an unimaginable amount of knowledge and can prove anything and everything. How can one become near to that level of rigour? Honestly, this surprises me thus I am asking. I studied computer engineering in college which is a mixture of CS and electronics/communication engineering.

**Tags:** self-learning

> **Comments:**
> **username_1**: If you already know something, it seems obvious. If you don't, it seems impossible. And if you want to become really good at something, do it regularly for 10 years.  
> **username_2**: "*Mathematics not make one great.*" (paraphrase)  
> **username_3**: "i don't know what almost everyone knows in cs" don't confuse 'best' with 'average'. As an example: if there are millions of programmers in the world and you are right at the 99th percentile for programmers there would still be *tens of thousands* of programmers better than you. You can look at that one piece of information in two ways: yay I'm in the top 1% or wow look at all these people who are so much better than me. And that's *on top of* the fact that you are talking about multiple different disciplines. *Exceedingly* few people are experts in more than one.  
> **username_4**: As Jared says. "almost everyone" is entirely wrong. A very small cadre of highly specialised people know this stuff, it's greek to the rest of us. The kind of deep number-theory and mathematical material you're looking at is a whole branch of mathematics and computer-science that most people never learn. I don't know it, and I'm a software dev who's been working professionally for a decade!  
> **username_5**: I just want to point out that username_19, assuming this is his real name, is an Associate Professor at Technion, a school well-known for theoretical CS (https://yuvalfilmus.cs.technion.ac.il). The answer to *"How do I get that good at theoretical CS?"* is *"study it for all your adult life and also have a lot of innate talent"*. If you expected that your undergrad degree in a related field would you bring you anywhere close to that level of knowledge, you had too high expectations ;)  
> **username_6**: All those examples are from cryptography stack exchange. Cryptography is a branch of computer science which is literally all about coming up with and analyzing complicated math problems. The stuff cryptography experts deal with on a daily basis is far more math-heavy than in any other branch of CS. Most of what they talk about is black magic to most computer scientists with other specializations. Stackoverflow and even Security SE are so scared of them, they exiled them to their own site :)  
> **username_7**: @username_6 And most employers will not find this level of mathematics useful, applicable, or even comprehensible. As important as cryptography is, significant portion of the CS workforce don't have to do mathematics at this level, so almost no employers will expect this unless you're specifically hired to to cryptography.  
> **username_8**: "How does one become good at mathematics?" I have been trying to figure that out my whole life.  
> **username_8**: Every mathematician/computer scientist I know is learning things that they do not know constantly. They solve clever problems, yes, but learning new things is part of the process. If you intend to become a mathematician, you will have to become comfortable with learning new and very obscure things from the literature and your colleagues every day  

---

## 8 answers

### Answer by username_12 on 2022-06-06. Score: 24

What makes you think that "almost everyone" knows things like elliptic curves (your 3rd link)? That is pretty advanced math. In fact, it was developed by mathematicians who may not have been programmers at all. Don't feel bad that with only undergraduate knowledge you haven't mastered all of this.

Computers were developed for doing computations. Ballistic trajectories and such. Those computations come from physics, and as such have been studied long before there were electronic computers. So a good part of computer science consists of other sciences (graph theory, partial differential equation solving, cryptography) that happen to suit being done on a computer. To know all of this you'd need to study all those other sciences.

> **Comments:**
> **username_2**: Programming definitely got off to a bad start with all that WW2 codebreaking stuff. But then, many new technologies were initially developed as munitions.  
> **username_13**: @ScottRowe Codebreaking is a "bad start"? It likely shortened the war considerably. Are you saying things would be better if WWII had been a bit longer?  
> **username_12**: @ScottRowe I'm not sure that code breaking was the main application that computers were intended for. Look up what ENIAC stands for. Likewise, what motivated Babbage? Zuse seems to have had aerodynamics as application in mind.  
> **username_2**: Well, you mentioned rocket trajectories, and the first rockets were in WW2, as best I recall. And who wanted those tables of logarithms done, long before computers existed? Some General I think... Who was that guy who broke Enigma? Computer theorist, I think.  
> **username_14**: @ScottRowe ...I don't know whether or not you mean Turing by 'the guy who broke Enigma' or the Polish mathematicians whose work was fundamental to breaking Enigma (see [here](https://en.wikipedia.org/wiki/Enigma_machine#Breaking_Enigma); like much work it's more complicated than one person doing it solo)? If you do mean Turing, please read about him; he had a tragically short life but was incredibly brilliant.  

---

### Answer by username_15 on 2022-06-06. Score: 19

Computer science emerged out of a branch of mathematics, and many of the sub-branches of modern computer science also emerged from branches of mathematics. That means that there are deep, pervasive links between the two fields, and you don't have to dig too far to find them.

However, it is usually unnecessary to be fluent in the parent mathematical field in order to be an excellent practitioner of the child CS field.

The reason that your undergraduate program didn't cover the mathematics so deeply is because the deeper mathematics mostly doesn't help you to engineer, produce, or code better, and what gains there are falter in the face of a simple cost-benefit analysis. It takes a **lot** of effort and time to become a username_19, who is, after all, a mathematician, and the benefits to coding and engineering are quite small relative to that effort.

If your goal is engineering, then, your efforts are better spent elsewhere.

Now that my answer is done, I will also dispense some advice:

* If you are fascinated by the mathematics, then that is a reward in and of itself, and the meager gains in engineering will be well worth it because, given the expense of learning the mathematics, few of your peers will be able to do the handful of new things that you can now do. Therefore, if you are interested in the mathematics for the sake of the mathematics and interest, absolutely pursue it. You'll gain good rewards, both in life and in engineering.
* However, if you are interested in the mathematics mostly for the gains you'll get as an engineer, I would not advise you to head far in that direction. You will find it a very difficult hill to climb. It won't feel especially rewarding, it *will* feel especially hard, and the engineering rewards will be few and far between.

> **Comments:**
> **username_0**: So people like yuval filmus are with math degree and minor in cs or sth like that right?  
> **username_15**: @username_0 I mean, according to his resume (linked from his [homepage](https://yuvalfilmus.cs.technion.ac.il/)), it appears that his degrees are in CS.  However, he's clearly a mathematician at heart.  You can see that in his posts, his research interests, and his publications :)  
> **username_2**: I will always yearn for a world where programming had emerged from electronics and engineering instead of mathematics. *sigh*  
> **username_2**: In a little corner of the British Library, I saw a bust of Michael Faraday, 10 feet away from an Enigma encoder.  
> **username_16**: @username_0 Maybe. Or they may just have a degree in CS and have spent a lot of time involved with the math side of things. Or they may even have a completely unrelated degree. It’s not so much important _what_ degree you have, especially if it’s just an undergraduate degree, what matters is what experience you have and what you do with it. I have no formal degree myself and can argue about graph theory or set theory as they apply to coding just as well as my co-workers who have CS related degrees despite this.  
> **username_17**: @username_0 There are a lot of double majors with one degree in math and the other in another STEM field because it makes sense practically--it's relatively cheap because there are a lot of course overlaps (at my university, math+CS had one of the lowest total credit requirements for any double major) and it's really hard to get a high paying job in pure math vs. really easy to get a job in a lot of those other fields, so having the double major provides a good fallback if the math thing doesn't work out.  
> **username_10**: Actually @ScottRowe you can find *competing* histories - CS = math. And CS = machine engineering. See https://m-cacm.acm.org/magazines/2014/1/170862-actually-turing-did-not-invent-the-computer/fulltext for a contra mainstream view  
> **username_14**: @ScottRowe I mean...to some extent, arguably, it did! Computer science *theory* emerged from math, certainly, but programming? See for instance the Computer History Museum in San Jose (wonderful museum, for the record). Mechanical computers, electromechanical, analog - these were all engineering, and eventually, electronics problems! The women who were referred to as computers and eventually became the first programmers were programming solutions to engineering problems. I could go on :)  
> **username_2**: @AudenYoung I suppose I was saying that if I had to choose between a guy in an attic 200 years ago developing electromagnetism and a bunch of people who favored genocide creating crypto as war tool as the better way to cause humanity to move forward, I would say that there should be more children in school and less wars. It's not an engineering problem, or even a political one: it's a psychological problem. So if math can start wars, I certainly hope it can stop them. Feeding people stops a lot of wars.  
> **username_10**: «War is father of all, and king of all. He renders some gods, others men; he makes some slaves, others free» (Heraclitus near 3 millennia ago) So @ScottRowe...  Yes "It's a psychological problem" So for better or worse our computers today come from WWII research. Also the fact that every other country has enough nukes to end our existence.  
> **username_2**: @Rusi Evolution always wins, just like gravity always has the last word. So I am sanguine about humanity's future: either we deserve to exist, or we don't. Doesn't stop me being annoyed about the past though.  
> **username_10**: Continue on chat @ScottRowe  

---

### Answer by username_9 on 2022-06-06. Score: 9

What you have discovered is that there is a vast difference between math and CS. Each of those fields can in some ways apply the other for some things but the thinking process is quite different.

The math you need for things like cryptography is quite advanced and depends on a deep knowledge of other things.

If you want to learn mathematics, then you need to study mathematics. The sorts of things you study from math in an undergraduate CS program is a tiny fraction of math as a whole. Discrete math is important to a lot of CS so it is normally studied. But number theory is pretty esoteric and requires its own insights. Insight in math isn't easily transferred from one subfield to another.

Crypto isn't my field (or interest) so I can't provide specific guidance, but if I wanted to study it, I'd find a good book and see whether I could understand it or had to go back to basics.

I'd also look at the requirements of a good cryptography course at a good university and look at what prerequisites are needed.

The [Duke University course](https://math.duke.edu/courses/mathematical-cryptography) has many prerequisites including multivariate calculus, linear algebra and differential equations. I'm guessing that your undergrad CS program didn't include much of that.

Note also that crypto stands on the cusp between math and CS and requires applications of both fields. It is an applied field with theoretical underpinnings. If you studied a rather different applied math field (engineering) then they might be lots of gaps.

Get studying.

> **Comments:**
> **username_0**: https://www.ioenotes.edu.np/ioe-bct-syllabus (look up to first 4 semesters engineering mathematics)  They taught us all math indeed, 4 engineering mathematics that are taught to every engineering branches. But our math was based on solving problems rather than deriving, proving etc.  
> **username_10**: I dont think Calculus is relevant. My choices of areas would be: (a) Abstract algebra (group theory going on to rings and fields) (b) Basic number theory (modular arithmetic) (c) Combinatorics (d) Linear algebra. See https://www.reddit.com/r/crypto/comments/cdgfp2/math_prerequisites_for_cryptography/  
> **username_9**: @Rusi, I just listed the requirements for the course at Duke. They include a lot of multivariate calculus. I was a bit surprised myself.  
> **username_10**: Yes @username_0 engineering math -- solving problems -- and higher math -- proving results -- is *fundamentally* different like Horowitz and Art Tatum.  I would not put one above the other (the "higher" notwithstanding). But one does not do much for the other  
> **username_10**: Yeah I know username_9. And I never miss the opportunity to point out that calculus is as likely relevant  to most things math as arcane assembly tricks is to programming   Its there for hoaryness not relevance reasons.  I enjoyed it when I studied math.  But that does not change the fact that it takes up **way** too much room in the curriculum.  Main point (for OP) is that UG calculus is just tricks for solving problems and misleads students to what math is on a broader perspective.. Real and complex analysis which is just 2nd level calculus may be better for that  
> **username_11**: @Rusi, What? No graph theory?  
> **username_10**: @SolomonSlow GT for CS is kosher. For crypto?? Dunno... I'm hardly claiming my list is complete or optimal -- just a direction for OP. Yeah... So there's the larger q: Is OP asking about math for CS or math for crypto?  
> **username_2**: @Rusi the college I went to required 4 terms of Calculus (one taught by Whitehead's granddaughter) and Statistics, none of which I have needed to write any programs. But, it was a good mental workout, right?  
> **username_10**: @ScottRowe «4 terms of calculus» oooooof. Calculus -- ok. 4 terms?! Thats what I am complaining about. As for mental workout, there are a variety avenues for that.  [JSpolsky](https://www.joelonsoftware.com/2005/12/29/the-perils-of-javaschools-2/) famously claimed *Java is not, generally, a hard enough programming language that it can be used to discriminate between great programmers and mediocre programmers*  (because they dont learn to grapple with pointers).  He's right and wrong. Right because its true wrong because you can find more useful kinds of "hardness" for quality discrimination  
> **username_2**: @Rusi I thought that making a multi-threaded and multi-process database transaction server was sufficiently hard, but not everyone agrees. No calc or statistics involved. How does one become 'great' at something? There are good answers here...  
> **username_10**: Concurrency is a can of worms that I'd rather leave unopened @ScottRowe! But if you like we can continue on chat  
> **username_2**: @Rusi Right, but a server process really doesn't have any interaction between threads, so it was kind of a lame brag. No need to continue. Lots of pointers, though, it was in C. Found a new use for the comma operator to make the I/O fast.  

---

### Answer by username_10 on 2022-06-06. Score: 8

There is math and math and ... and math. [See [Map of Math](https://www.youtube.com/watch?v=OmJ-4B-mS-Y)].
Its very important to not get sidetracked by getting dazzled!

Just as there is music and music ... and music.

Let's look a little deeper at the music analogy.

* Just sticking to piano. Compare  
  [Horowitz](https://www.youtube.com/watch?v=p1-uOCXQ_0I), [Art Tatum](https://www.youtube.com/watch?v=bzMyhzadzTQ) and [Utsav Lal](https://youtu.be/X7ti6HUX5xQ)
* Or [Beethoven](https://www.youtube.com/watch?v=kbJcQYVtZMo) with [Dagar brothers](https://www.youtube.com/watch?v=r9UjNZXmpwk)

Its not often that devotees of one form will be drawn (much) to the others.

More important:

**Practice of one form will not conduce to (much) development on the other sides**

Yeah...Yeah. There are famous exceptions like Ravi Shankar [collaborating](https://youtu.be/hg6nTQFHf78) with Yehudi Menuhin. But *these are exceptions!*

Two points I'd like to leave you with:

* 99.9% of those who are inspired to play an instrument by looking at someone like Horowitz will not even nearly approximate Horowitz
* 95% of those who do try (assuming the attempt is not a trivial 1 month attempt) will go on to become better than they were before.  
  See this compressed [progress story](https://www.youtube.com/watch?v=OOLkwCLaad0)

So just as in music there is no alternative but to practice, math is likewise. Take the area you want to be good at...

**And work at it!**

---

PS. username_19 usually writes at CS-SE.  
All your examples are from Crypto-SE.
Notice? They are different!

PPS. If username_19 is your idol you should ask username_19!
Maybe on CS-SE... Maybe on meta-CS-SE

---

## Added later

This [YouTube video](https://youtu.be/eSFA1Fp8jcU) seems like a nifty taste of the difference between CS-math & math-math.

> **Comments:**
> **username_2**: "*Math and math! What is math??!?*" (paraphrase)  
> **username_10**: Not sure what you're asking @ScottRowe. In any case I added a first line.  Not mathematically very astute but ok as a conspectus  
> **username_2**: Ok, you can find a video clip by searching for "Brain and brain! What is brain?" It's cute. Anyway it is like the old joke where a musician asks a cab driver how to get to Carnegie Hall. The cab driver says "*Practice!*"  

---

### Answer by username_19 on 2022-06-14. Score: 4

You are asking two related questions:

* Does college prepare one to answer random questions on [Cryptography](https://crypto.stackexchange.com)?
* How does one get better at answering such questions?

The first question is answered (implicitly) in your post:

> We never had to do such theoretical questions in college. We didn't learn to do such proofs. Our exams never tested us on deriving something.

The only conclusion is that your college education didn't focus on theorem proving; it had different aims, presumably preparing you for the job market.

Is this typical? Are you lacking knowledge which is commonplace in CS, to paraphrase your penultimate paragraph? Let's break this down to two questions:

1. Do CS programs usually aim at imparting theorem proving skills?
2. Are CS programs which aim at imparting such skills successful in imparting them?

The answer to the first question depends on the type of the program: the country, the type of academic institution, and so on. In Israel, traditionally CS programs are highly theoretical, whereas in the US, only half the degree is focused on the major, and the mathematical level is dramatically lower (proof-based math classes, which our undergraduates start taking during their very first semester, are delayed until the third year in the US).

The answer to the second question depends on many factors, include student motivation. According to my experience, the typical student can write a proof (they have to, in order to pass some of the more theoretical classes), but they don't have a deep understanding of the material, and so won't be able to answer random questions on Cryptography.

Indeed, people who are answering such questions are mostly (though not exclusively) experts on the topic, who have spent many years honing the relevant skills. It's not fair to compare yourself, a college graduate, to someone who is doing their PhD, let alone someone who is faculty. You simply have less experience than these folks. Moreover, people doing their PhD are more naturally inclined toward mathematical thinking (that's why they chose to do a PhD in such a topic), and so they are (much) better than average; all the more so for faculty.

Finally, how do you get better? Study, Practice, and Talent (a complex combination of nature and nurture). But first, you need to have realistic expectations so you don't get discourage. Don't expect to be at the level of a world expert right away. You get better with time. Studying in a structured setting and collaborating with peers and more senior experts is a great help. Research is a lifelong endeavor, and we are constantly learning and improving. This is a big topic which really merits its own separate discussion.

> **Comments:**
> **username_15**: This is the first time I've seen a question directly about a stack exchange user, and now it is answered by that user.  Nice!  I hope you got a kick out of it   

---

### Answer by username_18 on 2022-06-09. Score: 3

As others have pointed out, you shouldn't really feel bad about not knowing these things; you say you have studied computer engineering rather than computer science, and there seems to be, in many places, a distinction between 'engineering' and 'science' in that the engineers learn how to do things - the formulas, algorithms etc - whereas the scientists learn why you should use certain formulas and algorithms. And that leaves us with a lot of computer engineers who feel frustrated that they don't understand theory better (as well as a number of computer scientists who couldn't string a piece of code together if their lives depended on it).

You should see your frustration as a good thing - it makes you want to learn more. The process of learning can be deeply rewarding in itself and on top of that, there are many indications that continuing to learn all your life may be an important factor in avoiding dementia in later life.

> **Comments:**
> **username_2**: Right, "Use it or lose it"  

---

### Answer by username_20 on 2022-06-06. Score: 2

> But this is really making me hurt that i don't know what almost everyone knows in cs.

Why?

This is the most important question... why is that? What does it matter?

There is a much more philosophical question at the heart of this post that I think you need to address. For example, what is "joke math"? What is serious math? Your version of serious math to me is joke math to me, and my version of serious math is joke math to a MSc/PhD. For this reason, I don't think it's worth talking about because it's too subjective and ill-defined. This becomes a fruitless endeavor because every time you get better, your window will shift, and it's a never ending chase that you don't resolve if your intention is to "become good at math".

Ask yourself another question, suppose you got all this information in the span of a second, then what? I suspect you would feel happy for a brief period and be back to the same empty void that is making you "really hurt".

I disagree with people telling you to study math here, I think you should do that *after* you have spent time figuring out, deeply, why you feel this way, and whether it is a phantom of inadequacy or not. Only then can you decide for yourself whether pursuing mathematics more formally is something you should consider. Life is unbelievably short, make your time worth it.

> **Comments:**
> **username_10**: +1 from me. However this is the wellknown philosophy problem called Meno's paradox https://faculty.washington.edu/smcohen/320/menopar.htm  
> **username_0**: Personally, I value math and research(not that practical things are not great) that is why I was mesmerized. But I looked at yuval filmus's biography, he is multiple degree holder and has a PhD. That explains. And I have always felt I have lacked in cs related math compared to conventional one, so I wanted to fix this.  
> **username_10**: *CS related math* is a worthy goal @username_0! And in most schools badly addressed. Your question strongly suggests *crypto related math* — similar but different.  You should edit it accordingly. Just one more note. When I was a student theory & research were v close. Nowadays research almost means opposite of theory. Bar and gantt charts and little content  
> **username_2**: @username_0 Keep in mind that some people start their 'work' (what they become known for) fairly late in life. There is a famous photographer who first picked up a camera at age 70, as I recall. (Now you can't help but pick up a camera at age 2, but you get the point.)  

---

### Answer by username_21 on 2022-06-15. Score: 1

If by mathematics you mean exactly that, mathematics, not including logic or even if you mean the kind of mathematics used in cryptography, then I don't have much to add.

However, if you mean a mathematical approach to computer science or programming then have a look at the following keywords: formal methods, formal verification, model checking, SMT solvers, Event-B, Hoare-Floyd logic, the Z formal notation, the Coq proof assistant, Isabelle/HOL, Temporal Logic of Actions (TLA), Communicating Sequential Processes (CSP), $\pi$-calculus, linear time temporal logic (LTL), type theory, category theory, relation algebra, and a very long etcetera.

All that is mathematics for computer science. Most of those topics has nothing to do with traditional math such as calculus, linear algebra, geometry, continuous functions, integrals, derivatives, etc.

"Ben I" said in an answer above:

> The reason that your undergraduate program didn't cover the
> mathematics so deeply is because the deeper mathematics mostly doesn't
> help you to engineer, produce, or code better, and what gains there
> are falter in the face of a simple cost-benefit analysis.

In my opinion this is not right. There's a body of mathematics and logic that is tantamount to your value as a software developer. Unfortunately, most CS curricula don't tech that or does it in optional courses, while forcing you to take courses on mathematics which will not help you to maximize your programming/CS skills.

> **Comments:**
> **username_15**: My "mostly" was an important hedge :) In truth, I expect that the large majority of programmers never use (at least in any way that they are aware of) even a bit of what you've outlined. It's easy to demonstrate that, too. Go to 10 random programmers and ask them which of those topics they feel that they know well. That's what I mean about the diminishing returns: you can study a LOT and still gain very little "practical" in your day-to-day. (FWIW, I support learning regardless, but I am perhaps more sympathetic than you are to degree programs that choose to deemphasize mathematics.)  
> **username_2**: It's difficult to state, because if you know something that really solves a problem, it justifies a lot of time spent learning many other things. You never know what specific things will turn out essential in the future.  

---

