7 ms·
I looked at your description, and compared the requirements myself. I'm even more convinced this is for publicity (or other political reasons). There's nothing
by learc83 8y ago
I looked at your description, and compared the requirements myself.
I'm even more convinced this is for publicity (or other political reasons). There's nothing there that couldn't have been done by very slightly altering the CS requirements.
If CMU had done that instead, students would have the ability to take more AI classes, but they wouldn't be at a disadvantage if they decide (or need) to work in another field of CS.
- fixermark 8y agoCMU doesn't generally craft their degrees for industry-marketability; even the CS degree operates under somewhat of an assumption that they're training you to be a CS grad student or professor, not a software engineer. You can find your way out of that program without ever having touched C++, for example. I think you're greatly underestimating how much different the CS curriculum would become if they tore out functional programming above 15-150, OS, and Networking. Consider the flipside: if they bent the CS degree instead of introducing a new AI degree, could higher-learning institutions continue to trust that a CMU CS undergrad had a solid foundation in functional programming, discrete mathematics, and systems theory?
- learc83 8y ago>CMU doesn't generally craft their degrees for industry-marketability; I don't think a CS degree should be a trade program, but avoiding actively harming students job prospects by adding a few more electives isn't quite the same things as crafting their degrees for industry-marketability. >they tore out functional programming above 15-150 I'm looking at the requirements for the BS in CS right now. I don't see any function programming requirements above 15-150. >OS, and Networking It looks like neither is required right now. Here's the relevant section. Choose 1 15-410: Operating System Design and Implementation 15-411: Compiler Design 15-418: Parallel Computer Architecture and Programming 15-440: Distributed Systems 15-441: Computer Networks Others as designated by the CS Undergraduate Program > if they bent the CS degree instead of introducing a new AI degree, could higher-learning institutions continue to trust that a CMU CS undergrad had a solid foundation in functional programming, discrete mathematics, and systems theory? Looks like the functional programming, and discrete math requirements are the same. Systems is an overloaded word, so I'm going to assume you mean software systems, since that requirement is what is removed. The systems requirement is already just chose one from above list. I don't think taking 1 network class means you have a solid foundation of systems theory.
- fixermark 8y agoI stand corrected: since I took the curriculum, functional programming requirements seem to have been substituted with an option to do higher-level systems-engineering electives (such as 15-414). And the systems elective has been expanded to include parallel and distributed systems. The key difference on the deep-theory side is that CS and AI appear to swap out deep-diving into discrete math for deep-diving into statistics and statistical modeling. I'd consider those different enough to warrant separate degree tracks, personally. (Your opinion of networking is noted but I do not share it, being somewhat familiar with what that course asks of students. It's every bit as preparatory as its sibling 15-410 class ;) ).
- learc83 8y ago>The key difference on the deep-theory side is that CS and AI appear to swap out deep-diving into discrete math for deep-diving into statistics and statistical modeling. I'd consider those different enough to warrant separate degree tracks, personally. What discrete math classes were removed from the AI degree? >(Your opinion of networking is noted but I do not share it, being somewhat familiar with what that course asks of students. It's every bit as preparatory as its sibling 15-410 class ;) ). I looked over the syllabus and assignments for a section of that class. It looks like a bog standard networking class (bog standard for top tier schools that is). It's an elective. You can take an OS class, a compilers class, or a networking class. I don't think there is some intersection of knowledge/skill between those 3 classes, the absence of which would give higher-learning institutions pause. My institution required that you take both an OS and a networking class before being admitted for graduate study. It's one thing if they require OS, and networking, and compilers. That they don't do that says to me that they don't consider them critical classes, since any given graduate could be missing any 2 of them.
- dgacmu 8y agoWe actually have a set of criteria for what makes a qualifying systems elective. As with many things at CMU, we don't generally care what details you learn. We care greatly what higher-level concepts you get exposed to, and the systems courses are the place we try to focus on the development of abstractions; modularity; isolation; reasoning about failures and complexity; integrating security concerns. They're also the courses where students are required to work on projects large enough to blow out their cache -- multi-week or month projects that force you to think reasonably about how you divide your design into pieces so that you can coherently reason about the ensemble. We're pretty much equally happy if you hit layering in the network class or thinking about the filesystem and kernel VFS layers in the OS class - or the modular structure of a modern compiler. Tackling the idea of reliability through replication in distributed systems (via a lot of different mechanisms, but with a decent dose of Paxos), or via the Reliable Storage module in 15-410, or in DB. Getting additional hardware architecture exposure through compilers or the parallel class. Thinking about communication using a fast local interconnect (parallel), the internet (networks & DS), or IPC (OS). Compilers can be more or less of a systems course depending on who teaches it, but it's generally got such a strong architectural component that it flies. It's much like programming languages. We don't care much if you graduate knowing a particular language -- any CMU CS graduate should be able to pick up a new language in short order. We care greatly that you've been exposed to a mix of programming styles and thinking -- imperative, functional, and logical or declarative, and can successfully use those tools to reason about code, program structure, algorithms, and data structures. So no, we absolutely don't consider it critical that you take any specific systems course, but we do consider it critical -- for the CS major -- that you be exposed to the broad set of systems concepts we teach in them. That's why we start them in 15-213 and then reinforce them with one upper-division systems elective requirement.
- dgacmu 8y agoAs a CMU professor, in case it wasn't clear: We, in general, felt fairly strongly that we did not want to radically alter the meaning of a CMU CS degree, i.e., that our B.S. in C.S. students do come out with the degree having hit some depth in systems, in PL, in algo and theory. We also felt fairly strongly that supporting students who wanted something different from their education, which still falls under the broad CS umbrella but is different in some important ways -- was important. These things are surprisingly hard to juggle. Eight semesters, four courses per semester, juggling cross-university requirements, some amount of personal electives and fun, and an intensive set of major courses, doesn't actually leave much wiggle room, especially when you include the prerequisite dependency graph of those courses. Hence, it's a different major, because it reflects a quite different set of skills that {employers, grad schools, whatever} can count on the graduate knowing. (There's also value in providing a roadmap for sequencing these things, again because of the prerequisite chains, but I concur that that alone isn't a reason for a major.) And yes, of course it's all a continuum. We call AI a separate major, alongside things like HCI and computational biology. We don't have an "operating systems" major. If you like systems a lot, you still have to take all the normal algo/PL/etc. breadth requirements. It's all a judgement call. The feeling here is that AI/ML are starting to contain a sufficiently different set of core skills that it was worth breaking them out into their own major instead of just saying "eh, go take some electives, and try to fit in all of your interests while _still_ taking all the other CS classes." Because that's what we used to suggest, and the students rightly pointed out that it wasn't possible to do it right within the existing degree framework, at least, if you wanted to sleep.
- learc83 8y ago>we did not want to radically alter the meaning of a CMU CS degree That's just it. No radical alteration was required. You're already saying that: "AI majors will receive the same solid grounding in computer science and math courses as other computer science students." But if CMU had added a new concentration or specialization to the existing major this story wouldn't be on the front page of HN. There is no way that at some point in the discussion "This will be a big publicity win for us" wasn't brought up by someone. In general I think it's bad advice for undergrads to pursue hyper specialized degrees. I think it's a bad idea when engineering schools do it with things like robotics engineering, and I think it's a bad idea when CS departments do it with AI. Specialization is what grad school is for--this isn't the UK. I also think that schools that offer these degrees are doing a disservice to their students.