Gregory M. KapfhammerAssociate Professor of Computer Sciencehttp://www.cs.allegheny.edu/~gkapfham/ |
The Real Reason Why Software Engineers Need Math
|
Noosh Moussavi
Devlin suggest that software engineers need math because software engineering is all about abstraction. Every single concept, construct, and method is entirely abstract. He says that mathematics was the only subject where they experienced rigorous reasoning with purely abstract objects and structures. For engineers to sit in these college math classes, they may not have remembered detailed concepts, but for them to just learn about abstraction on a daily basis is how they use college mathematics in software engineering.
John Pacino
Devlin justifies his claim that mathematics is necessary for software engineers because both disciplines share the unique property of studying abstract, intangible objects. All other engineering requires thinking in terms of the physical world and the creation of concrete tangible structures. Devlin alludes to thinking in the abstract world as not being as natural as thinking about that which is ground in the physical world. He clarifies this statement by noting this aspect of human thought evolved rather recently in the evolutionary time period. Thus, this type of necessary thinking is not as easily mastered and usually requires rigorous coursework in which one conceptualizes intangible objects and structures. Devlin states that there is no better way to strengthen the neural passageways used for this type of thinking then studying mathematics. No matter what aspect math one studies, the increased abilities they acquire in abstract reasoning will allow them to more easily model the interacting components of software in their mind
Matt Rummel
- In this article, Devlin makes the following statement: "It's not what was taught in the mathematics class that was important; it's the fact that it was mathematical." Do you agree or disagree with this statement?
I agree with Devlins statement regarding the purpose of having mathematics courses not for the content but just because it is mathematics.
Earlier in the article he states that most people view education and learning as filling the vessel. According the filling the vessel mentality, education is basically filling our brain with facts and using what we learn consists of pouring it out. However, in the field of software engineering, it is not so much filling the vessel but getting in the proper mindset of mathematics. If a software engineer can not think abstractly then he will not be able to manage the field or study properly, regardless of how much information he may have learned in the course. Therefore it is important that all software engineers are able to train their minds to think abstractly and, as Devlin mentioned in his article, mathematics is the only subject that will give them that experience. He also states that it does not matter whether or not they do well in the class as long as they are capable of sharpening their minds and developing the mental skills that are necessary to be good software engineers. Even at Allegheny, computer science students are required to take certain theoretical math classes for the major. This is not to make us learn linear algebra or graph theory necessarily but it is to to ensure computer science students are capable of thinking abstractly and not so much in black and white.
Noosh Moussavi
I also agree with Devlin when he states that its not what was taught in mathematics class that was important, but its the fact that it was mathematical. In the article he refers to evidence over several decades of research both into the way the brain works and into the learning process. He states that what we may learn in classes, we soon forget after the class is over. But its the concepts of the class that our brain adapts to. This is what happens in mathematics. We may not remember exactly but its know about the concepts that make better software engineers.
John Pacino
I agree somewhat with Devlin's statement that it is not a specific subset of mathematics that is important, but rater the fostering of abstract reasoning that makes it a valuable tool in creating software. As we have discussed earlier, there is no real adequate way to map software design onto paper or even a three-dimensional model. Therefore, much of the required modeling involves the developer visualizing the abstract components and their interactions in his or her mind. I would like to clarity my position however, by noting the following oberservation: I have known several students who are excellent mathematicians and yet struggle with computer science, and vice versa. Thus, although mathematical thinking can be an invaluable skill in software development, I do not believe it to be the only type of reasoning used. I furthermore think that the development of object-oriented programming requires software developers to think less in terms of the abstract. Often times the goal of the software system is to model events that take place in the real world. Thus, classes are usually given names that relate them to real world tangible objects such as 'class Automatic_Teller' that embodies the actions one would expect an ATM to perform. Although the actual class is not real, the physical object we associate it with is and that makes it easy to model.
Matt Rummel
Link to this Page
- Introduction to Software Engineering last edited on 30 August 2004 at 1:12 pm by aldenv28.allegheny.edu