Download confidence - UNCC Honors College

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts

Logic programming wikipedia , lookup

Human-Computer Interaction Institute wikipedia , lookup

Knowledge representation and reasoning wikipedia , lookup

Transcript
Ricky Sanders
Dr. Warner
HONR 3790
4/9/2015
Portfolio Proposal
It is often said that programmers go through a general set of phases (Pinola, 2015). I am very
curious to see if I personally went through these in my own journey as a programmer. This is something
that cannot be known until my works from the past are considered. In this portfolio, I have compiled my
works into a timeline and I will analyze them in chronological order, according to the phases shown in
the graph below, which provides a visual representation of the phases of a programmer (Pinola, 2015). A
theme that deals with programming is the only possible way for me to go. I am a programmer at heart
and most of my time is spent in and around code and technology. If I am not writing code, I am doing
something that uses code such as playing video games or building electronics.
To explain the above graph: phase 1 (hand-holding) is the start of programming, this is usually
done using a simple language such as one that uses pictures or is not very complex. Phase 2 (cliff of
confusion) is a good ways into the journey and seems most commonly caused by having trouble learning
new languages, going into a class where the work seems to advanced, or realizing the knowledge of
coding that you have is much less than you expected. This pushes your confidence down significantly,
moving you into phase 3 (desert of despair), where your knowledge continues to increase, but your
Ricky Sanders
confidence is relatively low due to the previously mentioned reasons. Phase 3 lasts a good deal longer
than the previous phases and will continue until you begin to regain confidence in your abilities as a
programmer, which leads into phase 4 (upswing of awesome). This phase is typically a steady increase of
confidence as you continue to gain knowledge and most likely happens because you have learned a
good deal of information during phase 3 due to the lack of confidence in your ability. The graph ends at
phase 5, the point at which you are ready for employment both in knowledge and confidence, but this is
not the end for your growing knowledge or confidence. As you produce more software and learn more,
you will become confident in your work. This graph is relevant to getting a job that involves
programming for one major reason: how can an employer trust an employee’s product if the employee
himself doesn’t trust it?
I have a large number of artifacts due to the fact that I am constantly programming, but I have
chosen the top ten that I believe best work with this theme and placed them in chronological order for
the best representation with the graph. As far as I can remember, everything started with JASS
programming in Warcraft III in the sixth grade. Warcraft III is an RTS (Real Time Strategy) game that
allows users to make custom content. The content is relatively easy to create because it uses a Graphical
User Interface (GUI) system rather than using a standard programming language that is typed and
complex, making it difficult for beginners to use. Advanced content creators found ways to open the
editor and code directly in the JASS language to allow for more freedom and as my coding competence
increased, I began to explore this option as my confidence also increased. My confidence was high
enough to attempt this content creation option, but my competence was not. I only managed to modify
my content slightly by coding directly in the JASS language to incorporate things the GUI did not allow
for, but nothing extensive enough to be remarkably different. The artifacts for this will mostly be some
code and pictures of content I created. I consider this my hand-holding phase from the above graph as I
Ricky Sanders
began learning using a simpler language that has a graphical aspect to it, making it much easier than
scripted languages. After I produced two maps my confidence was relatively high after seeing it work
well and noticing the community was using the content frequently. This pushed my confidence quite
high and propelled me into a state of hunger to gain more coding competence.
The next major point in my life as a programmer and as a person was the four years I spent in
the FIRST Robotics Competition (FIRST, n.d.). FIRST Robotics Competition (FRC) is a program for high
school students where each school involved builds a robot for competition. There are multiple levels of
competition, the top level being FRC. At this level students build a massive 120 pound robot to compete
in a number of tasks. The students are expected to design, develop, and program the robot as there are
no default designs provided. I have chosen this as an artifact because I helped start the program and I
was the most dedicated member, logging over 500 hours of work on the robots over my entire high
school career. I eventually ended up as the lead programmer, driver, and electrical engineer for the
robot. The programming language for the robots was a GUI language called LabView and it was also a
relatively easy language that took me a short time to understand. This GUI language was more complex
and harder than the previous I had worked with, but my confidence was high and my competence was
rapidly growing. After I managed to make the robot move my first year, it was only a matter of time
before my confidence would soar. I became more confident with every piece of the robot I was able to
make function and I learned a lot about how programming languages are structured. I got to the point
where I had no doubt I would be able to make the robot function properly every year. In my last year my
competence was high enough where I was asked to teach new students to do all of the tasks I was
responsible for. The fact that others had confidence in my abilities only fed into my growing confidence
in my abilities.
One of the biggest steps for me as a programmer was my first college programming course: ITCS
1212 Intro to Computer Science (C++). This was a big step for me because it was the first time I was ever
Ricky Sanders
taught a language. Before this I had obtained all of my programming knowledge from personal research
and the transition from this to a class environment was a struggle. The class begins with basic structures
that I had learned long ago and it was a painfully slow process. I was incapable of following the slow
pace of the class and learned the language on my own, going farther than the class did so my coding
competence grew quite quickly. This meant that I was much more advanced in the language than my
peers increasing my confidence in my abilities even more. This is still the area between phase 1 and
phase two on the graph.
The following semester I took the next programming course: ITCS 1213 Intro to Computer
Science II (Java). This artifact is also the class itself and is important because it was a chance for me to
learn another programming language, one I had never come into contact with before. I learned all of the
material myself again and I progressed very quickly through this new language as if it were second
nature. I was flying though it so quickly that my competence was growing too fast and I began to forget
some of features of the language I learned early on. I had to slow myself down to make sure I retained
everything and this really fueled my confidence. I fell just short of the cliff of confusion phase on the
graph for this artifact. I was at my highest level of coding competence and confidence ever and I was not
ready for what was to come.
The next semester I became a Teacher’s assistant (TA) for the university. This artifact is hard to
place on a timeline because I worked in different parts of the computer science department as a TA
throughout college, but I started after the previous artifact so I have decided to place it here on the
timeline. I have always loved passing on knowledge to people and this was just a very pleasant
experience for me. I enjoyed almost everything about teaching and it felt good to be able to answer any
question that people had about computer science. It made me feel very confident in my abilities as a
programmer and technology lover. I began by instructing the C++ labs, moved up to teaching Algorithms
for C++, C#, and Java, and then moved to a technology LBST about the impact of technology on society.
Ricky Sanders
Some of the students have become friends of mine that I still meet with today and it has made me
consider becoming an instructor. I did learn a little more about programming, but I learned more about
some of its impact on society and more about myself as a person than anything else. This artifact in itself
comes a fraction before the cliff of confusion as the slowed learning process was not caused by
confusion, but by the lack of time due to working and taking classes that were not programming
intensive.
My one required honors coursework artifact is my time in HONR 3700 Game Theory and
Strategic Behavior class. I have chosen to use this because I specifically chose this course to learn more
about how people make choices. Understanding what people want and how they think can be a big part
of programming depending on what field you go into. If you are working on artificial intelligence it can
be very important to understand these things, but this is also important when considering much simpler
things such as creating a User Interface (UI) for a program. A UI must be intuitive and useful or the
program will not be purchased by a large number of consumers. A programmer can use knowledge of
how people think and make choices to position buttons and tools a certain way to make the UI as useful
as possible. Most programmers these days only focus on trying to learn as much as they can about
coding, when in reality, being a programmer is much more complex. This artifact is right at the peak of
the cliff of despair on the graph I provided above and just after the previous artifact. This didn’t improve
my confidence any or directly influence my programming knowledge, but I believe it did help me
understand how decisions are made.
The next year I moved on to learning more languages again, starting with Prolog and LISP in ITCS
3152 Symbolic Programming. Students were placed in groups for a final project where we were required
to create a basic artificial intelligence of some sort using LISP or Prolog. My group chose a Connect Four
AI written in LISP and we were the only group with a finished product (Sanders, LISP Connect 4 AI). The
finished project is a good display of some of my programming skills as it is a completely different
Ricky Sanders
language than previous courses I have taken. This course alone spans the entire central region of the
provided graph, ranging from the cliff right up to the upswing of awesomeness. I had a huge amount of
trouble in this course because the languages for this class were incredibly different than any I had
worked with previously and they don’t allow for most of the same commands. I was having so much
trouble with the course that I took a big hit to my confidence as a programmer. I learned a lot in the
class, but when I was doing more research on the languages while completing assignments, I realized
how little I knew about the languages and it was the first time I really struggled to get a programming
assignment done. I began to realize that my coding capabilities were not as high as I thought they were.
After this I went through some more general courses and learned a few more basic languages.
At some point I ended up working with some people on developing an open source mod for the video
game DayZ Epoch called Epoch Admin Tools A.K.A. EAT (Sanders, Epoch Admin Tools). I went on to
become the lead developer on this project and have been working on it for over a year now. The EAT
mod has become a huge hit and is now in use on over three thousand servers in over fifteen different
countries. I have data that shows my install guide has been translated into multiple languages by
dedicated fans so that people around the world can use the tool. This is a huge milestone in my journey
because I have become part of a long and successful open source project that is used by many and was
written in a programming language I had never seen or heard of before. This project is what pulled me
out of the desert of despair phase and into the upswing of awesome. I realized that the languages I had
trouble with were ones that are very old and rarely used today, but the more popular and widely used
languages seem to come naturally for me. The huge amount of support this project gained really
brought my confidence back up. The work I have done on this project is a show of my dedication to my
work and my ability to learn new languages. I believe that this artifact will be a key selling point when I
apply for jobs. This project alone could be considered my entire “upswing of awesomeness”. My success
Ricky Sanders
with the tool and popularity in the gaming community has given me more confidence in my ability than
any other programming project I have ever worked on.
Another key importance that came from this project was learning how to use GitHub, a version
control system that is used to easily and efficiently work on code in a large team. I have chosen this as
an artifact because version control is a very important skill in the workplace and ever since learning how
to use GitHub, I have put all of my new projects on GitHub as well as many of my old ones. This has
made it very easy to manage and maintain my various coding projects as well as share them with others.
The best part about this is that it has graphs for all of my various projects to show the work and changes
I have done over time. This artifact did not really contribute to my confidence, but did help with my
competence so it is very close to EAT on the provided graph.
My final artifact on my journey as a programmer is my senior project in computer science for
ITCS 4155 titled X Note Plus (Sanders, X Note Plus). This is a big part of my journey as a programmer not
just because it is a senior project to finish my degree, but because I had to learn three languages for the
project within four weeks. The instructor of the course split everyone into groups of five and my team
decided on a project that required the use of HTML, CSS, PHP, and SQL. I had previous knowledge of
SQL, but not the other three. This shows serious coding and learning ability on my part and the finished
product was functional. Being able to learn everything I needed to complete the project in such a short
time made me confident enough in my abilities to believe that I could handle anything a job may require
of me. I was finally job ready both in confidence, and competence. This artifact exists at the last phase of
the graph. It is not the end of my journey as a programmer, but it is almost the end of my journey for
employment. I will continue to grow long after this and become an even better programmer.
With all of the above artifacts considered, I have everything needed to create the portfolio and I
even have the knowledge to create a website from the ground up for the portfolio if I want using my
knowledge gained from Artifact 10. The required reflection for the portfolio will be an easy portion of
Ricky Sanders
for me as I remember all of the major details about the chosen artifacts. From what I understand, this is
one of the harder portions of the portfolio so I am quite happy to find that it will be relatively easy for
me. As for the design of the website, I plan to use a template I have used previously for developing an
employment portfolio. In all reality I have everything ready for a functional portfolio, all I need to do is
add the artifacts and write the reflection. The steps required from this current time are to refine this
proposal, set up the template for this class, add my artifacts, and write the final reflection.
As for the interpretation of how the graph conforms to me, all of these artifacts fall on the graph
in accordance to my confidence in my programming ability, but it does not fit exactly. My “cliff of
confusion” and “desert of despair” phases were both under one artifact and I would consider my cliff
much more like a cliff rather than a hill as it is depicted in the graph above. My confidence took an
immediate hit when I realized how much trouble I was having with the languages for the AI class, but my
“desert” felt more flat than curved, as I had not regained much of my confidence until our team was
able to produce something that worked. This desert phase was also relatively short for me compared to
the graph above, it really only spanned the one class. The rest of the graph is mostly correct for me, but
possibly more drawn out. I may have been job worthy before article 10, but I did not feel like I was until
after article 10. Below is a graph of what I believe my work follows.
A# = artifact (number)
A10
A5
A9
A4
A6
A3
A7
A7
A2
A1
A8
Job ready
(confidence)
Job ready
(knowledge)
Ricky Sanders
Bibliography
FIRST Robotics. (n.d.). FIRST Robotics Competition. Retrieved from
http://www.usfirst.org/roboticsprograms/frc
Pinola, M. (2015, 2 11). Why Learning to Code Is So Hard (and What You Can Do About It). Retrieved 2
14, 2015, from Lifehacker: http://lifehacker.com/why-learning-to-code-is-so-hard-and-what-you-can-doab-1685229278
Sanders, R. (n.d.). Epoch Admin Tools. Retrieved from https://github.com/noxsicarius/Epoch-AdminTools
Sanders, R. (n.d.). LISP Connect 4 AI. Retrieved from https://github.com/noxsicarius/Connect4-Lisp
Sanders, R. (n.d.). X Note Plus. Retrieved from https://github.com/noxsicarius/4155-Class-Project