150 likes | 302 Views
CS261. Data Structures Winter 2011 Professor Timothy Budd. Why data structures. By this point, you have learned the mechanics of coding - variables, loops, etc
E N D
CS261 Data Structures Winter 2011 Professor Timothy Budd
Why data structures • By this point, you have learned the mechanics of coding - variables, loops, etc • This course will help you take the next step in becoming a programming, learning higher level skills, such as abstraction, modularization, correctness, efficiency.
Administrivia • Go over administrivia - • Two midterms, one final • Several programming assignments, several homeworks • Recitations used for learning programming skills, course will deal more with concepts
More administrivia • I’m found in KEC 3049 • OH: MWF 1:30 - 3:00 for now • Two TA’s: they will each hold office hours as well in KEC lobby (see web page)
Textbook • Textbook is on-line, also with links to many articles (wikipedia and so on) for further information. You should print it out • Textbook begins with material you should already have seen - read chapters 1 to 5 immediately.
Active Learning • At times, this course uses a technique termed Active Learning • Worksheets, not every day, but often. • Worksheets can be done in groups, helping each other • They are gathered and recorded, but only lightly graded
Why Data Structures? • The study of data structures is considered the cornerstone and starting point for systematic examination of computer science • Notice I said computer science, not just programming
Ubiquitous • Certain collection classes are found in almost every nontrivial program • Knowing these keeps you from having to reinvent the wheel
Vocabulary • The common data structures have well known names • Helps provide a vocabulary that is shared by all computer professionals
Abstraction • Data structures are one of the easiest ideas to visualize abstractly • Abstraction is the key idea used by computer professionals to control complexity.
Information Hiding and Large Projects • An important part of abstraction is information hiding - what details do you NOT need to know? • Key to modern large software projects • What does programmer A NOT need to know to use the work of programmer B?
Tools and Techniques • The analysis of data structures provides a good vehicle to learn a variety of mathematical and other analytical techniques • Recursion, big-Oh, counting arguments, proof of correctness
Design Pattern format • A very useful and recent tool • Design patterns provide a way to document proven solutions to common problems • More importantly, provide a vocabulary • Grew out of OO world, starting to become common everywhere else
Features of Design pattern • Problem: Short statement of problem • Solution: Abstract characteristics • Forces: Reasons for using pattern • Counter-Forces: Reasons for NOT using pattern • Example
ADTs, interfaces and Implementations • On to next topic - ADTs