Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

This seems like a publicity stunt. It sounds like a CS degree where the electives are predetermined. Why couldn't they just make this a concentration when it's so intimately intertwined with CS.

The extra overhead graduates will have to deal with doesn't seem worth it.

"AI majors will receive the same solid grounding in computer science and math courses as other computer science students. In addition, they will have additional course work in AI-related subjects such as statistics and probability, computational modeling, machine learning, and symbolic computation."

They even say "other computer science students".



It's not just predetermined electives - it removes several of the CS upper-division breadth requirements to allow more depth in AI/ML/stats. (I posted a comparison below, so won't repeat it here.) It's a pretty decent change to serve the students who really want to push more on ML.

The key thing to look at is what the CS major requires that the AI major doesn't -- in 8 semesters, you can only fit in so many classes.


Parent's post for convenience: https://news.ycombinator.com/item?id=17041413


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.


As 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.


>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.


CMU 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?


>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.


I 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 ;) ).


>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.


We 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.


>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.

I completely support this philosophy.

> Compilers can be more or less of a systems course depending on who teaches it

So what happens when it's less of a systems course? Do students taking that section lack a critical component of the CS major?


We encourage it back towards systemsy-ness. ;). (in other words - nothing's perfect, and we accept some occasional compromises in service of providing a diverse menu. Compilers has other value. If it got too PL-centric, we would just move it to the PL cluster, but it's generally stayed systems for the last decade.)


The logic and languages cluster, while not exclusively a functional programming set, practically covers a lot of what one might think of as upper-division FP concepts. Foundations of PL and Semantics are bread and butter PL theory, for example.


But none of those are required in that section. You could take Software Foundations of Security and Privacy, or Foundations of Cyber-Physical Systems.


Funny you'd pick those two. :-)

Software Foundations includes, for example, the use of type systems to ensure bug-freedom, program semantics, and more. Matt Fredrikson focuses on the intersection of formal programming languages research and security. For example, lecture 3: https://15316-cmu.github.io/lectures/03-safety.pdf

Cyber-physical is one of the hardest classes I've ever seen. Seriously - it combines very solid differential mathematics with logic and formal verification. It's a different set of skills than Semantics, but it combines a really solid dose of the same kind of logical and proof-centric thinking that advanced PL courses do. And rapidly runs into the logical underpinnings of both fields. For example, lecture 13: http://symbolaris.com/course/fcps16/13-diffchart.pdf

(In large part, this is because the course relies on identifying PL-style semantics of differential systems, and thus, students in the course end up being exposed to nearly identical proof methods as they do in the more straight-up PL semantics course, in addition to a lot of differential equations.)


It does look like there are portions of those classes that are similar to a PL semantics course, which in turn covers some of the concepts you'd cover in an upper-division FP course. It's still a bit of stretch.

After I looked over the assignments for a section of Software Foundations, I don't think that taking an AI class instead would make much of a difference when it comes to having a solid foundation in functional programming, which is what the GP was talking about.


15-210: Parallel and Sequential Data Structures and Algorithms, which is still required, is purely functional.


That class is also required for the AI degree.


That's actually what I meant, but used the wrong phrasing - I can't edit it, unfortunately.


Well, that's basically what Computer Science degrees started out as, right? An Electrical Engineering degree with a bunch of software related electives? Even now, at UC Berkeley for example, "EE/CS" majors can choose a set of courses that end up almost exactly matching what the "CS" majors take, with not necessarily more EE. It's really just a narrowing of the electives.

There are enough AI related courses available now at many schools that it seems useful to separate "more general Computer Science" from "a focus on Artificial Intelligence", and similarly I think there's room for a separate major in "Software Engineering" as opposed to theoretical computer science.


Many CS programs came out of Math departments (that was the case in my program).

To me, it's more a difference in degree than kind. To be effective with AI you basically need the equivalent of a CS degree anyway. The same isn't true with EE/CS.


For me this just looks equivalent to adding a new major for every sub field of electrical engineering. Signal processing, digital circuits, analog circuits ... truth is a CS major could go take the same classes and a computer engineering student could also.


I think there's just a (subjective) point where a field is different enough that it's worth distinguishing from the rest. I could see Signal Processing being a different major than Electrical Engineering, and digital circuits is basically Computer Engineering.


It shifts the core of the curriculum much deeper into the statistical mathematics and away from the "how the bare metal works" and forest-of-languages pieces of the CS undergrad degree. In particular, you can't generally get the CS undergrad degree without cap-stoning your experience with either a networking or operating systems course; this new degree omits both of those from the curriculum (but adds machine learning, modern regression, and a cap-stone of either natural language processing or computer vision).


It's a few classes. There is no reason they couldn't have just changed the requirement to OS, Networking, NLP, or computer vision. And made the ML and modern regression classes prerequisites for the NLP and computer vision classes.

A few very minor tweaks to the CS requirements is all it would take. But you wouldn't get the fanfare of launching a new major.

The advantage for students is that if they decide to pursue some other CS discipline, they don't have to explain their weird degree.


(responded to similar thought on a different thread)


Did you not bother looking at the curriculum before making a comment about the curriculum?

https://www.cs.cmu.edu/bs-in-artificial-intelligence/curricu...


I looked over the curriculum pretty thoroughly. Look through some of the other comments in this thread to see a more detailed look at the differences.

If you look over the curriculum and compare it the BS CS curriculum you'll notice there's nothing that couldn't have been done as a concentration.


> It sounds like a CS degree where the electives are predetermined

This is offered through CMU's school of computer science (SCS), so that is exactly what this is. CMU loves creating new sub-departments with SCS, for some reason, there are already 7 or 8.


New faculty titles!


It's always this way when new fields start. Give it time. AI leans harder on areas of knowledge that traditional CS treats as periphery like philosophy and linguistics. In a couple decades the field could be as separate from CS as EE is.


I agree, but I think this also supports the parent argument. CS and EE are not very different at the undergraduate level.


They were at Waterloo, my alma matter. CS was far more mathematical and EE had a much broader basis in physics. Comp Eng was the middle ground with overlap on both.


That's right, and that's harmful to people who want to "higher up the stack" than EE. This new major helps address that problem.


They certainly are at UT Austin! But UT Austin has a separate Computer Engineering degree that's very similar to EE.


> It sounds like a CS degree where the electives are predetermined. Why couldn't they just make this a concentration when it's so intimately intertwined with CS

Unless they really mean "CS-degree with surface level knowledge of stats" this should really be an offshoot of the math/applied math department, not CS


It might not be the perfect curriculum yet, but not every CS course should be necessary to be good at ML/AI (compared to no need of knowing electrical engineering or physics while studying CS).


It sounds like a CS degree where the electives are predetermined.

If history is anything to go by they will graduate right into an AI Winter.


you mean that blind optimization of a black box might run into problems that can't be solved by "adding more layers"? I would never have guessed.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: