chap data structures and algorithms to understand once you have mastered this book is algorithms by robert sedgewick [sed for an excellent and highly readable (but more advancedteaching introduction to algorithmstheir designand their analysissee introduction to algorithmsa creative approach by udi manber [man for an advancedencyclopedic approachsee introduction to algorithms by cormenleisersonand rivest [clrs steven skiena' the algorithm design manual [ski provides pointers to many implementations for data structures and algorithms that are available on the web for gentle introduction to adts and program specificationsee abstract data typestheir specificationrepresentationand use by thomasrobinsonand emms [tre the claim that all modern programming languages can implement the same algorithms (stated more preciselyany function that is computable by one programming language is computable by any programming language with certain standard capabilitiesis key result from computability theory for an easy introduction to this field see james heindiscrete structureslogicand computability [hei much of computer science is devoted to problem solving indeedthis is what attracts many people to the field how to solve it by george polya [pol is considered to be the classic work on how to improve your problem-solving abilities if you want to be better student (as well as better problem solver in general)see strategies for creative problem solving by folger and leblanc [fl ]effective problem solving by marvin levine [lev ]and problem solving comprehension by arthur whimbey and jack lochhead [wl see the origin of consciousness in the breakdown of the bicameral mind by julian jaynes [jay for good discussion on how humans use the concept of metaphor to handle complexity more directly related to computer science education and programmingsee "cogitoergo sumcognitive processes of students dealing with data structuresby dan aharoni [aha for discussion on moving from programming-context thinking to higher-level (and more design-orientedprogramming-free thinking on more pragmatic levelmost people study data structures to write better programs if you expect your program to work correctly and efficientlyit must first be understandable to yourself and your co-workers kernighan and pike' the practice of programming [kp discusses number of practical issues related to programmingincluding good coding and documentation style for an excellent (and entertaining!introduction to the difficulties involved with writing large programsread the classic the mythical man-monthessays on software engineering by frederick brooks [bro