This is why good internships are so important while your an undergraduate in CS (or many other majors for that matter).
Depending on the university you go to, CS != Software Engineering. You don't encounter, and may not be even aware, of concepts like code reviews, build systems, or version control. By participating in an internship you are forced to address these gaps in your knowledge.
That being said, I don't think I would take away a single CS course I took as an undergrad and replace it with a course on software engineering practices. There is just too much strictly CS knowledge that is necessary for an undergraduate to learn.
Depending on the university you go to, CS != Software Engineering. You don't encounter, and may not be even aware, of concepts like code reviews, build systems, or version control. By participating in an internship you are forced to address these gaps in your knowledge.
That being said, I don't think I would take away a single CS course I took as an undergrad and replace it with a course on software engineering practices. There is just too much strictly CS knowledge that is necessary for an undergraduate to learn.