I am currently reading Robert Causey's Logic, Sets and Recursion, which is intended to bridge the gap between introductory freshman/sophomore "introductory discrete math" courses and senior level mathematical logic. I am only about a third of the way through it right now, but I have already learned several useful things, I especially found the discussion of mathematical definition of "relations" enlightening. The biggest complaint I have about it, is that it uses different terminology from the previous logic I have read, "sentential logic" rather than "propositional logic" for example, but at least it mentions the alternative terms when it introduces its own.
We use these lecture notes to teach the first semester of honors CS at Stony Brook. They're great (though some of the examples are a bit tedious---the class just finished Counting III and there are a bit too many card trick examples in that one).
(by "we" I mean the professor that teaches it, I'm just helping out this semester)
I am taking a discrete math course as a non-degree student and just found this text today. We are using Rosen's book in class, but I must say that this free text does a much better job of giving you the intuition behind what you are doing. This is an excellent resource for any discrete math student.
Second time this semester my textbook's been posted on HN. Go figure. Does this link make it up every couple of months? I thought there was something preventing duplicates.
(I am in the class, that is; I didn't write the textbook).
I've been using this to prepare for Discrete Math. It's pretty interesting; the authors do a good job of putting mathematical concepts in historical contexts, which keeps me engaged.
Discrete math and probability have been done to death as computer science-related topics. You cannot get far in a CS program without learning these topics forward and back. That being said, this book is good as a starting point that collects these topics together; I have not seen a similar book that does the same job.
What's not getting enough attention as "mathematics for computer science" is category theory. Put very roughly: it gives you some very powerful formal patterns that will crop up in every computer science-related thing you do. This includes everything from theoretical computer science to the most 'boring' of dead-end programming jobs. Think of it as software engineering/design patterns without all the informal handwaving and zealotry for/against <latest fad process or design pattern> that it allows.
Category theory, if properly learned with an eye toward application, will make you become utterly ashamed of the programs you write, and the languages you write them in. The end result is a program that still does not match the one in your head built with a much more elegant set of abstractions, but is very clear nonetheless.
Any suggestions for a good Category Theory texts that're oriented to CS and go beyond the "classical" connections between cartesian closed categories and lambda calculi? Or am I stuck in another frustrating 2-week long session trying to divine "Category Theory for the working mathematician" and a hand-full of research papers and blogs on Haskell?
Edit: Sorry if I sound bitter, but I've been down the category theory route multiple times in the past, starting in graduate school (in Math) and I've always given up before I "got" the divine revelation that others have talked about.
Do you know of an example that shows category theory being applied to solving a CS problem ?
From what little I've seen of it category theory seems to be more abstract than conventional abstract algebra and I've rarely heard of even group theory used in the development of an algorithm
[+] [-] billswift|15 years ago|reply
[+] [-] leif|15 years ago|reply
(by "we" I mean the professor that teaches it, I'm just helping out this semester)
[+] [-] porter|15 years ago|reply
[+] [-] cjtenny|15 years ago|reply
(I am in the class, that is; I didn't write the textbook).
[+] [-] PostOnce|15 years ago|reply
instead of just http://courses.csail.mit.edu/6.042/fall10/mcs-ftl.pdf ?
[+] [-] tjr|15 years ago|reply
[+] [-] fatso784|15 years ago|reply
[+] [-] nickpinkston|15 years ago|reply
I would like to see something similar for computational geometry - beyond Berg's book. Any ideas?
[+] [-] karlzt|15 years ago|reply
But is good to have more discussion about it.
[+] [-] unknown|15 years ago|reply
[deleted]
[+] [-] unknown|15 years ago|reply
[deleted]
[+] [-] unknown|15 years ago|reply
[deleted]
[+] [-] unknown|15 years ago|reply
[deleted]
[+] [-] _corbett|15 years ago|reply
[+] [-] partition|15 years ago|reply
What's not getting enough attention as "mathematics for computer science" is category theory. Put very roughly: it gives you some very powerful formal patterns that will crop up in every computer science-related thing you do. This includes everything from theoretical computer science to the most 'boring' of dead-end programming jobs. Think of it as software engineering/design patterns without all the informal handwaving and zealotry for/against <latest fad process or design pattern> that it allows.
Category theory, if properly learned with an eye toward application, will make you become utterly ashamed of the programs you write, and the languages you write them in. The end result is a program that still does not match the one in your head built with a much more elegant set of abstractions, but is very clear nonetheless.
http://plato.stanford.edu/entries/category-theory/
[+] [-] frak_your_couch|15 years ago|reply
Edit: Sorry if I sound bitter, but I've been down the category theory route multiple times in the past, starting in graduate school (in Math) and I've always given up before I "got" the divine revelation that others have talked about.
[+] [-] tgflynn|15 years ago|reply
From what little I've seen of it category theory seems to be more abstract than conventional abstract algebra and I've rarely heard of even group theory used in the development of an algorithm
[+] [-] kwantam|15 years ago|reply
http://en.wikibooks.org/wiki/Haskell/Category_theory