almost every computer programeven simple oneuses data structures and algorithms for exampleconsider program that prints address labels the program might use an array containing the addresses to be printed and simple for loop to step through the arrayprinting each address the array in this example is data structureand the for loopused for sequential access to the arrayexecutes simple algorithm for uncomplicated programs with small amounts of datasuch simple approach might be all you need howeverfor programs that handle even moderately large amounts of dataor which solve problems that are slightly out of the ordinarymore sophisticated techniques are necessary simply knowing the syntax of computer language such as java or +isn' enough this book is about what you need to know after you've learned programming language the material we cover here is typically taught in colleges and universities as second-year course in computer scienceafter student has mastered the fundamentals of programming what' different about this book there are dozens of books on data structures and algorithms what' different about this onethree thingsour primary goal in writing this book is to make the topics we cover easy to understand demonstration programs called workshop applets bring to life the topics we covershowing you step by stepwith "moving pictures,how data structures and algorithms work the example code is written in javawhich is easier to understand than cc++or pascalthe languages traditionally used to demonstrate computer science topics let' look at these features in more detail easy to understand typical computer science textbooks are full of theorymathematical formulasand abstruse examples of computer code this bookon the other handconcentrates on simple explanations of techniques that can be applied to real-world problems we avoid complex proofs and heavy math there are lots of figures to augment the text many books on data structures and algorithms include considerable material on software engineering software engineering is body of study concerned with designing and implementing large and complex software projects