4 ms·
> the same way we learned the C++ STL back in the day My school forbid you from using STL. You had to build all of your data structures in freshman/sophomore
by joeblau 12y ago
> the same way we learned the C++ STL back in the day
My school forbid you from using STL. You had to build all of your data structures in freshman/sophomore years and then use those same data structures you built in your sophomore/junior/senior projects. It was really crazy because if you never got your lists, trees, graphs, and hashes working you basically wouldn't make it through the CS program. It sucked at the time, but I'm grateful now.
- squeaky-clean 12y agoWow, that sounds very bad to me. It's important to learn how data structures work, but I believe it's more important to learn how to find and re-use existing code/libraries in your work. This is something schools seem to be avoiding and even discouraging (mine didn't take it as far as your school, but they never once covered the standard libraries). I've tutored students in Java classes who would write a bubble sort every time they needed to sort a List, instead of using Collections.sort, simply because they didn't know Collections.sort existed! Or their own ugly code of looping, indexOf and substring to get values from a CSV instead of using string.split(",") or a premade csv parser (which I know that professor would have been fine with, he would have even encouraged it). Unless point of the project is to learn how to make one from scratch, you shouldn't be wasting your time writing an alphabetical sorting function when you can be solving novel problems.
- nightski 12y agoIf you are looking for a tutorial on searching the web, college is probably not worth the money.
- joeblau 12y ago> Wow, that sounds very bad to me. It might, but today, I run into tons of developers that don't understand the fundamentals. I worked with a guy who I affectionally named "Stack Man." He basically used a stack for any list implementation. He didn't understand the difference between a list, a queue, and a stack. You're teaching your students Java and telling them "Just use Collections.sort" and that's fine, but do you understand when Collections.sort is bad? If you don't understand the underlying algorithm of how a merge sort works, you might be telling them to use something that is worse than could actually be worse than a bubble sort in certain cases. Also Java wasn't taught to CS students at our school, that was only for BIT (Business Information Technology). Teachers wanted you to understand memory and pointers.
- cs02rm0 12y ago<i> I worked with a guy who I affectionally named "Stack Man." He basically used a stack for any list implementation. He didn't understand the difference between a list, a queue, and a stack.</i> That's brilliant, although I'd imagine it could begin to annoy. Slightly obtuse, but I'd have had to get a snippet of this to play every time he checked in a new stack... https://www.youtube.com/watch?v=FE0XcdM22Yo https://www.youtube.com/watch?v=FE0XcdM22Yo
- squeaky-clean 12y ago>You're teaching your students Java and telling them "Just use Collections.sort" and that's fine, but do you understand when Collections.sort is bad? If you don't understand the underlying algorithm of how a merge sort works, you might be telling them to use something that is worse than could actually be worse than a bubble sort in certain cases. When your assignment has to be uploaded in 3 hours, and your dataset is 120 items, Collections.Sort is always better than writing your own sort. I never said I taught them only to use Collections.sort, as that would be just as bad as never teaching them the standard libraries and only teaching data-structures. You need a healthy balance of both fields of knowledge. Otherwise you end up spitting out either programmers who can use library functions without understanding what's actually going on, or programmers who know all about the underlying methods and logic, but can't write code efficiently and quickly enough to actually help a team. That's not to say you cannot write code efficiently or quickly. You likely did as most good programmers do and learned on your own time as well. But for students who don't do this, they will be lacking huge amounts of practical knowledge.
- coldtea 12y ago>Wow, that sounds very bad to me. It's important to learn how data structures work, but I believe it's more important to learn how to find and re-use existing code/libraries in your work. If you're trained as a salaried code churner to solve some "pragmatic enterprise problem" yes. If you're trained as a computer scientist, you have to know how to do stuff properly from first elements, and also how to invent and code similar new stuff, custom tailored to new domains yourself with ease. You don't get progress in computer science with people just learning to use existing libraries and data structures. At best you can get some innovative apps, but not people able to build the substructure to create the innovative apps of tomorrow. Not to mention the sorry state of most existing data structures libraries and core APIs, from STL to the Java SDK. A lot of this stuff needs to be burned with fire to be brought to 2014 levels.