Removing Duplicates From A List
In this assignment, you are expected to implement data structures to maintain a list of elements. In particular, implement the list as an array and as a linked list. Write a program to remove duplicates from the list. The code for remove duplicates functionality should remain the same across the two implementation of the list.
Input/ Output specifications: The input and output file names will be given as a command line argument (in that order). Input file will be a space separated sequence of integers – the content of the list in that order. Output file should have the same format (space separated sequence of integers) with the duplicates removed.
File Naming: Write the main program with remove duplicates functionality in file main.cpp. Write a header file list.h with list interfaces like insert, delete etc. Write two files array.cpp and linked list.cpp implementing the list interfaces. Your program should run successfully for the following two cases:
- Compile main.cpp and list.h. Link array.cpp and generate the executable.
- Compile main.cpp and list.h. Link linked list.cpp and generate the executable.
Alternatively, you may use polymorphism in C++ to dynamically choose the appropriate list ADT class. Talk to your TA well in advance if you are following this or other equivalent alternative.
Expectations: Apart from the requirements mentioned above and by Prof. PanduRangan in class, the following are expected from you.
- Your program should execute gracefully regardless of what it is fed as input.
- Your code must be well-designed, modular, and easy to understand.
- We expect the code to be well-documented.
- We expect you to have learned how to use makefiles and some version control system. (GIT version control system was explained in class.)
- All of you in the team must be familiar with all aspects of the programming assignment including makefiles, version control systems, etc.
Compared to other Govt. organizations, ISRO is quite different in certain aspects. Let me point out a few.
- Starting from time of late Dr. Vikram Sarabhai, Dr. Sathish Dhawan and many other, ISRO has contributed significantly in different domains related to space science. Being the only player in this field in India, it is now a “brand”, a name which many of us want our names to attach to. Being an ISRO-ian gives you a higher societal respect. It is a sort of monopoly. Like IT industries, if five more organizations start working on the same, then the glory which is there at present might get faded out in future. Nonetheless, you’ll yourself feel proud while dealing with classified national information which are otherwise inaccessible from outside the organization.
- The environment is academics-friendly. At Vikram Sarabhai Space Center (VSSC), you’ll be having one large library, free subscriptions to IEEE and other paid journals without paying a single penny from your pocket. Sometimes, you’ll be sent to different workshops held at various IITs and IISc being sponsored by organization If the sponsorship amount exceeds Rs/-5,000, it is subject to the approval of an academic committee. Otherwise, your Division Head’s approval is sufficient. Also apart from these external seminars and workshops, they arrange internal seminars and meetings chaired by people out here for years. Professors from other institutes, e.g. BARC, are also invited to deliver lecture.
- You’ll get to know space science and technology closely. Computer Science people generally work in launch vehicle software development which are used either directly on-board of a flight or related to development of such software indirectly. While working in an IT company, you’ll never get a chance to get involved in development of a software which will fly thousands of kilometers away. Have you ever been surprised thinking that even the smallest of bug present in such a software, e.g. floating-point rounding issue, can cause a mission to fail leading to a wastage of 500-600 crores of INR? How are such pieces of software quality-assured? How is the offline simulation done? How much time is involved from the development of such a real-time software to be quality-approved? Or have you ever dreamt of developing customized system tools, e.g. RTOS, Compiler, Assembler, Linker, Loader, Simulator etc.? Electronics people generally work in designing and fabricating electronics packages. Some of them, again, in quality-assuring the packages developed. And ISRO is “the place” for people fro Mechanical background. The whole of the launch vehicle, satellite are realized by their ideas. Depending on the division you have been put in, you may get chances to travel to other ISRO centres, especially SDSC-SHAR, the only launch port of India. I went there twice during my last one year of stay at ISRO. Believe me, it’s an wonderful experice to touch a launch-vehicle which’ll be flying away tomorrow. Success of every mission will make you feel prouder as your service is towards the nation.
- Coming to professional benefits you’ll be entitled to availing CHSS (Contributory Health Service Scheme) which will offer you and your dependents an unlimited medical coverage. PRAN, the new pension scheme (NPS – Tier – I) is there to support your post-retiral life. Annually, a decent sum will get credited to your account as professional update allowance. For the post of Scientist/Engineer – ‘SC’, it is Rs./-10,000 presently. Mostly the working hours is limited to 8 hours starting from 9:00 AM to 5:00 PM. The post what is offered is of a Class-A gazetted officer. After the closure of one year probation period required for your background check by local police station and CBI, you can get one seal of yours to “attest” documents. Something funny, initially! Apart from that, the establishment is quite complete because of having a staff quarter, a post office, a bank and a health-center at reasonable distance from office. The area is well-guarded by CISF (Central Industrial Security Force) people. At canteens, the food is highly subsidized.
- After you finish three years of service life here, you can appear GATE as a sponsored candidate to get a relatively easy seat in IISc. and IITs. Given the level of competition in GATE now-a-days, this is a chance to fulfill the dreams of those who couldn’t make it through.
- Till now, the service is no-bond. You are free to resign from the organization at any point of time without paying any compensation.
- You will come in touch will people whom you have dreamt only during IITP – ISRO Induction Training Program conducted to induce you to ISRO.
- Like any other Govt. job, your future is assured. Nobody will fire you the next day once your back ground check is complete and found clean.
- Job deadlines are there, but depending on the nature of assignment, it is quite flexible. “Slow but steady” is the key here.
- Work environment is less hostile and less competitive compared to any private company. But those who’ll expect usual “sit-back-and-relax” type environment what is seen in many other Govt. organizations, a severe shock is awaiting them!
- Common disease to all Govt. organizations is being unbelievably slow-moving. ISRO is also affected by the same in certain cases. As an example, last year one of my friends resigned with a notice period of one month. In spite of his earnest efforts, ha failed to acquire the relieving letter on the day of his resignation. I was with TCS, a privately held MNC, which required only half a day to process my resignation! Thumb rule for those who have worked in a private company, “Never expect nothing to happen lightning fast here”.
- Salary wise it is never comparable to private companies. Though the initial salary may be higher than the starting salary offered by an average IT company, the growth rate is pathetic. For all the promotions, at least four years or more gaps are needed. Worst is, it may get delayed failing to satisfy DPC (Departmental Promotion Committee). Those who are having M.Tech. as their highest qualification, they will get the first promotion in two years instead of four years unlike B.Tech candidates, but subject to the condition that 1/3 of their course tenure must have to overlap with their service period in ISRO.
- For Scientist/Engineer – ‘SC’ post, around Rs./-3,500 will be deducted from your salary every month. If you resign prior to your 60 yrs. of your age, that amount will not be refunded back. Our honorable Govt. has not yet decided any policy for such employees. Also, 50% of EL (Earned Leaves) will be en-cashed in case of resignation.
- Scientist quarters are not readily available after your joining. It may take a couple of years or so as there will be many people in the queue ahead of you. Bachelors quarters are immediately available, but the problem is that you can’t allow anyone to stay three along with you, even parents.
- Until and unless you finish three years of your service here, you can’t apply for either academic sponsorship or study leave. Even if you go as a sponsored candidate after three years, you have to serve a mandatory service period of five years after joining back, otherwise some ~10 Lakhs of bond amount has to be paid from your pocket.
- A word of caution to people who have worked in any average IT company. Neither environment nor life is as “shiny and gorgeous” as it is in an IT company.
- Unless having special permission, one can’t carry mobile phones inside the office premises. It takes some time to get friends and relatives trained to ISRO culture of not attending calls during office hours.
- A gazetted officer, as you will be, may be called in weekends, theoretically 24*7. Saturday and Sunday are the usual holidays, but in certain occasions depending upon the workload in the division you are working in, you may have to work the whole day. “Stay-back” is an usual term here. In such cases, you’ll get car drop to you place.
- There are certain division (I won’t name those), though very few, are carrying out “bogus” activities which are not anyway related to launch vehicle. If you are that much unlucky, you won’t get the feel of being in ISRO. To make the matter worse, there is no formal procedure for division change and location transfer. You don’t have any control on which division you’ll be put in prior to joining. This is solely an organizational decision.
- Paper work is more here. People are still relying on signature in black on a white paper rather than signing it digitally!
- Organizational knowledge management is very poor. Information is either absent or scattered.
- Most of the PCs in the workplace are Intranet-only. Only few restricted Internet nodes are available. The constraint is due to restrict the free flow of information from inside the organization. Even the proxy allows only 25 KB of upload from behind. If a mail-chain becomes larger, specially containing inline images, it becomes impossible to send.
- In my case, the date of publishing of the recruitment advertisement and date of joining had gap of 13 months contrary to few hours in case of IT companies.
- Concept of resource/energy-saving “green” office is still far away.
Now rate and evaluate ISRO yourself. Enough input has been given.
I have been bombarded with the question with the question many a times. Why are you leaving ISRO to pursue M.Tech@IIT? Is it a decision worth taking? Won’t it cost you giving up something which many a students crave for? Then surely there is something seriously “wrong” with ISRO, right?
Actually “no”. Perspective matters. Why did I resign from TCS and join ISRO initially? It’s because I was fed up with corporate lifestyle and seriously wanted a break. Joining ISRO rather than an “XYZ” company is always much more preferable. And what I have done here for last one year, may be a bit more, was professionally quite satisfying. But, I was half-hearted since beginning. This is the place for people who are devoted, dedicated to space science. My interests are quite different, cryptography and information security. Evidently those are not aligned to my subjects of choice. I feel this is the time to choose between my passion and profession. And I preferred the former over the later.
What does some expect from an M.Tech. programs@IITs? Might be the following:
- Academic growth, research opportunity, a platform to pursue Ph.D./Post. Doctoral degrees.
- Professional growth, a job offering a thick packet at month end.
- Association, having an opportunity to get to know best technical merits in India.
- Attitude, brand, being an IIT-ian, more like a dream to many a people.
And my decision to join M.Tech. is dominated by one or more of the following, precisely the first one.
Once again, it has got nothing to do with ISRO being good or bad, perspective matters.