Algorithm, design patterns on problem solving are fundamental skill as a programmer. You might use them on your daily work or life. But it is good to understand and brush up your skill for future. Or at least tease your brain.
Below are some reference books that focus on these skill set: