Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
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