The efforts made by Code.org and many others for students to learn computer science seem to be working as there has been an “Explosion of Student Interest in Computer Science.” There is no doubt that we need more people with a computer science education as the demand for software engineers continues to vastly outpace the supply. But as you can read in these Reddit comments and based on my personal experience, computer science is very hard and attrition rates are often high. There were computer science classes I took at Rice University which took more time, effort, and grit than all the other classes that I was taking at that time combined.
Due to my early interest in computers, I declared CS as my major 10 days into college and never looked back. While I came in with a strong interest and a minor head-start in programming i.e. knowing what basic data structures, functions, and loops were, I quickly learned that computer science isn’t programming and that I would have my fair share of struggles as I went through this challenging discipline.
Over the next few years, I absorbed a lot of knowledge and wisdom from my professors and mentors. I took a lot of computer science classes and TA’ed for 2 of them. I had very productive and fun summers as I did research in collision avoidance for UAVs for my first summer and interned at Google and Facebook for my following summers. During my senior year, I became the President of the Rice Computer Science Club and through my visibility I got to mentor lots of my peers at Rice. I also got to have deep conversations with hundreds of students both at Rice and other universities about their careers and aspirations. As I leave with a birds-eye view of an undergraduate CS education at a top university, I feel obligated to pass on my advice in the form of this writing on how to navigate and succeed in obtaining a CS education.