Trong một số tiết đầu, học viên sẽ được cung cấp một số kiến thức toán học giúp cho viêc tính toán độ phức tạp của thuật toán. Tiếp theo đó là các chương về các phương pháp khác nhau: như phương pháp tham lam, phương pháp quy hoạch động, phương pháp chia để trị, phương pháp nhánh – cận, phương pháp xác suất. Đối với mỗi phương pháp, học viên sẽ được học thuật toán sinh, cách phân tích nên dùng phương pháp nào với dạng bài toán nào, cách chứng minh tính đúng đắn và cách đánh giá độ phức tạp của thuật toán. Học viên cũng sẽ học cách so sánh các phương pháp khác nhau về mặt ý tưởng cũng như về tính hiệu quả. Các bài toán được xét đến là các bài toán quan trọng và có nhiều ứng dụng như bài toán sắp xếp một dãy số, sắp xếp lịch làm việc, các bài toán trong mạng giao thông, bài toán người đưa hàng, một số bài toán trong mật mã, vv.
Tài liệu bắt buộc
- Cormen T.H., Leiserson C.E., Rivest R.L. (2009), Introduction to algorithms, 3rd Edition, The MIT Press.
- Knuth D.E. (2011), The Art of Computer Programming, Volumes 1-4A, Addison-Wesley.
Tài liệu tham khảo thêm
- Basu S.K. (2013), Design methods and analysis of algorithms, second edition, PHI Learning Private Limited, Delhi.
- Muniswamy V.V. (2009), Design And Analysis Of Algorithms, I. K. International Pvt Ltd.
- Wilkinson B., Allen M. (1999), Parallel Programming, Prentice Hall.