Slashdot Mirror


Ask Slashdot: Online, Free Equivalent To a CompSci BS?

An anonymous reader writes "I am a middle school math teacher and I also run a programming club. I recent completed my M.Ed in math education and was inspired to try to do the new GT online MS in Computer Science in a couple of years. I have some background in programming: two intro to comp sci courses, Java, C++, Python, the main scripting languages, and a bunch of math background. I also read through this great article on getting these pre-requisites completed through Coursera but unfortunately you need to wait for courses to enroll. I would like to just learn these on my own time, no credit necessary. Suggestions?"

197 comments

  1. Donald Knuth by CodeArtisan · · Score: 1, Insightful

    The Art of Computer Programming Volumes 1 - 4A.

    1. Re:Donald Knuth by invictusvoyd · · Score: 1

      Andrew Tanenbaum - Operating systems & networks Great books for intro.
      Kernighan & Ritchie for C
      learning perl - perl

    2. Re:Donald Knuth by jmcbain · · Score: 3, Interesting
      "Computer Science" is a very broad field covering both theory and programming. Here are some great books:

      -- Introduction to Algorithms, 3rd ed., by Cormen, et al. ABSOLUTELY MUST-READ.
      -- Computer networking: a top-down approach, by Kurose and Ross. Great book; skips the physical layer.
      -- The C Programming Language, by Kernighan and Ritchie. This is the one book you need on programming language pragmatics.
      -- Modern Operating Systems, by Tanenbaum.
      -- An Introduction to Statistical Learning: with Applications in R, by James, et al. Have not read this machine learning book myself, but the Amazon reviews say it's great.

    3. Re:Donald Knuth by pigiron · · Score: 3, Funny

      perl? The poster said computer *science* not unreadable gobbledygook!

    4. Re:Donald Knuth by Jamu · · Score: 2

      Not sure that counts as free. It's $175 ($100 to rent) on Amazon. Although still a lot cheaper than a BS.

      --
      Who ordered that?
    5. Re:Donald Knuth by FatdogHaiku · · Score: 1

      Sir, your are in danger of angering the Gods!
      https://xkcd.com/224/
      or at least making them snort beer onto the displays...

      --
      You have the right to remain sentient. If you give up the right to remain sentient, you will be elected to public office
    6. Re:Donald Knuth by CastrTroy · · Score: 2

      What about all the other courses that are required for the degree, like algebra, calculus, discrete math, technical writing, and other electives like psychology, history, business management, or biology. All of these, while not directly applicable, are definitely useful, and should not be ignored.

      --

      Anthropic principle: We see the universe the way it is because if it were different we would not be here to see it.
    7. Re:Donald Knuth by CodeArtisan · · Score: 1

      What about all the other courses that are required for the degree, like algebra, calculus, discrete math, technical writing, and other electives like psychology, history, business management, or biology. All of these, while not directly applicable, are definitely useful, and should not be ignored.

      Those are all fine subjects, but none of them are CS.

    8. Re:Donald Knuth by Anonymous Coward · · Score: 0

      If you read the post, you'll note that the submitter just finished a M. Ed. in mathematics, so presumably, he has the algebra calculus, and electives covered. Depending on the program, he may or may not have discrete math covered as well.

    9. Re:Donald Knuth by i.r.id10t · · Score: 0

      Since those are gen-ed type courses they compromise most of what an AA degree is - 2 englishes (2nd is tech writing or more lit stuff), math thru at least college algebra, a few social science courses, a few humanities courses, a natural sciences course w/ lab of some sort, etc.

      The calc (and possibly thru calc w/ differential equations), physics w/ calc, chemistry, and gen science comes with just about any science major for an AA (transfer to 4 year degree track) or AS.

       

      --
      Don't blame me, I voted for Kodos
    10. Re:Donald Knuth by Anonymous Coward · · Score: 0

      I think it's funny he singled out Perl, but not C. To me, C is often unreadable gobbledygook... not by necessity, though. It's very possible to write readable C, but the established idioms and norms in C programmer culture value brevity and cleverness over clarity and maintainability.

      I mean, why type "bufferPointer" when "bufPtr" will do? Keystrokes are WORK!

    11. Re:Donald Knuth by jmcbain · · Score: 1

      Hello, anonymous coward. I would say I know about computer science because I have three degrees in the field, namely BS, MS, and PhD from top-20 US universities. I would also say I know about programming because I've worked at some of the biggest companies in software and online services. I also know how to distinguish between "you're" and "your". Now, regarding your comment, computer science is in general the application of the theory of computation to practical computers and practical applications. There are fields in CS which are purely theoretical, but in general CS applies theory to real computers (e.g. Von Neumann architectures; you should look that up some time when you're not too busy with your HTML and CSS). CS is thus an extremely broad field.

    12. Re:Donald Knuth by AuMatar · · Score: 2

      You don't think discrete math is CS? I don't think you know what those two things are.

      --
      I still have more fans than freaks. WTF is wrong with you people?
    13. Re:Donald Knuth by goarilla · · Score: 2

      Why type bufPtr when p will do.

    14. Re:Donald Knuth by Anonymous Coward · · Score: 0

      Psychology is largely pseudoscience and *should* be ignored. In fact, for all of these subjects, you can self-educate. Quit wasting time and money on garbage.

      But if you're intent on learning psychology, I have some snake oil to sell you.

    15. Re:Donald Knuth by gIobaljustin · · Score: 1

      I know about computer science because I have three degrees in the field, namely BS, MS, and PhD from top-20 US universities.

      You might be knowledgeable, but the fact that you have degrees (pieces of paper) isn't proof of that. Lots of losers and cretins have degrees, and yes, some even have PhDs.

      --
      Thank you Dave Raggett
    16. Re:Donald Knuth by wed128 · · Score: 1

      It's not laziness. It's to fit each line of code in an 80 column display.

    17. Re:Donald Knuth by Kaptain+Kruton · · Score: 1

      Discrete Math: Yes. I do not think I actually took a course labeled 'discrete math', but I know many of my CS classes used it.

      Algebra & Calculus: It depends on what you plan on doing. Some careers related to CS may require it. However, most software development positions for businesses only require basic algebra when writing code.

      Technical writing: No. In my experience, you just use common sense. You write for your intended audience and include information that is relevant. Upper management does not want to know what algorithms you use to complete something. Documentation created for other developers to maintain your code in the future does not need fluff or information that only applies to the initial implementation of the project (eg: budget and deadlines).

      Other courses: Not necessary to CS. They are intended to give you a more well-rounded education and make you pay for more credit hours. Unless your career is closely related to one of these fields, they will be useless. If you were actually trying to get a B.S. degree, then take them. If you are just trying to learn the CS realted things you would get from the degree, don't bother with things like psych and business. They are of no use to most people.

    18. Re:Donald Knuth by Marxist+Hacker+42 · · Score: 1

      How Microsoft has gone backwards: In Visual Studio 2012, I barely get 73 columns of text when I first open. After moving all the side windows of metacode to the other monitor, I get a more respectable 125 columns.

      --
      SJW: a person who perceives an injustice, and while correcting it, commits a greater injustice.
    19. Re:Donald Knuth by Anonymous Coward · · Score: 0

      "and other electives like psychology, history, business management, or biology"

      Well, you see, he is an adult, and adults decide for themselves what they consider to be useful or not. If he is not interested in any of those courses, there is no reason for him to have to take them. Its not as if there is such a thing as someone who knows best what other people need should learn.

    20. Re:Donald Knuth by parkinglot777 · · Score: 1

      Computer Science is an exceptionally narrow field that has broad, nearly ubiquitous application, and it has absolutely nothing to do with programming... or computers

      Umm... Not really. It relates to Computer but not in depth either hardware or software but rather conceptual/algorithm of programming. If you do programming, you would relate it to computer in some senses.

      Programming is programming, it is not computer science

      I agree with this part. Computer Science is not about programming. The programming part is only to illustrate that you understand the concept/algorithm of what you learn or discover.

      ok its basically math

      Ummm No? Even though CS involves maths, it is not maths. In order to prove any algorithm, yes you must use maths to illustrate it; however, it is NOT maths. If you said so, then Physics is maths and should not be called Physics?

    21. Re:Donald Knuth by bbsalem · · Score: 1

      So maybe Number Theory and all of Discrete Math is too much for AA students. But it seems they are the most important part of Knuth's course, So how about symbolic logic and a little set theory? Maybe even teaching the use of logic constructs in most programming languages, use of logical operators as well as logic statements is enough, and possibly also logic in Regular Expressions, as a little extra.

    22. Re:Donald Knuth by bbsalem · · Score: 1

      Which is why you write crappy designs, You don't understand the behavior of your users as a result of not thinking about psychology. I hope you don't write interfaces and web pages, because if you do you are likely to contribute to the poor designs out there, Even something as innocent, no-brainer, as choosing to code a text area widget or use a blog for a conversation is enough to reveal your ignorance and lack of virtue.

      Do you even understand why we hate Slashdot Beta? It is because of human behavior, the result of psychology. The ececs at Dice are not fools, they know what they are doing and why. They know that they are trading our ability to effectively talk to one another for the ease of their business partners to mine what we post, by adopting a social media design, a blog design.

    23. Re:Donald Knuth by jmcbain · · Score: 1

      I'm fairly certain that if a person has attained a CS PhD from a top-20 US university, then the person should know what "computer science" is. All other things being equal, someone with a CS PhD knows much more about "computer science" than someone who does not possess a CS PhD.

    24. Re:Donald Knuth by gIobaljustin · · Score: 0

      Not necessarily. I don't know how, but I've seen some pretty unintelligent and ignorant people who hold genuine PhDs. And I'm not even talking about subjects that they don't specialize in.

      --
      Thank you Dave Raggett
    25. Re:Donald Knuth by hermitdev · · Score: 1

      Agreed. Discrete math is essential in CS. Among other aspects, set theory is fundamental to understanding relational databases and how to effectively & efficiently query data (of course it's useful for a number of other things, as well).

    26. Re: Donald Knuth by Anonymous Coward · · Score: 0

      I hate beta because it doesn't include any edit or even a preview function; on my phone, I can't see what I'm replying to; and I can't read any of the clever signatures people have, which may be the deal breaker.

      I may not have any psychology training, but all my programs have wonderful designs. I don't see what the design has to do with human behavior unless you're confusing program design with a user interface.

      I've never bothered to check, but I'd guess pretty much any forum uses the textarea tag that you complain about. Most blogs seem to be designed for the commenter to talk to the author instead of each other, which may be what the blog author wants in exchange for his work. It's probably what I'd want for an instructional blog. If you wish to create a polylog, then there is plenty of support for nested discussions with notifications like disqus. Personally I get frustrated with the polylog concept because it lures me in, and eats a lot of time I don't have.

    27. Re: Donald Knuth by jbo5112 · · Score: 1

      I also don't like beta because it somehow manages to provide an input form that doesn't work correctly, and posts when I tap on the input box, still with no preview or edit.

    28. Re:Donald Knuth by Anonymous Coward · · Score: 0

      It's called being educated.

    29. Re:Donald Knuth by Anonymous Coward · · Score: 0

      CS is a branch of mathematics. Every computer and every program is a generalized turing machine which is math.

      OOP is math
      relational databases are math
      genetic programming is math
      imperative programming is math
      functional programming is math
      loops are math

      If you don't understand that programming is math, you should kindly GTFO.

      Physics is an application of mathematics. Just like CS, everything in physics is described mathematically.

  2. MIT by ACS+Solver · · Score: 4, Informative

    You can learn basically the entire CS curriculum of MIT. This guy did it in 12 months, which is quite extreme, but it shows that the material is all there, and you can of course go through it (or parts of it) at your own pace.

    1. Re:MIT by Anonymous Coward · · Score: 3, Interesting

      Parts of it are painful to do on your own. The emphasis on Scheme and recursive layers of abstraction, and the last 20 years of objected oriented nonsense wasted space that is is the descendant of early LISP research and makes Java programmers so *bad* at performance programming can take a decade to *unlearn* to do anything reliably or in real time. "Object Oriented" is the enemy of understanding why things break.

      I'd still recommend the online courses from MIT, in general, and spending time with toys from Adafruit. There are a stack of toys there that can give a grounding in basic electronics, small system configuration, and microprogramming far beyond any course work done without an actual lab to play in.

    2. Re:MIT by pigiron · · Score: 0

      LISP 1 is the exact opposite of object oriented as it is a thoroughly mutable example of functional programming.

    3. Re:MIT by Anonymous Coward · · Score: 0

      You apparently never studied LISP or Scheme. The insistence on under-defining an interface between layers of processing, and handing off entire sets of functions behind "layers of abstraction", coupled with the refusal to properly define modules and represent them as mysterious black boxes inside which miracles occur, is the core of object oriented programming. And far too many of LISP's failures of resource management and unbounded recursion are taught, as desirable, in its object oriented descendants. The "layers of abstraction" are a very effective set of "Somebody Else's Problem" blinders to the consequences of poor selection of data types or processing in higher levels of the the system.

      And *that* mistake is what it takes years to unlearn, because your homework is *marked wrong* for writing more efficient, linear systems, even when you do it both ways. Been there, done that, had to argue with Sussman about my grade. An online course would have had one devil of a time realizing that I did the work *both* ways, and would generally mark you wrong for it.

    4. Re:MIT by phantomfive · · Score: 1

      Nah, you're getting confused. There's even a book on it. LISP isn't exactly a functional language, it's a multi-paradigmatic language, that includes both functional and OOP.

      --
      "First they came for the slanderers and i said nothing."
    5. Re:MIT by pigiron · · Score: 1

      I said LISP 1 which is an interpreted language (that would be "scripting" to y'all) not CLOS or even CommonLisp.

    6. Re:MIT by ChunderDownunder · · Score: 1

      The parent was making a distinction between Lisp-1 (e.g. Scheme) and Lisp-2 (e.g. Common Lisp).

      CLOS, obviously, has objects bolted onto it - for which, as you point out, they write books.

    7. Re: MIT by Anonymous Coward · · Score: 0

      Amen.

    8. Re:MIT by Anonymous Coward · · Score: 0

      Scripting != interpreted languages, although scripting languages are often interpreted.

      Scripting == programming with another program as the target, rather than an OS or bare metal.

    9. Re:MIT by pigiron · · Score: 1

      Then why is bash and other shells almost universally referred to as "scripting" languages?

    10. Re:MIT by NapalmV · · Score: 1

      Amen.

    11. Re:MIT by Anonymous Coward · · Score: 0

      > Then why is bash and other shells almost universally referred to as "scripting" languages?

      Uh, because they target other programs?

    12. Re:MIT by Darinbob · · Score: 1

      Lisp does not fail at resource management. Bad Lisp implementations do that. And sadly, those bad implementations cause people to mistakenly think the language is inherently bulky or inefficient.

    13. Re:MIT by pigiron · · Score: 1

      You use non-standard terminology that makes no sense to me. They "target" the OS with system calls and also access and process foreign data through I/O, and invoke and interface with other programs, and also do their own processing.

    14. Re:MIT by Anonymous Coward · · Score: 0

      No, shells and shell scripting are ALL about telling other programs what to do. Please educate me otherwise if you don't agree.

    15. Re:MIT by pigiron · · Score: 1

      A shell can read data and process it with its own built-in commands. Reading in integers and adding them up to a total and outputting the result is a trivial example of this. You can do it in C and you can do it in bash. They are functionally equivalent in this way since they both have arithmetic operators. Shells have built-in comparison operators and can also branch. This makes them imperative programming languages in the same way that C or Fortran or assembly language are.

      Your hard and fast distinction about "targets" makes no sense whatsoever.

         

    16. Re:MIT by Anonymous Coward · · Score: 0

      That doesn't contradict what I said, though. Scripting languages are still programming languages; it's the role they play that makes them scripting languages, not their turing-completeness-- and that role is typically to provide input, output, and control to other programs.

    17. Re:MIT by bidule · · Score: 1

      Well of course Real Time programming is a special beast, but I don't think it is representative of whatever programming the OP is trying to learn. Basing your whole critique on optimization needs is off-base.

      OOP is a good tool to encapsulate UI, it has brought Angular, DOM and javascript prototype-based system.

      For heavy work, functional programming simplifies parallel processes. Scheme can handle this and offers a very different syntax to learn. If you can wrap your head around both the ((parenthesis)) and the {imperative;} syntax, you can understand any new language.

      I say that with 10y in C++ and 10y in Scheme with a dabble of other languages. Which is why I can say Scheme is a much better learning tool than OOP imperative languages, although its blessings carry the Lisp curse. {Using Scheme for eulerproject.net is almost cheating, its numerical tower makes them a breeze.}

      --
      ID: the nose did not occur naturally, how would we wear glasses otherwise? (apologies to Voltaire)
    18. Re:MIT by Anonymous Coward · · Score: 0

      The insistence on under-defining an interface between layers of processing, and handing off entire sets of functions behind "layers of abstraction", coupled with the refusal to properly define modules and represent them as mysterious black boxes inside which miracles occur, is the core of object oriented programming.

      You're doing it wrong.

    19. Re:MIT by david_thornley · · Score: 1

      If this is the original LISP, I fail to see its relevance. Lisp has changed a lot, and the old programming style is hardly relevant. If you mean what has sometimes been referred to as Scheme (a Lisp-1, so-called because it has one namespace), then there are Scheme compilers.

      --
      "When you have eliminated the unacceptable, whatever is left, however improbable, must be the truthiness" - Holmes
    20. Re:MIT by david_thornley · · Score: 1

      OOP is a good tool for more than just UIs. It's also not particularly intuitive (when done right), and I'll happily agree that Scheme is a better learning tool. It also has the advantage of being different from most commonly-used languages, so learning it in school and learning something that's likely to lead to a job is exposure to two different programming paradigms.

      --
      "When you have eliminated the unacceptable, whatever is left, however improbable, must be the truthiness" - Holmes
    21. Re:MIT by Anonymous Coward · · Score: 0

      > You use non-standard terminology that makes no sense to me.

      Well then, I guess you've never used an IDE that has "targets" for compilation, i.e. configurations for target platforms.

      When you write a Web application, the "target" is a browser - another piece of software. It's not that obscure a term.

  3. Re:Ivy League = theroy loaded classes with skill g by CodeArtisan · · Score: 3, Informative

    If that's what you want, then fair enough - just don't expect a CS degree to deliver that. The CS theory I learned has proved useful in various phases of my 25+ year career, but your milage may vary.

  4. Thank YOU Interwebz by Niris · · Score: 3, Informative

    As a recent CSci graduate from a state university in California, I can tell you that there's far better content online than you'll pick up in a class, so good job checking out that area. MIT has a lot of great courses on YouTube, such as their algorithms lectures from Cormen, and edX has a fair amount of content as well. There's also a lot of books out there if you can pick an area that interests you the most, such as mobile or web, that you can just read through and type up the examples yourself. The thing about programming is that you tend to learn more from doing than from listening to lectures, so if you can just sit down with a book, online tutorials, etc., and just make programs and figure out why they don't work on the first go (and when you pass the forloop/if statement section of your education, they probably won't), then you'll be golden.

    1. Re:Thank YOU Interwebz by Zmobie · · Score: 1

      I don't know what your university was doing then, the courses at mine were quite valuable and informative. The bullshit I have seen posted online is exactly that. Granted, not ALL of it is bullshit, but a lot of it. I now have a niece that is interested in learning about programming and computer science and I shudder to think what ridiculous buzzword crap people are going to try and direct her towards. Luckily I actually have the necessary background to weed out some of that bullshit and she is knows this.

    2. Re:Thank YOU Interwebz by gIobaljustin · · Score: 1

      Granted, not ALL of it is bullshit, but a lot of it.

      The same is true of colleges, universities, and even classes in the 'better' universities.

      --
      Thank you Dave Raggett
    3. Re:Thank YOU Interwebz by Zmobie · · Score: 1

      Granted, not ALL of it is bullshit, but a lot of it.

      The same is true of colleges, universities, and even classes in the 'better' universities.

      I'll give you that, but I would at least argue the rates are noticeably lower for tier 1 universities. I do remember a couple of Comp Sci professors in my college days that I am fairly certain had no business near a classroom, but that was definitely the exception (thank god I suppose) not the norm there.

    4. Re:Thank YOU Interwebz by gIobaljustin · · Score: 1

      Whether they're noticeably lower or not is irrelevant. You have to pay for colleges and universities (or taxpayers do), whereas it is trivial to find information on the Internet and trivial to verify it. Once you're giving away your own money, it's already too late.

      --
      Thank you Dave Raggett
  5. Re:Ivy League = theroy loaded classes with skill g by cheesybagel · · Score: 1

    Computer languages fade in and out of popularity every single decade. It is not like people stop using those languages but the jobs market turns elsewhere.

    The theory at least has remained more or less constant throughout the entire time.

  6. Depends on your goal by Anonymous Coward · · Score: 0

    If you want to get good at what most programmers do these days, learn to use Eclipse, Spring, and JQuery to hack together existing libraries. A programmer who can actually write code is rare.

  7. Re:Ivy League = theroy loaded classes with skill g by AuMatar · · Score: 5, Insightful

    Other way around. If you learn the new hot skills, you can get a low level job where you'll struggle and work poorly because you don't really know what you're doing. Then when the buzzwords change, you'll be unhirable. If you learn the theory and fundamentals, you'll write better code more quickly and be able to easily pick up new technologies as they come along. Theory always trumps "real world" skills.

    --
    I still have more fans than freaks. WTF is wrong with you people?
  8. You have all the education you need, don't bother by plopez · · Score: 3, Informative

    You know some decent languages and have a background in Mathematics. Dont' waste your time, CS is no more than an Applied Math degree "in drag". All you need is some experience which can be obtained by volunteer work, e.g. maintaining the web site of a no kill animal shelter.

    BTW, since you background is in Math Ed., I assume you have good people and communication skills. That is a great way to differentiate yourself from the pack. You could end up running a tech firm if you do it right.

    --
    putting the 'B' in LGBTQ+
  9. Machine Learning class on Coursera by Anonymous Coward · · Score: 0

    not a degree equivalent, but could be part of a larger program.
    https://class.coursera.org/ml-005

  10. Re: Ivy League = theroy loaded classes with skill by IrquiM · · Score: 1

    Sure, if being a code monkey is your ultimate goal

    --
    This is blinging
  11. Re:Ivy League = theroy loaded classes with skill g by Joe_Dragon · · Score: 0

    yes what about the other stuff at Ivy League that is next to useless for the job like PE classes at prices (for 1 class) that are higher then 2 year gym membership at high cost place.

    History of the Roman Empire

    History of Rock and Roll

    and so on

  12. Re:Ivy League = theroy loaded classes with skill g by Joe_Dragon · · Score: 1

    and the school system should be setup better for people who want to learn new skills with have to deal with the old system / old college time tables.

  13. Saylor.org by Taxman415a · · Score: 3, Informative

    Saylor has one of the most complete, free, college degree equivalents that I have seen. The best part is many degree programs have links to video lectures, full problem sets and exams.

    http://www.saylor.org/majors/c...

    Their math stuff is decent, and that's what I'm competent to evaluate, so based on that I'd think the compsci would be good too. Some degree areas are not complete yet, but compsci is.

    1. Re:Saylor.org by Anonymous Coward · · Score: 0

      +1 for saylor.org. It's also just a good site for finding content on all the major subjects.

    2. Re:Saylor.org by theskipper · · Score: 1

      Interesting. From your experience, were the number of hours listed under "time advisory" pretty accurate?

    3. Re:Saylor.org by Anonymous Coward · · Score: 0

      Awesome reference. Never heard of this until now. Thumbs up!

    4. Re:Saylor.org by Taxman415a · · Score: 1

      The time advisory is actually new since I last looked at the materials. Previously I mostly evaluated the quality of the materials and completeness. In general though actual time requirements to complete the work are going to vary quite a bit by the amount of prior preparation a student has. The time guidelines given for individual assignments I spot checked just now appear to be in the ball park. The overall totals are likely to be off more, though possibly a reasonable starting point.

    5. Re:Saylor.org by theskipper · · Score: 1

      Thanks for taking the time to answer. It's something I've wanted to do but my biggest concern was getting side-tracked by real world commitments and not finishing a course I started. If the estimates are in the ballpark then it's easier to plan ahead and make sure it gets done.

  14. Re:You have all the education you need, don't both by Great+Big+Bird · · Score: 3

    While, CS is definitely applying math, it lies somewhere between Math and Software Engineering. It is certainly not what you minimize it as.

  15. Re:Ivy League = theroy loaded classes with skill g by pigiron · · Score: 4, Insightful

    We would all be better off with a good knowledge of the history of the Roman empire since we seem to be following down the drain the disasters of its later stages.

  16. Re:Ivy League = theroy loaded classes with skill g by pigiron · · Score: 1

    No. Years of study in order to implement the ultimate type safe language is absolutely useless.

  17. Re: Ivy League = theroy loaded classes with skill by pigiron · · Score: 1

    Programming is fun!

  18. Re:Ivy League = theroy loaded classes with skill g by Anonymous Coward · · Score: 0

    Learning how and why it all works is easy enough just by using it, if you're competent. If you're incompetent (like most programmers are), then just give up.

  19. As long a you don't intend to get work from it... by tlambert · · Score: 1

    As long a you don't intend to get work from it, there are tons of alternatives for learning the information that would be contained in the course.

    Typically speaking, just doing the necessary coursework, as Scott Young did, isn't enough to make you employable, even if you do it in a context in which you end up with a degree. It's a good part of it, though, since it certifies that you would be able to use the same words to communicate about algorithms, etc., when talking to peers, which is something you probably wouldn't be able to do otherwise. A lot of the communications in any technical field takes place in a higher bandwidth shorthand, or jargon, which lets you communicate a lot of information in a short amount of time.

    Consider, for example, if you don't speak portuguese, your teaching credential and experience, valid though it may be in an English speaking country, won't transfer over directly to being able to teach even your top subject to a non-English speaking class.

  20. Re:Ivy League = theroy loaded classes with skill g by Zmobie · · Score: 2

    No. Just straight up no. Any idiot can learn how to fumble their way through a programming language's syntax and API (albeit it may take them a while in some instances), but if you want to actually be a real computer scientist or software engineer you need the theory. I've been programming for 10 years now, 3 of it beyond getting my bachelor's degree and the code i write now is worlds better namely because of the information I learned while working through my BS in Comp Sci.

  21. Why does Sheldon need advice? by cyberspittle · · Score: 1

    Seems odd and out of character.

  22. correction by Anonymous Coward · · Score: 1

    should say: "fundamentals trump real world skills". And usually the fundamentals and real world experience go hand in hand.

    The current problem is CompSci is taught via syntax and people are certified immediately... unlikely typical linguists. For example, you can take an accelerated course in Arabic, but you'll likely get it wrong and insult someone in a bazaar in Cairo.

    And theory is just that.... theory. Any academic approach will fails 90% of the time in the real world, hence RMS's bazaar (real world) vs. cathedral (theory) analogy.

    Of course "pro-theory" advocates has a scapegoat: in the real world; if you didn't do it right, it's because you didn't follow the theory as most academics would say (e.g. Agile's "you didn't do it right" excuse). The irony....

    1. Re:correction by Your.Master · · Score: 3, Informative

      Cathedral and the bazaar isn't RMS' idea, that comes from Eric S. Raymond. And it's not about real world vs. theory -- they are both real world and exist in real working popular products.

      And, crucially, RMS' work was used as an example of the cathedral. Linux was, of course, the bazaar.

    2. Re:correction by next_ghost · · Score: 4, Insightful

      And theory is just that.... theory. Any academic approach will fails 90% of the time in the real world, hence RMS's bazaar (real world) vs. cathedral (theory) analogy.

      Of course "pro-theory" advocates has a scapegoat: in the real world; if you didn't do it right, it's because you didn't follow the theory as most academics would say (e.g. Agile's "you didn't do it right" excuse). The irony....

      Let me illustrate the difference between theory and "real world skills" on solving any problem which is equivalent to finding shortest path in a graph. There are three basic algorithms to solve that problem: depth-first search (linear-time, only works if the graph is a tree), Dijkstra's algorithm (O(m+n log n) where "m" is the number of edges and "n" is the number of vertices, works on any graph as long as no edges have negative weight) and Floyd-Warshal algorithm (cubic time in the number of vertices, works even with negative weights and detects if the graph contains a negative loop, in which case the shortest path is undefined).

      Somebody who knows the theory will inspect the specific problem he's trying to solve and choose the fastest algorithm from the list above that will work with the data. There are lots of reference implementations around so writing those about 50 lines of code will be easy.

      Somebody who doesn't know the theory but has lots of "real world skills" probably won't realize that the problem has a well-known 50-line solution that works in all cases and he'll hack together some poorly thought-out piece of crap that's too slow and fails spectacularly on data that don't match the coder's assumptions. As the time goes by and bug reports pile up, the mess will grow even bigger into a convoluted tangle of several thousand lines of code that only the best and bravest dare to maintain.

    3. Re: correction by Anonymous Coward · · Score: 0

      Well said. That is it in nutshell

    4. Re:correction by Anonymous Coward · · Score: 0

      And the vast, vast majority of developers will never need to know that. Most developers out there are doing pretty simple business apps that back up to a database.... And any developer who finds himself needing to find the shortest path is going to google "shortest path algorithm" and guess what the very first result is...

      Software engineering that the vast majority of people engage in just isn't that complicated.

    5. Re:correction by sourcerror · · Score: 1

      Somebody who doesn't know the theory but has lots of "real world skills"

      He will probably just resort to A* in every case.

    6. Re:correction by MikeBabcock · · Score: 2

      In fact this is precisely why I wish there were something like a comp.sci wiki. A lot of this knowledge should be easier to access for people who didn't need a full degree to get where they are but realize they have a problem to solve and need a better way to do it than posting their current code on stackexchange.

      --
      - Michael T. Babcock (Yes, I blog)
    7. Re:correction by Darinbob · · Score: 1

      I see people who do O(n^3) problems quite a lot. They don't necessarily intend that, but there's an O(n) library function that gets called in a loop, and that gets called in a loop, and the programmer never gets around to figuring out why things are so slow. I have seen some people realize why it's slow, but they refuse to fix it because they refuse to write a routine if a library routine does the same thing (I've seen someone argue vehemently that STL's maps were proven to be the most efficient they could ever be, as if I were speaking heresy when suggesting alternatives).

    8. Re:correction by Darinbob · · Score: 1

      The majority of developers will also never need to do anything that involves a lot of thinking. And as time goes on they may wonder why it's getting harder and harder to get a job, or why they're always stuck doing pretty simple business apps.

    9. Re:correction by AuMatar · · Score: 1

      The ironic thin is if you actually talked to the people who wrote those maps (who are generally pretty good programmers) they'd be on your side of the argument. The STL was written to be good enough and to be as generic as possible. There's a ton of speed optimizations that can be done if you're willing to make a few assumptions or a few different tradeoffs. Or just willing to simplify the STL API and drop parts most people don't need like allocators.

      --
      I still have more fans than freaks. WTF is wrong with you people?
    10. Re:correction by Anonymous Coward · · Score: 0

      " or why they're always stuck doing pretty simple business apps."

      And this is often the crux of academic bigotry - for some reason, working on theoretically beautiful programs that dont do shit for anyone is somehow seen as "real programming", while working on business apps that have a value for actual human beings is seen as something one is stuck doing.

      Fuck you and your pretensions.

    11. Re:correction by next_ghost · · Score: 1

      There's always the problem of knowing what to look for. While I was working on my master thesis, I came up with a special graph property which would help me solve the problem. When I submitted a paper about the main problem to a conference, two of the reviewers pointed out that the graph property is already known under a different name (but luckily, nobody used it yet for what I was doing). I talked about the problem to a lot of people in my department but none of them, including my advisor, have heard about that graph property until I got review feedback for my paper.

      Also, the theory is not so much about specific knowledge. It's a lot more about your way of thinking. If you can look at the problem from the right angle and then find and fix all the holes in your algorithm yourself, you don't need to look for existing solution you've never heard of. Or you can find out that the problem is too hard for you and you really need to find somebody else's solution. This knowledge of your own limitations is what separates real programmers from code monkeys.

    12. Re:correction by next_ghost · · Score: 1

      And the vast, vast majority of developers will never need to know that. Most developers out there are doing pretty simple business apps that back up to a database....

      Oh, believe me they will. And they'll happily run off a cliff when they come across one of those problems where they need it because they won't even realize they do need it. How do I know? Because I also write those "pretty simple business apps that back up to a database" for a living and I've come across such problems several times just in the past year.

      And any developer who finds himself needing to find the shortest path is going to google "shortest path algorithm" and guess what the very first result is...

      Really? I'll give you a little more real-life example: You need to write a program that will manage consultant assignments. Your company has a handful of specialist consultants who visit customers on request (for a hefty fee, of course). Each visit takes one full day. Most requests require a specific consultant because the others aren't qualified to do the task. Some requests require two or more specific consultants to come on the same day. There are enough requests all the time to fill the consultants' calendars for the whole next year. Your program needs to decide which consultant goes where and when.

      I don't want you to find a solution to that problem, I just want to know what generic problem you'd google for in this case to find a solution.

    13. Re:correction by hermitdev · · Score: 1

      And you fail to understand the concept of an example. And the use of an example that everyone is familiar with (who, that has studied computer science, isn't familiar with the travelling salesmen?). The point the GP is making is that you need a semblance of theory (whether trained, or not). Yeah, you can google for an algorithm, but can you understand it? How does it work. Why does it work. What's its complexity? What's the worst case complexity? How do you tell if the algorithm is a good fit without some understanding of theory? It might work fine for your simple test data, but might blow up with real-world data.

      Software needs to work correctly, first and foremost, but secondly, it should do it as efficiently as possible. Especially as we're moving to a more mobile, battery-powered world.

      You'd be surprised how few people know the difference between (in C++):

      std::string s;

      and

      std::string s = "";

      What's the difference? They do the same thing, right? In both cases, 's' is initialized to an empty string. Yet, they're not the same. In every compiler I've looked at (GCC, ICC, Clang & VC), both generate different assembly code with the latter always being less efficient (calls to determine string length, possible memory allocs). In optimized builds, the former is generally a straight mem store. It's a difference of around 15-20 instructions versus 1. Why care? It's smaller, it's faster and it uses less power. And, it's a pessimism that so many software developers make unnecessarily. Why do they make this mistake? Because they don't understand the basics behind what they use/do.

    14. Re:correction by hermitdev · · Score: 1

      Agreed. At my last job, I often interviewed candidates for C++ development positions. I asked a number of questions around maps.

      1. Given a std::map<int, std::string> and a sorted std::vector<std::pair<int, std::string>>, on which will binary searches tend to be faster?
      2. Per inserted element, what is the per-element memory overhead of each map entry? How about a vector? set?
      3. If I create a map with 1000 entries, how many dynamic allocations occur (disregarding anything necessary for constructing either the key or value)? If I create a vector with 1000 entries, how many allocations occur?

      These are 3 very clear, simple, yet revealing questions on how well someone understands the STL.

    15. Re:correction by Anonymous Coward · · Score: 0

      That example problem is exactly the sort of thing someone with a bit of formal instruction under their belt would look at and say something along the lines of, "That looks just like a combination of the [blank] and [blank] problems. I bet I could manage the scheduling with a [blank] and accommodate for the [commonly-known gotchas] via [blank]. I wonder if someone's already written one for my [framework/language/platform]...let's check Google."

    16. Re:correction by Darinbob · · Score: 1

      I have seen someone use std::map as in order to remember which one of a set was active (ie, there was never more than one element in the map at a time); and similarly I have seen someone use it to map from an enum of 8 adjacent constants to something else. The first could have been solved with just a pointer, and the second with an array of 8 pointers (or structs if someone is a fan of copy constructors).

      I also saw someone convert from two C strings to C++ string, then compare using "==". This was defended by saying that a fix was needed quickly and he knew C++ better than C. (bringing in just that part of C++ string library also caused the program to become too large to fit in its memory region, so we had to spend time fixing that fix as well)

      Yes I have had some people accuse me of trying to optimize too early, but in some cases it is useful to keep optimization in mind while coding, such as when you have a slow processor and limited memory. On the other hand I see many people who never bother about optimization, ever. Avoidance of pre-mature optimization should not mean avoidance of all optimization. It should not take that much effort to realize that writing "std::map" is a bad idea.

    17. Re:correction by MikeBabcock · · Score: 1

      I still don't see how your edge case changes that pushing all that current knowledge into a massive wiki instead of millions of individual papers in journals wouldn't help for almost all other cases.

      Good job on the thesis though.

      --
      - Michael T. Babcock (Yes, I blog)
    18. Re:correction by next_ghost · · Score: 1

      I'm not arguing against your idea, I'm just pointing out additional problem that needs solving. My point is that lots of programmers without at least a little bit of formal university-level CS education have never heard of even the most basic CS concepts. You say "graph" and they hear "squiggly lines going from left to right on a sheet of paper". Wikipedia.org already has articles about the most common CS problems and algorithms. Those articles may not be as detailed as they should be but this part of the problem is already at least partially solved. The big problem is giving people who need this information the ability to find their needle in the wiki haystack. I have no idea how to do that. Searching for keywords simply doesn't cut it, because the vast majority of programmers don't know the right keywords.

    19. Re:correction by vilanye · · Score: 1

      +1

      There is a difference between premature optimization and good programming. Sadly, the latter gets confused with the former.

    20. Re:correction by Darinbob · · Score: 1

      Whoops, didn't mean that to say std::map is bad in general, but my example was removed because of angle brackets. I means std::map with bool or small enum as the key type.

  23. Just do it by Anonymous Coward · · Score: 1

    School is only a starting point to gain basic knowledge. The only way to learn to code is by coding. All of the truly excellent programmers that I know have no formal education in programming, but they all love doing it, and that is the key. No amount of education will make a good programmer if they don't love doing it. Code is not really a tech skill, it's more a literature story telling, with non-fiction bindings skill.
    It requires technical knowledge, of course, but it isn't classical engineering in nature.

  24. Re:You have all the education you need, don't both by dkf · · Score: 2

    While, CS is definitely applying math, it lies somewhere between Math and Software Engineering.

    Anything to do with user interfaces will have a fair chunk of applied psychology as well (and some appreciation of parts of physiology too). What's more, people doing theoretical CS tend to go much deeper into discrete math than the normal math student does.

    --
    "Little does he know, but there is no 'I' in 'Idiot'!"
  25. Re:You have all the education you need, don't both by Zmobie · · Score: 1

    I've seen plenty of people that were excellent at math (some working on an MS in it...) that couldn't write a worth a damn program if their life depended on it. Not saying the OP is necessarily that though. It does give you a very firm background for CS (just getting my BS I ended up one class short of a math minor anyway, and even then I had to learn basic multi-variable calculus and applied differential equations when I took physics), but there are still quite a number of high level CS concepts one should learn. Again, the math background makes them SIGNIFICANTLY easier to grasp, but taking classes or doing course-type related CS would still be quite valuable.

  26. Re:You have all the education you need, don't both by ledow · · Score: 1

    As someone with a degree in Mathematics and Computer Science, I can tell you that if your CS degree is applied-maths, then you really should find another course.

    Pretty much, when I was at uni, the CS guys couldn't do the maths side of the courses and the maths guys couldn't do the CS side of the courses. There's an overlap of, at most, a few "theoretical" courses (so much closer to pure math, to be honest) - graph theory, coding theory, logic, etc.

    But ultimately, they are separate for a reason. Otherwise, CS would just be another area of mathematics rather than a subject in its own right.

    That said, education is a lovely thing to have, but if you want recognised education, it kinda stops at your second degree. Past that, you wouldn't need to prove yourself career-wise in the vast majority of jobs. And, in fact, a masters or a PhD speaks volumes more than any amount of undergraduate degrees.

    If you're doing it for yourself, do it for yourself (and good on you!). If you're doing it for career "brownie points", then do the job, or higher education, instead.

  27. Re:As long a you don't intend to get work from it. by dkf · · Score: 1

    As long a you don't intend to get work from it, there are tons of alternatives for learning the information that would be contained in the course.

    One of the key differences is that taking a formal course on it forces you to study the boring and hard parts as well as the fun bits; often they're important for gaining a real level of understanding. (I suppose that's true for pretty much any subject.)

    If you do intend to use it for the purposes of obtaining employment, you'll need to actually take the exams at an accredited institution. Otherwise the employers won't know you from some random jerk walking in off the street claiming something which isn't true. No accusations, but from their perspective, self-taught is indistinguishable from untaught (unless you've got a solid portfolio of work or a good history of working in the area, in which case nobody will really care about the degree).

    --
    "Little does he know, but there is no 'I' in 'Idiot'!"
  28. Loots of good stuff out there by johnjaydk · · Score: 2

    This is all Python centric but that's where the jazz is these days:

    1. Codecademy. My 12 year old son just passed it.
    2. An Introduction to Interactive Programming in Python (coursera.org). Games and great fun. Also in python.
    3. Udacity.com. Do all of their software subjects. Just ditch the Java stuff. The 90's are long gone.

    I've got a 15 year old masters in CS but I went through the coursera and udacity stuff and learned quite a lot along the way. Good stuff.

    --
    TCAP-Abort
  29. Re:You have all the education you need, don't both by alvinrod · · Score: 1

    It really depends on what is meant by computer science. A lot of CS degrees today contain a lot more software engineering and general programming than they do theory. A person can take a lot of more traditional CS classes (e.g. compiler theory, cryptography, automata, algorithm analysis, etc.) which are are fairly heavily math based, and probably learn a lot, but they won't necessarily help with programming ability or the kinds of things that are more generally useful today.

    If someone just wants to build websites using some framework or some casual programming, odds are they won't need to know a lot of those things. I think that if you're going to be a professional software developer, those types of courses can open you up to new ways of thinking and problem solving that will be valuable.

    To me there are really three different areas: computer science, which is mostly math and theory; programming, which is translating algorithms into code; and software engineering, which encompasses the entire software lifecycle and managing it. A software professional probably wants some knowledge of all three areas, but it's likely that they'll tend to specialize in one particular area.

  30. Re:Ivy League = theroy loaded classes with skill g by EmagGeek · · Score: 1

    I went to Georgia Tech, and it certainly does NOT have the "ivy league" mentality. In fact the place prides itself on the practicality of its curriculum. The university actively engages industrial leaders to shape and form its curriculum to keep it current with demand.

    I don't know what the deal is with the online Master's, though. I completed my attendance there when the Internet was just starting to take off, so I don't know if the same resources are available (like the Alumni mentoring program, etc...).

  31. inB4 by Hognoxious · · Score: 1

    inB4 Joe "tard school is bettor" dragon.

    --
    Confucius say, "Find worm in apple - bad. Find half a worm - worse."
    1. Re:inB4 by Hognoxious · · Score: 1

      P.S. Alas, not

      --
      Confucius say, "Find worm in apple - bad. Find half a worm - worse."
  32. porridge wog by Anonymous Coward · · Score: 0

    Walls didn't work for the Romans

    An unverified Scotsman told me Hadrian's would have been fine if they'd installed it the right way round. So I kicked him in the nads. Fucking porridge wog, who does he think he's calling a barbarian?

    1. Re:porridge wog by Anonymous Coward · · Score: 1

      Roman Officer: "Great spirit of Jupiter! Our culture is centuries ahead of theirs. Why, we have toilets... and wipe our bottoms with vinegar-soaked sponges."

      Centurion Blackadder: "Yes... and they wipe their bottoms with Roman soldiers!"

  33. Computer Science BS by prefec2 · · Score: 3, Insightful

    You should have a look at the average course structure of a BS program. Normally it contains the following elements:
    - Math. hopefully graph theory, lin. algebra, not so important for most things, but still often found in curricula analysis
    - CS theory: first-order logic/predicate logic, Turing machines, grammars (the Chomsky stuff) LR, LL, LRAR, regular languages, mu-recursion, the language Z or objective-Z (however this item is optional)
    - Different programming paradigms. Best learned with special languages: functional -> Scheme/Lisp/Haskell; OOP, but you already know that.
    - OOP programming and design pattern
    - Software engineering: UML a bit, use case forms etc., different types of project management: agile, RUP and V-model (only basic principles)
    - Hardware: basic analog electric components, transistor etc.; FPGA etc. VHDL or something similar; basic CPU designs, 3-address code, gate architecture (pipeline is often too complicated)
    - Some other basic field. Robotic, e-learning etc.
    - Some extra stuff from a different field (hopefully not a science and not economics)

    There are plenty of books on most of these topics. If you would live in Germany you just could enroll at the next University for free and checkout their courses. Or go there without enrolling. In most cases no one would check if you are a student ;-)

  34. Degree hype by Anonymous Coward · · Score: 0

    I find that most folks with a degree and no talent are experts at defending the value of the degree, while those without one do all the work, and advance the state of the art! If your not an EE, then your only a computer consumer, not a scientist of computers! The CS degree was designed to separate you from your cash, the result of the explosion in education lending. Suckers, LOL.

    1. Re:Degree hype by Crimey+McBiggles · · Score: 2

      I find that most folks with "Anonymous Coward" and no name are experts at trolling.

      --
      Crimey
  35. this might be helpful by _4p3 · · Score: 1
  36. The job equivilent of a college CS education by quietwalker · · Score: 4, Insightful

    The simple fact of the matter is that a 4-year university's computer science program is not meant to provide job training, and as far as career skills go, you could pick up a CS degree equivalent of job skills in under a year.

    I wrote about this the other day, on the Ask Slashdot: Modern Web Development Applied Associates Degree topic, and I'm sticking to my guns on it. You don't need any math more complex than simple algebra. You don't need any theory classes.

    Some of these theory classes may provide better insight, and lacking them may limit you if you're attempting to enter a highly specialized, complex field with no demonstrable experience in it (which, by the by, doesn't really happen), but for 98% of your day job, it's going to be more important for you to know how to parse and sanitize input than it will be for you to know how to write a compiler, raytracer, decompose a function into mathematical terms, perform a Big-O analysis, design a memory manager for an OS, and you'll probably never use matrices or differential equations.

    Hell, the grads I see now a days haven't got a concept of efficient design, most lack basic database skills, awareness of common libraries, common development tools, never used any team-based tracking systems or source control, and so on. Unless they've struck out on their own, they're almost completely unsuitable as candidates. Many of the self-taught devs seem to have a better grasp of things, if only because they end up attempting to write usable software from design to implementation, instead of homework assignments demonstrating polymorphism and recursion.

    On the other hand, for many HR departments, a degree is go/no-go. You'll never get to an interview without one, and there's no free, online equivalent for that. You'll just have to make do with having superior technical skills, and try to apply at a company that values that more than a sheet of paper.

    1. Re:The job equivilent of a college CS education by laughingskeptic · · Score: 1

      "You don't need any math more complex than simple algebra."

      I can only partially agree with this statement.

      Software implementations do not live in a vacuum. If the domain you are developing software for depends on higher math then the software engineers working in that domain NEED to have an understanding of higher math, physics, etc. depending on the domain. I have seen disasters when this is not true. For instance I know of a software team that was charged with computing locations based on the TDOA algorithm for the US military. However earlier in their data pipeline they had truncated nanosecond accurate times to milliseconds because that programmer couldn't conceive of why anyone would ever need time to be more accurate than milliseconds. The team as a whole could not understand why their location results seemed random (+/- a continent). They had no understanding of hyperbolic math, the implications of the speed of light or any of the other basic things they needed to understand to solve the problem. They had been handed an algorithm which they had dutifully translated into code, so in their mind the problem must lie with the mathematician that gave them the algorithm. The mathematician was not a software engineer and was not in a position to use a debugger to notice that the times had been truncated. When the team was told what was wrong via a very specific bug report regarding the truncated times, they, as a group were angry and killed the messenger.

    2. Re:The job equivilent of a college CS education by Anonymous Coward · · Score: 0

      To your point. I see it over and over. People who do not understand the simple parts of the system (even ones who have the degree). Using dogmatic approaches because that is 'what they know'. More worried about some style guide from another company they worked at. Instead of having a bag of tools at the ready. Recently I simplified a project because I understood the system. The other devs were going to put in 20-30k lines of code. I replaced it with a slightly different data structure. Speeding it up (giving a decent big O reduction) and making it actually testable.

      There are 2 kinds of CS out there. The theory and the application. For many they never match up (which is where the gp is coming from and I can see that I just disagree). Most of the time first pass code is 'good enough' these days. But if you end up in the weeds you need the tool bag of CS. I see people throwing out SQL in favor of nosql or the other way around with no idea why one is better over the other in different cases. It just happens to fix the small issue they are having at the moment. I see people making elementary race condition errors with threading. Because they do not understand the structures they are using. CS gives you the ability to know why you use a particular structure over another.

      CS is more than just algs. If that is all it was it would still be a subset of most math departments. It is the application of those algs is where you can shine.

      I use this as one of the books to teach people practical programming.
      http://www.amazon.com/Debugging-Indispensable-Software-Hardware-Problems/dp/0814474578

      However, if they can not understand what is happening in these books they will be lost and unable to apply the lessons. Unfortunately Knuth has a very thick style. :(
      http://www.amazon.com/Computer-Programming-Volumes-1-4A-Boxed/dp/0321751043

    3. Re:The job equivilent of a college CS education by next_ghost · · Score: 1

      Some of these theory classes may provide better insight, and lacking them may limit you if you're attempting to enter a highly specialized, complex field with no demonstrable experience in it (which, by the by, doesn't really happen), but for 98% of your day job, it's going to be more important for you to know how to parse and sanitize input than it will be for you to know how to write a compiler, raytracer, decompose a function into mathematical terms, perform a Big-O analysis, design a memory manager for an OS, and you'll probably never use matrices or differential equations.

      You don't learn any of those things to actually remember them. They are supposed to teach you many different ways of thinking about problems. And most importantly, all of them are supposed to teach you how to prove correctness of your own algorithms. You can't learn those things on your own or in a job and without those abilities, you're driving blind on a cliffside road.

    4. Re:The job equivilent of a college CS education by david_thornley · · Score: 1

      How much theory you need depends on what you're doing. The field is still young enough so that the job market changes, and just learning the latest stuff is going to work for only a limited time.

      Without what you list as unnecessary knowledge, you will be ineligible for a lot of jobs that pay well and have interesting work. You will have problems with relational databases because you don't have the mathematical foundations, and you will not parse input well because you don't know about compilers (the front end of a compiler does the parsing). You will have more problems given some mathematical formula than you should, and those do come up in unexpected places. Not knowing Big-O works well until something is running slow and the boss asks why.

      --
      "When you have eliminated the unacceptable, whatever is left, however improbable, must be the truthiness" - Holmes
  37. RTFM, you damn kids by pentabular · · Score: 1

    Go forth and read the "friendly" manuals, /SERIOUSLY/!

  38. Re:Ivy League = theroy loaded classes with skill g by phantomfive · · Score: 1

    No. Years of study in order to implement the ultimate type safe language is absolutely useless.

    Or it lands you a job for $250k at Google/Microsoft research.

    --
    "First they came for the slanderers and i said nothing."
  39. Re:Ivy League = theroy loaded classes with skill g by pigiron · · Score: 1

    Hell, I made more than that as a programmer with just a B.A. in Econ.

  40. Re:Ivy League = theroy loaded classes with skill g by Anonymous Coward · · Score: 0

    Clearly everybody else is Doing It Wrong, and you're the One True Genius who certainly Knows How To Do It Right.

  41. Re:Ivy League = theroy loaded classes with skill g by phantomfive · · Score: 1

    Hell, I made more than that as a programmer with just a B.A. in Econ.

    Good. When other programmers make more money, it raises up the salary for all of us.

    --
    "First they came for the slanderers and i said nothing."
  42. Ask your students.... by Simonetta · · Score: 2

    With all respect...
      All the comments that you'll be getting from Slashdot readers will be worthless to the point of your question. As you may have noticed by now, every responder assumes that you want to learn to how to do what they consider a dream job in CS to be. And they give replies like 'read Knuth' or 'do MIT on-line courses'.

    Since you already have an excellent job with a good future, and you have already studied elementary program texts in CS languages like Java, allow me to suggest that you ask the middle school students in your programming club what they would consider to be cool and useful programs to have. After you get through the fantasy aps like ' a really cool game that the player doesn't end up always losing' and ' a smokin' 3-D interactive girlfriend' or ' a bio-implant that will allow me to get perfect SAT scores without studying', then you might get some interesting suggestions.

    Personally I suggest that you and your programming students develop Arduino and Raspberry Pi applications. The elementary 'blinking LED' stuff, simple robotics applications, and digital television art projects made from inexpensive TFT displays will be fascinating to middle school and high school students. (hopefully).

    1. Re:Ask your students.... by Anonymous Coward · · Score: 0

      Actually, a 3D interactive girlfriend would be a great idea. Although it would be a bit unrealistic, atleast they would still learn Unity, pattern recognition, and lexical analysis along the way. I've actually thought about doing the same thing, but I'm only gonna focus on the language portion for now.

  43. Re:Ivy League = theroy loaded classes with skill g by pigiron · · Score: 1

    Since when is "everybody else" trying to implement the ultimate type safe language?

    Learn to read.

  44. More Mathematics by twistedcubic · · Score: 1

    Why not get a masters degree in mathematics (non-Ed)? While taking classes in higher mathematics you will encounter problems where you can apply your programming skills. And since you're a math teacher, taking more mathematics classes will make you a better mathematics teacher (yes, I know this is generally considered false). Also, it will improve your career opportunities in mathematics. Even if your current job is great, people in the real world get jealous of smart people and try hard to derail their success, ESPECIALLY in the education world.

    1. Re:More Mathematics by Anonymous Coward · · Score: 0

      Might make him unemployable in education does he have tenure or not?

  45. Re:Ivy League = theroy loaded classes with skill g by phantomfive · · Score: 1

    Apparently you aren't as good as you think you are if you're worried about that.

    --
    "First they came for the slanderers and i said nothing."
  46. Re:You have all the education you need, don't both by pjt33 · · Score: 1

    But ultimately, they are separate for a reason. Otherwise, CS would just be another area of mathematics rather than a subject in its own right.

    That's how it started. The first CS degree was Cambridge's Dip.Comp.Sci., taught out of the Mathematical Laboratory. I think that the best way to see CS is as an interdisciplinary subject which sits between pure maths, engineering, and psychology.

  47. Re:Ivy League = theroy loaded classes with skill g by pigiron · · Score: 1

    I didn't say that I was good, just that I was well payed. There *IS* a difference you know.

  48. Re:Ivy League = theroy loaded classes with skill g by phantomfive · · Score: 1

    And to that my answer doesn't change.

    --
    "First they came for the slanderers and i said nothing."
  49. Re:Ivy League = theroy loaded classes with skill g by pigiron · · Score: 1

    Non sequitur.

  50. Re:Ivy League = theroy loaded classes with skill g by Jawnn · · Score: 1

    This! If I had a dollar for every line of code written by very "productive" coders that was part of an architecture that was actually a nightmare when it comes to scalability, availability, or manageability, I'd have a lot of dollars. There is more to "computer science" than programming; a lot more.

  51. If you can convince employers... by mark-t · · Score: 1

    ... that you know your shit as well as or better than any graduate, then more power to you.

    I have found, however, when one does not yet have an abundance of expierence, that having a formal education makes a significant difference to just getting by the initial filtering process.that many companies use.

  52. no need to wait for courses by Anonymous Coward · · Score: 0

    All but one of the courses in the infoworld article have past sessions that you can access the content of. Just check the "Sessions" drop down on each course's page.

    You might be able to cover some of the topics from the missing Programming Languages course with something like Paradigms of Computer Programming from edx: https://www.edx.org/course/louvainx/louvainx-louv1-01x-paradigms-computer-1203 . If you browse the courses from coursera, edx, and udacity, you might find additional courses with related topics.

  53. No, just no by maccodemonkey · · Score: 1

    Don't get me wrong, there is a lot of valuable, raw knowledge out there, and a lot of the textbooks I had for my CS degree are available, and are not textbook-y material, and I've see a few suggested in this thread.

    But I don't think an "online" equivalent to a CS degree exists.

    A good CS degree is fundamentally incompatible with working online, on your own time. I really respected the program I was in, and whether it was working on open source or any other sort of project, one of the most valuable aspects of the work was learning to work in a team, as you probably will in the real world. I had at least three entire courses devoted to learning how to work in teams. Divvying up work, writing documents, communicating, etc etc.

    There's also the aspect of working with professors. As ugly and horrible as some of the assignments they gave out were (I'm looking at you, compilers coursework), there is a degree of f'd upedness in the stuff that professors can throw at you that's not present in the clean examples you normally see in books that you find in class. Again, nothing is really a comparison to having to work in a team or with a professor to find your way out of a requirements hole. And there is nothing for earning real world experience than having to muddle through coursework assigned by a professor that doesn't speak your native language (which trust me, will also be seen in the real world.)

    Also, there's just the face to face work with professors. I found my computer graphics course super valuable, and that was taught by someone very active in the OpenGL space. I could probably get a book by someone also active in the field, but it's not the same.

    The worst CS degree programs I've seen simply try to reproduce what you'd find in a book and charge you $30k-$40k a year for the privilege. You could probably reproduce that in online coursework, and if that's what you want, then I wish you luck. But if I'm reading the question exactly as posed, and you want something that could be treated the same as a CompSci BS but on your own schedule and online, I don't think such a thing exists. At least not something I'd want that would convince me to hire someone.

    I could see a hybrid approach working, and now that I think about it, that's probably close to what I had. About half my time in my degree was spent off on my computer logged in to campus servers hacking away, but that other half of working with teams in person just can't be substituted for.

  54. What's your end goal? by dont_jack_the_mac · · Score: 1

    If you're just looking to pick more programming knowledge to continue teaching middle school then you do not need a MS for that. MIT's Opencourseware is a great place to start: http://ocw.mit.edu/index.htm

  55. Free Java Lectures by curmudgeon99 · · Score: 1

    I have a Java site: http://sites.google.com/site/f... They're pretty self explanatory. Three semesters worth.

  56. Free Java Lectures by curmudgeon99 · · Score: 2

    I have a site that is free and has three semesters of Java lectures called: http://sites.google.com/site/f...

  57. Re:Ivy League = theroy loaded classes with skill g by Anonymous Coward · · Score: 0

    "Catch...or catch not. There is no 'try'!"

  58. Re:Ivy League = theroy loaded classes with skill g by drstevep · · Score: 1

    ...until you have to write a truly complex system. Then, knowledge of correctness, algorithmic complexity, graph theory, functional and operational paradigms, etc., will separate the low end code generators from the people who actually design and build the system.

    The skills you need are related to how to think about the system, find an appropriate approach to designing and implementing the solution, and being able to demonstrate that it is effective. Putting it into a language is a last step.

    I can't tell you HOW MANY TIMES I've run into people who think they know how to build a system because they know a tool. And they are fine, until I ask them about timing and randomness, data complexity, parallelizing on a massive scale, and so on. And then I have to explain the CONCEPTS so they'll even begin to understand the questions I'm asking.

    Learn the WHY of what's going on. You can always pick up a tool.

  59. Re:Ivy League = theroy loaded classes with skill g by Darinbob · · Score: 1

    Disagree. This theory is MORE important than the particular skills. Because that fad language you learn today may be ignored in 5 years, or 10, or 20. But the theory still works. We have hundreds of thousands of code monkeys who write crappy code but very few who write good code. There is no CS class I've taken that has turned out to be pointless; and I took every one of them except databases and VLSI (and those two are useful also).

    Even if some class is pointless as far as skills; the whole point of university is to LEARN and those classes are good at teaching you to learn and forcing your to think. Whereas learning how to use some new framework or language teaches you very little. Teaching you to do a job is not the point of a university education. You can go to a trade school for that, learn how to program at the junior college in half the time. The university is training people for life, for adaptability and versatility, to make someone well rounded instead of just a code monkey.

    Attempting to learn the minimum necessary is the same as attempting to be ignorant.

  60. functional programming by hlee · · Score: 1

    We were taught Miranda (very similar to Haskell) in my bachelor's program. It was the primary language for most of our exercises across many courses. It is an effective lnguage for teaching many fundamental aspects of programming like recursion, and algorithms - expressing quicksort in a functional language is not only more elegant and considerably shorter when compared with c or Java. That was over twenty years ago, but to this day these functional programming abstractions have been invaluable in shaping my designs, and thought processes involving any kind of programming whatever the actual language I'm using.

  61. Re:Ivy League = theroy loaded classes with skill g by Darinbob · · Score: 1

    Some people want to box things up into compartments. Sure it's useful to know Roman History, but that's for other people they think. So they learned Java and know nothing else but that, and leave the repeating history thing to politicians. They leave the theory to the mysterious people who write Java frameworks and runtime (possibly they're wizards), they leave the optimization of their programs to the customer who's job it is to buy a faster computer every year.

    This isn't just about preparing someone to be a leader; plenty of people are happy being followers. However people do need to be prepared to know when a leader is worth following, ability to point out when a leader is wrong, whether that leader is the POTUS or a CEO or a manager.

  62. Re:Ivy League = theroy loaded classes with skill g by phantomfive · · Score: 1

    You sir are a poet.....able to produce posts whose entire text is nothing but a description of itself. Well done, well done.

    --
    "First they came for the slanderers and i said nothing."
  63. Re:Ivy League = theroy loaded classes with skill g by pigiron · · Score: 1

    At least they reference something. See my previous comment about your last two.

  64. Unfortunately the guys making the hiring decisions by NotSoHeavyD3 · · Score: 1

    Will for some reason think the new hot thing is totally different than what's come before. (Oh no, we're looking for someone with more experience in C#/Java and not over a decades worth of experience. Of course we don't understand that those languages were expressly designed so C++ developers can easily move over to them and the fact you get inheritance, polymorphism, and templates don't count because you only know the C++ version.)

    --
    Did you know 80 to 90% of the moderators on slashdot wouldn't recognize a troll even if one dragged them under a bridge.
  65. sed, awk, grep, expr by raymorris · · Score: 1

    You're not going to write much useful software in bash without calling expr, sed, awk, grep, etc. - all separate programs. When you use echo, basename, etc. you don't necessarily KNOW whether you're calling an external program or not.

    On the other hand, an experienced Perl programmer rarely calls external programs. The full functionality of sed, awk, grep, basename, echo, and most other system utilities is available within the Perl language itself. The one notable thing Perl often opens a pipe to is sendmail, for configuration purposes. You could write sendmail in pure Perl. In shell, even "hello world" may well call /bin/echo . Perl is an interpreted language, shell is a scripting language.

    This most certainly does not mean shell is BAD. She'll scripts are very useful. They are useful SCRIPTS.

    1. Re:sed, awk, grep, expr by pigiron · · Score: 1

      Perl may be more powerful (I myself wouldn't touch it with a ten foot pole) but bash and Perl are both still imperative programming languages.

        I prefer Newlisp myself for most tasks as it can natively access system calls including , Java graphics, interface natively with MtSQL and SQLite and also with most other databases via ODBC, and and with C/C++ libraries in addition to modifying itself on the fly as all good interpreters can do. Supports regexprs too. Perl sucks balls in comparison. Its very handy for HTML and XML since they are just S-expressions when you get right down to it. It has built in httpd too.

      Get hip and use Newlisp for any server side task imaginable.

  66. most engineering is applied math by raymorris · · Score: 1

    Mechanical engineering is applied math.
    Therefore, if you have a math background, you're all set to be an engineer - no engineering classes required, right?

    A good math background will make CS much easier. It is, however, a distinct discipline. For example, to study algorithmic complexity, some math is needed, so someone who already understands the pure math will have a head start. However, they still need to learn the patterns to quickly estimate complexity and be able to "see" which type of algorithm might have lower complexity.

    In many ways, CompSci is to finite math as finite math is to arithmetic. You need arithmetic to learn all of finite math, because it's based on arithmetic, but it goes beyond arithmetic. So to CompSci requires knowledge of set theory and other finite math, but it goes beyond. See for example SQL, aka relational algebra and relational calculus. A math background will teach you about set operations, but SQL is set algebra on sets on tuples. You don't normally restrict sets of projected tuples in math class.

  67. ^Best advice by globaljustin · · Score: 1

    CS is no more than an Applied Math degree "in drag"

    This. It may seem to conflict with other credible posts that indicate alot of programming skills were gained in a CS program. It's important to note that CS is kind of a mash-up of disciplines that was as much of a creation of the marketing department as academia. It seems like a logical major to have, but the discipline suffered b/c it became popular at a time when many academics couldn't even check email!!!

    The key is what is your **a priori** knowledge. In other words, it's all about what you know going in.

    If you want to do actual **computer research** as in working on new processor designs or something like that, then you will want a CS degree.

    Otherwise, parent is the best advice.

    --
    Thank you Dave Raggett
    1. Re:^Best advice by Anonymous Coward · · Score: 0

      Pardon a lowly CS major (I graduated in 2012 with a master's degree) but in what way are graph theory, computational complexity, linear algebra, probability and multithreaded algorithms useful for designing processors?

  68. Re:Ivy League = theroy loaded classes with skill g by Anonymous Coward · · Score: 0

    My CS degree delivered that. Not as an official part of the curriculum, of course, but a particular teacher's desire to show us the right way to do things. (Reading slashdot discussions helped, too.)

  69. this should settle it by globaljustin · · Score: 1

    A lot of CS degrees today contain a lot more software engineering and general programming than they do theory

    Yes and this is a major improvement that took decades. Alot of talent was wasted b/c some CS majors didn't write code until the 3rd year.

    It grows out of a misunderstanding of what 'computing' is as an academic discipline & non-tech academia's inherent inability to understand something new & adapt.

    To me there are really three different areas: computer science, which is mostly math and theory; programming, which is translating algorithms into code; and software engineering, which encompasses the entire software lifecycle and managing it.

    Now...are we saying **how things are** or **how things should be**

    I'd agree you're close to 'how things are' but it's not how they should be.

    CS, programming and 'software engineering' should all be **one major**

    Everything in computing involves interacting with machines to give them instructions.

    Humans giving machines instructions. That's computing. It's a simple description of a complex action, but it is accurate! Why fight it!

    CS theory could be covered in 2 4hr class sections. Alot of CS programs expand the 'theory' aspect in order to "justify their existence" on the balance sheet. It's an administrative power play. All academic disciplines do it to some degree.

    --
    Thank you Dave Raggett
  70. Try Saylor by Anonymous Coward · · Score: 1

    Saylor Academy offers a complete CompSci course for free: http://www.saylor.org/majors/computer-science/

  71. Re:Ivy League = theroy loaded classes with skill g by Anonymous Coward · · Score: 0

    Paid or Payed. There *IS* a difference you know.

  72. Re:Unfortunately the guys making the hiring decisi by AuMatar · · Score: 1

    At the big companies maybe. Although the better big companies are smarter than that. At the startups not at all- generally because there is no HR department and the engineers/former engineers are hiring directly. Working at them, the only time I've seen someone hired for a particular skill instead of problem solving ability and intelligence is when we had a short, hard deadline and needed a subject matter expert for just a month or two.

    --
    I still have more fans than freaks. WTF is wrong with you people?
  73. Not just that by Anonymous Coward · · Score: 0

    Knowing how to program in C is nice, but pick a langauge (C is good) and do different data structures in it: linked lists, doubly linked lists, trees (height balanced, B, B+, Red/Black, etc), do AVL tree traversal, inserts, updates, deletes. Use trees to do artificial intelligence (state space search, alpha/beta pruning, depth first/breadth first/best first search). Compare and contrast different sorting algorithms (compare bubble sort to quick sort to shell sort to bucket sort to tree sort: compare the run times using big O notation), learn graph theory, dijkstra's shortest path algorithm, and other algorithms for traversing a graph, show how these are used in computer networks (particularly the internet), show how these are use to route ambulances, fire trucks, aircraft, determine the best sequence of steps to create pharmaceuticals or explosives, the closest/best arrangement of microchips on a printed circuit board (least number of via holes spatially). You should also delve more into networking (read W.Richard Stevens works on Unix Network Programming volumes 1 (Networking API's, Sockets and XTI) and volume 2 (interprocess communication, threads, pipes). Know what CSMA/CD is, token-ring, know the difference between a port and a socket. (A socket is a port combined with an IP address). Know what subnetting is, how to calculate broadcast/network IP addresses, the steps to code a server/client. You should also review combinatorics (you said math, but that could be calculus which is good, but not quite on the mark), and also linear algebra. You should also study tupple relational calculus, propositional relational calculus and predicate calculus (for databases, and AI). Differential Equations and Laplace Transforms not quite so important here), although if you are doing graphics, you will need all of that and more, along with the linear algebra. You should also study some logic design (AND/OR/NOT/XOR/XNOR) logic, state graphs and state theory) ...if for nothing else you can understand how databases can pare information and also understand 'stateful inspection' in routers and networks. If you take courses like cryptography you will need more math, or numerical methods (more math), you should study natural language processing, and also learn about compilers and turning software into bits. You should also learn about operating systems (know that cache memory is used to implement a translation lookaside buffer and acts like a high speed index to all the program entry points of the software running on your system), different run-time models (compile time/load time/run time address resolution)--important for shared libraries, infix/prefix/postfix notation, know what pipelines are (laundry is a pipeline.. wash, dry, fold... no one does all the washing, then all the drying, then all the folding: you take the first wash out and put it into the dryer, then put in another load into the wash, then take the dry clothes out and fold while the dryer is drying and the washer is washing... this is a pipeline. Know what a stack frame is, know what a program counter/CPU registers are, know what a context switch is, know what DMA (Direct Memory Access) channels are, know how they move data around without interrupting the processor, know what an interrupt is, know the difference between edge triggered and level triggered interrupts, know what a shared interrupt is, know what an interrupt service routine is, know what round-robin task scheduling is, know what elevator seeking is, know what a virtual machine is, know what virtual memory is, know what a logic race is, know what a spinlock is, know what a 'fatal clasp' is, know recursion (in order to understand recursion, you must first understand recursion), know what double-tail recursion is, and why its bad. Know why dual pipelines effectively double the performance of a processor, (and so understand how pipelines fail: branch mis-prediction, data dependency problem, page cache misses). Some schools want you to know a bit about hardware too, (chip fan-in,

    1. Re:Not just that by Anonymous Coward · · Score: 0

      And unless you're planning on ending up as text diarrhea on slashdot: stay on the decaf.

  74. Re:Ivy League = theroy loaded classes with skill g by Slick_W1lly · · Score: 2

    This is what *school* is for, not University.

    I hear Americans laud the 'breadth' of their university system with arguments such as the above, but frankly this kind of stuff should be taught *before* university, not during it. I, for instance, learned the 'History of the Roman Empire' when I was 18. Likewise a bunch of other history stuff that I later dropped in favour of the sciences.

    School should be for your 'broad education'
    It should funnel into your chosen subjects which then funnels into
    University - which should be your *specialisation*. Not a continuation of generalities. If by that time you don't consider yourself a 'well rounded individual' then take up some evening classes on your own, rather than watering down the education you *should* be getting in your specialist, chosen subject.

    This, frankly is why I consider american degrees to be nothing more than watered down bollocks. If I go to uni to study 'comp sci' then I want my degree to be 'comp sci' not 'some comp sci classes, plus some bullshit yoga / tennis / geology' stuffed in with it when I could be learning *more specialist comp sci' stuff instead.

    -- did his degree in Artificial Intelligence and didn't suffer a single non-degree related course and is proud of it.

  75. Re:Ivy League = theroy loaded classes with skill g by goarilla · · Score: 1

    You forget about expertise and experience.

  76. Re:Ivy League = theroy loaded classes with skill g by gIobaljustin · · Score: 1

    There's a big problem with this vocational approach you advocate. History of the Roman Empire may not seem to be of any immediate use, but it is.

    And it's also something you can do on your own time. Quit wasting everyone's time by forcing them to go to filler classes. I can rationalize forcing literally any subject down people's throat, no matter how mundane or useless it is. It's quite easy to do, and especially so when you say vague things like you do throughout your comment, without providing any real evidence of anything.

    We have our 'broad' (and yet it still manages to be about nothing), force-fed education right now; it isn't working.

    --
    Thank you Dave Raggett
  77. Re:Ivy League = theroy loaded classes with skill g by gIobaljustin · · Score: 1

    We have hundreds of thousands of code monkeys who write crappy code but very few who write good code. There is no CS class I've taken that has turned out to be pointless; and I took every one of them except databases and VLSI (and those two are useful also).

    Anyone worth their salt will be able to figure out the how & why just by doing things and doing a bit of thinking. These code monkeys who write crappy code would be just as incompetent if they 'learned' (they'd just memorize facts, because they're unintelligent) the theory, because they're not intelligent enough to understand it or apply it.

    --
    Thank you Dave Raggett
  78. Re:As long a you don't intend to get work from it. by gIobaljustin · · Score: 1

    One of the key differences is that taking a formal course on it forces you to study the boring and hard parts as well as the fun bits

    If you don't have enough willpower or intelligence to study such things, chances are you don't have the aptitude for it anyway. Just give up, if that's the case. Too many losers going to colleges.

    Otherwise the employers won't know you from some random jerk walking in off the street claiming something which isn't true.

    Then maybe employers should get off their lazy asses and actually evaluate people. That's what my employer did, and I actually have a good job and work in a good environment. You don't want to work for any employer who hires HR drones.

    --
    Thank you Dave Raggett
  79. Simple... by Anonymous Coward · · Score: 0

    1. you should now that Computer Science is not about programming.
            If you learn a programming language for CS, look for the "pure" ones, not for the real-world ones (efficient, lots of libraries).
            Examples: Eiffel/Ruby for OO, Prolog for logical, Lisp/ML for functional, Pascal for procedural, and not least C/Assembly for hardware-close.
    2. check the curricula of a few top universities (not necessarily American) and understand what the required basics are.
    3. use iTunesU and hear some top University lectures. In contrast to Coursera, there's no waiting time, no price, etc.
    4. for the books, each area has it's "Bible". Go for those; other authors are generally not that good.
            Examples: the dragon book for compilers, Norvig for artificial intelligence, Tanenbaum or Kurose/Ross for IP networks etc.

  80. Re:Ivy League = theroy loaded classes with skill g by pigiron · · Score: 1

    Well I'm a sailor and as far as I'm concerned it was a chain or continuous line of payments so I don't feel at all wrong in using that spelling.

    Go get thee bent.

  81. Discrete Math and the CS Student by Dareth · · Score: 1

    It seems to me that both Math and CS students could use some more "set theory" training. We live in a world full of information. Sorting, arranging, and reporting on that data is becoming a bigger task. Even a small business has more data than you can manually validate. You need some good database setup and understanding to make sure what you get out of it is correct.

    --

    I only look human.
    My mother is a halfling and my dad is an ogre, so that makes me an Ogreling
  82. Good source from California by Dareth · · Score: 2

    Surprised nobody seems to have mentioned the Berkley Webcast yet. http://webcast.berkeley.edu/ It is an online collection of class videos, lectures, and course materials for a variety of subjects including computer science.
    Their into to CS is much easier to get into for a beginner than the MIT OpenCourseWare. http://ocw.mit.edu/index.htm

    --

    I only look human.
    My mother is a halfling and my dad is an ogre, so that makes me an Ogreling
  83. Re:Ivy League = theroy loaded classes with skill g by Missing.Matter · · Score: 1

    How do you know you didn't take any courses not related to your degree? I find this very surprising coming from someone in AI, as it's a very interdisciplinary field, borrowing from statistics, optimization, logic, neuroscience, psychology, control theory, language, etc.. Look at your own field and the failure of expert systems. For a long time, statistics was not core to AI research. Now, some of the most successful AI techniques in robotics have a foundation in statistics. Or consider reinforcement learning, which has roots in animal psychology. As an artificial intelligence researcher in the 80s, you might have looked at animal psychology and said "Bah! I don't want to learn that! It's not a core degree requirement! When would I ever need that?" Because of the interdisciplinary work of researchers in the 80s, animal psychology in the form of reinforcement learning is now a core component of your field.

    I think the bottom line is you just don't know where you'll find inspiration. Maybe you've missed out on a lot yourself, and I don't think that's something to be proud of.

  84. Re:Ivy League = theroy loaded classes with skill g by TopherC · · Score: 1

    Just to counterbalance this, I recently switched from doing academic physics research to a programming career. Now I'm a senior software developer with a wide variety of experiences (currently Android internals). I've taken exactly one comp sci course: data structures. That course was helpful but habitually writing, reading, and debugging code has taught me most everything I've needed. Reading code is very important, as is starting programming at an early age and applying it to whatever you're doing. Learning a variety of languages is also important as each one brings its own paradigms. I read a patterns textbook once but didn't see anything that I wasn't already familiar with. I just learned terminology from that.

    Still, if one is new to programming I'd have to think that getting a degree one way or another would teach a lot in a short period of time. I had never really thought of programming as a profession but rather as a tool that was necessary to whatever else I wanted to do. Economic pressures turned my hobby into a profession. I'm still just a bit grumpy about that even though I'm having fun.

  85. CS major != CS major by globaljustin · · Score: 1

    in what way are graph theory, computational complexity, linear algebra, probability and multithreaded algorithms useful for designing processors?

    all "CS majors" are not created the same.

    first, you tell me what is useful for designing processors. You tell me who makes them & what kind of degrees they have.

    2nd, tell me how those things you listed, graph theory etc....tell me, in your words, how those concepts are useful in the 'real world'

    if you can't engage at that level you're trolling...

    --
    Thank you Dave Raggett
  86. Re:Ivy League = theroy loaded classes with skill g by Anonymous Coward · · Score: 0

    and if you had a better knowledge of the history of Rome you would know that that is bullshit.

  87. Psychology for CS Degree? Re:Donald Knuth by bbsalem · · Score: 1

    Absolutely, some exposure to social science and psychology should be required. The reason is the massive mistake of the Javascript Textarea Widget as the standard for communications and the widespread use of blogs. The design of web logs, blogs, and their misuse is an engineering decision made by web site owners and social media companies and it is a huge error based on the psychology of human communication. We are seeing the misapplication of programming and data structures and data mining in the area of human communication on the Internet and that is due to the ignorance of designers, whether computer scientists or not, to human factors and to the way that the chosen technology inhibits effective communication. This is especially obvious when the answer was known and used long BEFORE the decisions were made about websites and blogging. In the test-based era of Mail User Agents and related tools, it was well understood what people needed to write to one another effectively, and that has been replaced by simple tools that are not as effective and interfere with proper communication.

    It would be easy for someone with a social science and psychology background to test blogging against its alternatives in discussion forums to find out what design helps people communicate effectively and resolve what differences they have. I bet that such a study will find that people are more satisfied with greater complexity available in the older discussion forums than in a blog.This huge error is due to the narrow training of designers. if not the greed of the investors in social media companies. Google has an archive of USENET postings from 1985 on, and it consciously chose to ingnore the lesson of the older designs,

    The opposition to Dice's Beta UI for Slashdot is actually rooted in exactly the same error. It is why most of you dislike Facebook so much, Mark Zuckerberg has said that he wants "Simplicity" but not so his users can talk to one another without pain, but so that his business partners can spy on users easier. So tech deserves to fail for not taking user psychology into account in its design choices.

  88. Re: by next_ghost · · Score: 1

    ... in the subject field, your post looks like this to me. Splitting the first sentence like that between two fields is confusing. The subject line is supposed to contain a summary of your entire post so that people can decide whether or not to open the full text when it's shown abbreviated, not a meaningless half-sentence. Thank you.

  89. acm by astar · · Score: 1

    Acm student membership with the digital library option is $42 a year. This is golden for you as a student and you might do some profesional networking. If you can eventually grab the professional membership some people are impressible.

  90. Re:Ivy League = theroy loaded classes with skill g by david_thornley · · Score: 1

    About the only substantive thing you had to say about the Romans being wrong is about walls, and that shows a lack of understanding of what the walls were for. They were never to keep barbarians out, because that doesn't work, and it's been known that it doesn't work for a long time now, the exception being if you've got enough diplomatic contacts to tell where the wall will be attacked.

    They're more for punishing the invaders. Block off the place where the barbarians breached the wall, and pin them to it on their way back. Then kill them to discourage the others.

    Other techniques include small fortifications scattered behind the wall. Barbarians historically really sucked at siegecraft, and so most of the fortified places would survive, giving Roman reinforcements assistance in addition to safeguarding the population and valuables.

    --
    "When you have eliminated the unacceptable, whatever is left, however improbable, must be the truthiness" - Holmes
  91. Re: by mark-t · · Score: 1

    Hence the use of ellipses. If you don't know how to read works that use them, that's not the fault of the writer.

  92. Re:You have all the education you need, don't both by Anonymous Coward · · Score: 0

    Engineering is just math + requirements+real world constraints; exactly the same as CS.

  93. Re:Ivy League = theroy loaded classes with skill g by bzipitidoo · · Score: 1

    I've heard that explanation before, about the Great Wall of China. Even if the walls were fantastically successful at pinning and trapping escaping invaders, they failed to keep Rome secure. The barbarians kept coming past the walls, and ultimately Rome fell to them. Punishment doesn't deter invaders who are facing the worse problems of starvation or pressure at their own backs from invaders still further out. Rome needed to treat with the barbarians and understand what was driving them, then if possible address their problems, not wall them away and try to ignore them. It might not have been possible for Rome to solve the barbarians' problems, but the walls were definitely no solution. Nor was it a solution to declare that the barbarians' problems were not Rome's problems. Problems do not ask for permission before crossing national boundaries.

    Walls are one of the most seductive non-solutions available. People persist in thinking that fences make their property more secure, when they often do just the opposite as they provide excellent cover for burglars! They keep dogs in and little kids out, but that's about all. One of the most infamously ineffective walls was the Maginot Line. It is as General Patton said: "Fixed fortifications are a monument to the stupidity of man."

    --
    Intellectual Property is a monopolistic, selfish, and defective concept. It is "tyranny over the mind of man"
  94. Free Equivalent To a CompSci BS? by Anonymous Coward · · Score: 0

    gosgog:

    Go to Udacity.com New Courses: Georgia Tech Masters in CS & Data Science

  95. Re:Ivy League = theroy loaded classes with skill g by Hognoxious · · Score: 1

    The barbarians kept coming past the walls, and ultimately Rome fell to them.

    The only Roman border walls I'm aware of are in Scotland. The barbarians that did [Western] Rome in were Germans.

    One of the most infamously ineffective walls was the Maginot Line.

    Only because they didn't finish it - they missed the bit from Luxembourg to Dunkirk Even then, if they'd used the freed up men to form an overwhelming offensive force elsewhere they could still have won or at least stalled the boches.

    --
    Confucius say, "Find worm in apple - bad. Find half a worm - worse."
  96. Re:Ivy League = theroy loaded classes with skill g by bzipitidoo · · Score: 1

    There is the Limes Germanicus, which, while not a wall everywhere, was a fortified boundary. It was the Rhine and Danube rivers, with, at times, a palisade connecting the two.

    The Maginot Line was not originally intended to reach the coast. Too costly. The French were counting on their British allies to stop any German advance near the coast. When Britain made it clear they could not or would not help the French enough with that idea, it was too late to extend the Maginot Line even if they discovered the political will to pay for it. They were also counting on various marshy areas being impassable to tanks, but tanks improved enough between the wars that marshes were no longer an effective barrier. Before the war started, the Line was already near worthless. The money that went into it could have been used elsewhere with much greater effect.

    --
    Intellectual Property is a monopolistic, selfish, and defective concept. It is "tyranny over the mind of man"
  97. Re:Ivy League = theroy loaded classes with skill g by david_thornley · · Score: 1

    Walls are not in themselves solutions. They need to be part of a strategy. Roman diplomacy did extend well beyond Roman borders, and the Romans did offer some barbarians refuge within the Empire. Rome fell because (a) there were too many barbarians, and (b) succession was never really settled, so the Western Empire kept too much military force internally.

    The Maginot Line was quite effective. It guarded the Franco-German border well and reasonably economically. This allowed the French to assemble a large striking force for the plains of Belgium, planning to meet the Germans as far forward as possible. The gap between the flanks was covered by the Ardennes Forest, and the French High Command considered it essentially impassible for armies. That was the really stupid thing that led to the fall of France, not the Maginot Line.

    --
    "When you have eliminated the unacceptable, whatever is left, however improbable, must be the truthiness" - Holmes
  98. Re:Ivy League = theroy loaded classes with skill g by vilanye · · Score: 1

    Without understanding the theory you are not going to be able to do much other than be an API monkey.

  99. Re:Ivy League = theroy loaded classes with skill g by vilanye · · Score: 1

    Universities exist to produce an educated populace, it is not a job training center.

  100. Re:Ivy League = theroy loaded classes with skill g by bzipitidoo · · Score: 1

    The European Union has been far more effective than the Maginot Line. That was one of the first mistakes France made that lead to WWII: being too harsh to Germany at the end of WWI, so that the German people were ripe for radicalization. The French should never have needed to defend themselves at all. Diplomatically, it's terrible. Highly provocative, loud in announcing distrust of a neighbor, and it looks weak next to a robust military.

    But since the French couldn't bring themselves to make a lasting peace with Germany then, they had to think of defense. The Line is still a bad idea. When Germany reoccupied the Ruhr, all France had to do was rattle some sabers and they would have pulled right out. Instead they cowered behind a wall. When the war at last broke out, suppose the French had figured out that the Ardennes Forest was passable and had to be covered, either by the Line or the army. The Germans in turn would know this, and could get past the Line in many other ways-- paratroops, or another front the Line does not guard like maybe Switzerland or even Spain, or possibly a surprise amphibious assault via u-boat. They could also assault the Line. It can't dodge artillery. Punch through at a few points, and ignore the rest.

    --
    Intellectual Property is a monopolistic, selfish, and defective concept. It is "tyranny over the mind of man"