Algorithms and Data Structures

13,324

Solution 1

This course is great:

http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-046j-introduction-to-algorithms-sma-5503-fall-2005/video-lectures/

There are data structure, algorithm and more

Solution 2

You probably won't like my answer, but I expect that the most productive thing you could do would be to work on your attitude. You often find what you're looking for. So if you're treating your instructor as sub-standard and your book as worthless; you'll get very little out of it. If you look for your instructor's strengths and get what you can from the book, you'll go far. I glanced through your text and it didn't seem all that vague to me. Definitely look at the references provided in other answers, but be positive about the class too.

Solution 3

I particularly liked this book: Data Structures with C++ Using STL by Ford and Topp.

They include quite a bit of source-code (all of it can be downloaded from their website) and nicely step the reader through a thorough nuts-and-bolts implementation of many of the data-structures implemented in the STL, as well as a couple data-structures (like graphs) that aren't present in the STL. You'll get a good understanding of each data-structure's internal composition from more basic data-types, as well as a generic enough reference that should you ever need to build something yourself, you'll have a very good idea of exactly how these data-structures can be created and composed from simpler data-types (in a generic sense ... i.e., these ideas can be transposed to any other language) and how they should be applied in real-world settings.

It's not so much a reference for the STL itself, as it is a reference on how the data-structures in the STL were implemented (albeit in a more simplistic form ... you won't have to worry about allocators, and many of the other ancillaries in the STL code that can make it a bit hard to read and understand for a beginner).

Hope this helps,

Jason

Solution 4

Get yourself Skiena's The Algorithm Design Manual. It's an amazing book and really helped me understand algorithms and data structures.

Solution 5

Personally, I've always found the best way to learn something is to try and build it. Whether it's an algorithm, and new design pattern or a data structure, the process of creating that thing in code has always been the way I've learned best.

Share:
13,324
lessthanjacob
Author by

lessthanjacob

Updated on July 24, 2022

Comments

  • lessthanjacob
    lessthanjacob almost 2 years

    I'm currently halfway through my first algorithm and data structures class. Unfortunately, my teacher is not very good, and the online book we use is incredibly vague in its descriptions (http://people.cs.vt.edu/~shaffer/Book/) I've manage to maintain an A thus far, mostly due to luck and common sense, but it's starting to get a lot harder now that we are dealing with sorts, searches, and more advanced data structures like graphs.

    I was wondering if there are any online resources that would help me learn this subject better that you would recommend. I understand the major importance of knowing this topic well, especially when writing efficient code and also when being interviewed for a job, so I'm open to any suggestions that will help me learn and understand algorithms and data structures better.

  • anthonyvd
    anthonyvd about 13 years
    Sure attitude can be an issue, but the guy might also have a point. I remember my first data structure and algorithms class (which is a somewhat hard to grasp subject at first). My teacher had a very strong Russian accent and gave us assignments he used to give to students 4-5 years more advanced in their CS studies as we were. It was painful. I learned from books and peers that semester, not from the teacher.
  • lessthanjacob
    lessthanjacob about 13 years
    I can definitely see your point. I'm normally not one to put any blame for how I do in the class on the teacher, but it's just that this topic seems to require a good amount of in depth explaining, which my professor doesn't seem to do. This often leaves myself and most of the rest of the class confused.
  • lessthanjacob
    lessthanjacob about 13 years
    I'll trust anything that comes from MIT. I'll definitely give this a thorough look later. Thanks!
  • lessthanjacob
    lessthanjacob about 13 years
    But what if I don't have the programming experience to do that? I'm a second year Computer Science major with a pretty good grasp on C++ and C. Do you think I'd still be able to build some of these things?
  • Jason
    Jason about 13 years
    @SkankinJake ... check out my link above ... I was able to read that book without any difficulties after only a semester of C++ ... and after reading it, I was able to write my own implementations of many of the STL data-structures without much difficulty. Not that mine were any better than the STL's (I still suggest you use that if the right containers are available), but just saying, you'll understand how they work. The book puts heavy emphasis on data-structures compared to algorithms though, so you may have to find other supplemental material for that end of things.
  • lessthanjacob
    lessthanjacob about 13 years
    I'll be sure to give that a read. Thanks.
  • Nathanael
    Nathanael about 13 years
    You won't build them perfectly =) - that's fine. The experience of trying to turn an abstract concept into a concrete implementation will help you to grasp the concepts. Even as a professional developer with a few years experience I still create small test applications to learn new concepts.