overview it' not clear that mixing software engineering on one hand and data structures and algorithms on the other actually helps the student understand either topic software engineering is rather abstract and is difficult to grasp until you've been involved yourself in large project the use of data structures and algorithmson the other handis nuts-and-bolts discipline concerned with the details of coding and data storage accordinglywe focus on the essentials of data structures and algorithms how do they really workwhat structure or algorithm is best in particular situationwhat do they look like translated into java codeas we notedour intent is to make the material as easy to understand as possible for further readingwe mention some books on software engineering in appendix java for +programmers if you're +programmer who has not yet encountered javayou might want to read this section we'll mention several ways that java differs from +this section is not intended to be primer on java we don' even cover all the differences between +and java we're interested in only few java features that might make it hard for +programmers to figure out what' going on in the example programs no pointers the biggest difference between +and java is that java doesn' use pointers to +programmernot using pointers may at first seem quite amazing how can you get along without pointersthroughout this book we'll use pointer-free code to build complex data structures you'll see that this approach is not only possiblebut actually easier than using +pointers actuallyjava only does away with explicit pointers pointersin the form of memory addressesare still thereunder the surface it' sometimes said thatin javaeverything is pointer this statement is not completely truebut it' close let' look at the details references java treats primitive data types (such as intfloatand doubledifferently than objects look at these two statementsint intvarbankaccount bc /an int variable called intvar /reference to bankaccount object