1) Working as a Software QA automation Engineer Broadcom, Inc. (2005- till date) 2) Worked as automation engineer for 1-1/2 years at Autodesk.(2004-2005) 2) Eight months of Internship experience in AutoCAD Software Development team at Autodesk, Inc. 3) Three months of work experience as project trainee in Mostek Electronics.
Databases: Database design with Oracle, MSAccess and SQL.
Environment: Visual Studio.NET 7.0, Linux, Unix, DOS and Windows
References: Will be given on demand.
Projects Done at Broadcom : -------------------------------------
Automation using Mercury's Quick-Test Pro :
Have automated testing of the Broadcom Advanced Control Suite GUI using VB script, VB .NET and Automation tool Mercury's Quick-Test Pro. This was basically a VB .Net project that invoked QTP using QuickTest's Automation object model and performed tests on a Windows APP.
This was a very intensive project.
I had to come up with a list of testcases that need to be automated, communicated to the team, got their feedback and finally implemented it. I have a very good knowledge in using Quick-Test Pro.
Automation For Network adapters in DOS:
Have written DOS shell scripting to automate testing of the network adapters in DOS.
CD Checker Automation Tool:
Have Written an utility called CD Checker which checks for driver Files and MSI installs in a driver installer CD. Coded in vbscript.
Windows diagnostics Automation Tool:
Have worked on creating and modifying a diagnostic tool to run some network test in Windows using C++, DDK APIs and using WMI.
API Automation:
Have written an automation to test Broadcom Network adapter related Public APIs in C++ for Windows and Linux platform.
Socket Programming:
Have done IPv4 and IPv6 socket programming in C++ to pass traffic between two computers and Measure various properties of network adapter.
I/O Utility:
Have created a multi-threaded I/O application in C++ that does Block I/O directly to hardisk, File I/O to partitions and Socket I/O.
Projects done at Autodesk:
C# .Net Project:
1) I worked as an intern in the AutoCAD software development team for porting the existing AutoCAD public APIs to .NET. As part of this project, I have written an automation tool in C# to throw managed wrappers for the existing C++ APIs. I am running this tool on each and every class that is part of the AutoCAD public API and obtaining their managed wrappers thus making them .NET compatible. This project has given me a very good opportunity to learn the .NET framework, to develop applications in C#, and also to learn about XML serialization and de-serialization. Moreover this project has given me a good exposure to AutoCAD and its usage.
2) I also have some bug fixing experience in VC++ and MFC and have also helped in writing some migration tools in C#.
Silk Automation:
I have hands-on experience in running Silk Automations and handling AutoCAD harness at Autodesk, Inc. I have also written silk test-scripts as part of AutoCAD testing.
Benchmarking:
I have created benchmark scripts to test some specific features in AutoCAD. I made a thorough research on what needs to be measured by looking at AutoCAD newsgroups and created benchmarks to measure the performance of the same.
White-Box Testing:
I have white-box testing experience of AutoCAD APIs. As part of testing, I have created several samples that shipped with AutoCAD product. These APIs are .NET APIs so I ended up creating these samples in C#.
Projects Done during Graduate Studies: HARDWARE PROJECT: I have done a hardware project which involves the conversion of an ordinary, wired PC mouse into a wireless mouse using infrared technology as part of undergraduate study at Mostek Electronics. My role was primarily in designing the receiver and transmitter circuit for this project. The receiver circuit was connected to the PC's Com Port and the transmitter circuit was connected to the mouse. I was able to achieve wireless communication between the mouse and the PC using infra-red waves that traveled from the transmitter to the receiver circuit.
OBJECT ORIENTED PROGRAMMING IN JAVA:
1) I was given the task of creating a virtual JAVA compiler • First I created the lexer that reads a stream of characters which made the source program and create a stream of tokens which form the lexical units by combining characters appropriately. • Next I created the parser unit which checks if the tokens are assembled in the correct fashion according to the grammar in other words, checking the syntax of the user's program and build an abstract syntax tree to represent the source program. • Finally by visiting each node in the abstract syntax tree, the compiler was able to generate the corresponding bytecodes. So the source program is now converted to a set of bytecodes.
2) Next I was asked to create a virtual JAVA interpreter using the generated bytecodes for a given source code. For this I had to create a virtual machine which executes the bytecodes generated by the compiler. So I created separate bytecode classes which defined the execution properites of each bytecode and a byte code loader class loads the bytecode objects into the virtual machine for further processing. I used the technique of dynamic binding while creating bytecode classes so that I could easily add new bytecodes without affecting the operation of virtual machine. I also simultaneously created the run-time stack which maintains the stack of active frames so that when we call a function, we will push a new frame on the stack and when we return from a function we'll pop the top frame.
3) The third task that I was given was to create a virtual JAVA DEBUGGER with facilities to step over a line, step into a function call, step out of a function call, set breakpoints, list current break point settings, clear designated breakpoints, display local variables, change values of local variables, display the source code of the current function, continue execution from the current point and then to halt the execution. By doing the above three projects I was able to thoroughly capture the object-oriented paradigms of the JAVA programming language and concepts like inheritance, interfaces, exception handling, hash tables and dictionaries, enumerations, vectors, dynamic binding, mechanisms of software reuse, abstract classes, polymorphism, equality, clones and garbage collection.
CORBA PROJECT: I had the opportunity of doing a coding intensive distributed Ping-Pong game in JAVA using CORBA as the middleware. The idea is to distribute the game so that two players sitting at different computers can play against each other. Since there is a graphical component involved, I implemented a user interface using Java's Swing. The communication infrastructure was implemented based on CORBA.
Java RMI Project: I simulated the working of a cash register terminal in a store using Java RMI. In this project multiple cash register terminals are distributed through out the store and my job was to make the cash register have access the various parts of the store in a remote way by having the store as the server and the various cash registers as the clients seeking information from the store server. I also used Java's swing features for providing GUI for the cash register.
Architectural Simulators:
1) I had the opportunity of designing a cache simulator for measuring the performance of cache functioning over Solaris 5.8 operating system. In my simulation I created a write-through cache and a write back cache with different set associativities and different block sizes and cache sizes. Finally I ran different programs on measured the read access time, write access time, the number of hits and misses for the various cache configurations.
2) I also had the opportunity of creating an out-of-order pipeline simulation in C over Solaris 5.8 operating system. I used Sun shade API's for studying the effectiveness of the out-of-order pipelined CPU. My pipeline had reservation stations, re-order buffers, registers and multiple functional units. I used SPARC instruction trace to study the effectiveness of the out-of-order pipeline that I implemented.
3) I also implemented a simulator for studying the naive, slow start and stride-based hardware pre-fetching techniques. Again I used Sun's shade API's to test my implementations and to compare the various pre-fetching techniques.
DATABASE PROJECT:
1)I have been taken through the complete process of database design in my Data Base systems course. My term project in that course was to create an email archive and retrieve relevant information about the email from the database. I started with designing the ER schema for the email archive and converted it into its corresponding relational database schema using the mapping rules. Then I used JAVA programming as the front end and MS Access as the backend to retrieve the information for various queries from the email archive.
2) A house allotment project in java using JDBC-ODBC at Software Solutions Integration. In this project I had to basically allocate houses to employees of an organization depending upon the availability of the houses and the grade of the employee. I used MS Access database as the backend and Java as the front end.
3)Access Methods (Database System): Designed and implemented access methods (Blocked Heap Access Method, Linear Hash, Extendible Hash, B+ Tree), Sorting Algorithm (Binary External Merge Sort), and Join Algorithms (Merge Join, Nested Loop Join) using C++. The implementation was a variation of the access methods provided with the Minibase software developed at University of Wisconsin- Madison.
WORM GAME PROJECT: I have programmed the game of worm (a typical one person arcade game) in C under UNIX platform. To start with we have a little worm displayed on the screen and the goal of the game is to make the worm grow longer by eating the food that is placed randomly on the screen by the computer. Cursor control keys govern the motion of the worm. If the worm bumps into itself or the wall that surrounds the game board, it dies and the game is over. In this project I developed an interactive program that lets others play this game. I used the ncurses graphic library as part of this project to get the game displayed on the screen.
AIRPORT SIMULATION PROJECT: I have done a project to simulate an airport landing and take-off pattern in C. The airport has 3 runways and I had to create 4 landing queues two in the first two runways and three take-off queues one in each runway. I had to decide which queue would be appropriate for each of the landing and take-off planes and should generate an algorithm so that it allocates the planes in the queues in a most efficient manner. The output of the program generates the content of each queue, the average take-off waiting time, the average landing waiting time, the average flying time remaining on landing and the number of planes landing with no fuel reserve. The input consists of the number of planes arriving at the landing queues, the number of planes arriving at the take-off queues and the remaining flying time for each plane arriving at a landing spot. This project helped me in having hands-on experience about the Queue data structure effectively.
BANKING SIMULATION PROJECT: I have also done a C++ project that accepts bank client records from the user one at a time and builds them into a dynamically allocated 2-3 tree. This project simulated the banking process and storing records about the clients of the bank in a tree data structure.
To get a thorough understanding about the Hash data structure, I did a project that implemented a dictionary using a linked list hash table. The implementation used pointers. I built my own effective hash function and my class code included all of the dictionary ADT operations. My code was supposed to read records from a file and insert them into a hash table based on the key field of the records. I was also able to delete the records, retrieve the records, search for a part and change any of the fields in a record including the key field. I did this project in C++ and captured the semantics behind the hash data structure.
OPERATING SYSTEM PROJECT: Have been exposed to Operating system concepts and done a project for creating a virtual operating system in C. As part of this project, I had to create a virtual shell, a virtual kernel and a set of system calls to mimic the UNIX operating system. Inter process communication was achieved using named pipes. The user who uses this virtual operating system will be provided with a shell prompt just similar to UNIX shell prompt at the beginning. The user is then given the liberty of doing four operations -- 1) Enter a command to run any program 2) Enter a command to generate a log file for the program he wishes to run 3) Enter a command to list the set of currently running processes just like the ls command in UNIX. 4) Enter a command to shutdown the operating system with a valid password.
Certifications
See above
CONTACT DETAILS
You must be logged in and have a current resume access subscription. Login or Register »