Thread: Books on logic theory, discrete maths etc?

  1. #1
    Registered User
    Join Date
    Sep 2009
    Posts
    12

    Books on logic theory, discrete maths etc?

    Came across a book the other day called Elements of Programming; from it's own description it's supposed to help you as a programmer by explaining the fundamental principles behind it. I've also heard from a lot of people that a good programmer really needs to understand the mathematical stuff, because it improves the way you think about code. But the book is so far beyond my skill set, even the preface warns that the reader needs a firm grip if things like computer architecture, discrete mathematics, fundamental algorithms, lambda calculus, semigroups, data structures, calculus and logic and set theory.

    I'm originally from England, and I only studied Maths to a modern GCSE level about two years ago. Frankly, none of these terms have any meaning for me whatsoever. Even when I look them up briefly, I can't find any relation to the stuff I learned at school. But I'm slowly learning to program on my own (well, except of course for textbooks and help from fantastic sites like this), so I'm sure that with enough effort I can get a feel for these kinds of things, too. I'm just not entirely sure where the heck I should start.

    It probably seems like a low ambition ("I wanna know enough to read this book!"), but I'd really appreciate it if anybody here could recommend any good books or online tutorials related to, well, any of this stuff. If it's about the mathematical side of programming, I'm interested (and I'd be grateful as hell, to boot).

  2. #2
    The Right Honourable psychopath's Avatar
    Join Date
    Mar 2004
    Location
    Where circles begin.
    Posts
    1,071
    The text book i'm using for my discreet math course, is this one. There are probably better ones, but this is the only one i've used so it's all I can recommend.
    M.Eng Computer Engineering Candidate
    B.Sc Computer Science

    Robotics and graphics enthusiast.

  3. #3
    Crazy Fool Perspective's Avatar
    Join Date
    Jan 2003
    Location
    Canada
    Posts
    2,640
    My discrete math course used this book:
    Amazon.com: The Puzzling Adventures of Dr. Ecco (9780486296159): Dennis Shasha: Books


    Great read for those who want a little math fun.

  4. #4
    and the Hat of Guessing tabstop's Avatar
    Join Date
    Nov 2007
    Posts
    14,336
    I've looked at Goodaire and it's pretty good. Johnsonbaugh is an excellent book IMO and is what I would teach from if I had a free choice (although the book we have (Scheinerman) is a fine book).

    There's probably a CS reason why you need semigroups, but not a programming reason that I can think of off the top of my head.

    To data structures, the book we use here is called something something something Walls and Mirrors and I haven't heard anything bad about it (but I've not read it very carefully myself).

    The flip side of all this is that these are textbooks and therefore not priced in any sort of reasonable way.

  5. #5
    Malum in se abachler's Avatar
    Join Date
    Apr 2007
    Posts
    3,195
    Quote Originally Posted by Angie View Post
    Came across a book the other day called Elements of Programming; from it's own description it's supposed to help you as a programmer by explaining the fundamental principles behind it. I've also heard from a lot of people that a good programmer really needs to understand the mathematical stuff, because it improves the way you think about code. But the book is so far beyond my skill set, even the preface warns that the reader needs a firm grip if things like computer architecture, discrete mathematics, fundamental algorithms, lambda calculus, semigroups, data structures, calculus and logic and set theory.

    I'm originally from England, and I only studied Maths to a modern GCSE level about two years ago. Frankly, none of these terms have any meaning for me whatsoever. Even when I look them up briefly, I can't find any relation to the stuff I learned at school. But I'm slowly learning to program on my own (well, except of course for textbooks and help from fantastic sites like this), so I'm sure that with enough effort I can get a feel for these kinds of things, too. I'm just not entirely sure where the heck I should start.

    It probably seems like a low ambition ("I wanna know enough to read this book!"), but I'd really appreciate it if anybody here could recommend any good books or online tutorials related to, well, any of this stuff. If it's about the mathematical side of programming, I'm interested (and I'd be grateful as hell, to boot).
    Higher math's can be used to describe what computers are doing, but that doesn't mean they are necessary to understand it. I can describe precisely, using calculus, the exact shape of an apple, that doesn't mean without calculus I can't eat it. Honestly, the highest math you will ever need is advanced algebra, trig, geometry, and binary logic. Of course the computer science guys will claim different, but they are just wrong. Big O notation is nice, but it will not help you write code Lambda calculus won't troubleshoot your network, and calculus won't tell you why your threads keep deadlocking.

    So unless you need them for your particular field, you don't need them. A Karnaugh map is far more useful to a programmer than knowing how to apply La'place transforms, unless you work specifically in satellite communications. And set theory is pretty much worthless.

    If an author cannot explain their concept without reverting to those, then I submit for your consideration that he/she either doesn't have any non-academic experience in the field, or has such poor technical writing skills that the publisher really should have rejected the text.

    <don's asbestos suit for the impending flame war>
    Last edited by abachler; 09-28-2009 at 08:27 PM.

  6. #6
    C++ Witch laserlight's Avatar
    Join Date
    Oct 2003
    Location
    Singapore
    Posts
    28,413
    Quote Originally Posted by abachler
    the highest math you will ever need is advanced algebra, trig, geometry, and binary logic
    I would put trigonometry and geometry in the "unless you need them for your particular field, you don't need them" category, but most people would have learnt enough of the basics in secondary/high school anyway.

    Quote Originally Posted by abachler
    Big O notation is nice, but it will not help you write code
    I think that a rudimentary grasp of Big O notation helps in selecting and designing efficient algorithms that can be translated into code, and even if you do not use such knowledge, it would be a by-product of learning about common data structures and algorithms.
    Quote Originally Posted by Bjarne Stroustrup (2000-10-14)
    I get maybe two dozen requests for help with some sort of programming or design problem every day. Most have more sense than to send me hundreds of lines of code. If they do, I ask them to find the smallest example that exhibits the problem and send me that. Mostly, they then find the error themselves. "Finding the smallest program that demonstrates the error" is a powerful debugging tool.
    Look up a C++ Reference and learn How To Ask Questions The Smart Way

  7. #7
    (?<!re)tired Mario F.'s Avatar
    Join Date
    May 2006
    Location
    Ireland
    Posts
    8,446
    Quote Originally Posted by laserlight View Post
    I think that a rudimentary grasp of Big O notation helps in selecting and designing efficient algorithms that can be translated into code
    In any case, nothing that you can't infer empirically from just testing the algorithm with profiling tools which may prove far more valuable than trying to calculate the Big O. Especially on complex ones.

    I agree it comes handy to quickly compare possible algorithms and indeed it eventually sinks in by studying the field. But I never found a true value to Big O during the coding phase. Being a notation it merely describes the type of performance boosts and bootlenecks we eventually learn to spot by heart. More useful as a a posteriori descriptive tool. I think, calculus may sometimes prove a lot more valuable than Big O in determining what best course of action to take.

    Not so sure about advanced algebra either. Not exactly sure what that may mean. But I think that such things as combinatorials or determinants may also fall in the "unless you need them" category.
    Originally Posted by brewbuck:
    Reimplementing a large system in another language to get a 25% performance boost is nonsense. It would be cheaper to just get a computer which is 25% faster.

Popular pages Recent additions subscribe to a feed

Similar Threads

  1. Handling logic and draw cycles
    By DavidP in forum Game Programming
    Replies: 1
    Last Post: 07-25-2009, 10:15 AM
  2. Discrete Maths
    By rushhour in forum A Brief History of Cprogramming.com
    Replies: 3
    Last Post: 12-16-2008, 03:37 PM
  3. God
    By datainjector in forum A Brief History of Cprogramming.com
    Replies: 746
    Last Post: 12-22-2002, 12:01 PM
  4. Imagination
    By Jet_Master in forum A Brief History of Cprogramming.com
    Replies: 133
    Last Post: 06-11-2002, 03:21 PM