techniques, algorithms, data structures, and software