Tag Info

Hot answers tagged

134

Why a computer science degree?: I worked with a developer who stored thousands of items in a HashTable and then only iterated through the values. He never accessed through a hash. He obviously didn't know how a HashTable worked or why you would use one - a CS degree might help with that. When working with regular expressions, it seems easier for people ...


109

Back in those days, developers were working much closer to the metal. C was essentially a higher level replacement for assembly, which is almost as close to the hardware as you can get, so it was natural you needed pointers to be efficient in solving coding problems. However, pointers are sharp tools, which can cause great damage if used carelessly. Also, ...


94

Don't worry about meeting some ridiculous concept of "skill" so commonly heard in such statements like: All programming languages are basically the same. Once you pick up one language well you can pick up any other language quickly and easily. Languages are just tools, there's some overarching brain-magic that actually makes the software. These ...


85

In 40 years, I expect .NET and C# to be nothing more than a grievous pile of legacy code on obsolete operating systems. But the fundamental computer science concepts will be just as lively as they were when Shannon, von Neumann, Knuth, Dijkstra, Hoare, and the others dug them out of the grounds of formal logic and math...over 40 years ago.


74

Someone much wiser than I once said: The nun Wu Jincang asked the Sixth Patriach Huineng, "I have studied the Mahaparinirvana sutra for many years, yet there are many areas i do not quite understand. Please enlighten me." The patriach responded, "I am illiterate. Please read out the characters to me and perhaps I will be able to ...


56

No. The reason it seems like quite a few self-taught programmers "make it big without a degree" is the same as the reason why it seems like all people who make it to 120 lived on cigarettes and bacon and drank a bottle of whiskey every day: exceptions draw a lot of attention. Good self-taught/self-made programmers are actually quite rare. I've inherited ...


52

Knowledge of specific platforms does get out of date pretty quickly. However, if that is all you are getting out of your education you are doing something wrong. The theoretical stuff that makes up most of a good CS course is not tied to a specific technology - a lot of the basics have remained much the same for decades already.


51

Disclaimer - I'm a JUG leader and writing a book on Java - so I'm biased :) At the time it was a perfect successor to C++ in that it mimicked much of the syntax that enterprise developers at the time were used to. The key difference is that Java lowered the bar for entry by taking away the need to directly deal with pointers and memory management. This is ...


50

If I have to choose just one bit, which is a difficult decision, I'd say go for the Big O notation. Understanding the implications of O(n), O(ln n), O(n²), O(2^n), O(n!) helps you to avoid a lot of expensive mistakes, the kind of which work well in the test environment but disastrously fail in production.


49

... how can I develop programming skills that can be applied towards all languages instead of just one? The key to this question is to transcend the language and think in not the language you are coding in. WAT? Experienced polyglot programmers think in the abstract syntax tree (AST) of their own mental model of the language. One doesn't think "I need ...


45

I found that diagrams were very helpful. Example: This sort of diagram helped me see that pointers were their own variable, but contained a value that was the location of another object, i.e. array or string. Also, when done in pencil, I could use it to trace my program on paper, or on a chalkboard/whiteboard.


44

"The average operation" takes place on primitives. But even in languages where strings are treated as primitives, they're still arrays under the hood, and doing anything involving the whole string takes O(N) time, where N is the length of the string. For example, adding two numbers generally takes 2-4 ASM instructions. Concatenating ("adding") two strings ...


43

There is a math ceiling. If you can't get math, you will never move into the really sophisticated areas in computer science beyond the math ceiling. Most basic business programming is under the math ceiling, however. If someone wants to be all they can be, they will have taken the math courses( Linear, Calc 1, Discrete, and Calc 2). And, as a corollary, ...


37

Is the content still valid today? I guess most theoretical stuff don't change over night, but is there some major points which does not hold today which I should be aware of? The content is logic and math. It doesn't change in any substantial way, not only over night. It will be valid forever.


37

“There are 2 hard problems in computer science: caching, naming, and off-by-1 errors”


36

I'm sure that having a big name school behind your degree will probably open a few doors once you graduate but after that what will keep the doors opening up is the experience you build working and the aptitude you have for whatever domain you're working in. Personally, I graduated from a state school, had no problems getting a job out of school and no one ...


34

I use almost all the CS I studied in school (*) every single day at my job. If you want to work in programming language design, search engine optimization, quant analysis, or any similar field, I suppose you could do it without a relevant degree, but it seems like an awful lot of stuff to have to learn on the job. I am not particularly highly educated given ...


31

When I first "learned" about pointers, I was sort of thrust in to it. My university had made the decision a long time before I enrolled to center the curriculum around Java, so when my Data Structures professor gave one lecture on C and asked us to implement an XOR-List with pointers I felt like I was getting in to something way over my head. I understood ...


31

ask him to tell you about his thesis project; you won't have to say another word for two hours


31

I think you need to differ. Java and other higher level languages did not remove pointers. What they did was to remove plain pointer arithmetic. In fact, Java still allows a protected and restricted pointer arithmetic: the array access. In plain old C, array access is nothing but dereferencing. It is a different notation, a syntactic sugar, if you will, to ...


30

Are you supposed to be helping them choose a major or helping them choose a career? While college curricula differ significantly among the disciplines, the career part is very hard to distinguish: Computer scientists spend 7 hours a day coding new software or debugging old software, and 1 hour online debating obscure theoretical concepts they never get to ...


30

I'm going to go against the flow here and say yes, you do have to learn C. I actually agree with the points in many of the other answers, but you make the very strong statement that I am very interested in learning all aspects of Computer Science but I want to believe I do not really have to know a specific language in order to understand most of ...


28

There are two distinct IT disciplines: Computer Science - is the discipline study of computers and computation using the scientific method. Software Engineering - is the discipline of designing and implementing software following proper engineering principles. The two overlap somewhat, but the distinction is really about desired outcomes of science ...


27

I don't think it's a copout, but rather an assertion that computer science isn't software engineering, it isn't programming -- it's, well, the science of formalized computation. In essence, it's math (in fact, many CS programs started off as applied mathematics programs). I think the problem lies more with industry than academia. Industry sees a CS degree ...


27

Things you should know Google wants to hire you! The life-blood of any software company is its employees and Google is no different. It's looking to hire the best and the brightest and the people conducting the interview(s) want you to succede just as much as you do. Google will do it's best to evaluate you as accurately as possible. It's their job. ...


27

This vastly depends on what school you get a degree from. Some schools are more skills-based, teaching things that can be put on a resume to get a job. Others are more knowledge-based, focusing more on abstract topics. They both have their advantages. A degree from a more skills-based school will make you more comfortable coming into a new job, since ...



Only top voted, non community-wiki answers of a minimum length are eligible