I think at many schools, how much you know about programming depends on the electives you choose to take. I could have taken many easy classes and had a much easier time going through school (probably had a higher GPA too). But, you need to think why you are in school in the first place. Are you there to get a slip of paper stating that you spent 4 years or so visiting classrooms occasionally throughout the afternoon/morning? Or, do you want to actually learn something of substance that you can use in your personal/professional development.
I like the first answer on the SO post, developing a website or writing a game will definitely make you a much better coder. When you build something from the ground up by yourself, you learn a lot more than just coding. You learn how to break out of deep troughs of despair. You learn how to work more than 8 hours at a time. You learn why its important to add efficiencies to your work habits. These are a few of the things you learn. But, these are the things that separate coders (the subset) from people with degrees (the superset).
I like the first answer on the SO post, developing a website or writing a game will definitely make you a much better coder. When you build something from the ground up by yourself, you learn a lot more than just coding. You learn how to break out of deep troughs of despair. You learn how to work more than 8 hours at a time. You learn why its important to add efficiencies to your work habits. These are a few of the things you learn. But, these are the things that separate coders (the subset) from people with degrees (the superset).