Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
CS 311 Data Structures 1 Instructor Name : Vana Doufexi Office : 2-229, Ford Building Email : [email protected] Office hours: By appointment (email me) 2 Resources class webpage : http://www.cs.northwestern.edu/academics/courses/ 311 – Use it to • • • • download class notes, handouts and assignments look up your grades access online tutorials and references look up course policies on – grading – late homework – collaboration 3 Resources class newsgroup : – The class newsgroup is cs.311 at news.cs.northwestern.edu – Use it to • discuss class material, • discuss the assignments (but NEVER post solutions) 4 Problem Solving Problem solving = – Understanding the problem – Designing a solution – Implementing the solution What exactly is a solution? 5 Problem Solving An algorithm is a computational method for solving a problem. It is a sequence of steps that take us from the input to the output. An algorithm must be – Correct • It should provide a correct solution according to the specifications. – Finite • It should terminate. – General • It should work for every instance of a problem – Efficient • It should use few resources (such as time or memory). 6 Problem Solving Any algorithm we come up with will have to manipulate data in some way – The way we choose to organize our data directly affects the efficiency of our algorithm Solution = algorithm + data organization – Both components are strongly interconnected. 7 What this class is about Classic data structures. – Design, implementation and use How to choose or devise the appropriate data structures for a problem. Classic algorithms and how the choice of data structure affects their efficiency. More C++ programming experience. Programming in the Linux/Unix environment 8 Problem Solving Key characteristic: Abstraction – Oftentimes, different real-world problems can be modeled using the same underlying idea • Examples: Runtime storage, Undo operation. In both cases we have a sequence of data items (activation records, actions) and we can only add and remove items from one end of the sequence. – We can design a data organization scheme that retains the general characteristics of this "data and operations" model (without any dependences on the type of data or method of implementation). – This is called data abstraction. • Big advantage: code reuse. We can use the same scheme for both problems. 9 Problem Solving Key characteristic: Encapsulation – The way the data is organized and the operations that can be performed on it are implemented should be hidden. • Its properties are separated from the implementation – Data can be manipulated in a controlled way, only through an interface. The internal details are hidden. • In-class example: library reserve desk – This is called encapsulation. • Big advantage: The code has higher maintainability. The internal organization/implementation can be modified/improved without changing the interface. • Big advantage: Outside objects cannot interfere with the internal organization, inadvertently corrupting it. 10 Problem Solving Key characteristic: Information hiding – A solution typically consists of different modules that interact with one another. – Information hiding is the idea of concealing details from other modules that do not need to know those details. 11 Data organization Major components: – The data – The operations allowed on it These make up an Abstract Data Type A Data Structure is a construct that implements a particular ADT. Example: An indexed-list ADT. 12 Data organization Example: An indexed-list ADT. – DATA: Make it more abstract by not assuming a type • An indexed sequence of items of some type Make it more abstract • The lower index by not assuming it's 0 • The upper index – OPERATIONS: • Access item at position (index) i • Add an item at position i • Remove an item at position i • Change the bounds Note that there is no mention of how this might be implemented. 13