This is what I’ve always maintained, as have many others, including Malcom Gladwell. What is important to me isn’t likely to be important to the next person. I personally look at class size, facilities, net price, top ten employers on LinkedIn, and two year salary data from College Scorecard (yes it’s limited to students who received federally subsidized loans and/or grants, but it represents the vast majority of students and isn’t self reported). Sprinkle in intangibles like location, support for personal hobbies, etc. and that paints a pretty good picture of what’s I care about. No ranking system captures that.
This depends on the program. Most strong CS and engineering curricula are pretty rigid. My son’s ME curricula for example had zero free electives. CS at his alma mater has four free, out of 180 hours. You can’t just dump required classes and replace them with graduate classes.
This is a bit of a mixed bag. It’s more about how their culture prioritizes seeking advanced degrees versus entering industry directly. Plus, a couple of the examples are schools with very limited, unfocused curricula. HMC for example only offers General Engineering. Students who want deeper experience in any field have to go to grad school.
Varies widely by college. I suspect many private colleges are very flexible. My son had a rigid requirement of just the freshman writing seminar. And there are some broad distributional requirements. The CS requirements were 2 each in systems, theory, and applications. So then there is wide latitude in what you can take. The pre reqs are merely suggestions. You can go talk to the prof and get into any course. It is your problem if you can’t manage the course after that. I thought large private schools with PhD programs let the kids take whatever they want within some constraints. My son will have 8 or so grad courses by the time he finishes undergrad in either math or cs. This is in addition to 4 semesters of either independent research with a prof or senior thesis work. In his year there are probably 15 - 20 kids out of a declared class of 200 CS kids that would have taken a variable number of grad level CS classes by the time they graduate. This is not very unusual.
Oh, the rankings are out for all the young whipper-snappers! Here’s my 2 cents of priceless wisdom. Throw them out the window! Find an affordable school that you’re happy going to, and graduate with some proficiency in a solid programming language. CS is ridiculously employable. Don’t pay attention to “high salary” stats schools love to boast about. It’s relative. A “higher salary” in Silicon Valley will buy you a 2 bedroom apartment if you’re lucky. A “Lower salary” in Dallas, TX will buy you a 3 bedroom house with a front lawn and a park playground for the kids.
In short: there are kids who enjoy learning and expanding their knowledge, and “digging deep”. Kids who are not merely looking to learn a programming language and get a job (and absolutely nothing wrong with that), for whom the quality of the CS program will matter.
Well said. Our in-laws referred to our son as a “programmer” once. He had a long “conversation” with them. Some CS grads are involved in very deep endeavors that actually require much of the math that many “programmers” loathe
Stanford doesn’t have a strict a distinction between grad and undergrad as some schools. Most (maybe all) CS majors are required to take multiple depth classes at the 200 level. 200 level is considered lower level graduate course or high level undergrad course. ~40% of engineering school majors (CS is in engineering school) do a co-terminal master’s degree in addition to their bachelor’s degree, which requires 45 extra credits beyond bachelor’s degree of mostly 200 level courses in their master’s field. So in a typical 200 level graduate class, you’ll see many undergrads, co-terms, graduate students… often a lot of remote professionals as well.
This can be seen as either an advantage or a disadvantage, depending on the student. Some students welcome the opportunity for taking a lot of grad classes and the opportunity to easily do a co-terminal master’s degree in addition to bachelor’s. Other students would prefer that the college focus almost entirely on undergrads and teaching undergrads, with relatively few resources devoted to grad students and research, and don’t care about the how easy it is for undergrads to take grad courses or obtain grad degrees in addition to bachelor’s. Obviously rankings do not include this type of factor.
My d was a double major in math and physics at Georgetown. She taught herself python for the physics, but had taken just one basic computer science class in college (and none in high school). After she had interviewed for the summer internship after her junior year in college (which eventually led to her post-grad job as a software engineer in cybersecurity), the interviewer told her she was relatively quite weak in coding knowledge but had a deep understanding of math and that the second was much rarer than the former. He then said “it is much easier to teach coding to someone with a deep understanding of math than to teach a deep understanding of math to an excellent coder.”
Yes, many software jobs only need an adequate level of coding knowledge (which can be greatly improved with practice) but require deep expertise in other areas. Your daughter’s job is a great example, and kudos to her!
Similarly, there are other software jobs that require a deep expertise of software design (and sometimes hardware) that go far beyond coding skills. Think about how Netflix can provide high quality streaming to millions of viewers simultaneously, high frequency trading systems that can send thousands of orders to the stock markets every second, or how Google can retrieve results within fractions of a second when there are nearly 2 billion websites out there.
In summary: many software jobs don’t really require a CS major and some will be harder to get without one.
All CS programs (at least the reputable ones) teach the same basics, although they may be taught at different levels that are more suitable to the students they have (colleges that ensure higher minimum rigor in CS and overall tend to be able to teach their students at a higher level, not surprisingly, even for the basics). IMO, what primarily distinguishes one program from another, however, is in more advanced, specialized courses and research opportunities in areas of students’ interests, and paths that can lead to them. But are those courses and research opportunities necessay for all CS students? Of course not. What’s important to one student may not be so for another student. What makes CS so different (perhaps even unique?) is that some of its basic skills are easily accessible (can even be easily self taught) without significant hurdles. Yet, some of its highly advanced fields require high levels of minimum preparation (e.g. a PhD in AI isn’t just for someone who wants to pursue a career in academia).
For jobs, knowledge of CS is more demonstrable than in many other subjects, and is more possible to self-educate than in many other subjects, so it is not that unusual to go into computing with a degree in something else or no degree at all, but with self-education and proven knowledge and skill in the relevant areas of CS.
However, most people would learn CS more effectively by studying it in college as a CS major.