How to make transition from trade school to graduate degree? This question is asking how to bridge the gap between knowing programming to research. 

I'm an undergraduate in a decent BA computer science program at a college with a decent-to-low reputation. Most of the professors here aren't PhDs. I can't transfer to another college, because a close relative of mine is at a prominent member of this college's staff and all eyes are on me. I've taken data structures, architecture, etc but it's much more of a trade school than a rigorous theoretical foundation.

After reading a few advanced data structure books, I've become very interested in certain theoretical computer science topics. If I want to do research after undergrad, how should I go about it? I'm a pretty motivated person and I am good at self studying. Should I try to create interesting projects? work on open-source? work at a prestigious company?

Thanks for any advice.
A common piece of advice for situations like this is to apply to master's programs.

This will give you time to catch up on any background that you may be lacking and give you the chance to become more competitive for PhD programs by getting letters of rec, good grades, and research experience.