<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:
- The curriculum has more theory and is considering more rigorous
- 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</a>). 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>