4 ms·
My impression at school was they were teaching CS more like math, rather than aiming for anything useful. The professors were looking more for beauty than real
by mathattack 13y ago
My impression at school was they were teaching CS more like math, rather than aiming for anything useful. The professors were looking more for beauty than real world applicability. Nothing is wrong with that goal, but one shouldn't confuse that with practicability. One professor even mentioned that students going to corporate jobs weren't as important as those going to Phd programs.
We had one two semester sequence that involved a real world project of our choice, and that did involve all of the listed steps from the article. And more - we had to do real documentation: requirements, design, test cases, etc.
- moron4hire 13y ago>> My impression at school was they were teaching CS more like math, rather than aiming for anything useful. Why wouldn't math be useful? But yes, your professor was an idiot. Just because someone has letters after their name doesn't make them smart.
- w0rd-driven 13y agoI took that phrasing to mean something like: "CS is taught more in abstract principles like data structures than actual core mechanics for something like PHP" A former co-worker about lost it when the CEO asked "Does GA Tech teach PHP?" because one doesn't get a CS degree revolving around specific languages and semantics, but abstract concepts that surpass all languages. Having said that, there does need to be at least some portion that teaches on the real world concepts. Things like documentation, requirements gathering, and yes specific language implementations not just whatever they decide to use to propel a class along. I've found a lot of the language-agnostic portions of the CS degree I took part in weren't nearly enough to handle the application of that CS knowledge. I had to get my hands dirty and it had to be quick. The sad reality is, a lot of kids and people today just don't want to "get their hands dirty" and expect that a degree means they're a Ruby black belt or some shit.
- moron4hire 13y ago>> I took that phrasing to mean something like: "CS is taught more in abstract principles like data structures than actual core mechanics for something like PHP" And what is not a core mechanic about data structures? I don't agree that A) the math that is being taught is not a real world concept, and B) that syntax is so difficult once the math is understood that it elevates to the level of needing instruction. If one were to take the approach that syntax were a major differentiator between programming languages, then a 4 year degree program with gen ed requirements is not enough time to teach programming. There are just too many programming languages to be able to cover them all, and there is not enough agreement on programming languages to be able to define a core set. All of that math is what the core concepts of every programming language are built on. The fact that these things have to execute on deterministic computers guarantees it. Syntax is nothing. Syntax should take a cheat sheet and a project to cruise through to get down. Core concepts of type theory, object orientation, functional programming, hell, even algebra, are all the same, regardless of programming language. I see programmers all the time who are perfectly capable of satisfying the syntax, as modern compilers are very good about telling them what to do, but who have no idea what they are doing with it. They do things like call "ToString" on string objects, or ParseInt on an object that they've ToString'ed, when that object was itself already an integer. That is why software projects fail. There is a fundamental lack of understanding of basic concepts in most programmers. They stuck to this concept that the "math isn't practical" and they code by taking random shots in the dark against the compiler. It's not because they only learned how to write a linked list in C++ and not PHP, it's because they never learned the linked list in the first place. But, Computer Science departments around the world have been pressured to produce code factory workers who hit certain Human Resources-produced bullet points. It's because of the time taken to study so-called real-world issues of trivial import that sacrifices the fundamentals. And it has been an emphasis on graduation rates that have pressured professors to pass students who have not fully grasped the fundamentals, erroneously certifying them as trained and suitable. HR doesn't know what makes a good employee, because most of them are pretty bad at their jobs, too. If they were any good at their jobs, they would realize that most of what makes a good employee cannot be quantified on a resume. So instead they stick to the resume bullet point mantra. Industry yells at universities for not making enough students that fit their bullet points, and parents yell at universities for not making their kids fit the hiring company's bullet point. The problem is the bullet points.
- mathattack 13y agoMath can be useful, but it doesn't need to be to be worthwhile. That's the point I was trying to get across. (Based on my screen name you can assume I'm a math fan) And for many programming and sysadmin tasks, the theory of computer science (and math of proofs) isn't necessary. That said, other than the information systems sequence I took, it is the theory classes that have held well over time. Thinking about "What might make this slow?" is very tough, and the solution is frequently figuring out O(n^2) bottlenecks rather than just a tight hack in the language at hand.
- moron4hire 13y agoI don't know any sysadmins who even have degrees, let alone in computer science. And I think you're short-changing the math side of it. Want to figure out who to suggest friends to each other in a social app? That's an influence graph over email addresses, game theory and linear algebra. Need to draw a best-fit curve over a graph of data? That's linear algebra and geometry. Need to be able to draw things on a map? That's more linear algebra and some multivariable calculus. Writing just basic CRUD apps for corporate clients? They're likely eventually going to want metrics on their data, and that's going to be statistics. They'll probably be terrible at math, too. You'll need to hold their hands and tell them what they want, because the stuff they suggest will be either worthless, meaningless, or impossible to determine with the current data set. Need to explain to a client why you need to take a week to implement a specific path finding algorithm rather than "just brute-forcing it" now (whoever the hell taught them the phrase brute-force should be shot)? You better have such a good grasp of CS that you can teach it better than it was taught to you, because if your experience was anything like mine, regurgitating what they gave us on Big-O notation is not going to cut it. Think you can get by using other people's code doing all this? Good luck. More often, I've found the shit people post online is full of logic errors. You at least need to know the math well enough to evaluate the results of the code. There has not been a single project I have ever done that would not have benefited from me knowing more math. The more math I learn, the more I can't believe I did without it before.