Hi, I’m a father of a recent graduate with a BS in Computer Science and a BS Applied Math. Instead of answering your question directly, I’ll tell you our story with our first attempt at finding the perfect school. (I’ve now another in school, different major and soon to be a 3rd, yet another major). I’ve learned much since that first naive attempt 5 years ago.
My son, had stats very similar to what you listed, plus a high 1400s SAT score. Very rigorous transcript at a very very good PA public school. He too wanted to get into the best CS school he could and did what most do, look at the rankings. We visited many (he didn’t look at the biggies MIT, CMU, Stanford, or Cal Berk) because he didn’t believe they were worth the cost difference. He got that info from CC and Reddit and has always been a good one on not trying to spend all of our money. As a side note, he didn’t take any refresher/test prep courses either because he felt that they kind of un-levealed the playing field and was almost akin to cheating, he’s weird that way.
So he put together a list of the next level
Here is what he came up with:
High Reach: Ga Tech, UMich
Reach: UIUC
High Match: UMD, McGill
Safety: RIT and Taylor University
He applied EA to all of them. Was waitlisted by Ga Tech, and accepted everywhere else. He was eventually accepted off the waitlist at Ga Tech. So was accepted everywhere he applied.
He was offered a spot in the Honors College at UMD along with a Presidential Scholarship. McGill, RIT, and Taylor also offered some money (RIT and Taylor quite a bit, McGill not so much, but the lower tuition cost in Canada offset that quite a bit.)
Side note on RIT. If you can handle living on a commuter looking campus, the program impressed me. I felt as a hiring manager I’d have no problem recruiting out of there and while not as sexy an option as the others listed, if I were in my son’s shoes I’d have given it more thought.
He chose UMD and when he got there found out pretty quickly that at the undergrad level there really isn’t much difference between the programs at schools. He also found out that about half the class at UMD was also accepted to the honors college and a couple other facts that made him dislike the whole process.
We are originally from Indiana, but moved to PA when he was a Junior in HS. However, many of his friends went to Purdue and really loved it. He didn’t consider it because he read somewhere that Purdue’s CS is more hardware based. Again after starting, he realized that was really non-material at the undergrad level. Many times after starting at UMD he had stated he wished he would have went to Purdue. I also believe he didn’t want to go there because I went there, but he never really said that.
In the heart of COVID-19 pandemic he graduated with a decent GPA somewhere north of a 3.6 and had two job offers to choose from. Both making quite a bit of money and his classmates/apartment mates with similar majors (6 in the house in total) all secured similar jobs. So now that he looks back at his disdain for UMD he’s a little softer towards it and actually occasionally speaks fondly of it.
The moral of the story for CS and other related technical majors like engineering. Go to an established school, state flagship, whatever/where ever you feel comfortable. If you like taking classes from researchers (my son really didn’t) then pick a big research school. If you like taking classes from teachers, pick a smaller school. I’d look at the job fair scene. I’d look to see if there is a specific CS one. But, at the end of the day, I believe like others have said, you learn more when you first start the job (and internships) in CS then what you learn in school. School is kind of a barrier you have to show you can get through. I also don’t think that there is a strong material difference between any Undergraduate program in “chose your” ranking system in CS between #1-#100. Sure if getting a PhD is desired, maybe one of the big 4 I listed might give you a slight advantage, but that is about it.
I also believe you should maybe go to school where you maybe want to live. Many internships at UMD where in the beltway. Internships often lead to full time jobs and you’ll find many of the class will stay in the area of the school after graduation. So if your son likes the NE, look for schools in the NE. If he likes the West Coast, look at the West Coast, etc.