# projects

Undergraduate projects, technical papers and articles done by Mr. Sumant U. Tambe PROJECTS 1. Node Listing Based Global...

Undergraduate projects, technical papers and articles done by

Mr. Sumant U. Tambe PROJECTS 1. Node Listing Based Global Data Flow Analysis This is my final year BE (Bachelor of Engineering) project under Asst. Prof. Uday Khedker of I.I.T., Bombay. The final goal of the research work is to develop “Generalized theory of density of graphs". We are working on a new concept called "Density of a graph". From the research done so far we know that density promises to establish a better lower bound on the length of node listing. Aho and Ullman proposed a theory for upper bound on the length of node listing, hence we implemented Aho-Ullman algorithm to verify this proposition and indeed got the length of the node listing always less than n + 5n log n rather close to n + 2n log n. Research in I.I.T. (Bombay): The node listing obtained by implementing Aho-Ullman algorithm is redundant because it has repeated occurrences of many nodes. Redundancy creeps in because the algorithm does not consider internal structure of the flow graph to find out the minimal necessary condition for covering all acyclic paths. This in turn implies that the length of node listing and sequence of nodes are very much dependant on the patterns observed in the flow graph. To analyze such patterns and their effect on node listing, our guide Dr. Uday Khedker from IIT, Bombay developed a new concept called “Density of a graph”. Our work: We show that Aho-Ullman algorithm is an abstract framework because their research paper does not give any specific method of separating regions in a flow graph, which is an essential step of their algorithm. We also show that the method we applied for the implementation is indeed correct and gives worst case node listing of the flow graph. We implemented Aho-Ullman algorithm to find out node listing of a reducible flow graph. This 4000 line software was developed in C++ using Standard Template Library (STL) using gcc compiler in Linux. This implementation is done in the context of lance compiler. Lance compiler generates Intermediate Representation (IR) of any C program. This IR is nothing but C language program with only gotos and labels. We also developed a parser for this Lance generated IR using bison++ and flex++, which are compiler development tools for C and C++ in Linux. Virtually the program can calculate node listing of any C program no matter how large. As a part of research in IIT one of the aims was to discover certain density preserving transformations on reducible flow graphs, which virtually reduce the graph and hence computation required is less. For this purpose we developed software called Rapid Graph Transformation Toolkit in Java. This toolkit is helpful in transforming and analyzing graphs quickly. Computer does needlessly repetitious processing of graphs (finding out node lists, finding density etc.) and thus simplifies the researchers’ work.

1

Undergraduate projects, technical papers and articles done by

Mr. Sumant U. Tambe 2. Little Quilt Language Interpreter Project Little Quilt is a language specially designed for learning the basics of functional programming languages. ‘Little Quilt’, Language of Expressions: is small enough to permit a short description, different enough to require description, yet representative enough of programming languages to make description worthwhile. The earliest programming languages began with integers, reals and arrays of integers and reals; these too can be visualized and discussed independently of the constructs in the language. Likewise Little Quilt manipulates geometric objects with a height, a width and texture. Little Quilt Project: I came across this project as an assignment given by Prof. Uday Khedker from I.I.T. Bombay. As we approached him to acquire a BE project under his guidance, he wanted to test our programming skills on the basis of this mini project. He told us that in order to develop an interpreter we would need to learn Lex and Yacc compiler generation tools in Linux, which we knew nothing about. But we decided to take the challenge and we could finish it in a short span of 13 days. We got final year project on the basis of successful accomplishment of this mini project. I led entire coding work. I got good experience of developing a lexer and parser of a high level language. Development of interpretation logic of program was also a great fun. This really prompted my interest in compilers. We discovered unique solutions to the problems we faced. Some of them are listed below. • Computer representation/evaluation of user defined multi-parameter functions. • Computer representation/evaluation of list of parameters in a user defined functions. • Ingenious use of stack to make behave a global variable like a local variable during unwinding of inherent recursion of Yacc parser. Since ‘Little Quilt’ is a high level language, its grammar is as complex as that of any typical high-level language. Hence coding the grammar in Yacc was another challenge. An example of a program in Little Quilt.

Output:

let fun unturn(x) = turn(turn(turn(x))) fun pile(x,y) = unturn(sew(turn(y),turn(x))) val aa = pile(a,turn(turn(a))) val bb = pile(unturn(b),turn(b)) val p = sew(bb,aa) val q = sew(aa,bb) in pile(p,q) end

2

Undergraduate projects, technical papers and articles done by

Mr. Sumant U. Tambe 3. Paint Brush in VC++ and Microsoft Foundation Classes (MFC) This software was developed as a part of practical of Graphical User Interface subject of 8th semester of Information Technology Engineering. The aim was to get acquainted with the user interface development technology. Development is done in Win32 platform. Microsoft Foundation Classes (MFC) were used extensively to develop this application. Messages, events, Foundation Class Library were used. I became well versed with the Visual C++ 6.0 Integrated Development Environment. (Visual Studio IDE) Features of Paint Brush are as follows: • • • • • •

Single Document Interface (SDI) application. Cut-Copy-Paste Menu. Drawing basic graphic elements using rubber-banding algorithm. Using toolbar for selecting different basic graphic drawing elements. File open, save dialog box. Color Palate select dialog box.

Sample Output of Paint Brush

3

Undergraduate projects, technical papers and articles done by

Mr. Sumant U. Tambe 4. An Object Oriented Software in Turbo C++ 3.0: “Paint Brush” Paint Brush is an Object Oriented, full screen GUI based, interactive, mouse driven application. This software is developed in Turbo C++ 3.0 for MS-DOS using Borland Graphics Interface (BGI) Library. The algorithms from Computer Graphics and principles of Object Oriented Software are united in this single software. This project was developed as a part of curriculum of undergraduate course of Object Oriented Programming Methodology in third year of Engineering. Main features of this software are listed below. •

• • • • •

Development of a GUI framework for interactive applications like Paint Brush. This framework uses several design patterns and abstract classes. It works in MS-DOS. This framework uses an alternative of function pointer callback. Thread class, which completely encapsulates mechanism to handle concurrency in MS-DOS. This class makes use of Interrupts and ISR to give an illusion of concurrency to the clients. The program can have two threads of execution simultaneously. Singleton and Iterator design patterns were used in development of the framework. MouseSingleton class provides all mouse services to registered listeners of mouse. Thread, MouseSingleton and Button class together achieve reuse of framework code for interactive event driven applications. Use of function objects / functionoids / functors objects instead of traditional callback functions in framework. They are safer and more flexible alternative to function pointer callbacks. Container class design with iterators. Linked list class was developed using templates, which also support forward read interators. Class and function templates are used. Other than this, constructing class hierarchy, abstract base classes, inheritance, polymorphism is also involved. Algorithms I studied in Computer Graphics course are used for drawing line, circle, and ellipse and to floodfill those objects.

This software makes use of some advanced concepts in Object Oriented Programming. These techniques are much above the prescribed syllabus of the undergraduate course Object Oriented Software Methodology by Mumbai University.

4

Undergraduate projects, technical papers and articles done by

Mr. Sumant U. Tambe TECHNICAL PAPER PRESENTATION Towards the 128-bit Era of Cryptography (AES) Venue: COSMOS Paper Presentation Contest Abhiyantriki* , 2001, K. J. Somaiya COE. Topic: Cryptography and Internet Security. Contestants: 1. Sumant U. Tambe (Third Year, Information Technology) 2. Pushkar D. Patankar (Third Year, Information Technology) Abstract: This paper explores the most recent advancements, in the world of cryptography. Central theme is to let people know about AES (Advanced Encryption Standard), its technical details and advantages over its predecessor DES. Main points:

*

DES (Data Encryption Standard), a symmetric block cipher, conventionally used for encrypted communication. The paper covers brief idea about DES its counterpart, The Triple DES, along with their disadvantages. This algorithm now shows signs of old age.

This paper gives brief idea about the efforts taken by NIST in order to overcome the disadvantages of DES and to standardize new encryption algorithm Rijndael (“Rain Doll”) as AES. This was selected from 5 final contesting algorithms. AES proves to be a very efficient and robust algorithm.

The paper further tries to give detailed explanation of Rijndael algorithm, which is a symmetric algorithm with variable key and block length. Algorithm specifications along with implementation details of Rijndael are explained in lucid and clear manner. Wide range applications of AES are covered viz. mobile communication, Internet applications and right from smart cards to super computers.

This paper also highlights the comparative advantages of Rijndael over remaining 4 contesting algorithms. It aims at building confidence in people about the recent standards and accelerating the adoption of AES in industry.

An inter-collegiate technical festival.

5

Undergraduate projects, technical papers and articles done by

Mr. Sumant U. Tambe TECHNICAL ARTICLE Interfacing assembly language routines in C This technical article helps in interfacing assembly routines in C language. Most serious C or C++ programmers must face the task of interfacing assembly language subroutines with the language. Because C and C++ are compiled languages, assembly language subroutines can be linked as the final stage of program development. 8086 assembly language is taken in consideration. Following topics are addressed in the article: • • •

• • • •

How subroutines are invoked. How parameters are passed. How values are returned from subroutines. § Through the stack. § Through a register. § Through memory. Convention followed by Turbo C++ 3.0 compiler for MS-DOS. Memory models for C programs. General interfacing guidelines. Two methods of interfacing which follow C calling standard. § Using Assembler directives for C style function calling. § Manually write assembly instructions for C style function calling. Explanation with examples and lot of assembly code.