Thinking Critically About And Researching Algorithms