How much/what branches of/mathematics do you know?

GeneralThis forum is for non-technical general discussion which can include both Linux and non-Linux topics. Have fun!

Notices

Welcome to LinuxQuestions.org, a friendly and active Linux Community.

You are currently viewing LQ as a guest. By joining our community you will have the ability to post topics, receive our newsletter, use the advanced search, subscribe to threads and access many other special features. Registration is quick, simple and absolutely free. Join our community today!

Note that registered members see fewer ads, and ContentLink is completely disabled once you log in.

How much/what branches of/mathematics do you know?

What sort of background in mathematics does everyone here have? What branches of mathematics have you learned/do you deal with?
Do you think that trying to learn a lot about computer science is a waste of time without advanced mathematics?
If you know a lot about computer science and programming, or you would like to, what do you think you would need to know to get you through it?
Is lambda calculus important to you?

I did 3 years of Mathematics at Uni along with the Computing Science courses. Calculus, algebra, etc. Used Haskell quite a lot in 3rd year, so we covered some lambda calculus. To be honest, I don't remember anyone specifically referring to lambda calculus, but Haskell's a functional language so that's largely what we were doing.

Maths is definitely important but a decent understanding of algebra and logic have been enough to get through any problems I've ever hit (I'm a sysadmin, not a programmer, though). That said, I did a bit of Pure Maths in 3rd year - the graph theory, number theory and cryptography from that course were probably the most useful things I learned in the 4 years I was there.

I've done enough maths to qualify as electronic, communications, mechanical and civil engineer at honours degree level and don't recall using any of it in computing with the single exception of using Karnaugh Maps to simplify some gruesomely complex logic when writing sequential control software for controlling power station plant -- and I could have learned all that I needed then in a couple of hours on the Internet now.

Even the logic maths in computer systems engineering (to understand how CPUs do arithmetic) have never been of any practical use. Interesting, but no practical use.

Maths for a career in computing? Not unless you are doing highly specialised software development.

Studying maths is useful for teaching you how to think very rationally, categorically, orthogonally etc but that's about it.

Edit: forgot -- very rarely some set theory has been useful, too, again for simplifying complex logic.

Thanks for the replies.
catkin:
I only know basic things about set theory. Logic, I really don't know ... but separately from learning about computers I was going to buy a book on it (just plain logic). I've read some about how logic gates work, and things like that ... but much less than a full book about it.

Quote:

To be honest, I don't remember anyone specifically referring to lambda calculus, but Haskell's a functional language so that's largely what we were doing.

ilikejam:
Would you say that learning and using Haskell/Lisp/Scheme would give you a better understanding of things without actually learning lambda calculus or knowing higher mathematics? A better understanding of the same types of things?

I left school at the age of 15, with no qualifications in anything and no interest in maths. I only got an interest in the '80s(?) after reading one or two books on Chaos Theory. I still know very little. As far as programming goes, I'm trying to teach myself one or two languages, making slow progress, but whether a better knowledge of maths would help I don't know. It would help if I wasn't so lazy though.

Would you say that learning and using Haskell/Lisp/Scheme would give you a better understanding of things without actually learning lambda calculus or knowing higher mathematics?

I probably would say that, yes. Getting your head round the deep recursion and comparative oddness of functional languages is definitely worth it. (Whether it's easier to learn functional programming without the maths background, or learn the maths then the functional programming is probably up for debate...)

Just had a quick squiz at my Uni's website. They require a B minimum in mathematics at Higher/A-Level (age 17 or so at school) to be considered for the undergraduate Computing Science course. On the other hand, judging by the pass rates for Higher/A-Level recently that may not be saying much. Hell, I got 4 As at Higher, and I was drunk most of the time.

I was always good at Algebra, Geometry, Trig. etc. Calculus was a disaster. Finally, I got really turned on to LaPlace Transforms because I could readily see the application to circuit analysis (I'm an EE by training.) All this was 45-50 years ago........

I really don't do much math anymore but I sometimes wish that I had worked harder on learning matrix methods. I CAN do long division, which I understand that some young people cannot handle. I also know how to run a calculator (either algebraic or RPN), and I can stumble through setting up a spreadsheet.

I know calculus, basic differential equations and Laplace. Like pixellany I really enjoyed applying Laplace to electric circuits to. I recently started studying physics in my university, so I guess I will integrate until I dream unpleasant dreams about the ones I cant do :P

In my university, the math you need in the different computer science classes depends upon what course you want to enroll. Programming doesn't require more then basic calculus. I think you need to know how to differentiate and basic integration. Crypto analyzes and image recognition courses etc. require some more mathematics.

I'm not a programmer of any kind, but it seems to me that you learn a lot of mathematics in the university, and once you start working you never use it again. Perhaps I'm wrong, but thats my impression from those I know that studied computer science.

Btw, if you enjoy mathematical/programming exercises project euler got some taskes here: http://projecteuler.net/ I've solved some of them, and find them interesting and quite fun

I've studied advanced calculus, nonlinear systems, vector and tensor analysis, complex variables, hilbert spaces, lie algebras, quaternions, and all the usual things like matrices and linear algebra. This all goes with degrees in physics.

I actually use a lot of it fairly often even today because of the type of programming I tend to do. Presently what I am working on involves fourier transforms (FFTs) and IFTs, and a substantial amount of integral and differential calculus implemented using numerical methods. I am doing some approximations because this is a real time system and I need things to go as fast as possible.

Well, I'm not a programmer by trade, so my experience may not be germane. When I did my undergraduate work in Electrical Engineering, there wasn't much choice but to get a minor in math. This included the Calculus up through diff eq. But also matrix algebra, mathematical modeling, numerical analysis, and a semester of engineering stats.

Since I did my graduate work in Statistics, I studied quite a bit of math . This covered the gamut from theoretical to applied statistics. I took courses in design of experiment (DOE), univariate and multivariate analysis, linear and non-linear models, nonparametric analysis, categorical data analysis, and time series analysis. My concentration was in survival analysis, so I've taken several courses in survival analysis.

As I'm not a programmer, but a reliability/safety engineer, I actually use mathematics quite a bit (as in every day). I do use Python (offers a great random number generator) and FORTRAN from time to time in my work, but most of the "programming" I do is writing R scripts to analyze our failure data. I use LaTeX for writing all my reports and white papers; in my opinion LaTeX isn't really programming, but for most of my Word-centric co-workers it is.

Do you think that trying to learn a lot about computer science is a waste of time without advanced mathematics?

Yes/no. Up to a point, or something...

I'm going to assume that studying computer science isn't an end in itself (this may be wrong...you may want to be Donald Knuth...but i don't think that there is a vacancy at the moment, but a hot spare might not be a bad idea...) and that you are interested in Computer Science in order to be able to 'do stuff'. Or, to be more blunt, as a job ticket.

Doing stuff isn't science, but engineering and the engineering discipline is related, and leans on a lot of the same tools and capabilities, but is slightly different.

To get that qualification in Computer Science, you'll be required to pass a certain number of courses and demostrate a certain (limited) ability in all areas of math on the way. That's all fine, but it is the dry issue of getting a qualification and demostrating facility with certain techniques for the sake of it and not the issue of getting stuff done.

Employers/jobs/careers in general want a rather different set iof disciplines; while the academic world will want the elegance of and facility with all of these academic disciplines, the 'real world' is far more interested in the 'getting things done' aspect. So, when faced with a problem, has whatever academic/theoretical knowledge that you have given you a toolbox which you can quickly deploy to overcome the problem. It doesn't matter whether you solve the problem in the most elegant way, but it does matter that you solve the problem, solve it quickly and solve it reliably.

So more than facility with every mathematical technique, you have to be able to size up a particular problem, work out which tools are likely to crack this particular nut, deploy them and quickly sweep up any nut shells scattered around the place.

For this, you may not need to know differential calculus/complex numbers/binary/hex/base 11 math (allthough how you would get on without the binary or hex in software is a bit of a mystery to me, but I am sure there are ways round it, if needs must...maybe you do all binary math on a pda or something), but you need to be able to look at every problem, select the tools, read a book (or whatever) to make them available if you don't come with the full set installed, and solve the problem.

(And, if you have underestimated the problem, install the extra tools and still solve the problem.)

In this context, elegance doesn't count; results do.

OTOH, at the job interview it is probably inadvisable to admit that you've never been able to cope with binary so you've come up with clever technique to do the math on your fingers, however clever/fast/reliable your new technique actually is.

Practically, there are a number of techniques, some of them very simple, that I haven't used for so long, that I am no longer capable of using (some school geometry, for example, which is worryingly basic, in some ways). But at least I know what I don't know, and, if needs be, in half an hour, I can be (vaguely) back up to speed, with a few good books and wikipedia and/or google.

I'm not really looking for a job. I just care about learning about computers a lot more than most other things. Separately, I want to learn a good amount of math. I've never had real problems with math, but I have more trouble memorizing everything than I do with anything else. Just reading a math book isn't exactly fun, but it doesn't really bother me. It's interesting and it's something I want to learn. I know less about math than anything I can name other than science.
I know a decent amount about processors and RAM, and quite a bit about hard disks. I know a very decent amount of C, and I recently bought "C in a Nutshell". I know a decent amount of PERL, but I need to study it more and brush up on what I haven't been thinking about - and I'm much more comfortable with C. I really haven't spent much time on PERL. I've been thinking Python might be good. I've been considering learning something about Scheme or Lisp, but don't think that they'd be very useful to me as anything other than learning tools. I can get simple things done with bash scripting.
I've got bits and bytes down. I'm capable (in my opinion) of using binary and hexadecimal without any confusion. Obviously not advanced things, since I don't really know advanced mathematics in base 10. I have a good understanding of them and how to use them, how to convert, etc. AND, OR, NOT, and XOR and shifts and rotates aren't any mystery. I've read a little about how logic gates work, but not very much. I can get around on the Linux command-line easily. I have a good understanding (in my opinion) of quite a few of the command-line tools (sed and awk I need practice with, but they're not mysterious).
I understand many things about assembly. I just got done reading "Programming from the Ground Up" and I've read some other things about it. I read some of Paul Carter's assembly book not all that long ago.
I don't know anything about electronics, really, except transistors, capacitors, etc. Just simple things.
Mathematics isn't really my favorite thing, but it's interesting and I plan on learning a lot more than I know about it ... it's just happening slowly since I can't really focus on it. I have to put it on the back burner, and keep doing things that are more interesting to me. I had a feeling that a lot of people on this site have learned what I consider to be very advanced mathematics.

What sort of background in mathematics does everyone here have? What branches of mathematics have you learned/do you deal with?
Do you think that trying to learn a lot about computer science is a waste of time without advanced mathematics?
If you know a lot about computer science and programming, or you would like to, what do you think you would need to know to get you through it?
Is lambda calculus important to you?

For my math degree I studied mostly
Set Theory and Logic (Zermelo Fraenkel axioms, ordinals, ...)
Topology
Algebra (Group Theory, a bit of Galois Theory)
Measure Theory
Differential Calculus

What I know about programming and computer science
I learned it by myself and independantly of mathematics.
Actually my first exposure to the computers started
with a Macintosh. I was asked to typeset a
math book in TeX. Learning TeX gave me the itch for
programming...

Since I learned mostly what I liked:
c, the shell (sh, bash, zsh), ..., linux

There are languages/systems that I just don't care for:
c++, java, c#

LinuxQuestions.org is looking for people interested in writing
Editorials, Articles, Reviews, and more. If you'd like to contribute
content, let us know.