• concerned PHD student (unregistered) in reply to Djinn
    Djinn:
    mthamil:
    Anonymous:



    Ever hear of getting denied loans? I know I did!

     


    Actually, no.  There are certain loans (Stafford comes to mind, of which I am a proud holder) that are federally guaranteed, and you cannot be denied the loan on account of your income.  Also, if you WERE turned down for an income-based loan, chances are you can afford to pay for school yourself (although I admit you may have to re-prioritize your finances, and may not be able to afford Harvard)



    Either that or he had already screwed up his record somehow.  It just sounds like he has a chip on his shoulder.  I would even say that most of the people I know who have a PhD (professors that I have had) were not rich and had to put themselves through school somehow.  Yes, a lot of people with advanced degrees just slid by and are really idiots, but I don't think I'd want to live in a country that didn't value education as a qualification.


    Despite your snide remark about my credit, I looked up what ChiefCrazyTalk said, and that's often not even checked in those types of loans.

    If your utopian country that values education so much really valued education so much, wouldn't they make it easier for people to get into without putting them into debt? Would the same country decrease education spending, and increase military spending?

    Cuba has free doctorate level schooling. Not only for Cubans but for many people from around the world. That is a country that values education.


    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)
  • p. (unregistered) in reply to rbriem

    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.



  • circuit_breaker (unregistered) in reply to jbange

    OMG the maid used AMMONIA BASED CLEANER ON MY SCREEN

    aaaaaaagj

  • (cs) in reply to p.

    Anonymous:
    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.

    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.

  • (cs) in reply to circuit_breaker

    Anonymous:
    OMG the maid used AMMONIA BASED CLEANER ON MY SCREEN

    aaaaaaagj

    <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>

  • Achro (unregistered) in reply to concerned PHD student
    Anonymous:
    Djinn:
    mthamil:
    Anonymous:



    Ever hear of getting denied loans? I know I did!

     


    Actually, no.  There are certain loans (Stafford comes to mind, of which I am a proud holder) that are federally guaranteed, and you cannot be denied the loan on account of your income.  Also, if you WERE turned down for an income-based loan, chances are you can afford to pay for school yourself (although I admit you may have to re-prioritize your finances, and may not be able to afford Harvard)



    Either that or he had already screwed up his record somehow.  It just sounds like he has a chip on his shoulder.  I would even say that most of the people I know who have a PhD (professors that I have had) were not rich and had to put themselves through school somehow.  Yes, a lot of people with advanced degrees just slid by and are really idiots, but I don't think I'd want to live in a country that didn't value education as a qualification.


    Despite your snide remark about my credit, I looked up what ChiefCrazyTalk said, and that's often not even checked in those types of loans.

    If your utopian country that values education so much really valued education so much, wouldn't they make it easier for people to get into without putting them into debt? Would the same country decrease education spending, and increase military spending?

    Cuba has free doctorate level schooling. Not only for Cubans but for many people from around the world. That is a country that values education.


    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)


    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.
  • (cs) in reply to Snagglepuss

    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.

    Snagglepuss:
    I think people often misunderstand the position of the employer when it comes to degrees.

    Well, most employers...
    Snagglepuss:
    There's a whole science to performance evaluation, and what you need is someone extremely skilled in the practise in order to accurately identify asshats within your company.... So, we can see that performance evaluations aren't exactly going to be 100% effective.

    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.
    Snagglepuss:
    ...and start looking at any steps you might be able to take in order to reduce asshat employment.

    So, even knowing that we will be throwing away some good applicants as well as some bad applicants, we (the big company) screen people based on qualifications

    When I go through a stack of résumés, I look for the following, in order:

    • demonstrated skill with our platform/languages or equiv. We're a .Net shop, so I don't want a Perl guru (C++, ok; Java, maybe).
    • experience with systems of similar complexity. We're developing enterprise-class financial systems, so the guy who has written a few Access-driven websites may not cut it. It's people like this who give you a blank stare when you mention UML or Source Code Control.
    • length of experience with relevant technology
    • not too many jobs. Job hopping is a fact of life in this industry, so this isn't the show stopper it might be in another field.
    • Formal education


  • (cs) in reply to John Smallberries

    John Smallberries:

    Snagglepuss:
    I think people often misunderstand the position of the employer when it comes to degrees.

    Well, most employers...

    Yeah, most employers...

    John Smallberries:

    Why does it have to be 100%? Perf reviews are a great tool.

    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.

    John Smallberries:

    And no, you don't need to be "extremely skilled" to do it well.

    True, that was a bit hyperbolic on my part.

    John Smallberries:

    When I go through a stack of résumés, I look for the following, in order... (etc...)

    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...

  • mister r (unregistered) in reply to Gabriel

    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.   
       

  • gbeaty (unregistered) in reply to OneFactor
    OneFactor:
    John Smallberries:
    JohnO:

    Anonymous:
    I don't know about you, but when I connect two hubs together I prefer to have open ports so I can, you know, plug computers into it.  So a simple one port on A to one port on B is sufficient.  In that case it's 24*24 since there's 24 ports on A, choose 1, and 24 ports on B, choose 1.

    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.

    If you wanted to count the ways to parallel plug in cables (port 1 on A to port 1 on B) then that's 24! ways since you are only picking one port with 24 wires.

    You have the common sense part down but your combinatorial mathematics are lacking.  It is indeed 24 factorial, assuming you would not go to and from a port on the same hub and you aren't distinguishing one cable from another.  Port 1 on A can go to 24 ports on B.  Port 2 on A can then go to 23 ports on B...Port 24 on A can go to 1 port on B.  That is 24!.


    It's 24! if you use all 24 cables. How many more combinations are there when using only 23, 22, 21...

    When using only 1 cable it's 242, right? When using 2 cables it's...ow, my brain.

    If you have n-ports on each hub and you use k-cables, I think you get (nPk)^2 / k!
    where nPk is  "n perm k" = n!/(n-k)!, the number of ways of ordering k objects from a set of n.

    On the boundary cases:
    n=k=24 gives 24!
    n=24, k = 1 gives 24 ^ 2

    Interesting combinatorial problem.



    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).
  • A non e mouse (unregistered) in reply to Achro
    Anonymous:
    Anonymous:
    Djinn:
    mthamil:
    Anonymous:



    Ever hear of getting denied loans? I know I did!

     


    Actually, no.  There are certain loans (Stafford comes to mind, of which I am a proud holder) that are federally guaranteed, and you cannot be denied the loan on account of your income.  Also, if you WERE turned down for an income-based loan, chances are you can afford to pay for school yourself (although I admit you may have to re-prioritize your finances, and may not be able to afford Harvard)



    Either that or he had already screwed up his record somehow.  It just sounds like he has a chip on his shoulder.  I would even say that most of the people I know who have a PhD (professors that I have had) were not rich and had to put themselves through school somehow.  Yes, a lot of people with advanced degrees just slid by and are really idiots, but I don't think I'd want to live in a country that didn't value education as a qualification.


    Despite your snide remark about my credit, I looked up what ChiefCrazyTalk said, and that's often not even checked in those types of loans.

    If your utopian country that values education so much really valued education so much, wouldn't they make it easier for people to get into without putting them into debt? Would the same country decrease education spending, and increase military spending?

    Cuba has free doctorate level schooling. Not only for Cubans but for many people from around the world. That is a country that values education.


    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)


    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.


    Read: RA. Nice try though.
  • A non e mouse (unregistered) in reply to Snagglepuss
    Snagglepuss:

    Anonymous:
    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.

    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.



    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.
  • (cs) in reply to mister r
    Anonymous:
    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?



    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'?

  • (cs) in reply to mister r

    Anonymous:

    A few simple, easy questions, any properly educated person in computer science should be able to answer:

    Should I?

    Anonymous:

    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.   
       

    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.

  • (cs)

    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.

  • John Hensley (unregistered) in reply to Strydyr
    Strydyr:

    At a prior job, I was once told by a Manager that he'd never hire another programmer with a certification.

    "Why ?", I asked.

    "Because the people who know what they're doing are too busy working to take those tests."


    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.

  • mister r (unregistered) in reply to emurphy

    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'?



    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.


  • (cs) in reply to mister r
    Anonymous:

    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'?

    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.
    Just enough BS to get someone hired as a teacher at a second-rate school.  Incompetent at evaluating whether they can do the job or not.

    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?
  • mcguire (unregistered) in reply to Pistol Pete
    Anonymous:


    I had a coworker tell me that he was glad he didn't interview me. He said that had he interviewed me, he would not have hired me because I have an M.S. in Computer Science and he thinks that people with advanced degrees do not know how to program or how to make it in the real world. (note: he said he was glad he didn't interview me because he was glad I was on the team).

    That same person later asked me how to upcast an object type....and why it couldn't be done in OO.

    I.e. He asked me why you couldn't do this:

    Object a = new Object();
    String b = (String) a;

    So anyway.


    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.
  • (cs) in reply to Miszou
    Anonymous:

    const_cast<> is an abomination and if you need it, then you probably need to rethink your design instead.



    Or you have to deal with code written by some asshat who never heard anything about const.



  • mister r (unregistered) in reply to Snagglepuss

    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.

    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)

    Snagglepuss:

    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.

    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.

    Snagglepuss:

    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.


    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)

    Snagglepuss:

    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.

    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!

  • (cs) in reply to mister r
    Anonymous:
    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 stand by my comment about there being just enough BS to be hired as a teacher at a second-rate school.

    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.
  • mister r (unregistered) in reply to Coughptcha
    Coughptcha:
    Anonymous:

    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'?

    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.


    Just enough BS to get someone hired as a teacher at a second-rate school.  Incompetent at evaluating whether they can do the job or not.


    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.

    Coughptcha:

    When I'm looking at a project, I don't care about piss-ass semantics ...


    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)

    Coughptcha:

    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?


    "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.
  • John (unregistered) in reply to anonamon
    Anonymous:
    If you don't mind, I'm going to elaborate on your answer as many people seem to be confused by this...

    First of all, if you're hooking up two hubs, you -don't- want to hook up all ports in one to all ports in another... WTF good would that do? You'd have NO empty ports. You hook up ONE port from one hub to ONE port from another hub.

    Consider Hub A: Choose ONE of 24 possible ports.That is a factor of 24.

    Consider Hub B: Connect to ONE of 24 possible ports. That is a factor of 24.

    24*24 = 24^2.

    Now, just for arguments sake, if you want to hook up EVERY port from Hub A into a port in Hub B (a real WTF):

    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... 242322*...*1 = 24!.

    Consider Hub B: Take connection i, choose one of 24 possible ports. Take connection ii, choose one of 23 possible ports... 24232222...*1 = 24!

    Therefore 24!*24! = (24!)^2.

    Goddamn I hate combinatorics.

    -- W



    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?

  • csrster (unregistered) in reply to Strydyr
    Strydyr:

    At a prior job, I was once told by a Manager that he'd never hire another programmer with a certification.

    "Why ?", I asked.

    "Because the people who know what they're doing are too busy working to take those tests."

    No trolling here (I'm actually thinking about getting my MCSD) -- just relaying his insight which is true all too often.



    _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.
  • (cs) in reply to mister r
    Anonymous:
    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.
    I cited my credentials.  The products I have built have earned my employers billions of dollars a year.

    I ask again: what large-scale real-world projects have you ever touched?
  • John Hensley (unregistered) in reply to mister r
    Anonymous:

    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.

    Yeah, except for those people who need or want money.

    Anonymous:

    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#) ?

      .. (words)

    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."

  • (cs) in reply to ferrengi
    ferrengi:

    Actually, I kind of like the variety.
    Sometimes the posts with only a story and no code are the best ones. Popup Popourii is also a favorite of mine. A little creativity and doing something a little different never hurt.

    So true...

  • mister r (unregistered) in reply to Coughptcha
    Coughptcha:
    Anonymous:
    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 stand by my comment about there being just enough BS to be hired as a teacher at a second-rate school.


    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.

    Coughptcha:

    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. 


    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!

    Coughptcha:

    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.


    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.

    Coughptcha:

    Personally, I've worked on telephone switches, Transport gear, access equipment, and more.  Not a single "theory" exercise among them.


    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:

    Coughptcha:

    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.


    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.

  • mister r (unregistered) in reply to John Hensley
    Anonymous:
    Anonymous:

    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.

    Yeah, except for those people who need or want money.

    Anonymous:

    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#) ?

      .. (words)

    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."



    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 ?
  • Thomas Ammitzb&#248;ll-Bach (unregistered) in reply to anonamon
    Now, just for arguments sake, if you want to hook up EVERY port from Hub A into a port in Hub B (a real WTF):

    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

  • mikeyd (unregistered) in reply to Colin

    "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!.

  • (cs) in reply to Pistol Pete
    Pistol Pete:

    Would you tell your kids not to goto school?

    GOTO considered harmful...

  • Nick (unregistered) in reply to Michael
    Some people are VERY good interviewers.  I once had a co-worker who knew absolutely nothing, but was good at two things:

    1. Short-term memorization.
    2. Bullshit.


    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.

  • (cs) in reply to mister r
    Anonymous:

    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'?



    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.


    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.


    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.


    Again, that's what I meant in the first place.  I think this is an issue of terminology rather than actual intent.


    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.


    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).

  • None Of The Above (unregistered) in reply to Djinn

    Djinn:
    I'm doing  financially better than many of my friends who hold a BS (which is just that) or MS

    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*.

  • None Of The Above (unregistered) in reply to ChiefCrazyTalk
    Anonymous:



    Ever hear of getting denied loans? I know I did!

     


    Actually, no.  There are certain loans (Stafford comes to mind, of which I am a proud holder) that are federally guaranteed, and you cannot be denied the loan on account of your income.

     

    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.

  • (cs) in reply to Djinn
    Djinn:
    Anonymous:
    Djinn:
    Anonymous:
    Strydyr:

    At a prior job, I was once told by a Manager that he'd never hire another programmer with a certification.

    "Why ?", I asked.

    "Because the people who know what they're doing are too busy working to take those tests."

    No trolling here (I'm actually thinking about getting my MCSD) -- just relaying his insight which is true all too often.



    I had a coworker tell me that he was glad he didn't interview me. He said that had he interviewed me, he would not have hired me because I have an M.S. in Computer Science and he thinks that people with advanced degrees do not know how to program or how to make it in the real world. (note: he said he was glad he didn't interview me because he was glad I was on the team).

    That same person later asked me how to upcast an object type....and why it couldn't be done in OO.

    I.e. He asked me why you couldn't do this:

    Object a = new Object();
    String b = (String) a;

    So anyway.


    Yeah, dude. People who couldn't afford to go to school are idiots.


    Hmm...didn't say that. But I will venture a guess at who is an idiot:  Djinn

    Maybe just insecure. It is hard to tell on char forums.


    Djinn's an idiot. Good one. I'm so sick of society putting people with degrees on a pedestal. "Oh, Jimmy Bigbucks went to Yale. Let's hire him!" when a perfectly good programmer, who ventured out on thier own to learn their trade are often not even considered for positions of which they are equally or possibly more qualified for. Because these rich kids could afford to go to good schools, they get more jobs, and more pay for them. What happens to those who had monetary issues to the extent that even a community college was out of their reach? They work doubly hard to get educated in any way possible. Books, internet, friends, any thing they can find, only to end up getting paid less, if they can even get hired.

    This isn't to say people without a degree are always in this situation, or that they are more qualified. It's only the marginilization of often good programmers that is propagated and a form of prejudice. I don't think we should continue the trend of favoring those with degrees. People should be judged on thier skills. If you were in a position to get formal training, then more power to you, but don't think just because you were lucky enough to do so, that you're somehow better than the next guy.


    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.
  • Dave (unregistered) in reply to Djinn

    It appears that one of the things that going to Uni. does teach you is the ability to take constructive criticism..

  • An apprentice (unregistered) in reply to Thomas Ammitzb&#248;ll-Bach

    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:

        24!          24!
    ---------- * ---------- * n!
    n! (24-n)!   n! (24-n)!

    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 :)

  • wiseguy (unregistered) in reply to mister r
    1. The fastest heuristic searching algorithm is A*, what are the constraints on possible evaluation functions you can use?

    False, returning the first node at hand is quicker and dare I say, more heuristic as well.

    1. Whats the minimum algorithmic complexity for parsing a context-free-language? (like for example XML)

    Over which parameter?

    1. Whats the difference between parrelism and concurrency?

    Parrelism is a misspelling, for one thing.

    1. Which dessign pattern would you choose to solve a sudoku puzzle?

    Pen and paper.

    1. 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!)

    O(1). Machine-integers are bounded.

    1. For which kind of keys, is a hash-table faster than a binary-search tree?

    None. Hash tables are a special case of binary search trees.

    1. Why do all 3D engines represent a vector (of 3 coordinates: x,y,z) as a matrix of 4 by 4? Whats the benefit?

    They don't. Some do represent them as 4 by 1 matrices though.

    1. 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?

    There are hardly any of either, just implementations.

    1. What is the most common learning algorithm used for a spam filter?

    Neural network.

  • Jane (unregistered) in reply to wiseguy

    Interesting; not sure whether the post was showing answers with wrong questions, or questions with wrong answers.

    For which kind of keys, is a hash-table faster than a binary-search tree?

    None. Hash tables are a special case of binary search trees.


    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

    8. What is the most common learning algorithm used for a spam filter?


    Probably wrong. It's probably bayesian based statistical filtering, and which is almost certainly more successful than a neural or genetic approach.
  • (cs) in reply to monkeyboy
    Anonymous:
    Anonymous:
    Anonymous:
    Brilliant!  Second post???


    You spelled Billant wrong.


    I mean, you spelled Brillant wrong.  Heh.


    No, he spelled it "Brilliant", not "wrong".
  • MC Deuce (unregistered) in reply to mister r

    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.

  • Pinkfloyd (unregistered)

    Certifications + Experience + Attitude = Great

  • (cs) in reply to Colin

    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.

  • Katie (unregistered) in reply to Magic Duck
    Magic Duck:
    Anonymous:

    const_cast<> is an abomination and if you need it, then you probably need to rethink your design instead.



    Or you have to deal with code written by some asshat who never heard anything about const.





    Or you're inside an object which is being only logically const, and your compiler is being bitwise const by not supporting "mutable"...

  • (cs) in reply to Colin
    Anonymous:
    bugmenot:
    Anonymous:
    John Smallberries:
    sammybaby:

    Detailed instructions on connecting two hubs together?


    Well, with 24 ports, that's 24! (or is it 2424?) possible combinations...
    Which one is best?


    242 (


    I ain't certified but I think if you want them FULLY connected, it is 24!, ensuring that every port on hub a is connected to a port on hub b. 

    The best performance would be the parallel one - a1 <-> b1, a2 <-> b2 cus everybody knows that ethernet ports like other ethernet ports with the same number.


    I don't know about you, but when I connect two hubs together I prefer to have open ports so I can, you know, plug computers into it.  So a simple one port on A to one port on B is sufficient.  In that case it's 24*24 since there's 24 ports on A, choose 1, and 24 ports on B, choose 1.

    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.

    If you wanted to count the ways to parallel plug in cables (port 1 on A to port 1 on B) then that's 24! ways since you are only picking one port with 24 wires.

    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.

  • wiseguy (unregistered) in reply to Jane

    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?

  • (cs) in reply to marvin_rabbit
    marvin_rabbit:

    Aww, you're just not imaginative enough!  There are, after all, 8 wires in each of those little plastic thingys.  Whe says we have to be limited to keeping them all together?


    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.

Leave a comment on “Certified Bumblehead”

Log In or post as a guest

Replying to comment #:

« Return to Article