algorithms with on software engineering we don' follow that approachbut let' briefly examine software engineering and see how it fits into the topics we discuss in this book software engineering is the study of how to create large and complex computer programsinvolving many programmers it focuses on the overall design of the program and on the creation of that design from the needs of the end users software engineering is concerned with life cycle of software projectwhich includes specificationdesignverificationcodingtestingproductionand maintenance it' not clear that mixing software engineering on one handand data structures and algorithms on the otheractually 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 data structures and algorithmson the other handis nuts-and-bolts discipline concerned with the details of coding and data storage accordingly we focus on the nuts-and-bolts aspects 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 in which 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 only interested in 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 +programmer this may at first seem quite amazing how can you get along without pointersthroughout this book we'll be using pointer-free code to build complex data structures you'll see that it' not only possiblebut actually easier than using +pointers actually java only does away with explicit pointers pointersin the form of memory addressesare still thereunder the surface it' sometimes said that in javaeverything is pointer this 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 in the first statementa memory location called intvar actually holds numerical value such as (assuming such value has been placed therehoweverthe memory location bc does not hold the data of bankaccount object insteadit contains the address of bankaccount object that is actually stored elsewhere in memory the