@AustenNut, I agree that looking at a course like Algorithms provides many useful insights about a CS program.
Since UMD is being used as an example in this thread, let’s take a look at their algorithms course vs a similarly named course at another school that’s not perceived to have a particularly strong CS program (I am looking at the course catalog of a specific school but don’t want to name it for obvious reasons). Let’s call that school “ABC”.
First: the course at ABC requires a lower level CS and a Math course as prerequisites. It doesn’t appear either of these can be skipped via AP credit or by testing out, so a student will likely not be able to take the algorithms course until at least sophomore year. On the other hand, UMD’s prereq statement is:
Prerequisites: Each student is expected to know the basic concepts of programming (e.g. loops, pointers, recursion), discrete mathematics (proof by induction, sets), simple data structures (lists, stacks, queues, trees), and calculus (logarithms, differentiation, integration).
So no specific course is required - if you’re up for it, you can take the algos course in your first semester if you like. Why is this relevant? Because it allows advanced students to accelerate their progress and take graduate level classes
Second: that prereq CS course at ABC is described as “A second course in programming for students majoring in computer science.”. UMD does not require CS majors to take a programming course - it simply assumes incoming students already know how to program. They could take a lower level programming course if they wish, but they don’t have to. Why is this distinction important? It indicates a higher strength of cohort, which may be important for those seeking a certain academic peer quality.
Third: I won’t go into detail here because you have to understand CS to appreciate this, but the course goes into a lot more depth and theory at UMD vs ABC. One line from the UMD course syllabus caught my attention: “Part of your grade will be based not only on correctness, but also on the simplicity, clarity, and elegance of your solutions.”. Why is this important? It emphasizes understanding the foundational concepts and being able to articulate them in your solutions vs just being able to memorize certain algorithmic implementations. Does this matter? It depends on what you’re looking to get out of your education.