C Board  

Go Back   C Board > Community Boards > General Discussions

Reply
 
LinkBack Thread Tools Display Modes
Old 09-28-2009, 08:20 AM   #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).
Angie is offline   Reply With Quote
Old 09-28-2009, 08:48 AM   #2
The Right Honourable
 
psychopath's Avatar
 
Join Date: Mar 2004
Location: Where circles begin.
Posts: 1,061
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.
__________________
Memorial University of Newfoundland
Computer Science

Mac and OpenGL evangelist.
psychopath is offline   Reply With Quote
Old 09-28-2009, 09:47 AM   #3
Crazy Fool
 
Perspective's Avatar
 
Join Date: Jan 2003
Location: Canada
Posts: 2,588
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.
Perspective is offline   Reply With Quote
Old 09-28-2009, 02:48 PM   #4
and the Hat of Guessing
 
tabstop's Avatar
 
Join Date: Nov 2007
Posts: 8,740
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.
tabstop is offline   Reply With Quote
Old 09-28-2009, 05:59 PM   #5
Rampaging 35 Stone Welsh
 
abachler's Avatar
 
Join Date: Apr 2007
Posts: 2,927
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>
__________________
He is free, you say. Ah! That is his misfortune… These men… [have] the most terrible, the most imperious of masters, that is, need. … They must therefore find someone to hire them, or die of hunger. Is that to be free? - Simon Linguet

Last edited by abachler; 09-28-2009 at 08:27 PM.
abachler is offline   Reply With Quote
Old 09-29-2009, 04:39 AM   #6
C++ Witch
 
laserlight's Avatar
 
Join Date: Oct 2003
Location: Singapore
Posts: 10,364
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.
__________________
C + C++ Compiler: MinGW port of GCC
Build + Version Control System: SCons + Bazaar

Look up a C/C++ Reference and learn How To Ask Questions The Smart Way
laserlight is online now   Reply With Quote
Old 09-30-2009, 02:57 AM   #7
(?<!re)tired
 
Mario F.'s Avatar
 
Join Date: May 2006
Location: Portugal
Posts: 5,220
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.


Mario F. is offline   Reply With Quote
Reply

Thread Tools
Display Modes

Forum Jump

Similar Threads
Thread Thread Starter Forum Replies Last Post
Handling logic and draw cycles DavidP Game Programming 1 07-25-2009 10:15 AM
Discrete Maths rushhour General Discussions 3 12-16-2008 03:37 PM
God datainjector A Brief History of Cprogramming.com 746 12-22-2002 12:01 PM
Imagination Jet_Master A Brief History of Cprogramming.com 133 06-11-2002 03:21 PM


All times are GMT -6. The time now is 05:51 AM.


Powered by vBulletin® Version 3.8.1
Copyright ©2000 - 2009, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.3.0 RC2

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22