Theoretical models for practical problems : dynamic data structures, hierarchical clustering, and modern parallel computing