Ask Slashdot: Online, Free Equivalent To a CompSci BS? 197
An anonymous reader writes "I am a middle school math teacher and I also run a programming club. I recent completed my M.Ed in math education and was inspired to try to do the new GT online MS in Computer Science in a couple of years. I have some background in programming: two intro to comp sci courses, Java, C++, Python, the main scripting languages, and a bunch of math background. I also read through this great article on getting these pre-requisites completed through Coursera but unfortunately you need to wait for courses to enroll. I would like to just learn these on my own time, no credit necessary. Suggestions?"
Donald Knuth (Score:2, Insightful)
Re: (Score:3, Interesting)
-- Introduction to Algorithms, 3rd ed., by Cormen, et al. ABSOLUTELY MUST-READ.
-- Computer networking: a top-down approach, by Kurose and Ross. Great book; skips the physical layer.
-- The C Programming Language, by Kernighan and Ritchie. This is the one book you need on programming language pragmatics.
-- Modern Operating Systems, by Tanenbaum.
-- An Introduction to Statistical Learning: with Ap
Re: (Score:3)
Re: (Score:2)
What about all the other courses that are required for the degree, like algebra, calculus, discrete math, technical writing, and other electives like psychology, history, business management, or biology. All of these, while not directly applicable, are definitely useful, and should not be ignored.
Those are all fine subjects, but none of them are CS.
Re: (Score:3)
You don't think discrete math is CS? I don't think you know what those two things are.
Re: (Score:2)
Re: (Score:2)
Discrete Math: Yes. I do not think I actually took a course labeled 'discrete math', but I know many of my CS classes used it.
Algebra & Calculus: It depends on what you plan on doing. Some careers related to CS may require it. However, most software development positions for businesses only require basic algebra when writing code.
Technical writing: No. In my experience, you just use common sense. You write for your intended audience and include information that is relevant. Upper management does not wan
Re: (Score:2)
Computer Science is an exceptionally narrow field that has broad, nearly ubiquitous application, and it has absolutely nothing to do with programming... or computers
Umm... Not really. It relates to Computer but not in depth either hardware or software but rather conceptual/algorithm of programming. If you do programming, you would relate it to computer in some senses.
Programming is programming, it is not computer science
I agree with this part. Computer Science is not about programming. The programming part is only to illustrate that you understand the concept/algorithm of what you learn or discover.
ok its basically math
Ummm No? Even though CS involves maths, it is not maths. In order to prove any algorithm, yes you must use maths to illustr
Re: (Score:2)
I know about computer science because I have three degrees in the field, namely BS, MS, and PhD from top-20 US universities.
You might be knowledgeable, but the fact that you have degrees (pieces of paper) isn't proof of that. Lots of losers and cretins have degrees, and yes, some even have PhDs.
Re: (Score:3)
Re: (Score:3, Funny)
perl? The poster said computer *science* not unreadable gobbledygook!
Re: (Score:2)
https://xkcd.com/224/ [xkcd.com]
or at least making them snort beer onto the displays...
Re: (Score:2)
Re: (Score:2)
It's not laziness. It's to fit each line of code in an 80 column display.
Re: (Score:2)
How Microsoft has gone backwards: In Visual Studio 2012, I barely get 73 columns of text when I first open. After moving all the side windows of metacode to the other monitor, I get a more respectable 125 columns.
MIT (Score:5, Informative)
Re: (Score:3, Interesting)
Parts of it are painful to do on your own. The emphasis on Scheme and recursive layers of abstraction, and the last 20 years of objected oriented nonsense wasted space that is is the descendant of early LISP research and makes Java programmers so *bad* at performance programming can take a decade to *unlearn* to do anything reliably or in real time. "Object Oriented" is the enemy of understanding why things break.
I'd still recommend the online courses from MIT, in general, and spending time with toys from
Re: (Score:2)
Re: (Score:2)
Well of course Real Time programming is a special beast, but I don't think it is representative of whatever programming the OP is trying to learn. Basing your whole critique on optimization needs is off-base.
OOP is a good tool to encapsulate UI, it has brought Angular, DOM and javascript prototype-based system.
For heavy work, functional programming simplifies parallel processes. Scheme can handle this and offers a very different syntax to learn. If you can wrap your head around both the ((parenthesis)) and
Re: (Score:2)
OOP is a good tool for more than just UIs. It's also not particularly intuitive (when done right), and I'll happily agree that Scheme is a better learning tool. It also has the advantage of being different from most commonly-used languages, so learning it in school and learning something that's likely to lead to a job is exposure to two different programming paradigms.
Re: (Score:2)
Re: (Score:2)
The parent was making a distinction between Lisp-1 (e.g. Scheme) and Lisp-2 (e.g. Common Lisp).
CLOS, obviously, has objects bolted onto it - for which, as you point out, they write books.
Re: (Score:2)
If this is the original LISP, I fail to see its relevance. Lisp has changed a lot, and the old programming style is hardly relevant. If you mean what has sometimes been referred to as Scheme (a Lisp-1, so-called because it has one namespace), then there are Scheme compilers.
sed, awk, grep, expr (Score:2)
You're not going to write much useful software in bash without calling expr, sed, awk, grep, etc. - all separate programs. When you use echo, basename, etc. you don't necessarily KNOW whether you're calling an external program or not.
On the other hand, an experienced Perl programmer rarely calls external programs. The full functionality of sed, awk, grep, basename, echo, and most other system utilities is available within the Perl language itself. The one notable thing Perl often opens a pipe to is sendma
Re: (Score:2)
Lisp does not fail at resource management. Bad Lisp implementations do that. And sadly, those bad implementations cause people to mistakenly think the language is inherently bulky or inefficient.
Thank YOU Interwebz (Score:4, Informative)
Re: (Score:2)
I don't know what your university was doing then, the courses at mine were quite valuable and informative. The bullshit I have seen posted online is exactly that. Granted, not ALL of it is bullshit, but a lot of it. I now have a niece that is interested in learning about programming and computer science and I shudder to think what ridiculous buzzword crap people are going to try and direct her towards. Luckily I actually have the necessary background to weed out some of that bullshit and she is knows th
Re: (Score:2)
Granted, not ALL of it is bullshit, but a lot of it.
The same is true of colleges, universities, and even classes in the 'better' universities.
Re: (Score:2)
Granted, not ALL of it is bullshit, but a lot of it.
The same is true of colleges, universities, and even classes in the 'better' universities.
I'll give you that, but I would at least argue the rates are noticeably lower for tier 1 universities. I do remember a couple of Comp Sci professors in my college days that I am fairly certain had no business near a classroom, but that was definitely the exception (thank god I suppose) not the norm there.
Re: (Score:2)
Whether they're noticeably lower or not is irrelevant. You have to pay for colleges and universities (or taxpayers do), whereas it is trivial to find information on the Internet and trivial to verify it. Once you're giving away your own money, it's already too late.
Good source from California (Score:3)
Surprised nobody seems to have mentioned the Berkley Webcast yet. http://webcast.berkeley.edu/ It is an online collection of class videos, lectures, and course materials for a variety of subjects including computer science.
Their into to CS is much easier to get into for a beginner than the MIT OpenCourseWare. http://ocw.mit.edu/index.htm
You have all the education you need, don't bother (Score:4, Informative)
You know some decent languages and have a background in Mathematics. Dont' waste your time, CS is no more than an Applied Math degree "in drag". All you need is some experience which can be obtained by volunteer work, e.g. maintaining the web site of a no kill animal shelter.
BTW, since you background is in Math Ed., I assume you have good people and communication skills. That is a great way to differentiate yourself from the pack. You could end up running a tech firm if you do it right.
Re:You have all the education you need, don't both (Score:4)
Re: (Score:3)
While, CS is definitely applying math, it lies somewhere between Math and Software Engineering.
Anything to do with user interfaces will have a fair chunk of applied psychology as well (and some appreciation of parts of physiology too). What's more, people doing theoretical CS tend to go much deeper into discrete math than the normal math student does.
Discrete Math and the CS Student (Score:2)
It seems to me that both Math and CS students could use some more "set theory" training. We live in a world full of information. Sorting, arranging, and reporting on that data is becoming a bigger task. Even a small business has more data than you can manually validate. You need some good database setup and understanding to make sure what you get out of it is correct.
Re: (Score:2)
If someone just wants to buil
this should settle it (Score:2)
Yes and this is a major improvement that took decades. Alot of talent was wasted b/c some CS majors didn't write code until the 3rd year.
It grows out of a misunderstanding of what 'computing' is as an academic discipline & non-tech academia's inherent inability to understand something new & adapt.
Re: (Score:2)
I've seen plenty of people that were excellent at math (some working on an MS in it...) that couldn't write a worth a damn program if their life depended on it. Not saying the OP is necessarily that though. It does give you a very firm background for CS (just getting my BS I ended up one class short of a math minor anyway, and even then I had to learn basic multi-variable calculus and applied differential equations when I took physics), but there are still quite a number of high level CS concepts one shou
Re: (Score:2)
As someone with a degree in Mathematics and Computer Science, I can tell you that if your CS degree is applied-maths, then you really should find another course.
Pretty much, when I was at uni, the CS guys couldn't do the maths side of the courses and the maths guys couldn't do the CS side of the courses. There's an overlap of, at most, a few "theoretical" courses (so much closer to pure math, to be honest) - graph theory, coding theory, logic, etc.
But ultimately, they are separate for a reason. Otherwise,
Re: (Score:2)
That's how it started. The first CS degree was Cambridge's Dip.Comp.Sci., taught out of the Mathematical Laboratory. I think that the best way to see CS is as an interdisciplinary subject which sits between pure maths, engineering, and psychology.
most engineering is applied math (Score:2)
Mechanical engineering is applied math.
Therefore, if you have a math background, you're all set to be an engineer - no engineering classes required, right?
A good math background will make CS much easier. It is, however, a distinct discipline. For example, to study algorithmic complexity, some math is needed, so someone who already understands the pure math will have a head start. However, they still need to learn the patterns to quickly estimate complexity and be able to "see" which type of algorithm migh
^Best advice (Score:2)
This. It may seem to conflict with other credible posts that indicate alot of programming skills were gained in a CS program. It's important to note that CS is kind of a mash-up of disciplines that was as much of a creation of the marketing department as academia. It seems like a logical major to have, but the discipline suffered b/c it became popular at a time when many academics couldn't even check email!!!
The key is what is your **a priori** knowledge. I
CS major != CS major (Score:2)
all "CS majors" are not created the same.
first, you tell me what is useful for designing processors. You tell me who makes them & what kind of degrees they have.
2nd, tell me how those things you listed, graph theory etc....tell me, in your words, how those concepts are useful in the 'real world'
if you can't engage at that level you're trolling...
Saylor.org (Score:4, Informative)
http://www.saylor.org/majors/c... [saylor.org]
Their math stuff is decent, and that's what I'm competent to evaluate, so based on that I'd think the compsci would be good too. Some degree areas are not complete yet, but compsci is.
Re: (Score:2)
Interesting. From your experience, were the number of hours listed under "time advisory" pretty accurate?
Re: (Score:2)
As long a you don't intend to get work from it... (Score:2)
As long a you don't intend to get work from it, there are tons of alternatives for learning the information that would be contained in the course.
Typically speaking, just doing the necessary coursework, as Scott Young did, isn't enough to make you employable, even if you do it in a context in which you end up with a degree. It's a good part of it, though, since it certifies that you would be able to use the same words to communicate about algorithms, etc., when talking to peers, which is something you prob
Re: (Score:2)
As long a you don't intend to get work from it, there are tons of alternatives for learning the information that would be contained in the course.
One of the key differences is that taking a formal course on it forces you to study the boring and hard parts as well as the fun bits; often they're important for gaining a real level of understanding. (I suppose that's true for pretty much any subject.)
If you do intend to use it for the purposes of obtaining employment, you'll need to actually take the exams at an accredited institution. Otherwise the employers won't know you from some random jerk walking in off the street claiming something which isn't tr
Re: (Score:2)
One of the key differences is that taking a formal course on it forces you to study the boring and hard parts as well as the fun bits
If you don't have enough willpower or intelligence to study such things, chances are you don't have the aptitude for it anyway. Just give up, if that's the case. Too many losers going to colleges.
Otherwise the employers won't know you from some random jerk walking in off the street claiming something which isn't true.
Then maybe employers should get off their lazy asses and actually evaluate people. That's what my employer did, and I actually have a good job and work in a good environment. You don't want to work for any employer who hires HR drones.
Loots of good stuff out there (Score:3)
This is all Python centric but that's where the jazz is these days:
I've got a 15 year old masters in CS but I went through the coursera and udacity stuff and learned quite a lot along the way. Good stuff.
inB4 (Score:2)
inB4 Joe "tard school is bettor" dragon.
Re: (Score:2)
P.S. Alas, not [slashdot.org]
Computer Science BS (Score:4, Insightful)
You should have a look at the average course structure of a BS program. Normally it contains the following elements:
- Math. hopefully graph theory, lin. algebra, not so important for most things, but still often found in curricula analysis
- CS theory: first-order logic/predicate logic, Turing machines, grammars (the Chomsky stuff) LR, LL, LRAR, regular languages, mu-recursion, the language Z or objective-Z (however this item is optional)
- Different programming paradigms. Best learned with special languages: functional -> Scheme/Lisp/Haskell; OOP, but you already know that.
- OOP programming and design pattern
- Software engineering: UML a bit, use case forms etc., different types of project management: agile, RUP and V-model (only basic principles)
- Hardware: basic analog electric components, transistor etc.; FPGA etc. VHDL or something similar; basic CPU designs, 3-address code, gate architecture (pipeline is often too complicated)
- Some other basic field. Robotic, e-learning etc.
- Some extra stuff from a different field (hopefully not a science and not economics)
There are plenty of books on most of these topics. If you would live in Germany you just could enroll at the next University for free and checkout their courses. Or go there without enrolling. In most cases no one would check if you are a student ;-)
The job equivilent of a college CS education (Score:5, Insightful)
The simple fact of the matter is that a 4-year university's computer science program is not meant to provide job training, and as far as career skills go, you could pick up a CS degree equivalent of job skills in under a year.
I wrote about this the other day, on the Ask Slashdot: Modern Web Development Applied Associates Degree [slashdot.org] topic, and I'm sticking to my guns on it. You don't need any math more complex than simple algebra. You don't need any theory classes.
Some of these theory classes may provide better insight, and lacking them may limit you if you're attempting to enter a highly specialized, complex field with no demonstrable experience in it (which, by the by, doesn't really happen), but for 98% of your day job, it's going to be more important for you to know how to parse and sanitize input than it will be for you to know how to write a compiler, raytracer, decompose a function into mathematical terms, perform a Big-O analysis, design a memory manager for an OS, and you'll probably never use matrices or differential equations.
Hell, the grads I see now a days haven't got a concept of efficient design, most lack basic database skills, awareness of common libraries, common development tools, never used any team-based tracking systems or source control, and so on. Unless they've struck out on their own, they're almost completely unsuitable as candidates. Many of the self-taught devs seem to have a better grasp of things, if only because they end up attempting to write usable software from design to implementation, instead of homework assignments demonstrating polymorphism and recursion.
On the other hand, for many HR departments, a degree is go/no-go. You'll never get to an interview without one, and there's no free, online equivalent for that. You'll just have to make do with having superior technical skills, and try to apply at a company that values that more than a sheet of paper.
Re: (Score:2)
Some of these theory classes may provide better insight, and lacking them may limit you if you're attempting to enter a highly specialized, complex field with no demonstrable experience in it (which, by the by, doesn't really happen), but for 98% of your day job, it's going to be more important for you to know how to parse and sanitize input than it will be for you to know how to write a compiler, raytracer, decompose a function into mathematical terms, perform a Big-O analysis, design a memory manager for an OS, and you'll probably never use matrices or differential equations.
You don't learn any of those things to actually remember them. They are supposed to teach you many different ways of thinking about problems. And most importantly, all of them are supposed to teach you how to prove correctness of your own algorithms. You can't learn those things on your own or in a job and without those abilities, you're driving blind on a cliffside road.
Re: (Score:2)
How much theory you need depends on what you're doing. The field is still young enough so that the job market changes, and just learning the latest stuff is going to work for only a limited time.
Without what you list as unnecessary knowledge, you will be ineligible for a lot of jobs that pay well and have interesting work. You will have problems with relational databases because you don't have the mathematical foundations, and you will not parse input well because you don't know about compilers (the fr
Ask your students.... (Score:3)
With all respect...
All the comments that you'll be getting from Slashdot readers will be worthless to the point of your question. As you may have noticed by now, every responder assumes that you want to learn to how to do what they consider a dream job in CS to be. And they give replies like 'read Knuth' or 'do MIT on-line courses'.
Since you already have an excellent job with a good future, and you have already studied elementary program texts in CS languages like Java, allow me to suggest that you ask the middle school students in your programming club what they would consider to be cool and useful programs to have. After you get through the fantasy aps like ' a really cool game that the player doesn't end up always losing' and ' a smokin' 3-D interactive girlfriend' or ' a bio-implant that will allow me to get perfect SAT scores without studying', then you might get some interesting suggestions.
Personally I suggest that you and your programming students develop Arduino and Raspberry Pi applications. The elementary 'blinking LED' stuff, simple robotics applications, and digital television art projects made from inexpensive TFT displays will be fascinating to middle school and high school students. (hopefully).
More Mathematics (Score:2)
If you can convince employers... (Score:2)
I have found, however, when one does not yet have an abundance of expierence, that having a formal education makes a significant difference to just getting by the initial filtering process.that many companies use.
Re: (Score:2)
No, just no (Score:2)
Don't get me wrong, there is a lot of valuable, raw knowledge out there, and a lot of the textbooks I had for my CS degree are available, and are not textbook-y material, and I've see a few suggested in this thread.
But I don't think an "online" equivalent to a CS degree exists.
A good CS degree is fundamentally incompatible with working online, on your own time. I really respected the program I was in, and whether it was working on open source or any other sort of project, one of the most valuable aspects of
Free Java Lectures (Score:2)
Free Java Lectures (Score:3)
functional programming (Score:2)
We were taught Miranda (very similar to Haskell) in my bachelor's program. It was the primary language for most of our exercises across many courses. It is an effective lnguage for teaching many fundamental aspects of programming like recursion, and algorithms - expressing quicksort in a functional language is not only more elegant and considerably shorter when compared with c or Java. That was over twenty years ago, but to this day these functional programming abstractions have been invaluable in shaping m
acm (Score:2)
Acm student membership with the digital library option is $42 a year. This is golden for you as a student and you might do some profesional networking. If you can eventually grab the professional membership some people are impressible.
Re:Ivy League = theroy loaded classes with skill g (Score:4, Informative)
Re: (Score:2)
Computer languages fade in and out of popularity every single decade. It is not like people stop using those languages but the jobs market turns elsewhere.
The theory at least has remained more or less constant throughout the entire time.
Re: (Score:2)
and the school system should be setup better for people who want to learn new skills with have to deal with the old system / old college time tables.
Re:Ivy League = theroy loaded classes with skill g (Score:4, Insightful)
We would all be better off with a good knowledge of the history of the Roman empire since we seem to be following down the drain the disasters of its later stages.
Re: (Score:2)
Some people want to box things up into compartments. Sure it's useful to know Roman History, but that's for other people they think. So they learned Java and know nothing else but that, and leave the repeating history thing to politicians. They leave the theory to the mysterious people who write Java frameworks and runtime (possibly they're wizards), they leave the optimization of their programs to the customer who's job it is to buy a faster computer every year.
This isn't just about preparing someone to
Re: (Score:2)
This is what *school* is for, not University.
I hear Americans laud the 'breadth' of their university system with arguments such as the above, but frankly this kind of stuff should be taught *before* university, not during it. I, for instance, learned the 'History of the Roman Empire' when I was 18. Likewise a bunch of other history stuff that I later dropped in favour of the sciences.
School should be for your 'broad education'
It should funnel into your chosen subjects which then funnels into
University - whi
Re: (Score:2)
Re: (Score:2)
There's a big problem with this vocational approach you advocate. History of the Roman Empire may not seem to be of any immediate use, but it is.
And it's also something you can do on your own time. Quit wasting everyone's time by forcing them to go to filler classes. I can rationalize forcing literally any subject down people's throat, no matter how mundane or useless it is. It's quite easy to do, and especially so when you say vague things like you do throughout your comment, without providing any real evidence of anything.
We have our 'broad' (and yet it still manages to be about nothing), force-fed education right now; it isn't working.
Re: (Score:2)
About the only substantive thing you had to say about the Romans being wrong is about walls, and that shows a lack of understanding of what the walls were for. They were never to keep barbarians out, because that doesn't work, and it's been known that it doesn't work for a long time now, the exception being if you've got enough diplomatic contacts to tell where the wall will be attacked.
They're more for punishing the invaders. Block off the place where the barbarians breached the wall, and pin them to
Re:Ivy League = theroy loaded classes with skill g (Score:5, Insightful)
Other way around. If you learn the new hot skills, you can get a low level job where you'll struggle and work poorly because you don't really know what you're doing. Then when the buzzwords change, you'll be unhirable. If you learn the theory and fundamentals, you'll write better code more quickly and be able to easily pick up new technologies as they come along. Theory always trumps "real world" skills.
Re: (Score:2)
Unfortunately the guys making the hiring decisions (Score:2)
Re: (Score:2)
At the big companies maybe. Although the better big companies are smarter than that. At the startups not at all- generally because there is no HR department and the engineers/former engineers are hiring directly. Working at them, the only time I've seen someone hired for a particular skill instead of problem solving ability and intelligence is when we had a short, hard deadline and needed a subject matter expert for just a month or two.
Re: (Score:2)
Just to counterbalance this, I recently switched from doing academic physics research to a programming career. Now I'm a senior software developer with a wide variety of experiences (currently Android internals). I've taken exactly one comp sci course: data structures. That course was helpful but habitually writing, reading, and debugging code has taught me most everything I've needed. Reading code is very important, as is starting programming at an early age and applying it to whatever you're doing. Learni
Re:correction (Score:4, Informative)
Cathedral and the bazaar isn't RMS' idea, that comes from Eric S. Raymond. And it's not about real world vs. theory -- they are both real world and exist in real working popular products.
And, crucially, RMS' work was used as an example of the cathedral. Linux was, of course, the bazaar.
Re:correction (Score:5, Insightful)
And theory is just that.... theory. Any academic approach will fails 90% of the time in the real world, hence RMS's bazaar (real world) vs. cathedral (theory) analogy.
Of course "pro-theory" advocates has a scapegoat: in the real world; if you didn't do it right, it's because you didn't follow the theory as most academics would say (e.g. Agile's "you didn't do it right" excuse). The irony....
Let me illustrate the difference between theory and "real world skills" on solving any problem which is equivalent to finding shortest path in a graph. There are three basic algorithms to solve that problem: depth-first search (linear-time, only works if the graph is a tree), Dijkstra's algorithm [wikipedia.org] (O(m+n log n) where "m" is the number of edges and "n" is the number of vertices, works on any graph as long as no edges have negative weight) and Floyd-Warshal algorithm [wikipedia.org] (cubic time in the number of vertices, works even with negative weights and detects if the graph contains a negative loop, in which case the shortest path is undefined).
Somebody who knows the theory will inspect the specific problem he's trying to solve and choose the fastest algorithm from the list above that will work with the data. There are lots of reference implementations around so writing those about 50 lines of code will be easy.
Somebody who doesn't know the theory but has lots of "real world skills" probably won't realize that the problem has a well-known 50-line solution that works in all cases and he'll hack together some poorly thought-out piece of crap that's too slow and fails spectacularly on data that don't match the coder's assumptions. As the time goes by and bug reports pile up, the mess will grow even bigger into a convoluted tangle of several thousand lines of code that only the best and bravest dare to maintain.
Re: (Score:2)
Somebody who doesn't know the theory but has lots of "real world skills"
He will probably just resort to A* in every case.
Re: (Score:3)
In fact this is precisely why I wish there were something like a comp.sci wiki. A lot of this knowledge should be easier to access for people who didn't need a full degree to get where they are but realize they have a problem to solve and need a better way to do it than posting their current code on stackexchange.
Re: (Score:2)
There's always the problem of knowing what to look for. While I was working on my master thesis, I came up with a special graph property which would help me solve the problem. When I submitted a paper about the main problem to a conference, two of the reviewers pointed out that the graph property is already known under a different name (but luckily, nobody used it yet for what I was doing). I talked about the problem to a lot of people in my department but none of them, including my advisor, have heard abou
Re: (Score:2)
I see people who do O(n^3) problems quite a lot. They don't necessarily intend that, but there's an O(n) library function that gets called in a loop, and that gets called in a loop, and the programmer never gets around to figuring out why things are so slow. I have seen some people realize why it's slow, but they refuse to fix it because they refuse to write a routine if a library routine does the same thing (I've seen someone argue vehemently that STL's maps were proven to be the most efficient they coul
Re: (Score:2)
The ironic thin is if you actually talked to the people who wrote those maps (who are generally pretty good programmers) they'd be on your side of the argument. The STL was written to be good enough and to be as generic as possible. There's a ton of speed optimizations that can be done if you're willing to make a few assumptions or a few different tradeoffs. Or just willing to simplify the STL API and drop parts most people don't need like allocators.
Re: (Score:2)
Agreed. At my last job, I often interviewed candidates for C++ development positions. I asked a number of questions around maps.
Re: (Score:2)
The majority of developers will also never need to do anything that involves a lot of thinking. And as time goes on they may wonder why it's getting harder and harder to get a job, or why they're always stuck doing pretty simple business apps.
Re: (Score:2)
And the vast, vast majority of developers will never need to know that. Most developers out there are doing pretty simple business apps that back up to a database....
Oh, believe me they will. And they'll happily run off a cliff when they come across one of those problems where they need it because they won't even realize they do need it. How do I know? Because I also write those "pretty simple business apps that back up to a database" for a living and I've come across such problems several times just in the past year.
And any developer who finds himself needing to find the shortest path is going to google "shortest path algorithm" and guess what the very first result is...
Really? I'll give you a little more real-life example: You need to write a program that will manage consultant assignments. Your company has a handful of s
Re: (Score:2)
And you fail to understand the concept of an example. And the use of an example that everyone is familiar with (who, that has studied computer science, isn't familiar with the travelling salesmen?). The point the GP is making is that you need a semblance of theory (whether trained, or not). Yeah, you can google for an algorithm, but can you understand it? How does it work. Why does it work. What's its complexity? What's the worst case complexity? How do you tell if the algorithm is a good fit without some u
Re: (Score:2)
No. Years of study in order to implement the ultimate type safe language is absolutely useless.
Or it lands you a job for $250k at Google/Microsoft research.
Re: (Score:2)
Hell, I made more than that as a programmer with just a B.A. in Econ.
Good. When other programmers make more money, it raises up the salary for all of us.
Re: (Score:2)
Re: (Score:2)
Re: (Score:2)
Re: Ivy League = theroy loaded classes with skill (Score:2)
Re: (Score:3)
No. Just straight up no. Any idiot can learn how to fumble their way through a programming language's syntax and API (albeit it may take them a while in some instances), but if you want to actually be a real computer scientist or software engineer you need the theory. I've been programming for 10 years now, 3 of it beyond getting my bachelor's degree and the code i write now is worlds better namely because of the information I learned while working through my BS in Comp Sci.
Re: (Score:2)
Disagree. This theory is MORE important than the particular skills. Because that fad language you learn today may be ignored in 5 years, or 10, or 20. But the theory still works. We have hundreds of thousands of code monkeys who write crappy code but very few who write good code. There is no CS class I've taken that has turned out to be pointless; and I took every one of them except databases and VLSI (and those two are useful also).
Even if some class is pointless as far as skills; the whole point of u
Re: (Score:2)
We have hundreds of thousands of code monkeys who write crappy code but very few who write good code. There is no CS class I've taken that has turned out to be pointless; and I took every one of them except databases and VLSI (and those two are useful also).
Anyone worth their salt will be able to figure out the how & why just by doing things and doing a bit of thinking. These code monkeys who write crappy code would be just as incompetent if they 'learned' (they'd just memorize facts, because they're unintelligent) the theory, because they're not intelligent enough to understand it or apply it.
Re: (Score:2)