Internship
2003 CS 454
by
Jae Yoo

1.1 Advertising Your Availability
1.2 Finding Out About Job Openings
3.0 Daily Activity Log
Excerpts
4.0 Career Advice for Current
CS Students
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.
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,
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.
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
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.
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.

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.
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!