Expander graphs and their applications