Yeah, you’ll likely be surprised by just how much theory there is when you hit upper division. I took theory of computation in fall quarter and am finishing up algorithms now. There was absolutely no coding in either of them, and I’ve had more than one non-CS friend not realize that I was doing CS homework when they saw me doing those assignments. They thought I was doing some abstract math stuff…which I guess isn’t too far off. I mean, my last algorithms homework is almost all proofs, and the rest is coming up with some efficient algorithm for a situation related to those proofs.
If it makes you feel any better on “failing miserably” with your code, I’m in operating systems this quarter and me and my partner couldn’t get our last project completely debugged in time for the due date. This despite starting the project the day it was assigned. For reference, I’m a junior/soon to be senior, and my partner is a graduating senior who’s had a job lined up since fall. Don’t get discouraged if a program just isn’t doing what you wanted it to while you’re writing it; that happens most of the time. Remember: Computers always do what you tell them to do, not always what you want them to do. And figuring out how to more accurately tell them what you want them to do takes practice.
On a final note, I came into college with no programming experience, and here I am. That’s not an issue at all.