Page 1 of 1 [ 13 posts ] 

Zeno
Veteran
Veteran

User avatar

Joined: 17 Jun 2006
Age: 53
Gender: Male
Posts: 633
Location: Singapore

06 May 2010, 7:01 pm

After working through a book and the half on Java, I decided that it would be best to start properly from the beginning and learn how to program as a computer science major would. If there is one thing I have learned, there are many books on computer algorithms. The gold standard appears to be “Introduction to Algorithms” by Cormen et al. However, as I am new to programming, plunging straight into Cormen does not seem like the smartest thing to do. I am currently reading a nice easy text written by William McAllister who wrote a sophomore level data structures textbook using Java for students who are less academically inclined. The result is a lot of handholding and nudging, which I like because I snatch time in the morning and night to do this.

Most of the people who studied computer science in the last 20 years would probably have gone through Cormen. What is the appropriate road to take? Any advice for someone who is trying to get there?



Ancalagon
Veteran
Veteran

User avatar

Joined: 25 Dec 2007
Age: 47
Gender: Male
Posts: 2,302

06 May 2010, 11:01 pm

MIT open courseware has a bunch of stuff from various CS courses, including video lectures (sometimes). They have two listed intro to algorithms courses, and the one with video lectures is based on the book you mentioned.

I'm just starting to take CS stuff, so I can't say "what I used", since I haven't got there yet. I know that Knuth's series of books are very highly regarded, although they're more reference material than textbook. I've got a set of those, and they can be very dense and technical. Like most things dense and technical, it's better to try to go slowly, rather than try to read them like a novel.


_________________
"A dead thing can go with the stream, but only a living thing can go against it." --G. K. Chesterton


lau
Veteran
Veteran

User avatar

Joined: 17 Jun 2006
Age: 77
Gender: Male
Posts: 9,798
Location: Somerset UK

07 May 2010, 7:50 am

I always liked Algorithms + Data Structures = Programs and still have my copy.


_________________
"Striking up conversations with strangers is an autistic person's version of extreme sports." Kamran Nazeer


Zeno
Veteran
Veteran

User avatar

Joined: 17 Jun 2006
Age: 53
Gender: Male
Posts: 633
Location: Singapore

07 May 2010, 8:25 am

I thought I went through all the OCW material that MIT puts out and I do not remember seeing McAllister’s work listed as a textbook. However, it would say a lot about MIT if they did choose to use the McAllister book. McAllister teaches at St. Joseph College (never heard of it) and he does not have a PhD. So for MIT to pick his book would be a choice that focuses on a person’s work rather than his pedigree. Aside from some annoying typos, the book is excellent as an introduction. McAllister is conscious that most students are likely to find the math challenging and he does his best to minimize it. Although the lack of mathematical rigor makes the study of hashing algorithms something of a wash, the general concepts are still conveyed. But he repeats and repeats with clear code examples and he does not leave things out for the student to figure for themselves. Most people who write books on logic like computer science, math or philosophy like to jump steps without telling the student because they believe that provoking the student to think is the whole point of class. If you do not get it, life can become miserable very quickly.

I have gone through Carnegie Mellon’s computer science department’s website for clues as well on what my next step should be. It is not that I am afraid of Cormen’s “Introduction to Algorithms” (it is very thick and heavy though and would be unpleasant to handle in the toilet in the morning and in bed at night before I sleep) but I would prefer to take baby steps towards my goal even if it means that it would take more time to achieve it.



Zeno
Veteran
Veteran

User avatar

Joined: 17 Jun 2006
Age: 53
Gender: Male
Posts: 633
Location: Singapore

07 May 2010, 8:28 am

lau wrote:
I always liked Algorithms + Data Structures = Programs and still have my copy.


Hmm... published in 1976. It is going to be tough to get a copy of that book.



LordoftheMonkeys
Veteran
Veteran

User avatar

Joined: 15 Aug 2009
Age: 37
Gender: Male
Posts: 927
Location: A deep,dark hole in the ground

07 May 2010, 9:21 am

Unfortunately, being academically inclined is a major part of understanding algorithms and data structures. They're no less academic than, say, quantum physics. My advice would be to study some mathematics, particularly discrete mathematics and logic. This will give you the academic background (inclination) that you need. Languages like Java and C# are made for faster coding rather than power, so a textbook on them is not likely to mention the scientific side of programming.



Ichinin
Veteran
Veteran

User avatar

Joined: 3 Apr 2009
Gender: Male
Posts: 3,653
Location: A cold place with lots of blondes.

07 May 2010, 9:41 am

Zeno wrote:
Hmm... published in 1976. It is going to be tough to get a copy of that book.


It is easier to get hold of something new:

Introduction to Algorithms, Thomas H. Cormen


_________________
"It is far better to grasp the Universe as it really is than to persist in delusion, however satisfying and reassuring" (Carl Sagan)


Ancalagon
Veteran
Veteran

User avatar

Joined: 25 Dec 2007
Age: 47
Gender: Male
Posts: 2,302

07 May 2010, 9:45 am

Zeno wrote:
I thought I went through all the OCW material that MIT puts out and I do not remember seeing McAllister’s work listed as a textbook.

I meant the Cormen book, sorry.

Quote:
but I would prefer to take baby steps towards my goal even if it means that it would take more time to achieve it.

This sounds like a reasonable approach to me. There's nothing that says you can't get familliar with basic concepts and then start working on a denser, more thorough approach.


_________________
"A dead thing can go with the stream, but only a living thing can go against it." --G. K. Chesterton


ruveyn
Veteran
Veteran

User avatar

Joined: 21 Sep 2008
Age: 89
Gender: Male
Posts: 31,502
Location: New Jersey

07 May 2010, 12:26 pm

Zeno wrote:
lau wrote:
I always liked Algorithms + Data Structures = Programs and still have my copy.


Hmm... published in 1976. It is going to be tough to get a copy of that book.


If you mean Wirth's book, Amazon has 35 used ranging from 5.98 and upward. Check it out on Amazon.Com

ruveyn



HenryKrinkle
Sea Gull
Sea Gull

User avatar

Joined: 19 Nov 2005
Gender: Male
Posts: 201

07 May 2010, 5:32 pm

If you ever decide to tackle the Cormen book, this might help.



Zeno
Veteran
Veteran

User avatar

Joined: 17 Jun 2006
Age: 53
Gender: Male
Posts: 633
Location: Singapore

07 May 2010, 6:48 pm

LordoftheMonkeys wrote:
Unfortunately, being academically inclined is a major part of understanding algorithms and data structures. They're no less academic than, say, quantum physics. My advice would be to study some mathematics, particularly discrete mathematics and logic. This will give you the academic background (inclination) that you need. Languages like Java and C# are made for faster coding rather than power, so a textbook on them is not likely to mention the scientific side of programming.


The study of algorithms is as hard as quantum physics? I flipped through Cormen's book and the latter sections are used as a graduate level text and I did not think that it was that difficult. My biggest grouse with Cormen is that it is thick. But I suppose at the advanced levels, research into data structures and algorithms is a rarefied undertaking. For my purposes though, and I do not intend to peer too deeply into the mysteries of things, it is just fun in a ticklish sort of way. It is like being a tourist in abstract space.



LordoftheMonkeys
Veteran
Veteran

User avatar

Joined: 15 Aug 2009
Age: 37
Gender: Male
Posts: 927
Location: A deep,dark hole in the ground

07 May 2010, 7:42 pm

Zeno wrote:
LordoftheMonkeys wrote:
Unfortunately, being academically inclined is a major part of understanding algorithms and data structures. They're no less academic than, say, quantum physics. My advice would be to study some mathematics, particularly discrete mathematics and logic. This will give you the academic background (inclination) that you need. Languages like Java and C# are made for faster coding rather than power, so a textbook on them is not likely to mention the scientific side of programming.


The study of algorithms is as hard as quantum physics? I flipped through Cormen's book and the latter sections are used as a graduate level text and I did not think that it was that difficult. My biggest grouse with Cormen is that it is thick. But I suppose at the advanced levels, research into data structures and algorithms is a rarefied undertaking. For my purposes though, and I do not intend to peer too deeply into the mysteries of things, it is just fun in a ticklish sort of way. It is like being a tourist in abstract space.


I did not say that algorithms are as hard as quantum physics. I said that they are both in the area of academics, as opposed to just techie stuff. The same goes for philosophy, social science, chemistry, biology, mathematics, music theory, or anything like that, regardless of difficulty.



Zeno
Veteran
Veteran

User avatar

Joined: 17 Jun 2006
Age: 53
Gender: Male
Posts: 633
Location: Singapore

07 May 2010, 8:03 pm

LordoftheMonkeys wrote:
I did not say that algorithms are as hard as quantum physics. I said that they are both in the area of academics, as opposed to just techie stuff. The same goes for philosophy, social science, chemistry, biology, mathematics, music theory, or anything like that, regardless of difficulty.


That I would agree. Having studied at the introductory level data structures and algorithms, I now think that it is silly for people to learn how to program without understanding the efficiency of their data structures or speed of their algorithms. However, it would be very challenging to study algorithms without some kind of background in computer programming. But of course, the science behind computer systems is not really about programming. Most computer scientists regard programming as trivial. If you get the algorithm right, then you can implement it in any language that you are fluent in. I am wondering how far I will go down this road. I actually really like studying how these things work.