Communication is far more important than ability to program. Otherwise you'll consistently program the wrong things. A person that interviews as a capable programmer with excellent communication skills wins the job over the expert programmer with mediocre communication skills in most cases.
I can think of reasons in my life how this has been helpful, especially when communicating with others (shared cultural knowledge, comparisons to enhance concept discussion, etc) but I think one can be a competent programmer without knowing a lick of history.
The timid programmer is never happy doing work he can't explain or control the direction of - and this requires public speaking skills.
I can't tell you how much a sound understanding of economics helps in programming - the allocation of scarce resources indeed. It's very, very, very useful to understand how this works. Not only that, but frankly you can't make a living in a capitalist economy without understanding how it works - you'll get taken for a ride if you don't.
Same kind of thing as economics - biological systems have many lessons for computer science, especially in the areas of AI, fuzzy logic, etc. Anyone who's done a brute force algorithm in parallel understands how a bacterial culture works. But this is one where a good programming might not know this and it won't negatively affect them.
Keep in mind that university isn't just to get a degree and kick you out into the world.
Also, keep in mind, that most programming jobs involve something other than the business of software development. You might end up coding software for that molecular lab and understanding biology suddenly becomes pertinant.
These basic courses give you a grounding, or foundation, on which you can move around in different jobs and understand how things work. A lot of it comes back to communication - these diverse fields represent different processes, and having knowledge allows you to understand and give analogies that you might otherwise struggle with.