- Feature Articles
- CodeSOD
- Error'd
- Forums
-
Other Articles
- Random Article
- Other Series
- Alex's Soapbox
- Announcements
- Best of…
- Best of Email
- Best of the Sidebar
- Bring Your Own Code
- Coded Smorgasbord
- Mandatory Fun Day
- Off Topic
- Representative Line
- News Roundup
- Editor's Soapbox
- Software on the Rocks
- Souvenir Potpourri
- Sponsor Post
- Tales from the Interview
- The Daily WTF: Live
- Virtudyne
Admin
I wouldn't want to get a doctorate level degree in Cuba... in most American schools they PAY you to get your doctorate (not that you would know that since you're so anti-establishment)
Admin
There is quite a difference between programmers and computer scientists. A degree in computer science doesn't make someone a programmer, nor does being an experienced programmer make someone a computer scientist. Both have the ability to learn to become the other, but please don't get the two confused.
Admin
OMG the maid used AMMONIA BASED CLEANER ON MY SCREEN
aaaaaaagj
Admin
I assume by programmer you mean software engineer, rather than just "one who programs", which certainly describes a computer scientist. Dunno about the rest of the world, but in New Zealand a "computer science" degree entails not only computer science itself, but also software engineering. There are plans to make the two into separate majors. I'd be interested to hear how it works in other parts of the world.
Admin
<FONT face=Georgia>LOL, they used to do that it in the past where I work. I was the first one to bring it up to them (I'm glad I speak Spanish too). In order for them to actually comply with my request, I had to tell them something crazy, like "The computer screen melts a little every time you clean it with your glass cleaner". [:D]</FONT>
Admin
That's more than a little disingenuous. You don't get paid to get your doctorate. Rather you're able to offset the cost / suplement your income by being a tutor / lecturer / TA / what have you. It's not even remotely the same thing.
Admin
I almost completely agree with you. I've been a hiring manager quite a while now, and I can safely say that the candidates never put themselves in my shoes.
Well, most employers...
Why does it have to be 100%? Perf reviews are a great tool. They let you help bring underperforming people up to speed (or elminate them) and enables you to make a decision to bring in new (read better) people. And no, you don't need to be "extremely skilled" to do it well. The key is not to wait until the end of the year, then try and remember alll of your team's good and bad qualities. Simply make notes about each person as things happen, fuck ups and triumphs. One of the best times is after a code review.
When I go through a stack of résumés, I look for the following, in order:
Admin
Yeah, most employers...
You're right, it doesn't have to be 100%. And it's not just a great tool, it's an essential part of any functioning company, and the more involved your performance evaluations are, the better. Close examination of the results each team member is getting is always better than generalised testing such as end-year evaluations or even drug testing (I hear some US companies are testing for nicotine now?). The only point I was trying to make with my post is that since there are no completely effective asshat-prevention measures, you need to take as many partially effective measures as you can, such as checking qualifications.
True, that was a bit hyperbolic on my part.
Looks like a perfectly reasonable list to me. As someone with a good working knowledge of software development and the software development industry, you're able to assess many factors which are more relevant than just qualification all by itself. Right? Qualification comes into it when there's not much difference between two candidates (or perhaps you don't have many candidates to choose from), but it's hardly the key factor.
And yet, when you choose the guy with the qualifications over the guy without, people will call you a short-sighted idiot...
Admin
I'm so sick of people thinking that they are 'there'. Its annoying when people at college think they know everything now, and its even more annoying when un-educated people think they know how to program because they got some experience with some programming paradigm that is trendy this decade.
For all those 'experienced' but without college degree, claiming it makes no difference. A few simple, easy questions, any properly educated person in computer science should be able to answer:
1. The fastest heuristic searching algorithm is A*, what are the constraints on possible evaluation functions you can use?
2. Whats the minimum algorithmic complexity for parsing a context-free-language? (like for example XML)
3. Whats the difference between parrelism and concurrency?
5. Which dessign pattern would you choose to solve a sudoku puzzle?
4. Imagine that you need a function that given a machine-integer, computes the faculty of that machine-integer. What would the minimum algorithmic complexity be? (warning: this might be a trick question!)
5. For which kind of keys, is a hash-table faster than a binary-search tree?
6. Why do all 3D engines represent a vector (of 3 coordinates: x,y,z) as a matrix of 4 by 4? Whats the benefit?
7. What is the difference between normal order evaluation and in order evaluation? (that is: strict and lazy evaluation?). Which programming languages are strict? Which are lazy?
8. What is the most common learning algorithm used for a spam filter?
Now, I know you don't need this kind of knowledge everyday. Most programming is very simpele, some gui-mock-up, some data-base, a little bit of state-transition. Anyone can do that and 80% of the work out there is just that. But when you need to write a chat-bot, a web-page crawler, a resource-planner, a 3d engine, a spam filter, a speech-recognition filter, a distributed raytracer, a compiler, etc. you gonna need formal training.
Admin
Everyone debating the solution to the combinatorics problem needs to listen to this man. He has it together. The people who are suggesting (24!)^2 are taking the order that you connect the wires into account, whether they realize it or not, so they would count the sequence (A1 -> B1, A2 -> B2) distinct from (A2 -> B2, A1 -> B1).
Admin
Read: RA. Nice try though.
Admin
At my school at least, a software engineer is someone who deals with designing software. IE talking to customers, gathering requirements, designing the structure of the program etc.
A computer scientist is someone who learns about the theory behind computing. What are the benifits of algorithm X over Y? Why should you try to avoid different problems (NP, etc)? How does one go about writing a compiler. That is, a software engineer designs SOFTWARE, and a computer scientist learns how to design ALGORITHMS. At least that's the major difference. There is of course overlap and someone in CS can learn everything from the SE department and still only get a CS degree and almost vice versa (the SE department requires that students have a minor in some non-technical field as a "field of expertise" wherein they can speak intelligibly to end users where the CS program has no such requirement but one could do it). That is in general the basic concept. NOTE: There was no mention of coding in these descriptions. In BOTH cases the degrees are in general language agnostic, in that you learn tools and benefits, as opposed to how to do it in todays buzzword.
Admin
I don't have a CS degree, but I have a math degree, about 10 years of 80-percent-simple-stuff programming experience, browse Slashdot and used to browse comp.os.linux.*
Google and Wikipedia seem to turn up 3, second-5, 6, 7, 8 in short order, and the above background is enough for me to grok the answers (I think).
First-5: depth-first search, and a sensible grasp of different solving methods and which ones involve the least backtracking.
How'm I doin'?
Admin
Should I?
I kind of agree with you... but then in another sense I don't. I too dislike people who "wear the juice", but I'd disagree with you on the real benefits of a formal education.
I have a friend with a degree in chemistry who couldn't tell you the first thing about the specific properties of just about any element on the periodic table, even though he'd use that sort of information daily in his work.
The way I see it, it's not important wether I know what order of complexity a given parser is for a given language type, it's that I know, when building or using such a parser, that I should be thinking about what order of complexity it operates in. It's not so important that I know exactly what design pattern to use for solving a sudoku puzzle, it's that when someone says to me "design a program that solves sudoku puzzles", I think about design patterns, rather than some naive, brute code approach.
I don't think you can really describe most real-world programming as simple, you can always put as much expertise as you have into any task you're assigned. For example, you (or your employer) might think that making a gui-mock-up is simple. In my work, ease of use is probably the most critical factor in software design. I could go on all day about usability heuristics, feedback mechanisms, types of user error and program flow, and I often have to. It's only "simple" if you want a simple product.
Admin
Re the previous: I'd be happy to post explanations later (to prove I'm not just blowing smoke out my ass), just right now there's other stuff going on and I don't have the time.
Admin
Word to your manager. It didn't take me many interviews to figure out that the words "certified" and "professional" anywhere near the top of a resume are usually a negative indicator. If you have any non-academic certifications, put them near the end.
On the question of degrees, I went into the software industry with a CS minor and stayed there for six years before getting a CS degree, so I think I have some authority to say that there are many useful skills that people are unlikely to pick up on their own. Competent multithreading is one. How to design an API for other developers is another.
Admin
Depth-first-search is an _algorithm_ not a design pattern. The design pattern in the case of the sudoku puzzle would _obviously_ be modelling it as a constraint-satisfaction-problem. Any sudoku puzzle can be translated into a set of equality constraints. Just like SEND+MORE=MONEY puzzles, or the 8-queens-problems.
At this point its easy. Any decent programmer has a bunch of default search-algorithms laying around, so at this point you would be trying out all the different algorithm (that you can reuse later for different projects, _because_ you represented the problem domain as a set of constraints)
But depth-first-search would definately not be my pick. This is a very typical situation where conflict-backjumping will give you much better results. With depth-first-search the performance will depend very strongly on how you order your constraints. If the problematic constraint gets evaluated last, dfs is as slow as brute-force. Rather you should adjust the order, to put the constraints causing problems up front, while you're searching.
And about Wikipedia and Google giving you some start points based on _my_ terminoly is very misleading. In the real world problems don't present themselves to you together with a bag of related search-words.
Secondly, and this is more shocking: the above are no puzzles. They are so incredibly simpel and corner-stone of the whole foundation of CS that you really should be able to answer them immidiately. Sure, knowing 2 + 2 = 4 doesn't prove you're great at math. But those that need google (or, in the case of 2+2, a calculater) to get the answer aren't ready for anything more complicated than this.
Not that it is a problem: like I said, the majority of programming is simple. Simple as in not-complex and not as in not-obfuscated. A lot of programming is obfuscated and it takes discipline to deal with it. Like Web-programming, when you're working with 2 - 4 languages at the same time. (Javascript, Php, Sql, XHtml) .. but its not _complex_. It takes organization and discipline and thats an important talent, but it doesn't require formal education, like the harder problems in the field do.
Admin
When I'm looking at a project, I don't care about piss-ass semantics, I only care about getting the job done without having to rebuild it a year or two down the road. Can someone find the appropriate technical studies to know what the best approach is to a problem? Or does he just try to seduce his manager into submission?
Admin
Ah, Mr. Master, Sir, I think that'd be a down-cast. 'cause String is (presumably) a subclass of Object, right? So, taking an Object and pretending it's a String would be moving down the hierarchy. An upcast would be okey-dokey, since a String makes a perfectly good Object, see? Pretty much a non-issue, in fact.
Admin
Or you have to deal with code written by some asshat who never heard anything about const.
Admin
First of all: I like to note that i don't want to offend anyone. I might have come on too strong, with the whole 'educated programmers' thingie. The art of solving the problem and the art of selling bad-products to dumb-customers are two distinctly different skills. Most of the time, you make money by giving people what they 'want', rather than what they really 'need'. I just resent the fact that people without the proper education speak about a 'wtf' while some of the wtf-posts here are the like the 12-year-old telling the 10-year old he's being childish.
Precizely, because that you can look up. I may rather hope he studies the laws and assumptions behind the chemistry science. But your comparision is wrong. The periodic table is better viewed as the api of chemistry. Wether he actually knows the laws that governs the given entities will determine how much your friend can actually do with chemistry.Take for example, any SQL related post. Creating Sql through Strings itself is already a WTF. The actual query, ugly or not, is quite irrelevant: untyped sql itself is for morans. Which makes those complaining about the actual phrase of the query quite ehm .. entertaining. (thinking they know it all, while they know shit)
We agree on this as well: it is not important in general that you know the answers, its import that you can find the answer. However the example questions I posted here are very, very trivial and all touch some of crucial foundations behind CS, which is why I would expect most to know these answers without googling. Maybe not instantly, if they have no genuine interest in the formal foundation, but still within a few minutes of consideration.
Secondly, to answer the question, the complexity of a parser of a context-free-language, is exponential: o (n^c) where n is the length of the input and c is a constant. It has to be exponential because context-free-grammers are as expressive as finite-state-automaton: it represents level 2 of the chomsky hierarchy of expressiveness. Most type systems of programming languages exist in this realm. This makes them decidable: (i.e. the procces of determing wether or not a sentence is part of the language, will always terminate)
I think you mean to say: Its very hard solving a badly defined problem.
If so, you're right. I claim the implementation of the solution is simple. Not the aquiring user-needs from your brain-dead-customers part ... that is very difficult and time-consuming social skill. Not a computer science skill though.
The user-interface is the perfect example of: easy to implement once you know what you need, difficult to know what you need. (or better put: what you customer is accustomed to, and thinks he/she needs, which is usually, something way different from what they really need.
"You can always put as much expertise as you have into any task".The level of expertise will determinte how well the solution scales in the future and how much time and effort is required to implement the solution.
Understanding higher-order-functions within the lambda calculus seems a very 'expert' thingie to do. Until you apply that knowledge using c++ templates. Then you convert a big project that would take 3 months to something you can mock up yourself in a couple of days.
Off course if you're that far, you problely won't even touch c++ anymore, but rather stay in the safe world of something like Haskell.
So lets refraise what you said: "You can always put as much expertise as you have into any task" into "You can always put months more work in any task if you just don't have the expertise".
On this forum VB is often made fun of. Likewise, any one with any real education, will think the same of C#/Java/C++/Python ... I mean come on,
.. delegates as a sort of lambda for dummies (c#) ?
.. the superfluous cast operator in java .. they want to call their language static, but their type system is too weak to even describe the identity-function, so they end up 'casting' (deffering type checking to run-time, slowing both development and run-time-performance down).
.. Or just don't implement static typechecking and market it as a feature (python). There are thousands of educated programmers out there that could write a static type-checker for python without changing any part of the semantic or syntax. I really do wonder how many (so-called) programmers out there believe that 'dynamic' programming languages would actually require type annotations, to be statically type-checked. 'Dynamic Programming Language' just means: you could write a type checker, but I (as the implementor) couldn't cuz I have no skills!
Admin
Chomsky never dropped by my desk to debate the finer details of implementation of any project I worked on. The patents I've been issued (which were non-trivial, for those who care) didn't worry much about the finer academic labelling nuances, either. But someone who only quotes the academic crap has a greater than 90% chance of never having worked on a real-life large-scale project in his (or her) life.
Care to name any projects you've worked on? Personally, I've worked on telephone switches, Transport gear, access equipment, and more. Not a single "theory" exercise among them.
Admin
Now you're just being offensive. If you want to make an argument, shouldn't it take just a little bit more, than pointing and saying its BS ?
I'm dead serious here, and have all the patience in the world to explain and prove that its not BS, just because you don't get it.
Yeah, ok, but maybe you don't care about semantics, when you hack up some PHP for your blog. But thats because you're depending on all different levels of software support created by much better programmers than you. Things like the database engine, where the piss-ass semantic do matter. Or things like referential transparity, so the database engine can improve dumb queries from dumb programms 'that don't care about the piss-ass semantics': if the different selectors and functions in SQL are deliberately referential transparent: so we can re-order and plan the actual execution of the query. Formal properties are not piss-ass-semantics: they actually provide the framework for people that are so un-educated and dumb that they think that formal properties have anything to do with semantics. (rather than the other way around)
"Getting the job done without having to rebuild it a year or two down the road. "
"Can someone find the appropriate technical studies to know what the best approach is to a problem? "
This procces is called abstraction. The trick is: many problems have a simelar structure. By mapping those problem to a common domain, you can solve them once and for all. Just like I did for the sudoku puzzle: the mere realization that it can be represented as a constraint-satisfaction-problem means that the actual 'solving' of the puzzle uses the same generic algorithm as the problem of placing 8 queens on a chess board, or the SEND+MORE=MONEY puzzles do.
Yet you don't seem to understand this: you just call it BS and then you say:
"Getting the job done without having to rebuild it a year or two down the road. "
In the case of the sudoku puzzle: represent it as a constraint-satisfaction-problem. That is, you represent it as a set of equality constraints with free variables. The order in which you 'try to fill in' the variables (and possible backtrack) can than be seperated from the actual problem. Now, you don't have to rebuilt it a year or two down the road, when the rules of the games are slightly changed.
You can reuse most the code for alle CSP like problems; there even exist CSP programming languages that have this built-in, like Oz.
Then again, I can understand you calling it BS. It must be difficult to seperate true _formal_ jargon from the marketing buzzwords bullshit, if you're just a script-kiddie.
Admin
Ok, I might as well throw in my two cents as well...
If you consider the 24! case, a lot of your cases are overlapping...
i a1-b2, ii a2-b1...
i a2-b1, ii a1-b2...
Therefore this is counted twice. 24! wont do that.
However, for the case that a particular cable is not connected one calculate by the number of cables.
24! + (24! - 1!) + (24! - 2!) + (24! - 3!) ... ( 24! - 22! ) + ( 24! - 23! )
(I am not counting the case for no cables used, as this would not be 'connected')
However, (again), what's to say that you can't connect a cable on a hub to another port on the same hub?
for example, the configuration a1-b1, a2-a7, etc... And more importantly, should those configurations even count?
Admin
_This_ should be today's WTF. Why didn't he just say "We don't want our employees using our time to improve their credentials in case they start
asking for more pay or get headhunted by our competitors".
As far as I am concerned the only one non-negotiable when it comes to
job-hunting is support for some sort of employee-development program.
Admin
I ask again: what large-scale real-world projects have you ever touched?
Admin
Yeah, except for those people who need or want money.
If you were really confident of your understanding of programming language concepts, you wouldn't be here rolling your eyes about the syntax that industry languages use to express those concepts. You'd accept the syntax and get some work done. Just a tip from someone who has a "real education."
Admin
So true...
Admin
Well thank you, you most likely mean to offend me, however as i'm in my second year of my CS study, it doesn't. I started my ranting off not claiming that I know much, rather making a point about how no-one knows everythign and how it annoys me when some one without knowing anything of the formal semantics, claims those formal properties are irrelevant.
I'm actually quite interested in those patents. What did you 'discover' that was already implied by the turing machine? Or is it not a software patent? I'm quite interested to see what some one with your Point-Of-View actually considers a candidate for a patent. Lets hope is not the triple-mouse-click! (it can't be the double-mouse-click! some other idiot already got that one!)
No seriously, you can't make claims like this, without being a little bit more specific. At this point it could be anything from a patent proving turing&goedel wrong, to a patent about looking at a computer screen. Please be more specific!
I suspect this is actually true, although I disagree with the fact that you claim i'm "quoting academic crap". I merely use formalism to communicate what could otherwise not be communicated. And just because researcher tend to work in small groups experimenting with ideas and prototypes rather than creating a pragmatic application that the corporate world needs, does not mean they're not the most important link. 15 years ago talking about object-orientation was also considered "quoting academic crap". Maybe there was even someone that said: "I don't care about piss-ass object-semantics".
The reachers lay the foundation you work upon and you take for granted.
Looking at all the projects YOU'VE worked on, lets make a list of technologies that were based upon acadamic research.
Looking at #1 , telephone switches. You're not being very specific: but my guess is you used finite-state-diagrams. Either with or without you realizing you were. If you used whole heaps of nested if-statements, rather than an explicit finite-state-diagram, it was problely a bitch to debug, and scaled poorly into the future. If you did use finite-state-diagrams it wouldn't have been large-scale project anymore, now would it?
Transport gear? Yeah ehm, what did you do? Determine where what gear would be transported to? Or just logging the information, i mean, you forgot to mention the problem you were solving.
Access Equipment? Same question.. what problem did you solve? I'm sure there are single theory exercises amongst them. Just because you didn't realize it, doesn't mean its not the case.
Lets look at this one quote again:
Lets rephrase that into:
Someone who doesn't understand the acadamic crap has a 90% change of having worked on a project that grew larger and larger due to sheer incompetence.
I don't have the large-scale experience like you claim to have to back it up, and by now it fair to admit it. Although given the fact im in my 2nd year of my Bsc you could have guessed that by now. I have worked and have done my fair share of uninformed programming before I went to college. I actually created a website that maintained over 20,000 student accounts without even using a database (having no experience or education at this point, other than self-training). It started very silly with writing files to disk for every record and searching just meaning: go through all the records. Later I added indexes when it got too slow. Eventually I even used special monitor-files to prevent collision and data corruption. It was ugly, but it worked. I just didn't know any better at the time. At that point in time, the only ACID i knew was a drug.
The moral of the story: you can always get it to just 'damn' work, but in the proccess you'll find yourself reinventing a lot. Education gives you
a) a vocabulary so you can communicate these 'inventions' (at which point you discover its not your invention, its just common sense, and everybody is doing it that way)
b) more free time, because at least from an implementation point-of-view, you do it right the first time. If the demands keep changing this doesn't change anything though.
c) much much much better programming languages than the ones the market, scriptkiddies and pragmatic-professionals (hey, i just invented word, just to describe you) use. Like Haskell :-)
And as a last remark: Just because I think formal properties matter, and I talk about it, doesn't mean i'm quoting, nor that its acadamic 'crap'.
You recognize fools by judging what you don't know. I don't know enough about you to say you're a fool. But you seem to know little about that acadamic 'crap' .. In the netherlands (where i'm from) .. we have a saying:
That what the farmer doesn't know, he doesn't eat.
Admin
Its not all syntax. Not until recently Java didn't even properly support polymorphism. Putting a cast in everywhere is not just a matter of syntax, its a truely different semantic. When they finally fixed that bug, they called it a feature, and acted as if there hadn't existed programming languages with sufficient type systems before. They even gave it a new buzz-word-compliant name: generics.
I do accept the syntax and when I have to, i use it. My University makes it a sport to make me do home work assignments in Java that would take 20 to 30 lines of code in Haskell. You end up with 100-200 lines of Java code. The last of such examples was a program that compiles the lambda-calculus to a simplified-stack-machine-format. But i've had something quite comparable when we had to write a raycaster in Java.
My point was just that a C# or Java developer shouldn't make fun of a VB developer. C# and Java are both designed for low/average users as well, just not as low/average as VB.
But, given your real education, wouldn't you agree, that for a large part, some of the industry large-scale real-world projects are so large-scale because the wrong level of abstraction, in other words: the wrong programming language and semantic framework is used ?
Admin
Consider Hub A: Choose ONE of 24 possible ports. Factor of 24, call it connection i. Next choose ONE of 23 possible ports, factor of 23, call it connection ii... 24*23*22*...*1 = 24!.
Consider Hub B: Take connection i, choose one of 24 possible ports. Take connection ii, choose one of 23 possible ports... 24*23*22*22*...*1 = 24!
Therefore 24!*24! = (24!)^2.
Goddamn I hate combinatorics.
-- W
Well it all depends on what you consider to be different combinations. If the individual cables are part of the combination (port a-11 connected with cable 17 to port b-5) then the number will be 24!*24!. OTOH if the cables are considered abitrary (cable 17 is no different than cable 18) then it is only 24!
Yours consideredly
Thomas
Admin
"And, no, if you fully connected them then you'd have more than 24! since you can pick the port on A as well. It would be 24!^2 since it's 24! ways to plug in 24 wires into B and then 24! ways to plug the other ends into A." Erm, no, you're counting every combination 24! times. You select which port goes to port 1 on B, then which goes to port 2 on B, and so on. 24!.
Admin
GOTO considered harmful...
Admin
This is so true. When working in the City (banking/London), I would give people a C++ test and other exercises as part of their interview process. We could eliminate most interviewees, contractors particularly, at this stage.
At ionCube we took this a stage further, and send people a C/C++ and PHP programming exercise *before* we interview them. This doesn't guarantee that they did the work of course, but most will and we can save time on wasted interviews for 90% of candidates this way because most people send in junk.
Admin
Well, yes, that's what the "which solving methods involve the least backtracking" bit is about. Namely, which constraints can be satisfied most quickly. And not just the constraints that derive directly from the problem definition, but also those that arise indirectly from the pigeonhole principle, and from simple two- or three- or etc.-step chains of deductive logic, and and and. Things get somewhat less obvious there, though once again a few minutes with G and W will prevent you from reinventing well-known wheels.
Again, that's what I meant in the first place. I think this is an issue of terminology rather than actual intent.
And I think this represents a disconnect between your idea of CS and a lot of other people's idea of CS. It's not just that 80% of the work is non-complex, it's that 80% of the people will stick to non-complex work (but it is obfuscated, as you note, and we're unlikely to run out of it any time soon). Most people will never have occasion to write their own 3-D engine, spam filter, compiler, etc etc etc. (On the gripping hand, I honestly feel that I could write a Bayesian spam filter based on the Wikipedia article, at least after spending some more time studying how the individual per-word probabilities are merged into a single per-message probability.)
Would you classify proper RDBMS design as complex? I've gotten decent at table and view design over the years (in spite of college, not because of it; my DB teacher was an idiot), but still only grasp the basics of index optimization (I don't work on systems large enough to require the subtleties).
Admin
I have no degree - I simply didn't have the opportunity. (No "student loans" in my day). As a consequence, I make far more than my three closest friends (all of whom hold BSc, one also holds an MSc) combined. *shrug*.
Admin
If your degree was worth anything, you'd realise that only applies in certain localities. I can't be denied that loan because of my income - but I can be denied it because of where I live.
Admin
Meh. I can see both sides. It's a hell of a lot better to have someone with a ton of practical experience, and, having been through a CS program, I know that practical experience is something you won't get there.
On the other hand, a lot of the abstract stuff they drive into your head in school is really nice in the real world. Most self-taught coder's I've worked with have a somewhat unique programming style, and sometimes it's unique in a good way, but more often it's not, and it's a bitch to work behind.
People here are always complaining about Php and Perl...The reason so many people hate those languages, is because the code is very often written by people who taught themselves how to code. It may work, and work well, but functionality comes before correct programming, and it's often unmaintainable.
Admin
It appears that one of the things that going to Uni. does teach you is the ability to take constructive criticism..
Admin
My attempt at solution...
We have two hubs, each has 24 ports, we want to connect them with n cables.
So we choose n ports on hub A. (24 \ n) ways to do it. That was supposed to be the Newton symbol.
Then we choose n ports on hub A. (24 \ n) ways to do it.
Finally we connect the ports and any permutation is valid. There are n! permutations.
So the final result is:
A special case with no connections: n=0, obviously 1 way.
A special case with 1 connection: n=1, 24^2 solutions.
A special case with 2 connections: n=2, (23*24/2)^2 * 2 solutions.
A special case with all ports connected: n=24, 24! ways to do it. I'd like to see that in real life.
Captcha: algebra. Funny :)
Admin
False, returning the first node at hand is quicker and dare I say, more heuristic as well.
Over which parameter?
Parrelism is a misspelling, for one thing.
Pen and paper.
O(1). Machine-integers are bounded.
None. Hash tables are a special case of binary search trees.
They don't. Some do represent them as 4 by 1 matrices though.
There are hardly any of either, just implementations.
Neural network.
Admin
Interesting; not sure whether the post was showing answers with wrong questions, or questions with wrong answers.
Wrong. You can learn about the two data strctures and their differences at http://en.wikipedia.org/wiki/Binary_search_tree and http://en.wikipedia.org/wiki/Hash_table
Probably wrong. It's probably bayesian based statistical filtering, and which is almost certainly more successful than a neural or genetic approach.
Admin
No, he spelled it "Brilliant", not "wrong".
Admin
Although given the fact im in my 2nd year of my Bsc you could have guessed that by now.
Yep. That explains it.
Look. Even if you go on for your PhD, you're not going to remember a single damned thing from that list of questions you posted. You'll know a heck of a lot about a narrow segment within your particular field, but when it comes to the broad algorithmic and systems knowledge you pick up from a CS program, I guarantee you it'll fade. I doubt anyone who's 10 years past their BSc could answer most of your "extremely easy" and fundamental questions from memory, simply because you'll never use that knowledge in your day-to-day life a computer scientist. If you used those questions as screeners for a job interview, the only people you'd hire would be bright (but inexperienced) recent graduates.
However, one thing a good CS grad WILL retain is a familiarity with the issues involved in crafting an original solution to a problem. Consideration of things like algorithmic complexity, tight-loop optimization, design patterns, experimental performance tuning, and (most importantly) where to go in order to research your problem are what separates a computer scientist from a programmer.
For example, I haven't a clue what A* is (something to do with graph traversal, but that's about it). However, I do know how to abstract a particular problem to a generic one like graph traversal, and I know a few good books I can pick up to refresh my memory.
I think you're focusing too much on the particulars of a CS program, and less on the general skills that one learns from it. You're like a programmer who fixates on language and API familiarity as an indicator of skill.
Admin
Certifications + Experience + Attitude = Great
Admin
WTF!
It's just 24! combinations. This is first semester discrete math.
If anyone else wants to refute the 24! answer, please enumerate all possibilities. Until then, we'll just assume the real mathematicians are correct.
Admin
Or you're inside an object which is being only logically const, and your compiler is being bitwise const by not supporting "mutable"...
Admin
Sorry about forgetting to quote.
WTF!
It's just 24! combinations if you connect 24 cables from A to B and A and B each have 24 ports. This is first semester discrete math.
If anyone else wants to refute the 24! answer, please enumerate all possibilities. Until then, we'll just assume the real mathematicians are correct.
Admin
Wrong. You can learn about the two data strctures and their differences at http://en.wikipedia.org/wiki/Binary_search_tree and http://en.wikipedia.org/wiki/Hash_table.
I can't think of a method of doing memory lookups without it essentially boiling down to a binary search or some slower method. Even if you do it in parallel you have to split and join the signal log2(n) times.
Probably wrong. It's probably bayesian based statistical filtering, and which is almost certainly more successful than a neural or genetic approach.
Tsktsk. Did someone mention computers?
Admin
Uh, the physical specification.
But I guess it would take a "certified" CISCO network engineer to do such hard-core work as re-wiring Ethernet patch cables.