|Can be completed in||3 Week|
|Course Validity||7 Week|
Data Structures (DSTR) course is designed to teach you data-structures from a users perspective. It focuses on standard data-structures and how they can be used to write efficient code. It also gives C++ implementations as well as discusses STL implementations and how to use them. The course has toy exercises as well as a project to design and implement a large representative data structure. This course can be completed in around two weeks time. We also suggest you to go through our blog on Art of Programming: Data Structures to gain an insight into why it makes sense to master data structures.
This course assumes a sufficient background in the 'C++' programming language and familiarity with Linux as the online laboratory is based on it. If you have experience in working with any other UNIX system, then it is fine too. We recommend that you take up the courses User Level Linux as well as Programming With C++ to gain sufficient background before taking up this course in case you are not very comfortable with the pre-requisites.
This course is at beginners level. Most of the topics are treated with programming point of view. Focus is to provide an insight into how to choose the right data structure for your programming problems. Complexity of data structures are discussed in sufficient detail and examples are provided to help you make trade-offs. However, detailed theory behind individual data structures is not discussed. There are excellent text books available which deal with detailed theory and proofs such as "Introduction to Algorithms by Thomas H. Cormen et al.".
The first section introduces data-structures, what is meant by them, what are the common operations, how algorithms can be designed around them and how to choose a data-structure for a particular algorithm. The next section focuses on some introductory math, which is needed to understand data-structures and analyze them.
Subsequent sections pick up one data-structure and delve deeper around this. We take the following approach to introduce various data structures: introduction, efficient operations on it, implementation in C++, STL implementation if any and common pitfalls. Specific issues/choices if any for a particular data-structure are also dealt with. Shown below is a detailed table of content for this course.
The objective of this course as outlined above is to help you understand common data structures and how to write programs around them. After finishing this course, you will be able to pick the right data structure or design new data structure using the basic ones for your programming problems. You will also be able to perform analysis and make appropriate trade-offs.