close

Computers

Computers

What Is The book ‘The Art of Computer Programming’ about ?

The Art of Computer Programming

The Art of Computer Programming was written by Donald Ervin Knuth and there are 7 volumes of the Art of Computer Programming. The first volume was published in 1968 with two chapters on Basic Concepts and Information Structures. The Art of Computer Programming highlights on how good a method is by analysing two programming algorithms using a mathematical approach. The genesis of the book began when Knuth was working on a chapter related to compilers, after going through several literature’s, he found that none of the literature’s were reliable in nature and did not do justice to the somewhat new field of computer science. He began his quantitative work on The Art of Computer Programming in 1963 and by the end of 1965 he had 12 chapters with almost 3000 pages. The first two chapters in Volume 1 provides basic mathematical preliminaries and basic Information structures. The book does not teach you how to code but is written for those who want an in-depth view on creating efficient algorithms and data structures.

read more
Computers

Contributions Of Dijkstra And Knuth Towards Structured Programming

Structured Programming

Both Dijkstra and Knuth contributed towards structured programming in several ways. To begin with, it was Dijkstra who emphasized the importance of Structured Programming. He wrote his first paper on Structured Programming in 1965 proposing the construction of programs in a structured way. Even though it did not create a turmoil in the computer field, later on, after a paper published by Bohm and Jacopini in 1966, which showed that three basic control structures could display any program abstracts and the use of GOTO statements can be excluded theoretically, Dijkstra came up and enforced his ideas into a letter and published in ACM. This created a lot of support for Dijkstra’s proposal by the computer programmers. However, it was in late 1971 after a successful demonstration of New York Times Online Retrieval System, Structured Programming proved to be more than just a proposal and soon found its way to be used for creating software’s for the United Stated Government. Implementation of Structured Programming helped in bringing down the cost of the software significantly at that time.

Similarly, Knuth, after learning about Structured Programming from practices done by Dijkstra in the early 1970s, some of the major works done by Knuth like TeX were using Structured Programming. Even though, Knuth used the methodology proposed by Dijkstra, he did not completely agree with the confinement of GO TO statements to be used just in lower level languages. This lead to the paper ‘Structured Programming with go to Statements’ by Knuth in 1974.

References:

  • Jensen, RW 1981, ‘Structured Programming’, https://www.computer.org/csdl/mags/co/1981/03/01667281.pdf.
  • KNUTH, DE 1974, ‘Structured Programming with go to Statements’, Computing Surveys, vol. 6, no. 4.
read more
Computers

Who is Dijkstra?

Edsger W Dijkstra

Edsger W. Dijkstra was born in Rotterdam and was a professor in Eindhoven University of Technology, Netherlands. After working as a research fellow in Burroughs Corporation in the ‘70s, he was holding the Schlumberger Centennial Chair in the University of Texas, which was established by the Board of Regents, till he retired in 2000. Dijkstra had a considerable number of contributions towards computer science. One of his first major contribution was the Shortest-Path Algorithm, which finds the shortest path between two places and another contribution is the Minimum Spanning Tree algorithm. He introduced the concept of stack in recursive programs. Dijkstra was one of the first ones to emphasized the importance of structured programming, he wrote the ‘notes on structured programming’, which is still in circulation, made a big impact on computer science.

read more
Computers

Who is Knuth?

Donald E Knuth

Donald Ervin Knuth was born in Milwaukee, Wisconsin. Knuth completed his M.S in Mathematics from the Case Institute of Technology, Ohio. While doing his PhD in Mathematics at California institute of Technology, he started working on his book on compilers. By the end of 1965 he completed 12 chapters, which later was decided to be published in different volumes. In 1968, his first book was published the renowned Volume 1: The Art of Computer Programming, there are 7 volumes in total which were published in the years later. His famous creations Tex engine, Metafont font design and Computer modern set were all written using Structured Programming. He was presented with the Turing award in 1974 for his contribution to the computer field and is called the father of analysis of algorithm.

read more
Computers

What are the ideas behind the book ‘Mythical Man-Month’ by Fred Brooks

Mythical Man Month Frederick Brooks

The book Mythical Man-Month is written by Frederick P Brooks, Jr. and was published in the 1975. Most of his chapters cover a numerous number of problems related to large-scale programming. This could have been influenced by his work on IBM’s stretch computer and on Operating System / 360 or simply OS/360. The ideas given-off by Frederick are very profound. And, the idea which hits me the most was, from the chapter ‘The Mythical Man-Month’, if you keep adding more software engineers into a project which is already delayed, it will only makes it more delayed.

To give a small insight, let us assume that a project is delayed by two months. A normal managers, or say anyone’s, first instinct at that time will be to add more software engineers into the project to share the work. One would think, this is the solution for this problem. But, Frederick looked at the situation more closely and stated that this solution will only makes it more disastrous. Moreover, he explains the reason behind it, in such scenario’s one overlooks the fact that, these new software engineers added to the project needs to be trained in the first place. This requires pulling out one of the experienced members out from the project to do this task. If this takes a month, the man-months estimated for these new members plus the one experienced member pulled out from the project will go waste.

In addition, the original work now needs to be divided among the new members and the original team members, which will result in losing some of the progress already made on the previous tasks assigned. All these will result in as if no new members were added, and the project will get delayed anyhow.  In the chapter, Aristocracy, Democracy, and System Design, he talks about Conceptual Integrity, where he talks about cathedrals in Europe. Cathedrals in Europe had integrity of their original design, even though several generations of builders has done the work. He emphasised on the fact that, these builders have sacrificed on their ideas about building or changing the design of the cathedral to keep the design it its purest form from the beginning. Likewise, Brooks suggests that it is important for a software to ignore some of the features and just execute one single functionality efficiently, instead of having all the features integrated and cannot do even one function efficiently. Even though the book was written by Brooks in 1975, most of the issues addressed in the book are still some of the issues faced by software engineers.  One of my favourite quote by Frederick Brooks is –

“How does a project get to be a year late ?

… One day at a time.”

read more
ComputersScience

What is Structured Programming?

Structured Programming

Structured Programming in software engineering is as a method to break down a problem into small levels of hierarchical problem structures. It highlights that a program structure must be attained through a constant stepwise improvement. In structured programming, it is generally recommended to avoid GO TO statements, and use nested looping constructs like while loop statements instead. It was Edsger W. Dijkstra who identified the importance of structured programming in 1965. And later on, Bohm and Jacopini, in 1966, demonstrated that any program can be divided into three major control structures which are Sequence, Selection and Iteration.

The main guidelines followed in structured programming while improving the program structures is to identify the major functions early. Secondly, at every stage of the improvement process one must analyse to know all the consequences of decisions taken. Thirdly, be flexible enough to make changes to an initial decision when encountered with an unexpected problem. These small revisions will attribute towards overall improvement of the structure. Lastly, when new data items are discovered during the refinement process, it must be tracked and refined with a new meaning when it must be used.

References:

  • Jensen, RW 1981, ‘Structured Programming’
  • Rouse, M n.d, structured programming (modular programming)
read more