USC has once again Revamped Computer Science Curriculum

<p>Details can be found here : <a href="http://www.cs.usc.edu/assets/007/91333.pdf"&gt;http://www.cs.usc.edu/assets/007/91333.pdf&lt;/a&gt;&lt;/p>

<p>Course plan can be found here: <a href="http://viterbi.usc.edu/assets/179/91192.pdf"&gt;http://viterbi.usc.edu/assets/179/91192.pdf&lt;/a&gt;&lt;/p>

<p>It's interesting. I'm glad that they did away with the required BUAD class, and I like the sophomore year load. Previously, you only took 1 CS class and 1 EE class during each semester of sophomore year -- now it looks much better. What do you guys think? </p>

<p>My son pointed this out to me a couple of days ago. Makes it a bit easier to be a CS(Games) major and a Game Design minor given CTIN 190. He was also happy to see anything with EE replaced with CSCI.</p>

<p>Oh and it appears they removed the language requirement for CS majors! CS no longer appears as a major required to take the language placement test.</p>

<p>@GamerGal27‌, the language requirement was actually removed as part of a CS re-work for last year. This is ANOTHER revamp of the CS curriculum.</p>

<p>Let’s hope they are done revamping for a while!</p>

<p>Thank you for posting @Siddysidsid, very helpful to be up on the change. (I have a second year CS student.)</p>

<p>@CADREAMIN, no problem. The cool part about this change is that it’s completely optional. If your son/daughter wants to continue his current plan, he can do so. Only students from the 2014 year and onward are required to follow this. I’m also a second year student, and I’m strongly leaning towards following this curriculum.</p>

<p>Thanks @CygnusFiend. It was great to send him a link that was so current/new off of a forum they can tease me about being so dedicated to. He wasn’t aware of the change. It was good being cool hip mom even if only for that moment. :slight_smile: </p>

<p>This is the revision I warned against previously. It seems they’ve scaled some things back and made it optional for current students (previously it was going to be mandatory). Reaction seems positive for CS, but there’s still most of the issues I have with it for CS (Games).</p>

<p>The optional part is good for students, and this release from Schrader is really helpful. They didn’t use to distribute clear info when they revamped the curriculum when I was an undergrad. Looking over the new course plan for CSGM I’d say stick with the old one if it can be fulfilled just in case a class you’ve taken now doesn’t count, but they seem largely compatible outside of 400-levels: <a href=“http://www.viterbi.usc.edu/assets/179/91193.pdf”>http://www.viterbi.usc.edu/assets/179/91193.pdf&lt;/a&gt;&lt;/p&gt;

<p>I’ve dubbed this revision Ivory Towers v2.0. The kind of people revising this come up with course titles like CSCI 353: Introduction to Internetworking</p>

<p>First year issues:

  • No programming in the first semester is ridiculous. It’s not fair to students that they might dislike programming enough to switch majors but won’t know until end of freshmen year. CS 101 used to always be a first semester class and now what it is (103) should be too.
  • Removing ITP 280 is a stupid move. I know several people who have gotten jobs/internships due in part to it. It is a really valuable class to give industry overview and get actual simple game dev experience.
  • The professor of CTIN 190 has a huge impact on the usefulness (and enjoyment) of the class. It has yet to be done right (this in including CS 180).
  • Without an overhaul CS 281 is still a crappy class. ITP 280 has been an order of magnitude better.
  • ENGR 102 is a filler class that could be made a little more useful w/some tweaks.</p>

<p>Remaining issues:

  • Always take EE 241. Always. I’m disappointed a Mathematics for Games class hasn’t been created yet. Among some AAA studios USC grads have a rep for not being good at the necessary math for engine dev.
  • Also disappointed CS 200 was crammed into CS 201 and now it’s a hard and crappy class. Luckily the professor who taught it (and was bad) quit. However, CS has trouble finding good teachers so it will probably be rocky for multiple semesters. They could mitigate this compressed class by having a 2 unit software engineering course. Many seniors still don’t have a good grasp on this important area.
  • The new 400 level games classes have a lot of potential, but I think it an incredibly bad decision to replace good classes with classes that have never been taught before and could turn out poorly. I trust the instructor (AK) will eventually do well, but think they should’ve been 499’ed so they could be tested and revised before being made mandatory.
  • Having no tech electives is ridiculous because students can’t explore a specific niche. Students with no speciality won’t be as competitive as students from other schools w/specialities.</p>

<p>Positives and misc:

  • I’m glad to see more theory classes because USC has been weak on theory for many years. More theory is better for students in the long run.
  • To all entering CSGM students: Skip out of MATH 125 (AP Calc credit) if you can. It’s one of the only ways to be able to have units to take fun classes.
  • Still not convinced CS 109 is worthwhile, but need to get more opinions. Would like to hear anyone’s experience.</p>

<p>@Psydent Great insight. A question on EE241… My son could skip out of both MA125 and MA126. Good idea or not? And what is different between EE241 and MA225? Is EE241 a lot harder? </p>

<p>One other thing we noticed is AP USH now counts for GE 4 so that also opens up a slot.</p>

<p>And what do you think of doing a CS (Games) major and Game Design minor? Due to overlap it only adds 4 courses.</p>

<p>@GamerGal27‌ Definitely skipping as many math classes as possible is a good idea. All 3 math classes are useless compared to the ITP classes that are great at teaching the important linear algebra and physics for 2D and 3D games. 8 units is very valuable.</p>

<p>Lol. I wouldn’t recommend EE 241 because it’s harder. Both EE 241 and Math 225 are relatively useless for game programming, so I recommend EE 241 because it’s easier and is 1 unit less. The student has more important Games classes to focus on, so if they can get through the class easier it’s a logical decision. Also if the student gets a not-so-good grade then it factors into GPA 1 unit less. Also, the profs of EE 241 have always seemed chiller than the MATH profs, who seem to be full of themselves. That’s more of an observation/impression thing. </p>

<p>AP USH counting as credit is great. The more units you can use for electives/fun classes the better. ITP, CTIN, and CSCI have the most relevant courses. Professional C++ ITP 435 is one of the top rated courses and will be useful to any programmer. If someone wants to do mobile, then any of the iOS or Android courses are great. Things just for fun include the student-favorite Film Symposium THTR 466, where you get to watch movies every week and directors and actors come in to answer questions. </p>

<p>A Game Design minor won’t do much on paper, so I’d say it’s only worth locking up those units if the student really wants to take those classes. If the classes are near the top of the ‘Want to Take’ list, then the minor is a great end-result of that. I don’t think it does much on paper because a CSGM student will 99% of time be applying for programming-focused roles and if employers see USC Games on a resume then they’ll know the candidate has some design background. Having the Game Design minor is less important than having a good design sense because a programmer who can design will be able to have input in a collaborative workplace, which I think is ideal. For the 1% who go for designer-focused roles, they will still have to take design tests, so having more design classes under the belt is useful for knowledge, skills, and experience. </p>

<p>@psydent This was extremely helpful. Thank you!</p>

<p>@psydent, what do you think of the CS (regular) improvements? I think overall it looks significantly better. They seem to have cut down some EE classes that a lot of people dreaded and threw in some nice CS classes that focus more on Theory…although I’m a little confused as to why they went with such ambiguous titles for these classes such as :</p>

<p>Intro. to Software Engineering
Princ. of Software Development
Introduction to Computing
Discrete Methods in Comp. Science
Intro. to Algorithms & Theory of Computing </p>

<p>I can’t speak about the whole of CS (regular) from experience because I did CS (Games), so I’ll focus on the overlap.
One thing I’ll note is that CS (Games) has always taken EE 352 so CS taking that and dropping EE 201 and EE 357 is something it’s about time they’ve done. Conversely CS (Games) should take CS 109 and CS 103 in the first semester like CS (regular) is now.</p>

<p>It looks better because the powers that be finally got their heads right and removed classes that didn’t belong. This net gain is the move we needed to be closer on par to schools like Cornell, and we still have a way to go. At a high level:

  1. The curriculum has more theory and is considering more rigorous
  2. The change in curriculum needs to coincide with better professors.
    A more rigorous curriculum will only be better for students if they can get through it, and bad profs make that extremely difficult.</p>

<p>While I like the layout because it shouldn’t be too hard for students, there’s a number of units left on the table, especially if you bring in AP credit, and some of the classes don’t make a lot of sense.

  • There’s 3 15 unit semesters.
  • It seems they’re making you take MATH 226 and 2 extra science courses just to fill up units. USC would graduate better CS students if they were getting more relevant skills, not learning about chemistry.
  • At only 60 required engineering units, CS (Games) has 20% more. This leaves questions, such as why isn’t CSCI 353 a required class? Every CS major should know about networking and transactions.
  • The last 3 semesters are basically just whatever you want to take. While this is good for students to choose their own focus with electives, it shows that regular CS doesn’t think it has any upper level courses great enough to be required. Tracks could be one way to provide a more valuable learning experience.</p>

<p>One short answer to your question is that course titles are required to not be too similar, so Algorithms I and Algorithms II probably wouldn’t get passed the review committee. I think this is CS dept guideline.</p>

<p>To get to answering your question in a more thorough sense… USC has been lacking in theory so the new classes are good, but they did it at the expense of one of the better implementation classes - CS 200. So they got rid of a good class and give more electives. Doesn’t that seem illogical? I really dislike when CS grad students come from other universities and are good at theory but can’t actually program anything. They’re useless to me. So what is the layer that links theory and implementation? According to one of the profs that redesigned the curriculum (DK) the answer is application.</p>

<p>The ambiguous titles are necessary for the power and elegance that CS provides. General titles might be a better way to think of it because the titles refer to something specific yet wide. There are so many aspects to software engineering. There are so many ways to apply one theoretical approach to a diverse array of problems.
For example, what do the predictions of what place a baseball team will finish and figuring out where the bottleneck in downtown LA is have in common? Both, while appearing very different, can be modeled as an optimization problem and solved by min-flow or max-flow (<a href=“Maximum flow problem - Wikipedia”>http://en.wikipedia.org/wiki/Maximum_flow_problem&lt;/a&gt;). So we have theory, which is the mathematical side and gives us ideas as to how to solve problems (algorithms). Then we have application, which is us modeling our problem (eg. DTLA traffic) in a computational yet accurate form and applying one of these generic ‘solution engines’ in order to yield what will be a verifiable solution. Lastly, we have implementation, which is when we actually write the code (in a specific language) for the algorithm and run it on the problem thus getting our actual solution. What you’ll learn in those classes (principles, techniques, approaches, algorithms, etc.) are useful in so many different ways. This layering allows us to reuse one approach many times. By being generic they can apply to many things, thus being powerful and elegant. Isn’t that neat!?</p>

<p>All CS majors/minors should look at ITP classes to have more implementation experience in up-to-date areas, ex: <a href=“Course · USC Schedule of Classes”>Course · USC Schedule of Classes;
Having more real-world projects on your resume will help it stand out.</p>

<p>My S is going to be a sophomore in CS Games next semester. He is considering switching to the new curriculum because he will have less EE and more CSCI. He will have room in his schedule to add at least two tech electives. Anyone have thoughts on what these should be? Thanks. [=</p>