Internship 2003 CS 454

by Jae Yoo

1.0Getting the Job

         1.1 Advertising Your Availability

1.2 Finding Out About Job Openings

1.3 Landing Your Internship

2.0 About the Job

2.1 Employer

2.2 Your Job

3.0 Daily Activity Log Excerpts

4.0 Career Advice for Current CS Students

5.0 Internship Value

6.0 Pictures

7.0 Thanks!

 

Section 1.0 Getting the Job

Section 1.1 Advertising Your Availability

My internship came to me as an unexpected responsibility, rather than a sought opportunity.  How I got my first internship does not follow the traditional ways people get internships.  I did not get my internship by sending a resume or going to a job fair.  I did not get my internship through a known connection either.  I applied for a student programming job on-campus through JMU student employment web-board , where a list of jobs looking for candid student workers is posted and updated everyday.  I usually screen for a suitable on-campus job as a routine when I am not hired, and I was doing just that when I found a posting looking for a student programmer who is good at Java, posted by CIPP at JMU.  I noticed that the degree of technical skills the job required was not trivial, and knew that it would be an excellent opportunity for me.  I quickly got the application, took some time to write it, and sent the file to Phil Riley via email as the posting requested.

When I found out that I was hired, Phil Riley, who is my immediate boss, told me that the job requires me to stay at JMU for the entire summer of 2003, working as a full-time student programmer.  Although the job description didn¡¯t mention that I had to stay and work full-time during the summer, I took the opportunity.  It was unexpected but also very exciting to me because now I had a job during the school year until I graduated, and I already earned my first internship in December of 2002 (I wasn¡¯t expecting to get one until the next spring.)

I did not file a resume that sells me best to get the internship, but I tried to file an application that describes me as a competent and self-motivated programmer.  I did not consult help from others or books to write the application, but I was taught how to advertise myself briefly in technical writing course I took last year.  I used what I learned in that class to choose my words carefully and chose more positive and active words that I thought described me best.  When I finished writing the application, I emailed it to Phil Riley, and patiently waited for their response, hoping for a positive response from Phil.

 

Section 1.2 Finding Out About Job Openings

As I discussed in Section 1.2, I applied for a student programming job on-campus through JMU student employment web-board, my usually job hunting spot for on-campus jobs.  Also, although I didn¡¯t get my internship through it, I made a MonsterTrak account and filed a resume looking for a summer internship.  Another source I would¡¯ve relied on if I didn¡¯t get my internship so early in the year was CS department email list as professors or other people in the CS department often forwarded job openings to all CS students.  I also let my family and friends know that I was looking for an internship this summer so if they find out about a position, they could prompt me.  My Strategy for getting the internship was basically to try every possible source.  I did not go to the internship fair because when the fair was held at JMU I knew that I already had an internship for the summer, but I definitely would¡¯ve gone to the fair if I were still seeking for an internship.

 

Section 1.3 Landing Your Internship

Once I filed the internship application, Kathy and Phil replied promptly and asked to set up a time for an interview.  All communication was done via email.  Kathy and Phil were programmers in charge for the CIPP¡¯s NSRAM (Network Security Risk Assessment Model) project.

On my interview day, I didn¡¯t dress up because I knew that the interview was very informal.  But I tried to look neat by tying my once long hair and not wearing sweatshirts.  I wore neat jeans and a sweater.  The interview took place in Phil and Kathy¡¯s office in ISAT, and I felt more comfortable because ISAT building is like my second home as it is to most CS and ISAT students.  I felt that the interview went well.  There were some questions that I was not prepared to answer but I gave Kathy good honest answers and she seemed content with my answers.  I tried to advertise myself as a hardworking and self-motivated student, using my strong points such as my GPA and how organized I am in doing things.

I think what helped me most in the interview was my experience.  I had done several interviews in the past applying for some on-campus jobs before and I was able to get the job most of the times.  What helped me more was mock interview I did once at Sonner Hall last year.  The mock interview was helpful because it familiarized me with the kind of questions that are asked often in interviews regardless of the field.  I noticed that good work ethic was highly valued, and tried to assert that I am a self-motivated and active person.

I think I could¡¯ve chosen my words better if I had practiced the night before but I had to go to the site in a rush because I was busy doing class work and I had class right before and after the interview.  I feel that should¡¯ve chosen a better time for the interview, which would¡¯ve allowed more time to prepare.

I recommend all students to try going to at least one mock interview. It is provided by JMU¡¯s Academic Advising and Career Development center.  If you check out AACD¡¯s website often or get on the mailing list, you will be notified of upcoming career events of the week.

At the mock interview, professionals in Human Resources departments from many different companies come and assess students¡¯ interview and resume, and give advice to improve interview skills.  I found the experience extremely helpful and I am sure other students could take the free opportunity to assess one¡¯s skills.  As people say, practice makes perfect and having the experience of being interviewed by a Human Resources person would make your real interviews easier and smoother.  The more you experience, the more you would find yourself confident and free of nervousness.

 

Section 2.0 About the Job

Seection 2.1 Employer

My employer was CIPP (Critical Infrastructure Protection Project) of JMU. Our immediate boss was Phil Riley, whose title is analytical software engineer, but Dan Kane also frequently supervised us student programmers and helped us when we needed directions and advices.

I worked with three other student programmers, Lavie Tobey, Jon Bird, and Demetrius Middleton, all rising seniors majoring in Computer Science.  Because we were working full-time for the summer, our work schedule could be the fixed traditional Monday through Friday, nine to five.  However, Phil was very easygoing about when we came to work and when we left as long as we did the job.  He said that we don¡¯t have to stick with nine-to-five schedule as long as we come in early enough and work 8 hours a day.  In the beginning we came in around 10 and left around 6, but we soon realized that it is better to come in early and leave early, so we worked on a 9 to 5 schedule anyway.  We worked in a private computer lab on the second floor of ISAT building. Each student was assigned a workstation, and it was a delight because the computers were new and fast.

CIPP¡¯s primary objective was to develop NSRAM in some years.  The students including myself were too inexperienced to be involved in the design process of the engine.  We were just assigned tasks and upon finishing them we returned to Phil or Dan and new assignments were assigned later.

In the beginning, the student programmers studied different parts of the ongoing project, and helped building a prototype together, working on separate components and studying different software tools and concepts.  However, by the end of the summer, as design work was close to being finished, the students worked together on the GUI components, working together as a team.  There was a lot of communication and sharing of ideas, a lot of energy and a lot of debating.  We also often needed to see Dan or Phil for assistance because it was our first independent design work.

Our immediate customers are anyone who is interested in purchasing NSRAM product.  Our immediate supplier is GMU because they make the big decisions and we get the fund through GMU.  The pace of work in the organization varied time to time.  Sometimes it was slow, and sometimes people were in a hurry to meet the deadlines.  When things were slow, things were slow for the students mainly because design work hasn¡¯t finished and the students had to wait on the decisions in order to continue coding.  However, in the beginning of the internship when we were finishing up the prototype for demonstration for GMU, things were very busy and Phil and other people often stayed late to finish their work.

 

Section 2.2 Your Job

I wasn¡¯t hired to do a specific job.  My employer expected me to have competent Java skills and a good understanding of object oriented programming, which I was confident that I had.  The first assignment I had was studying a graphical library called JGo.  JGo is a graphics library that makes things easy for Java programmers building custom interactive diagrams, network or workflow editors, connected graphs, scheduling or organizational charts, smart maps, flowcharts, and software design tools.  I was asked by Phil to study JGo and build a simple application that would interact with the user using JGo.  It took me about a week to study JGo and build a simple program that enables the user to drag and drop several different types of nodes to a workspace and connect.  I wrote a report evaluating the package, and after Phil reviewed it himself, the team decided to use JGo in NSRAM project.  JGo was a very intuitive library to use because most classes extended from Java Swing components.

When prototyping and assessing the possibility of using JGo in NSRAM was finished, the students were assigned a new task to work on - designing the GUI for NSRAM.  Phil simply handed down the big idea and left everything up to us to come up with a good design we could use for NSRAM¡¯s GUI portion.  It was crazy at first because none of us knew how and where to start and what to do.  At times, I was so skeptical I didn¡¯t know if it was right for us students to design the GUI. We had a lot of trouble starting out, constantly seeking new ideas, and wounded up asking our supervisor Phil for help.  When we appealed to Phil about our lack of experience and knowledge compared to the task that was given, he smiled that we should just try anyway because that¡¯s how you learn things.  We got to look for design patterns suitable for the GUI and argued and studied together to come up with a good design.  We got help from Phil and Dan working on the GUI.

What was amazing was that when we actually finalized the GUI design with Dan¡¯s help, most of our components stayed in place.  We had to replace our complicated controller system with a simpler one but the main four GUI components stayed in place, and we are now developing the GUI using the design we helped develop.

We are currently finishing up developing the GUI and are in the process of testing and integrating each GUI component because we divided the GUI into four big parts.  The part I took on extended from the JGo project I did earlier, making my work easier to implement.  I actually reused most of the code I used in the prototype and changed some parts to comply with the new design.

When producing reports and designs, UML was preferred because it¡¯s the standard in the field.  I created class diagrams for our design and included it in the report we presented to other CIPP members.  We were trained to use developing tools such as Sun1Studio, NetBeans, Jalopy, and testing tools such as JTest.  We were also trained to use ClearCase for version control.  I was delighted to work with such tools because I knew that not every student gets the opportunity to work with them and it enforced us to practice good programming practices such as making good Javadocs, keeping up with version controlling, and a thorough unit testing.  The interns or the programmers did not travel at all in the job.  Only the GMU people came to JMU to see the prototype we had developed.  We were already trained in Personal Software Process before we started our full time internship, but it was a definitely useful training experience.  I felt like I improved my code quality and decreased defects after employing some of the PSP techniques for personal improvement

 

Section 3.0 Daily Activity Log Excerpts

May 23 2003.

I am doing static analysis on my code using JTest.  Everything was good except for this one class that gives me StackOverFlowError, and it seemed like the problem comes from JGo class library.  I could not figure out what the error message was trying to say and asked Phil for help, and after looking over my code, we decided to contact tech-support of JTest.

I waited online for one of the tech-support representatives to explain the problem.  I gave the representative the code and JGo class library and waited for reply, but their answer wasn¡¯t too helpful.  I decided to leave this for later and went back to changing the settings of JGoPort.  I delivered the work to the integration stream using ClearCase and Phil reviewed the code.  I continued testing my classes excluding the one that had the StackOverFlowError, and at the end of the day Phil had integrated my program with his XML parser that takes in data and makes nodes, ports, and connections on screen.  Phil used a different picture and added some neat functions to my original code, and it was almost ready for demonstration for the GMU people.

The mysterious error is still not sorted out.  The JTest tech support representative promised to send me an email after a thorough analysis before close of business tomorrow, so I would check my email and try to contact them again tomorrow.

 

Section 4.0 Career Advice for Current CS Students

CS 139 and CS 239 were obviously helpful to me in the internship role because all programming was done in java.  Also, CS 345 and CS 346 helped me design the GUI components better.  CS 345 gave me the basic understanding of quality assurance processes and software design processes, while CS 346¡¯s focus on design patterns and more in-depth knowledge of design process made our assignments easier to comprehend.  For example, when Phil had mentioned that we were using Model-View-Controller architecture for the NSRAM project, I knew what it was, while other students who haven¡¯t taken CS346 had to be explained.

I don¡¯t think the employers of CIPP have certifications such as Microsoft MCSE, but most of them had their Masters or PhDs, and had a long work experience and an area of expertise.  I feel that an internship is a valuable experience for all people and believe that all CS students who still have the time to seek internship at all costs.  While working as an intern, Dr. Lane often mentioned that our experience with CIPP would look like gold on our resumes, stressing the importance of real work experience.

I recommend all students who have the time to look for an internship before graduating.  And when you are looking for an internship, try every possible source you can use and apply for everything that you might be eligible for.  Expand your network and be prepared.  You never know when and where opportunity might pop up.

 

Section 5.0 Internship Value

Before I interned for CIPP, I was not any better than the other CS students.  Sure, my GPA was good and I am a hard working person, but I didn¡¯t have any real work experience.  I was like any other CS student.  My internship experience has changed me forever.  I was trained to program with fewer defects.  I learned how to use various development tools in order to program more effectively.  I learned how to use versioning control program and how to keep my work in synch with other¡¯s when working on something that¡¯s a part of the whole.  I learned how to present myself at meetings and how to write reports and how to use UML diagrams effectively in reports.  I learned how some of the common design patterns such as the Factory and Singleton are used in real world programming.

I learned how to use NetBeans and how to use the IDEs.  I learned from the older programmers tricks such as setting the initial value of a vector to a multiple of two, usually 512 because vector operations can be expensive.  I¡¯ve actually designed something on my own, and collaborated with others to come up with a better solution at times.  I learned how to work independently.  I didn¡¯t have anyone breathing down my neck, forcing me to finish the assignments on time, but I did them because I paced myself correctly using the PSP skills I learned.  There are so many things that I learned I can¡¯t even list many of them.

Many skills I earned are technical but many other are not.  I used to be the type that works alone and doesn¡¯t like sharing problems that I encounter when I work on something.  After working with three other student programmers, I found it wiser to ask questions right when you have a problem because other people might¡¯ve experienced the same problem and know the solution to it, so without wasting my time, I can fix the problem and go on with my life.  I believe the internship experience has helped me grow as a person too.  I became responsible.  No one was there to make sure that I was at work and I was doing my work.  I had to make sure myself that I was doing the right things and within the right time frame.  I¡¯ve grown a lot as a person as well.  I really appreciate the fact that I was offered the opportunity and I am glad that I accepted and worked hard this summer.  It¡¯s been a great experience, and I hope every CS student gets to experience something like this before graduating.  Grown your potentials, and grow as a person. 

 

Pictures

 

Dan Kane.  CISC! Dan helped the students a lot especially towards the end of the summer.

 

Our lab and the writing board.  You can still see some remnants of our design on the board.  This board was at times abused by the student programmers especially when we were designing the GUI.

 

Demetrius. Rising senior, student programmer.

 

Jon Bird. Rising senior, student programmer.

 

Kevin CIPP! Graduate student programmer.  Joined us at the very end of the summer, a week before school start.

 

Lavie Tobey.  Rising senior, student programmer.

 

My workstation.  It looks very empty. L I always had 3~4 bottles of water on my desk ;)

 

JMU¡¯s network model.  We had to convert this information into XML format at one point.  The data was used in prototype demonstration in June. 

 

Phil CIPP.  He was our immediate supervisor. J Helped us with all sorts of things from installing development tools to debugging our code!

 

Our newly hired programmer who will be working with Phil.  He shared the lab with us until he could move into Phil¡¯s office.

 

Thanks!

I would like to thank the CIPP crew and everyone who¡¯s made my internship a great experience! J Because I will see you around for a long time, it is nice not having to say good bye to you all! And I would like to thank Dr. Grove for offering this excellent course for us CS students.  It¡¯s definitely been one of the best life-changing experiences, ever!