Slashdot Mirror


Treat Computer Science As a Science: It's the Law

theodp writes: Last week, President Obama signed into law H.R. 1020, the STEM Education Act of 2015, which expands the definition of STEM to include computer science for the purposes of carrying out education activities at the NSF, DOE, NASA, NOAA, NIST, and the EPA. The Bill was introduced by Rep. Lamar Smith (R-TX) and Rep. Elizabeth Etsy (D-CT). Smith's February press release linked to letters of support from tech billionaire-backed Code.org (whose leadership includes Microsoft President Brad Smith), and the Microsoft-backed STEM Education Coalition (whose leadership includes Microsoft Director of Education Policy Allyson Knox).

4 of 219 comments (clear)

  1. sTEM by roman_mir · · Score: 5, Insightful

    It is Science, Technology, Engineering, and Mathematics, I think comsci qualifies for the last three but not for the first one and I have a comsci degree.

    1. Re:sTEM by jellomizer · · Score: 5, Interesting

      There is a wide difference on how computer science is taught across many institutions.
      In My college Computer Science was combined in the Department of Math, Physics and Computer Science. So Computer Science was taught in more of Mathematical and Scientific method. Encouraging taking the scientific method to help solve problems.
      1. Identify the question you want to solve.
      2. Offer a Hypothesis on how to solve it.
      3. Experiment (writing code), and going back to #2 if it doesn't work.
      4. Offer your Theory as your solution.

      In class our peers may review some of our solutions and offer feedback, such as stating inputs of X, Y, Z may cause it to fail. Or applying Discrete mathematics to prove that it does or doesn't work.
      While there is some talk about the technology and engineering principles, it was mostly Science and Math. for my version of Computer Science.
      I have dealt with other students from other schools who said Computer Science was Engineering Lite, others where it was Just computer engineering under the Computer Science name. And others where it was just focusing on the technology and not as much the principals.

      My Computer Science classes focused a lot more on Big O performance, while other students Never heard of it.

      Computer Science for the Most Part seems to be a combination of STEM all with different levels of degrees.

      --
      If something is so important that you feel the need to post it on the internet... It probably isn't that important.
    2. Re:sTEM by RabidReindeer · · Score: 5, Insightful

      There are actually 4 aspects to software design and implementation.

      1. Scientific: The discovery, proof, and design of algorithms. An algorithm is a basic set of rules to accomplish a task, and although more than one algorithm might accomplish that task (for example, sorting), the algorithm considered as a "black box" is invariant as to functionality. This is true science, with a mathematical slant.

      2. Engineering. The ability to locate appropriate algorithms for a given task from the "literature" (speaking abstractly, since traditional printed textbooks are only a small part of the resources most of us tap these days). And to determine which algorithms are optimal for the specific project at hand.

      3. Creative. This is the part Management hates. Ideally, software could be constructed by employing automated processes. In reality, there's almost always a creative aspect, and creativity is something that, so far, requires human beings. You can give 2 people an algorithm and they can implement it in 2 entirely different ways. Some of which are easier to read/maintain than others. Some of which are more flexible. Highest marks (in my book) go to implementations that are compact, readable, efficient, reliable (including fail-soft) and adaptable. I can name some sterling examples of such code. Low marks (again, my book) go to crap that's poorly-documented, ill-organized, unreliable and inflexible. Experience has taught me that if code has one virtue, it often has more, and, alas, the same thing goes for faults.

      4. Mechanical. Code grinding. No matter how artistic a software project may be, there's just a certain amount of underlying concrete and rebar that demands less in the way of creativity and more in the way of just plain uninspired grunt work. If you're going to employ monkeys on a project, this is the part - and the only part - where monkeys should be employed. Don't undervalue them, no amount of inspired mathematical architecture and engineering can survive a rotten foundation. Although if we have a fault in that area these days its that the wallpaper-and-panelling crowd is valued more than the flooring-and-wall-stud group.

      Of course, getting a project implemented is only one phase, even though it's where the ball gets built and started rolling. Other aspects not covered here include the support and maintenance, and the requisite planning and budgeting to ensure that the project continues for as long as it's needed and doesn't get hammered when IE8 support is dropped by Microsoft or some similar internal or external upset to the scheme of things.

  2. Shouldn't have been nessecary by T.E.D. · · Score: 5, Interesting

    Perhaps its different these days, but when I was studying CS back in the 80's, pretty much every accredited program in the US was either part of its Uni's Math Department, or its Engineering Department.

    So perhaps people had trouble making up their minds if it was a kind of Math or of Engineering, but either way it should already have been covered in STEM.