Sunday, 8 December 2013

Computer Science vs. Software Enigneering

What is engineering?
  • Engineering is about solving the problems in a cost effective way so that it is available to the masses
  • Engineering deals with the commonly occurring practical problems that are related to our daily lives
  • Engineering solves the practical problems leveraging the scientific knowledge to serve the man kind
  • Engineering usually yields the tangible engineering products as the solutions to the practical problems related to our daily lives
  • Engineering in the big scope involve developing the expertise and technology to serve the mankind and to make the human lives better.


Engineering involve expertise and technology to solve the commonly occurring practical problems, those are related to our daily lives, in a cost effective way. This problem solving effort leverages the scientific knowledge and yields the products to serve mankind and to make the human lives better.


“Engineering is concerned with the implementation of a solution to a practical problem. A scientist may ask "why?" and proceed to research the answer to the question. By contrast, engineers want to know how to solve a problem and how to implement that solution.
( Anonymous )


“Engineering is concerned with the implementation of a solution to a practical problem. A 
scientist may ask "why?" and proceed to research the answer to the question. By contrast, 
engineers want to know how to solve a problem and how to implement that solution.


A computer scientists develop smartest algorithms for sorting, searching, compression, encryption, pattern detection, graphics processing etc and make programming languages.

Software engineers use tools produced by computer scientists for developing software for particular tasks like web browsers, media players, document editors, image editors, sound editors etc.
( Anonymous )

“Scientists learn what is true, how to test hypotheses, and how to extend knowledge in their field. Scientists must keep up to date with the latest research.”
“Engineers learn what is true, what is useful, and how to apply well-understood knowledge to solve practical problems. Engineers must be familiar with knowledge that has already proven to be reliable and effective.”
( Steve McConnell, Software Engineering, Not Computer Science)

“The dictionary definition of “engineering” is the application of scientific and mathematical principles toward practical ends. That is what most
programmers try to do. We apply scientifically developed and mathematically defined algorithms, functional design methods, quality-assurance methods, and other practises to develop software products and services.”
( Steve McConnell, Software Engineering, Not Computer Science)

Science discovers fundamental laws, theories, rules and principles and explains why thing are the way they are. This scientific knowledge also consist of generic solutions to the abstract problems those can be leveraged to serve the mankind. 

Engineering uses the scientific knowledge to solve practical problems faced by mankind in a cost-effective way so that it is available to the masses
( Me )

"A scientist builds in order to learn; an engineer learns in order to build."
-Fred Brooks

Engineering uses the scientific knowledge to solve commonly occurring practical problems faced by mankind in a cost-effective way so that it is available to the masses
( Me )

“Engineering is concerned with the implementation of a solution to a practical problem. A scientist may ask "why?" and proceed to research the answer to the question. By contrast, engineers want to know how to solve a problem and how to implement that solution.
( Anonymous )

Steve McConoll

Steve McConnell
"During software design, I'm an architect. When I'm designing the user interface, I'm an artist. During construction, I'm a craftsman. And during unit testing, I'm one mean son of a bitch!"

"A Scientist builds in order to learn; an Engineer learns in order to build" ~Fred Brooks

"A scientist builds in order to learn; 
an engineer learns in order to build."

-Fred Brooks

Wednesday, 6 November 2013

Rebecca Wirfs-Brock Quotes

An object-oriented application is a set of interacting objects.

And objects don't work in isolation, they collaborate with others in a community to perform the overall responsibilities of the application.

Frameworks are skeletal structures of programs that must be fleshed out to build a complete application. For example, a windowing system or a simulation system can both be viewed as frameworks fleshed out by a windowed application or a simulation,

Frameworks are white boxes to those that make use of them. Application developers must be able to quickly understand the structure of a framework, and how to write code that will fit into the framework. Frameworks are reusable designs as well as reusable code.

A subsystem is a set of classes (and possibly other subsystems) collaborating to fulfill a set of responsibilities. Although subsystems do not exist as the software executes, they are useful conceptual entities.

Ivor Jacobson Quotes

When a user uses the system, she or he will perform a behaviorally related sequence of transactions in a dialogue with the system. We call such a special sequence a use case.


Kent Beck Quotes

The business changes. The technology changes. The team changes. The team members change. The problem isn't change, per se, because change is going to happen; the problem, rather, is the inability to cope with change when it comes.

The key is to test the areas that you are most worried about going wrong. That way you get the most benefit for your testing effort. It is better to write and run incomplete tests than not to run complete tests.

Often you'll see the same three or four data items together in lots of places: fields in a couple of classes, parameters in many method signatures. Bunches of data that hang around together really ought to be made into their own object.

Refactoring (noun) : a change made to the internal structure of software to make it easier to understand and cheaper to modify without changing the observable behavior of the software.

Any fool can write code that a computer can understand. Good programmers write code that humans can understand.

When you find you have to add a feature to a program, and the program's code is not structured in a convenient way to add the feature, first refactor the program to make it easy to add the feature, then add the feature.

I'm not a great programmer; I'm just a good programmer with great habits

I always knew that one day Smalltalk would replace Java. I just didn't know it would be called Ruby.