I hear all the time on HN about people succeeding in programming without a CS degree, but that's only recently become a reality for me. I realized I wanted to major in CS in my sophomore year, and I've been taking CS courses since then. Unfortunately, because of the lack of course offerings and prerequisites, the only courses available have been Introduction to Programming and CS 1 (and CS2 this semester). Because of this, finishing a major in CS in by the end of my senior year will be almost, if not entirely, impossible (not from a difficulty standpoint--the classes just won't be offered), which is when my four-year debate full ride runs out.
Should I stay an extra year/semester and get a major in CS, or get a minor in CS instead?
If my fifth year was free as well, should I finish the major?
If your fifth year at school really is free, and you're enjoying the college experience, then there's no harm in spending another year there. You will learn a few things in your upper-level CS classes that you'll use at some point in your programming career. But there's nothing you can learn in any of your CS classes that you can't learn on your own outside of the classroom. The only real value of a CS education at a brick-and-motor university is a) being immersed in a community of academic pursuit and discourse, and b) the alumni connections. And you don't get much value from those things just by attending classes -- you have to go out and pursue those relationships with your professors, classmates, and alumni.