At the Oregon Institute of Technology we start with three terms of C++ for Software Engineering and code all four years in several languages. We might not go as deep into the theory, but we can safely use a pointer and understand what the NullPointerException actually is in managed languages. By the time we graduate we have worked on a lot of code and two large projects, one of which is with a team of other students.