If you don't mind could you list some more books that you think are particularly great? Topic to me is not so important, as I am interested in just books that are the best in their field. Much appreciated!
I'm taking Discrete Math now and have both books. Epps' has much simpler explanations. I haven't taken algebra in 5 years and find that Rosen's assumes a lot more knowledge, frequently skipping lots of steps in its explanations, which can be very confusing if you are rusty in the basics.
I always thought that being an Engineer assumes you have knowledge of mathematics.
Not really. Mostly just algorithms and procedures of some math concepts(Calculus and Linear Algebra) which roughly corresponds to the first year of North American math major.
My engineering physics curriculum required three semesters of Calculus, a differential equations course, and a numerical methods course. Notably lacking? A course in Linear Algebra, which was not required (and most in that program did not have time to take it, as the program was more like a double major with additional technical electives).
This could not be further from the truth. I doubt my CS professors would be able to solve a PDE (or algebraic geometry etc etc). Likewise, few math professors would be able to write a parser generator (or code worth a damn).
In contrast, I know engineers who live and breathe PDEs and tweak compilers to solve them faster.
PDE's are not discrete math. CompSci majors are more interested in topics like Combinatorics, Graph Theory etc. PDE's are more interesting to applied mathematicians and physicists.
I doubt my CS professors would be able to solve a PDE..
Beyond the basics, not even many math professors can do that. Math is too vast and people specialize. Strong algebraic geometers are not necessarily strong analysts or algebraists or logicians.
1) No such thing as universal mathematician in this day and age.
2) Engineer's PDEs(algorithms) are not the same as mathematician's PDEs(theory). Same as comparing a student in China who learned English to communicate with English speakers to English majors from English speaking countries.
It wasn't that long ago that most schools did not have a separate CS degree, but rather it was a math degree w/ a concentration in computer science (or some other verbiage to describe the same thing)
Depends on your school. UW CSE (a top 10 program) would be called rigorous but is not as theoretical (there is math, but nowhere near enough for a math minor).
I went and checked the undergrad curricula back at UMass Amherst where I went. I was incorrect: a generic Comp Sci program there stops three courses short of a math minor. The more theoretical concentrations - such as Theory of Computing, Machine Learning, or Programming Languages - teach enough theoretical content to come within one course of a math/stats minor, or even cross the line.
So yes, if you take a Computer Science major with a focus on Software Engineering, you will not learn enough math to minor in math "for free". If you pick a more mathematical subfield to focus on, you should probably declare a math minor for the one or two additional courses it will take you.
I made a truly stupid choice: I graduated in 7 semesters with a Comp Sci degree concentrated on PL theory without picking up the additional courses for a math minor. As a result, I'm "condemned" to learn that material independently later on. "Luckily", the Technion required me to do extra coursework for my MSc, so I've had to buck up and learn more theory.
Now get off my lawn until I'm done with my highly theoretical machine learning exam ;-)!
Minors are mostly meaningless on your degree; but the knowledge you get from the classes is worthwhile. I took some advanced math classes but kind of burned out on it towards the end of my degree (ironic since I went to grad school immediately after). What I did notice: CS classes are easy compared to advanced math classes...man, I struggled to eek out B's in the courses when CS classes were just easy A's.
If you want to do good at machine learning...electrical engineering is probably a better choice; the maths learned in EE overlap fairly well with what is needed to do ML. PL theory is quite niche, even for PL researchers.
I was actually being cautious. American colleges like to make sure you pay for as many BS courses as possible. Calculus 1, Calculus 2, Calculus 3...
Besides, I never heard of math majors taking cryptography that early. Usually, Intro to Real Analysis, Abstract Algebra and Abstract Linear Algebra come first.
Mathematical Proofs: A Transition to Advanced Mathematics by Chartrand and others.
How to Prove It: A Structured Approach by Velleman.
Learning to Reason: An Introduction to Logic, Sets, and Relations by Nancy Rodgers.
Elementary Discrete Math books make for great intro to proofs and math thought:
Discrete Mathematics with Applications by Epp.
Mathematics: A Discrete Introduction by Scheinerman.
There are tons of terrific introductory books on other subjects in math if anyone's interested.