Interestingly enough at my University Computer Science and Software Engineering were seperate degrees - and your degree was awarded by a different faculty (even if you were taught in the same department.) I did the Software Engineering degree. I have to say that the first languages we were taught were Java, and some weird functional one that I can't remember the name of.
I programmed my final year dissertation in a mixture of C++ and C, just to see whether I could or not, and I remember the learning curve of managing my own pointers, looking for memory leaks and having to actual compile stuff against libraries and get header files right, instead of just dumping a load of.jar files into a directory a painful painful experience.
But when I started to working it was a painful experience again - I got a job programming large scale web applications. I discovered that suddenly when you need to start scaling Java up to large numbers of people you still get, not memory leaks, but object references held onto too long. I had to learn about weak references in Java, and how to make the automatic garbage collection run more efficiently. I had to learn how to integrate lots of libraries, some of questionable quality quickly into my application. In short, I needed another skill set, which my software engineering degree, with all of its formal methods and programming of small applications had in general not prepared me for. I found it useful to know about SQL, when I used frameworks like hibernate, but I never wrote an SQL statement. I found it useful to know how to formally construct tests for functions - but to be honest I didn't have time to formally prove stuff and so just wrote tests quickly and using common sense.
At the end of the day, what do you want your degree to prepare you for? I had quite a learning gap when I want to work in the real world(TM), but equally friends have complained that when going on to research they also had one. For them, they needed more modules about theory, and beautiful programming, for me I needed more about how to manage the process of building and integrating software. But we were both given generic educations.
It's all a moot point now. I quit my software engineering a few years ago, and went back to Uni. Now I program small things in Python from time to time, because life is too short for either Java or C.
Interestingly enough at my University Computer Science and Software Engineering were seperate degrees - and your degree was awarded by a different faculty (even if you were taught in the same department.) I did the Software Engineering degree. I have to say that the first languages we were taught were Java, and some weird functional one that I can't remember the name of. I programmed my final year dissertation in a mixture of C++ and C, just to see whether I could or not, and I remember the learning curve of managing my own pointers, looking for memory leaks and having to actual compile stuff against libraries and get header files right, instead of just dumping a load of .jar files into a directory a painful painful experience.
But when I started to working it was a painful experience again - I got a job programming large scale web applications. I discovered that suddenly when you need to start scaling Java up to large numbers of people you still get, not memory leaks, but object references held onto too long. I had to learn about weak references in Java, and how to make the automatic garbage collection run more efficiently. I had to learn how to integrate lots of libraries, some of questionable quality quickly into my application. In short, I needed another skill set, which my software engineering degree, with all of its formal methods and programming of small applications had in general not prepared me for. I found it useful to know about SQL, when I used frameworks like hibernate, but I never wrote an SQL statement. I found it useful to know how to formally construct tests for functions - but to be honest I didn't have time to formally prove stuff and so just wrote tests quickly and using common sense.
At the end of the day, what do you want your degree to prepare you for? I had quite a learning gap when I want to work in the real world(TM), but equally friends have complained that when going on to research they also had one. For them, they needed more modules about theory, and beautiful programming, for me I needed more about how to manage the process of building and integrating software. But we were both given generic educations.
It's all a moot point now. I quit my software engineering a few years ago, and went back to Uni. Now I program small things in Python from time to time, because life is too short for either Java or C.