Reddit Reddit reviews Data Structures and Algorithms in Java

We found 8 Reddit comments about Data Structures and Algorithms in Java. Here are the top ones, ranked by their Reddit score.

Computers & Technology
Books
Computer Science
Information Theory
Data Structures and Algorithms in Java
Check price on Amazon

8 Reddit comments about Data Structures and Algorithms in Java:

u/_INTER_ · 4 pointsr/java

If you want to get a head start at the college, I'd rather get more fundamental programming knowledge. Get a book about algorithms and datastructures (e.g. this or this, first few Google results pointed me to a PDF).

Well of course practical knowledge is also never bad.

u/Quinnjaminn · 3 pointsr/cscareerquestions

Copy pasting my response to a similar question:

Edited to have more resources and be easier to read.

It's hard to draw the line between "essential" and "recommended." That depends a lot on what you want to do. So, I will present a rough outline of core topics covered in the 4 year CS program at my university (UC Berkeley). This is not a strict order of topics, but prerequisites occur before topics that depend on them.

Intro CS

Topics include Environments/Scoping, abstraction, recursion, Object oriented vs functional programming models, strings, dictionaries, Interpreters. Taught in Python.

The class is based on the classic MIT text, "Structure and Interpretation of Computer Programs." Of course, that book is from 1984 and uses Scheme, which many people don't want to learn due to its rarity in industry. We shifted recently to reading materials based on SICP, but presented in python. I believe this is the reading used now. This course is almost entirely posted online. The course page is visible to public, and has the readings, discussion slides / questions and solutions, project specs, review slides, etc. You can find it here.

Data Structures and basic algorithms

DS: Arrays, Linked Lists, Trees (Binary search, B, Spaly, Red-Black), Hash Tables, Stacks/Queues, Heaps, Graphs. Algorithms: Search (Breadth first vs depth first), Sorting (Bubble, radix, bucket, merge, quick, selection, insert, etc), Dijkstra's and Kruskal's, Big-O analysis.

This class uses two books: "Head First Java" and "Data Structures and Algorithms in Java" (any edition except 2). The class doesn't presupposed knowledge in any language, so the first portion is covering Object Oriented principles and Java from a java book (doesn't really matter which), then moving to the core topics of data structures and algorithms. The course page has some absolutely fantastic notes -- I skim through these before every interview to review. You can also check out the projects and homeworks if you want to follow along. The course page is available here (note that it gets updated with new semesters, and links will be removed -- download them soon if you want to use them).

Machine Structures (Intro Architecture)

Warehouse scale computing (Hadoop Map-Reduce). C language, basics of assemblers/compilers/linkers, bit manipulation, number representation. Assembly Language (MIPS). CPU Structure, pipelining, threading, virtual memory paging systems. Caching / memory hierarchy. Optimization / Performance analysis, parallelism (Open MP), SIMD (SSE Intrinsics).

This class uses two books: "The C Programming Language" and "Computer Organization and Design". This class is taught primarily in C, so the first few weeks are spent as a crash course in C, along with a discussion/project using Map-Reduce. From there in jumps into Computer Organization and Design. I personally loved the projects I did in this class. As with above, the lecture slides, discussion notes, homeworks, labs, solutions, and projects are all available on an archived course page.

Discrete Math / Probability Theory

Logic, Proofs, Induction, Modular Arithmetic (RSA / Euclid's Algorithm). Polynomials over finite fields. Probability (expectation / variance) and it's applicability to hashing. Distributions, Probabilistic Inference. Graph Theory. Countability.

Time to step away from coding! This is a math class, plain and simple. As for book, well, we really didn't have one. The class is based on a series of "Notes" developed for the class. When taken as a whole, these notes serve as the official textbook. The notes, homeworks, etc are here.

Efficient Algorithms and Intractable Problems

Designing and analyzing algorithms. Lower bounds. Divide and Conquer problems. Search problems. Graph problems. Greedy algorithms. Linear and Dynamic programming. NP-Completeness. Parallel algorithms.

The Efficient Algorithms class stopped posting all of the resources online, but an archived version from 2009 has homeworks, reading lists, and solutions. This is the book used.

Operating Systems and System Programming

Concurrency and Synchronization. Memory and Caching. Scheduling and Queuing theory. Filesystems and databases. Security. Networking.

The Operating Systems class uses this book, and all of the lectures and materials are archived here (Spring 2013).

Math

Those are the core classes, not including about 4 (minimum) required technical upper division electives to graduate with a B.A. in CS. The math required is:

  • Calculus 1 and 2 (Calc AB/BC, most people test out, though I didn't)

  • Multivariable calculus (not strictly necessary, just recommended)

  • Linear Algebra and Differential Equations.

    Those are the core classes you can expect any graduate from my university to have taken, plus 4 CS electives related to their interests. If you could tell me more about your goals, I might be able to refine it more.
u/katyne · 3 pointsr/learnprogramming

Head First is a good introductory book. Super easy and fun to follow, they use a lot of analogies and visual aids while being light on "heavy" terminology, so you don't feel overwhelmed. It's a great intro book and you shouldn't worry about it being outdated, they don't get into specifics they just explain the basic concepts of OOP and Java syntax (and that hasn't changed since 2005 :) However this book alone is not enough if you're serious about Java development, - especially if you want to develop for a compex framework like Android, a more serious follow-up is required. Something like Data Structures and Algorithms in Java or Program Development in Java. Just don't buy the expensive late editions, I assure you Java hasn't changed much since 2000s, they mostly just keep adding libraries, something you shouldn't worry about for now. ).

u/Caleb666 · 2 pointsr/compsci

I beg to differ about your suggested Algorithms text. It has lots of bad Amazon reviews: http://www.amazon.com/Data-Structures-Algorithms-Michael-Goodrich/dp/0470383267

CLRS is your bible. It's not overly verbose, it describes the algorithms and data structures very well, it proves almost everything. The people that complain about their use of pseudocode don't deserve to be programmers. The pseudocode is very very easy to convert to working code without much thinking.

u/galaxy_X · 2 pointsr/compsci

This book is great if you have prior knowledge of programming languages.

Data Structures and Algorithms by Goodrich and Tamassia

[edit] It was my Uni book and I realized that it is expensive however, they generally have the older edition free if you google hard enough.

u/[deleted] · 1 pointr/compsci

I have used both Data Structures & Algorithms and Algorithm Design from the same authors (G&T).

> CLRS is your bible. It's not overly verbose, it describes the algorithms and data structures very well, it proves almost everything. The people that complain about their use of pseudocode don't deserve to be programmers. The pseudocode is very very easy to convert to working code without much thinking.

I would argue otherwise. It is dense (1300 pages) but does cover a lot. However I wasn't particularly fond of CLRS pseudocode nor the explanations (or lack thereof). I found G&T books more consistent and put simply, easier to learn. If I want to learn about a concept for a first (or repeat) time, I would learni t faster in G&T including implementation details than CLRS. Anyway, this is my experience -- perhaps I don't deserve to be a programmer, but then again programming isn't really a job for me, just a tool.

This discussion reminded me of another good (free) book I have used on & off: Data Structures & Algorithms: The Basic Toolbox.

u/strozzy · 1 pointr/java

I used the 2nd edition of this when I was studying Java. It was good then so I'm assuming the later versions are just as good. http://www.amazon.com/Data-Structures-Algorithms-Michael-Goodrich/dp/0470383267