Friday, October 31, 2014

Extra Blog: if (today == "Monday") {

The days leading up to the First Lesson feels like time crawls by very slowly. I have a solid foundation of what I want to say, but other factors other than the senior project are currently pressuring me for next week (11/3 - 11/7). In addition to presenting my topic, I also have a midterm as well as a yearbook deadline on that exact same day. Also, that is when the UC application submission time opens up and I still need to (at the time of writing this) type out the essay to the 2nd UC prompt. However, despite this work that I got myself into (2 college classes, Yearbook, and UC applications), I still feel confident in my my 1st Lesson. The following text will be about what I generally plan to say and what my reasoning is for saying these things. Not only will this help me to organize my thoughts and organize what I have to say in my lesson plan (since it's too long anyways), but I can also complete this month's extra blog as well. Hooray for multitasking!

The hook I want to start off with is show pieces of technology that have become an essential part of our lives. I want to show things from super complex computers to minute programs such as the TI calculator. The goal of this is to get the audience to relate to what I have to say. I will then ask the audience what is in common with these different devices - what makes them run and do what they do. The answer will be Computer Programming. I will then state that this is what will influence society in the present as well as in the future.



Pictures I will use for the hook.

After, the hook, I will say the overly generic introduction everyone has to say: "My name is Jason Wu, my topic is Computer Programming, and my Working EQ is 'How can an individual become a successful Computer Programmer in the 21st century?'"

The main points I want to covering my presentation are "What is a Computer?" "What is Computer Programming and why is it important?" a class "activity" where I ask people what a block of code means, explain that block of code using code I will put on the white board, and my first answer to my essential question. Although it seems like a lot, I feel that doing this exercise helps to support my reasoning for my first answer not only in just stating facts, but in practice as well. Teaching people the basics of computers, programming, and simple code embodies my answer to "Have a solid foundation of programming knowledge in coding through practice"

I will state the question "What is computer programming?" and emphasize that in order to fully understand what it does, one must know what a computer is at a basic level first. My plan is to explain are computers are any kind of technology that interprets binary code into an action. This binary code, on or off, can be described in physical switches or electrical current flowing through wires. After this, I will go back to show examples of modern computers and applications that run on programs. An additional statement I will make, if I find I have enough time, would be how simple technology like 9 digit calculators are considered computers as well as the wires and transistors are represented as off or on.


Pictures I will use to illustrate the products of programming.

Once I state this, I will transfer over to the topic of "what is computer programming and why is it important," Computer Programming allows us to go beyond simple calculators and makes the altering of 1's and 0's into something legible. Here, I will cite my source from an article on Wisegeek titled "What does a computer programmer do?" saying that "computer programmers design software in logical work flow charts" through different programming languages. I will summarize this stating that computer programming basically represents the 1's and 0's in a visual form of plain English that the computer will understand. In order to ease people's fear that code is overly complicated, I will reassure them that coding can be complex, but having a good foundation in coding will lead to success in the future. If there is time, I will state this is my answer which I will explain shortly. This will lead into showing a simple block of code - the "if statement."

The "if statement" will look like this

I will ask the audience to try to explain what the "if statement" says. I will describe each line and symbol briefly to both  to provide a basic under standing for the audience. I will use printed out pieces of paper with the code on them to illustrate each point. I will reference the book "A Smarter Way to Learn Javascript" as it taught me in this way also.

Reused picture from September's Extra Blog!

Once I finish with my explanation the "if statement," I plan on stating my first answer to my EQ: ""Have a solid foundation of programming knowledge in coding through practice." Here, I will cite my mentor as she taught me how it is obvious when hiring when someone does not know the basics. She encourages that becoming an expert requires dedicating time and practice towards obtaining programming knowledge.  In addition, I will also cite norgriv.com which states that in order to master a programming language, one must continuously use and practice coding with that language. Mastery of in a field of work is desirable of employees and will lead to success in the 21st century.

I will conclude with: "Thank you for listening and participating in my lesson. Remember that having a good foundation in computer programming is essential for success. Therefore, as a parting word, remember this: creating things in life is difficult, but for computers, creation is literally at your fingertips."

TL;DR
I will hook with questions regarding current technology and cover what a computer is, what computer programming is, what an "if statement" is, and what my first answer to my essential question is.


Wednesday, October 15, 2014

Blog 8 - Research and Working EQ

(Apparently I posted something similar to this already in September's Extra blog)

1.  What is your working EQ?

How can an individual become a successful computer programmer in the 21st century?

2.  What is a possible answer to your working EQ? Please write the answer in thesis format. 
  • Have a clear understanding of the specifications of a program
  • Continuous learning of new skills and languages as technology changes with time
  • Good communication, planning, and responsibility with the team you work with
  • Have a solid foundation of programming knowledge in studying algorithms, knowing many languages, and practicing over a long period of time
3.  What is the most important source you have used that has helped you come up with an answer to your working EQ?

The most important sources that has helped me to come up with and answer to my EQ has been my mentor and my own experiences so far. From what my mentor says and from what she does, I came up with the answers "Have a clear understanding of the specifications of a program" and "Have a solid foundation of programming knowledge in studying algorithms, knowing many languages, and practicing over a long period of time." I developed these answers due to my mentor stating that the programming field is a "Life-time learning experience" where one would have to continually learn how to operate or use new forms of technology. This is similar to what Clint Shank, a writer of technological subjects, once said:

"Technology changes fast. Don't get left behind."

However, although this is a very viable answer, my mentor is continuously telling me that learning developing takes a large amount of time, and with that too comes a large amount of time to learn languages. I have also read in an article that in order to master a programming language, which means to have an understand and a feel for the advantages and disadvantages the languages in certain situations, one must dedicate a large amount of time using, practicing, and learning the language. However, sometimes with the demand of the programming workplace for new projects, there may not be enough time for complete mastery of a programming language. It can be possible that just knowing how to use a program effectively maybe enough for the company's needs. I will need to look into this more. As for algorithms, which are ways to solve programs and identify the time it will take a program to find a solution, my mentor said that if you have a solid foundation, one would be very good in programming and figuring out what to do when a program runs into problems. 

The answers "have a clear understanding of the specifications of a program" and "good communication, planning, and responsibility with the team you work with" are derived more from my own experiences. The understanding of specifications, or the understanding of what the program is used for and what will be required of it, is very apparent in the independent component I am working on right now. My mentor gave me a list and explained to me the many requirements I must have on the website I will be making and I observed the immense detail in what needs to be required. She stated that in the workplace, employees are given sheets like this to work on and that everything must meet these requirements and cannot deviate from what is said to do. Therefore, one must understand the specifications very deeply. I will be experiencing more of this as I continue on the component.

That answer also relates to the next answer, but in a different way. "Good communication, planning, and responsibility with the team you work with" came from how I sat with my mentor to work out the exact requirements and specifications of what I needed to include in the website. She stated that whenever some one gives her, or anyone else, a service request (a request to develop something for a customer), they must sit down with the customer to talk about specific detail of what they want, what they need, and whether their request is reasonable in the stated time span. Also, a topic in many different articles I have read emphasize communication of your thoughts through code as well as the communication with others. The articles also emphasize planning to have organization with workers. My mentor even has a sheet that lists the specific duties of members. Therefore, planning and communication is vital as well. (I also inferred this from group work in iPoly, although this is not related to programming.)

4.  Who is your mentor, or where are you doing mentorship, and how does what you are doing relate to your working EQ?

My mentor is my mom, Lily Wu, who helps to teach me how things are done at her workplace. It relates to my EQ since what she teaches me and is having me to for my Independent Component #1 is based on her own, current experience as a successful 21st century programmer. Therefore, what she tells me and what I learn from her all related to my EQ, "How can an individual become a successful computer programmer in the 21st century?" This mentorship is a direct source of information towards answering my EQ.

Wednesday, October 1, 2014

Blog 7: Independent Component 1 Approval

1.  Describe in detail what you plan to do for your 30 hours.

I plan on making a website that includes different kinds of functionality that a standard website has and other functions that my mentor will suggest that I add. Some of these functions that we currently have in mind are multiple pages, animated objects, and an email box. After the initial creation of the site with its basic functions, more things will be added later to add depth to its interactions and make it look visually appealing.

2.  Discuss how or what you will do to meet the expectation of showing 30 hours of evidence.

What I will do to meet the extra 30 hours is spend:
  • 10-15 hours reading and learning about HTML, CSS, and JavaScript and how to integrate them with each other
  • 10 hours making the initial framework and functionality of website
  • 5-10 hours adding additional features to the website.

3.  And explain how what you will be doing will help you explore your topic in more depth.

Creating a website will not only make me familiar with HTML, CSS, and JavaScript, but it will also help me understand the software in which I will use and give me experience in the process of actually making a website.

4.  Update your Senior Project Hours log.

Updated.

Tuesday, September 30, 2014

Extra Blog: calculate();

A few days ago, my mentor assigned make a web application. I programmed my first ever functioning program primarily using HTML and JavaScript using Microsoft Visual Studio 2012. What did I make? A calculator. A calculator that can add, subtract, multiply, and divide two values a user inputs into the program through buttons. Yes, I know, it sounds like a very simple program (and the interface makes it look even more so), but the amount of programming and coding behind it is actually quite complex (from my current standpoint anyways). From creating flexible functions that can calculate the two inputted values and detect which of the fours operation the user wishes to use to getting JavaScript to actually do something when a button is pressed was quite an enormous feat.
At first, from the books alone, I couldn't figure out how to do the latter and have it pass a button ID's from the HTML code to the JavaScript code. I resorted to searching on Google for a solution and eventually found out how to do it on this particular website, http://www.w3schools.com/. As it turns out, I found from my mentor that many programmers and Computer Science majors use that website as a source for help, guidance, and a place to learn different programming languages. There is also a public forum that allows questions to be asked directly to other users on that site for specific questions that may not otherwise be addressed with general lessons.

The simple interface of my calculator. Includes the functions of adding, subtracting, multiplying, and dividing two numbers, checking to see if users entered values or not, and using a resulting value as the first number of input.

This part of the code detects which number button was pressed and displays its value. It does this by looping through the numbers 0 through 9, determining whether the button's ID matches "Button" + the looping number, and displaying the looping number in the 1st Textbox.

The calculate() function I coded that receives 3 values, the value in the 1st Textbox, the value of the 2nd Textbox, and the value of the operation Textbox. Depending on the operation, the function will do the corresponding calculations to the values of the 1st and second text boxes and display the result in the result Textbox. Note that I also included an exception for dividing anything by 0 in order to prevent the program from breaking the laws of the universe and crash.

On another note, my mentor recently gave me two new books on HTML, CSS,JavaScript, and JQuery that she will help to go over with me as we do mentorship hours. On a first glance, these books looked like the ordinary programming books (and textbooks) with a pretty cover and back cover with black and white, boring walls of text that strain the eyes. But when I opened these books up, not only was I surprised at the color, but I was also impressed my the amount of designing done within the book coming from a design editor's perspective. They were relaxing, easy to read and understand, and, most of all, not boring. Honestly, this is probably the best looking educational book that I've ever seen since reading Dr. Seuss over 10 years ago.

Pretty covers usually attract me enough to read the inside text, but the text usually do not the same as much. These book being an exception.

This back cover is very nice. If I was doing some design work as my senior project, I would even consider using this book as a reference!


The most attractive educational books I've ever seen since Dr. Seuss.

I will continue to fine tune my programming skill, in the mean time, I will start learning more HTML and C++ in the coming month.

Thursday, September 18, 2014

Blog 6 - Second Interview Preparation

1.  Who is your mentor and where do they work?

Lily Wu

Works at the County of Los Angeles Internal Services Department, Information Technology Service.

2.  What five questions will you ask them about their background?

What position do you hold in your field and what are you responsible for?

How long have you with this company and in this field of work and what have you done in the past?

What is the company's goal or purpose?

Did you go to college? If so, what did you major in, what did you study in this major, and what level of degree did you obtain? If not, in what ways did you gain experience for your job?

Why did you pursue this career?

What do you think makes a person an expert in your field of work, being one yourself?

What do you think has been the most influential factor that allows you succeed in the work that you do?


Tuesday, September 9, 2014

Blog 5 - Mentorship Reflection

Based on what you have done for your senior project so far, answer the following questions (be specific and use examples).

1. Mentorship question: Describe your experience in how you found your mentorship?  If you haven't found one yet, describe your experience so far in the search of a mentor.

My mentor is my Lily Wu - my mom. Having her as my mentor is very convenient since she lives with me and I talk to her almost everyday. I found this to be very lucky since my interest is in the same field as what she does for work. She was willing to take the time to teach me computer programming and, because of my explanation of the project, she knows my EQ and the goal of this mentorship component - to learn practical skills in the real world that is not regularly provided in school course work. Once she understood these things, she taught me what she does, what is required of programmers in her field of work, how to program, and has given me input on my current EQ.

2. Research question: What has been your most important article you have read so far and why?

The most important article I have read so far is "Computer Programming in the 21st Century: Quo Vadis?" which is a compilation of many writings of authors in the programming field. This article not only pertains directly to my working EQ, "How can an individual become a successful computer programmer in the 21st century?" but it also outlines and summarizes possible answers towards this question. In addition, it also gives me a general direction of what I should study such as 'problem solving' or 'continuous learning.' This article has helped me advance greatly in my senior project. Therefore, I feel that this is the most important article I have read so far.

Saturday, August 30, 2014

Extra Blog: alert("Hello world!");

This past month, I have worked with my mentor in learning the structure of LA County's Internal Services Department (ISD), the Financial Reporting System (FRS), and learning how to program in JavaScript. Learning about these things gives me assurance that it was a good decision for me to choose Computer Programming as my senior topic. I found that the work I did and the subjects I will, and have already, start studying are very interesting. I've always enjoyed using computers, applying logical thinking, and creating things that work, so there couldn't be a better choice than Computer Programming. 

Below are some pictures that represent what I have done so far.


The ISD Logo.

The book my mentor goes over with me to show me how to program in JavaScript.
As with learning any other language, I displayed a message saying the iconic "Hello world!" with the code:
alert("Hello world");

My current working EQ is "How can an individual become a successful computer programmer in the 21st century?" Through my research these past weeks and from my study of JavaScript, I have come up with several answers that I think approaches the best answer for my working EQ. The following are my current, possible answers:

  • Having the end-goal in mind during programming
  • Continually learning new skills/knowledge as technology changes
  • Good communication/responsibility with those who work with you
  • Have good code design/structure
  • Dedication to learn/practice coding over a large period of time
  • Enjoy Computer Programming 

At the moment, I feel that the answer, "Continually learning new skills/knowledge as technology changes," is the most reasonable and strongest answer out of the ones I have made so far. This is because my mentor is constantly,and thoroughly, learn new programming languages and apply them in the workplace. She said that being in the field of work is a "Life-time learning experience" and that one would need to study out side of the regular 8 hour work day. Companies and organizations, such as the Justice Service within the ISD that my mentor works in, who are based around the work of programmers often send their employees to classes to learn a variety of new subjects such as working efficiently or how to operate under a certain kind of system. In addition to classes, countless amounts of new programming books and internet articles are constantly being published with the specifics of the latest versions of programming languages and many instant messaging boards are constantly exchanging help to those have problems. Also, many times in programming, one can even copy and modify a program that someone else had made. This become a learning experience in itself of new information. 

TL;DR

This explanation can be summed up with something Clint Shank, a writer of technological subjects, once said:


"Technology changes fast. Don't get left behind."