Introduction

Download Report

Transcript Introduction

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