ADVANCED DATA STRUCTURES LABORATORY


OBJECTIVES:

  • To learn to implement iterative and recursive algorithms.
  • To learn to design and implement algorithms using hill climbing and dynamic programming techniques.

  • To learn to implement shared and concurrent objects.

  • To learn to implement concurrent data structures. 

LAB EXERCISES:

Each student has to work individually on assigned lab exercises. Lab sessions could be scheduled as one contiguous four-hour session per week or two two-hour sessions per week. There will be about 15 exercises in a semester. It is recommended that all implementations are carried out in Java. If C or C++ has to be used, then the threads library will be required for concurrency.

Exercises should be designed to cover the following topics: 


1.      Implementation of graph search algorithms.
2.      Implementation and application of network flow and linear programming problems.
3.      Implementation of algorithms using the hill climbing and dynamic programming design techniques.
4.      Implementation of recursive backtracking algorithms.
5.      Implementation of randomized algorithms.
6.      Implementation of various locking and synchronization mechanisms for concurrent linked lists, concurrent queues, and concurrent stacks.
7.      Developing applications involving concurrency. 

OUTCOMES:
 

Upon completion of the course, the students will be able to
  • Design and apply iterative and recursive algorithms. 
  • Design and implement algorithms using the hill climbing and dynamic programming and recursive backtracking techniques. 
  • Design and implement optimization algorithms for specific applications. 
  • Design and implement randomized algorithms. 
  • Design appropriate shared objects and concurrent objects for applications.
  • Implement and apply concurrent linked lists, stacks, and queues. 
REFERENCES:
  1. Jeff Edmonds, “How to Think about Algorithms”, Cambridge University Press, 2008. 
  2. M. Herlihy and N. Shavit, “The Art of Multiprocessor Programming”, Morgan Kaufmann,  2008.
  3. Steven S. Skiena, “The Algorithm Design Manual”, Springer, 2008.
  4. Peter Brass, “Advanced Data Structures”, Cambridge University Press, 2008.
  5. S. Dasgupta, C. H. Papadimitriou, and U. V. Vazirani, “Algorithms” , McGrawHill, 2008.
  6. J. Kleinberg and E. Tardos, "Algorithm Design“, Pearson Education, 2006.
  7. T. H. Cormen, C.2 E. Leiserson, R. L. Rivest and C. Stein, “Introduction to Algorithms“,  PHI Learning Private Limited, 2012.
  8. Rajeev Motwani and Prabhakar Raghavan, “Randomized Algorithms”, Cambridge  University Press, 1995.
  9. A.V. Aho, J. E. Hopcroft, and J. D. Ullman, “The Design and Analysis of Computer  Algorithms”, Addison-Wesley, 1975.
  10. A.V. Aho, J. E. Hopcroft, and J. D. Ullman,”Data Structures and Algorithms”,  Pearson,2006.


CP7111  Advanced Data Structures Laboratory material is available from the following link
.

Comments

  1. Hi.. Need code for the following scenario.. Create a class with the following members:
    Booknumber,title,author,publisher,price
    Use constructor for initializing the data members for any given number of books.
    Implement an avl tree to store book type data and perform the following operations:
    Insert the book based on booknumber.
    For a given book number retrieve the details of the book.
    List the book number using in order traversal.

    ReplyDelete

Post a Comment

Popular posts from this blog

Pentium microprocessors

Multilevel Organization of Cache Memory