Jonathan Robert Speicher
University of Pittsburgh
Department of Computer Science
As a first semester Junior when the Computer Science department joined the Cooperative Education program, I was understandably rushed when it came to completing the myriad of paperwork necessary for participation. After all, the program requires three semesters of full-time work interleaved with three semesters of full-time class, and I had only three semesters left at Pitt. Since the coming semester would be the first time the experience was offered to CS students, I had to get in and I had to get in fast. The complex sequence of interactions with the Co-Op Office, the department of Computer Science liaison, and my CS advisor left me physically exhausted, having run around the mid and upper campuses for days.
Add to this mayhem the responsibility of actually finding a job - signing up for and attending interviews, performing background research on prospective employers, and buying a suit. Including the administrative maintenance required after the program is underway, one might conclude that participation in cooperative education is more of a chore then a benefit. But I can tell you with all honesty that it is the best decision that I have ever made.
| I interviewed with three companies: H. B. Maynard and Company, Inc., Cutler-Hammer, and Medrad, Inc. After my interview with Medrad, it was clear that Medrad was where I wanted to be. Fortunately the interviewers felt the same way, and an offer was made to me only two days after my interview. | |
The Medrad interview had come about almost by accident. I was sitting in a computer lab on campus, checking my email, when I received a page from Maureen Barcic, the co-op program's director. She told me about a great company conducting on-campus interviews the next day and asked if I would be interested. Having not received any other offers as yet, I accepted. I spent most of that night trying to find information about Medrad and mentally preparing for my interview. The search was nearly fruitless as Medrad's web page was not yet complete, and I entered into the interview knowing little at all about their products or company. |
|
Medrad is a world-class company. We design and manufacture automated contrast media injectors for the medical industry. These devices deliver a controlled flow of contrast-enhancing fluid into a patient's bloodstream to improve the clarity of angiographic images, computed axial tomography scans, magnetic resonance images, and ultrasound images. Medrad has offices in countries around the world and employs roughly 1,000 employees at its world headquarters in Indianola, PA. We are the worldwide market leaders in our field. |
|
Medrad took a great approach to incremental learning and increasing depth of responsibility. My first rotation began with a corporate orientation and various administrative tasks, such as reading about the mechanics of contrast-assisted medical imaging in order to provide a firm knowledge of the problems Medrad's injectors attempted to solve.
My responsibilities started small. Initially I was responsible for the design and implementation of a database in Microsoft Access that was used to track errors and generate source code to be used in the computer-controlled injectors. Once I had been "proven out" at that level, I moved on to writing some small utilities in C that were used to support the software development effort. These utilities ran on our UNIX workstation development platform. After my supervisors were confident with my skill level, I began writing software in C to run on the microprocessor embedded in the injector. This is where the real fun started and where the vast majority of my learning took place.
Medical electronic devices of the type that Medrad produces are strictly regulated by worldwide committees such as the United States' Food and Drug Administration (FDA), Japan's Ministry of Health and Welfare (MHW), and Europe's Rheinisch-Westfälischer Technischer Überwachungs-Verein (RWTÜV). As such, Medrad must follow rigidly established software design, documentation, and testing policies in order to ensure the safety of imaging patients as well as commercial approval of the injectors.
During my first rotation, I was introduced to the practices of good software design and documentation. Using computer-aided software engineering (CASE) tools, I designed several pieces of software intended to run in the injector. Reviews were held on these design documents, after which I implemented and debugged the software in C, with the help of an in-circuit emulator (ICE). During this time, I was trained in the proper operation of the ICE and in the operation of a great many peripheral tools - oscilloscopes, logic analyzers, multimeters, and so forth. I also became very comfortable with the UNIX operating system and the myriad of utilities associated with it - the GNU compilers, the source code control system, and Emacs, to name a few.
Once the software had been developed, and the code had been reviewed and approved by other engineers, I constructed a protocol to be used when testing the software for correct operation, ensuring that each condition be thoroughly tested so that no harm could come to the patient in the field. After developing this protocol, it was executed by myself and again executed by one of Medrad's software test engineers. The results were then validated by a member of the Quality Assurance department. By repeated application of redundant testing, Medrad ensures that malfunctioning software never hits the real world.
Much of this work contributed to my academic success when I returned to Pitt. In a very real way, the experience that I gained at Medrad during this first work rotation was like "putting the cart before the horse." I spent a month at Medrad learning and working closely with Access databases and SQL, and on returning to Pitt I enrolled in CS 1555, Database Management Systems. Because of my experience at Medrad, I already knew most of what was taught in that class. I also took CS 1631, Software Design Methodology. Since Medrad follows a well-defined software design process utilizing many industry standard concepts, such as Ward and Mellor Data Flow Diagrams, software requirements specifications, software design documents, and unit and system integration test plans, I was well-equipped to handle the coursework in 1631.
Also during this rotation I spent nearly a month designing and implementing an intranet web page utilizing Dynamic HTML, Java, VBScript, and ActiveX controls. The web page was a vehicle for communicating process improvement information, generated by a core team of which I was a part, to the rest of the company.
In the last week I was given a small project that consisted of writing a utility script in perl. I had never used perl before, and so was able to add yet another new technology to my experience as a result of the co-op program.
My second rotation found me with even greater responsibilities. An engineer crucial to the project to which I had been previously assigned left the company. Faced with a personnel shortage, my manager assigned me this engineer's responsibilities. This was the real-world acid test that I had been hoping the co-op program would provide, and I was not disappointed.
I was responsible for designing and implementing, in Visual Basic, a high-speed communications application that would be used to interface with injectors in the field. The application sends commands to the injector using a proprietary serial protocol. The injector, in response to these commands, executes built-in hardware and software test routines and returns the result to the PC. The Visual Basic application then decodes and displays the results. I was also responsible for developing the embedded software, which ran on the injector, to support this built-in testing.
Since this built-in-test (BIT) software was also used for in-house validation, I created a simple programming language that included variables, arithmetic, loops, and BIT-specific commands. I built an interpreter for this scripting language into the VB application, so that long sequences of repetitive commands could be scripted and run automatically, rather than require tedious user input. This drastically reduced the time necessary to test and validate the injector's software and hardware.
Towards the latter portions of this rotation, I spent most of my time doing system testing, since Medrad was preparing to release the injector to the market. Using oscilloscopes, logic analyzers, protocol analyzers, and a variety of other hardware and software tools, I executed test protocols and recorded my results. I also wrote special test driver software used to exercise the injector's functionality.
My final rotation was quite a change from my first two. When I returned to Medrad in April, the injector on which I and worked for my first two rotations had been released to the commercial market, and Medrad was preparing for development of the next generation of of contrast media injectors.
As a result, I had to shift from a code writing and testing job to a job designing software architecture. Outlining the various complex interactions between software units in the system and clearly defining the interfaces between them is essential to efficient software development and testing later on in the design lifecycle. My responsibilities for this rotation included generating software architecture design documents and OMT-style object, data, and event flow diagrams.
Medrad is embracing a great many new technologies such as C++. I was also responsible for developing coding standards for the C++ language - a set of rules dictating how C++ software should be written at Medrad. In addition to the move to C++, Medrad is moving to procure various software elements from third party companies. I spent a great deal of time evaluating third party real-time operating system packages, finally making a decision, with the rest of my team, to purchase one for use in the next Medrad injector.
The cooperative education experience has given me not only a great deal of knowledge and experience, but also a great deal of self-confidence. I would strongly recommend the experience to any student.
By Jon Speicher, September 26, 1999.