Data Structure & Algorithm
Course Notes to
DATA STRUCTURE AND ALGORITHM
OBJECTIVE
Data Structures and Algorithms are fundamental to programming and to understanding computation. The purpose of this module is to provide students with a coherent introduction to techniques for using data structures and some basic algorithms, and with the tools for applying these techniques to computational problems. Teaching and learning methods include lectures and reading material which describe techniques for analyzing algorithms and applications of data structures, and a problem sheet which gives students an opportunity to practice problem solving.
PREREQUISITES
Prrogramming language C/C++ or Java
COURSE OUTLINE
Introduction to Data Structures and Analysis of Algorithms
- Algorithm, Elementary/Abstract data types
- Flowchart
- Trees
- Dynamic Programming
Bài giảng Khóa học
CẤU TRÚC DỮ LIỆU VÀ THUẬT GIẢI
MỤC ĐÍCH
Môn học cấu trúc dữ liệu và giải thuật cung cấp cho sinh viên một khối lượng lớn các kiến thức cơ bản về các kiểu dữ liệu trừu tượng và các phép toán trên kiểu dữ liệu đó. Khóa học này tập trung vào việc nghiên cứu các kiểu dữ liệu có cấu trúc có kích thước không đổi hoặc thay đổi trong ngôn ngữ lập trình. Ngoài ra còn giới thiệu các giải thuật chung quanh các cấu trúc dữ liệu này như cách tổ chức, thực hiện các phép toán tìm kiếm, sắp xếp thứ tự nội, sắp xếp thứ tự ngoại.
ĐIỀU KIỆN
Kỹ thuật lập trình trên ngôn ngữ C/C++ hoặc Java
NỘI DUNG MÔN HỌC
Giới thiệu về Cấu trúc dữ liệu và Thuật giải
- Thuật giải, Kiểu dữ liệu cơ bản, trìu tượng
- Lưu đồ
- Cây
- Qui hoạch động
Graph Algorithms
- Undirected Graph
- Depth-first search
- Breadth-First Search
- Directed Acyclic Graph. Topological Sort
- Shorted path. Dijkstra's algorithm and Floyd's algorithm
- Connected components
- Minimum spanning tree: Kruskal's algorithm, Prim's algorithm
Thuật giải đồ thị
- Đồ thị không hướng
- Tìm kiếm theo chiều sâu
- Tìm kiếm theo chiều rộng
- Đồ thị định hướng không có chu trình. Sắp xếp tôpô
- Đường đi ngắn nhất. Thuật toán Dijkstra và Thuật toán Floyd
- Các đỉnh liên thông
- Cây bao chùm ngắn nhất: Thuật toán Kruskal, Thuật toán Prim
GRADING
A combination of discussions and short tests (30%),
Project Presentation (70%).
Project defense at 13:00 Saturday, 13/04/2013 in room K203.
RECOMMENDED TEXTS
ĐÁNH GIÁ
Các bài kiểm tra ngắn (30%),
Bảo vệ Đồ án(70%).
Điểm bảo về đề tài xem tại đây
Bảo vệ 13:00 thứ Bảy ngày 13/4/2013 tại K203.
TÀI LIỆU THAM KHẢO
Required
- Algorithm in C, Third Edition by Robert Sedgewick, Addison-Wesley, 1998
- Algorithms, 4th Edition by Robert Sedgewick and Kevin Wayne, 2011
- Giải thuật và lập trình, Lê Minh Hoàng, Đại Học Sư Phạm, 2002
- Cấu trúc dữ liệu và giải thuật, Đinh Mạnh Tường.
Recommended
- Data Structures and Algorithm Analysis in Java 2nd (or 3rd) Edition, by Mark Alan Weiss, Addison-Wesley.
- Data structures and algorithms with object oriented design patterns in Java by Bruno Press, Wiley, 1999.
- Data Structures and Algorithm Analysis by Clifford Shaffer, Prentice-Hall, 1996.
- This book has good coverage of data structures and algorithm analysis in C++. It has excellent descriptions of a number of data structures.
- Data Structures, Algorithms, and Applications in Java by Sartaj Sahni, McGraw-Hill, 1998.
- Data Structures and Algorithms by Alfred Aho, John Hopcroft, and Jeffrey Ullman, Addison-Wesley, 1983.
- This is one of the all-time classics, written in Pascal.
- Fundamentals of Data Structures in C++ by Ellis Horowitz, Sartaj Sahni, and Dinesh Mehta, 2006.
- Update of another classic.
- Abstract Data Types by Nell Dale and Henry Walker, D.C. Heath and Company, 1996.
- A high-level view of data structures and algorithms, with no programming language specified. A very worthwhile and modern text with an alternative viewpoint.
INTERESTING LINKS
CÁC TRANG WEB HỮU ÍCH
Data Structure and Algorithm
- The NIST dictionary of algorithms and data structures.
- FreeTechBooks' list of on-line data structures and algorithm books.
- Softpanorama’s old but wide ranging link page for data structures and algorithms.
- Algosort’s link page to algorithm pages.
- The Standard Template Library (STL) contains implementations of many of the algorithms and data structures studied in class (e.g., merging, quicksort, heaps, and red-black trees), as well as several more primitive, and extremely useful data structures. Silicon Graphics' STL page
- LEDA is a library of data types and algorithms for combinatorial computing, implemented in C++.
- Demo of sorting algorithms
C and C++
Java
- DrJava:
- Eclipse:
- Operator Precedence Table
- Testers: How to use the "testers" we supply for some labs and homework
- API Java 1.5 Documentation
- Books/Docs (free, online)
- Coding Conventions
- File I/O Tutorial
- Generics Tutorial
- Utilities