Books



NEW:
Data Structures and Algorithm Analysis in C++ (4th edition)
uses C++11.
More information,
Source code, and
Errata list.
The fourth edition incorporates bug fixes, and many parts of the book have undergone revision to increase the clarity of presentation. In addition,
 Chapter 4 includes implementation of the AVL tree deletion algorithm–a topic often requested by readers.
 Chapter 5 has been extensively revised and enlarged and now contains material on two newer algorithms: cuckoo hashing and hopscotch hashing. Additionally, a new section on universal hashing has been added. Also new is a brief discussion of the unordered_set and unordered_map class templates introduced in C++11.
 Chapter 6 is mostly unchanged; however, the implementation of the binary heap makes use of move operations that were introduced in C++11.
 Chapter 7 now contains material on radix sort, and a new section on lowerbound proofs has been added. Sorting code makes use of move operations that were introduced in C++11.
 Chapter 8 uses the new union/find analysis by Seidel and Sharir and shows the O( M α(M,N) ) bound instead of the weaker O( Mlog∗ N ) bound in prior editions.
 Chapter 12 adds material on suffix trees and suffix arrays, including the lineartime suffix array construction algorithm by Karkkainen and Sanders (with implementation). The sections covering deterministic skip lists and AAtrees have been removed.
 Throughout the text, the code has been updated to use C++11. Notably, this means use of the new C++11 features, including the auto keyword, the range for loop, move construction and assignment, and uniform initialization.


Course Information
Previous Courses With Web Pages
COP3530 Data Structures (C++ only prior to 2001, except for 1996),
Summer 2014,
Spring 2013,
Spring 2012,
Summer 2010,
Summer 2009,
Spring 2009,
Fall 2008,
Summer 2008,
Summer 2007,
Spring 2007,
Fall 2006,
Summer 2006,
Fall 2005,
Summer 2005,
Spring 2005,
Fall 2004,
Summer 2004,
Fall 2003,
Fall 2002,
Spring 2002,
Fall 2001,
Fall 2000,
Fall 1999,
Fall 1998,
Summer 1998,
Fall 1997,
Summer 1997

COP3530 Data
Structures (Java 1.0), Summer 1996.
A 1997 SIGCSE Conference paper (PDF)
describes the course

COP4534 Algorithm Techniques
Fall 2014,
Fall 2013

COP4338 Programming III (Java, C++, C)
Summer 2011 (no C++),
Summer 2009,
Spring 2009,
Summer 2008,
Summer 2007,
Spring 2007,
Summer 2006,
Spring 2006,
Fall 2005,
Summer (C) 2005,
Summer (C) 2004,
Summer (B) 2003,
Fall 2002,
Spring 2002,
Summer (B) 2002

COP3804 Intermediate Java Programming
Fall 2009,
Fall 2008

COP3338 Programming III (Java)
Fall 2000

COP3337
Programming II (Prior to 2000, known as Intermediate Programming, taught in C++)
Fall 2009,
Spring 2009,
Spring 2007,
Fall 2006,
Fall 1999,
Summer 1999,
Spring 1997

COP2210
Introduction to Programming (C++), Fall 1998 
CGS2423 C for Engineers, Spring 1997 
COT6405 Analysis of Algorithms, Spring 1997 
COT5407 Introduction to Algorithms
Fall 2011
Fall 2010

COT6936 Topics in Algorithms, Fall 1998 (cancelled due to low enrollment) 
