2016-2017 Year In Review

Well, here I am – the last day of the 2016-2017 school year. It’s been a great ride this year.

June 2016

I had the experience of attending my first Advanced Placement Summer Institute! This was to prepare us for AP Computer Science Principles (AP Computer Science I).

This particular APSI was different from others in that it was not run by College Board, but by the UTeach Institute at University of Texas through the National Science Foundation.

July 2016

After learning about Computer Science in June, I shifted gears to learn about FIRST Robotics. I got to attend a week-long hands-on workshop with Freid Elliott of Dallas ISD and Dr. Patrick Michaud of University of Texas: Dallas.

This training was invaluable in preparing me for the launch of our new robotics program at Ferris High School. Without this workshop, I couldn’t even guess as to how long it would have taken us to get our robot moving.

August 2016

For the first time since August 2012, I had the opportunity to start a school year in a high school! I was very happy to be returning to high school for a full-year.

In August of 2013 and August 2014, I was teaching at The Art Institute of Dallas and in August 2015, I was teaching 4th grade at Ferris Intermediate School.

This year, I taught 1 section of Computer Science, 1 section of Robotics & Automation, 1 section of Principles of Technology/Physics, and 4 sections of Business Information Management (BIM).

September 2016

Now that the school-year was fully underway, I got started on teaching material.

In Computer Science, we hit the ground running with programming in JAVA. In Principles of Technology, we built pressurized soda-bottle rockets and launched them!

In Robotics & Automation, we had the reveal of the game for the 2016/2017 season – Velocity Vortex! It was exciting to see the gears turning as my students started planning how to address the challenge of the game for this year. They were very excited to start designing and building the robot for the game!

My robotics class had the opportunity to work on the Finch robots that were loaned to us from Carnegie Mellon University.

October 2016

Now that we knew the game for robotics, we started having “Come As You Can” (CAYC) workdays on Saturdays for students to come up to the high school and work on the robot.

Here, students were encouraged to come up to the high school to work on the contest robot. I would have the lab open and it was a self-paced workday. Each CAYC workday was typically 8 to 12 hours.

In addition to the robotics CAYC workdays, I had fun with my Principles of Technology class with an egg drop experiment. Here, they had to create a rig that could cushion the fall of a raw egg dropped from a considerable height.

There were 3 rigs that no matter the height, the egg survived again and again. I was very pleased. In the follow-up, the groups had to calculate the force their rig struck the ground with.

November 2016

The robotics team did the majority of their hardware work during this month. This was the month that we got the robot moving!

This was also when we had our only season scrimmage for robotics.

This was our first experience with one of the guiding principles of FIRST Robotics – “Coopertition”. This is the idea of cooperative competition. While this was a scrimmage in that we were able to see what the robots of others teams were able to do, it was also a workshop for us to be able to refine our skills and the build of our robot.

During this month, Principles of Technology worked on creating mouse trap racers.

They had the chance to demonstrate their ability to mix-and-match parts to maximize their designs.

The parts for this project were donated from Donors Choose over the summer in preparation for the school year.

December 2016

As we began to wind-down the 2016 calendar year, the robotics team arrived at their first of 3 league meets which was hosted at Ferris High School.

The robotics team performed very well in their first outing and assumed 2nd place in the season standings. This was an outstanding way to start our inaugural season of FIRST Tech Challenge robotics!

UIL Computer Science also kicked off this month with its first virtual meet. Back in the 2015/2016 academic year, the UIL Computer Science team advanced on its own to UIL Regional competition as a student-run after-school club!

January 2017

This month saw two robotics league meets. Both of these meets were at Mansfield Ben Barber Innovation Academy.

In addition, between the two league meets, the robotics team presented at Ferris Intermediate School addressing the disproportionate representation of girls in STEM fields.

The various members of the robotics team had an enjoyable time working with the students at FIS!

February 2017

This month was really “hot” in multiple ways. The robotics team hosted the league tournament at Ferris High School.

ERROR 404, the FHS robotics team, entered the tournament in 4th place and by the end of the day was solidly in 3rd place.

The team performed very well and had a strong alliance partner as they advanced into the elimination round of the tournament. Unfortunately, we saw the season come to an end in the blink of an eye when a spectator turned on a WiFi hotspot on their phone, which caused our robot to stop.

The Tuesday following the league meet, the month got even hotter when an experiment in my Principles of Technology class went very wrong!

Just 4 days after that fire, the Computer Science team performed in its only face-to-face invitational meet in Mabank. The team from Ferris High School finished in 1st place at the invite!

March 2017

As robotics shifted into off-season mode, and I was looking to regain footing by retooling some experiments in Principles of Technology, March was all about Computer Science.

In late-March, the UIL Computer Science team competed in the UIL District Tournament where they finished in 1st place and advanced to the UIL Regional Tournament!

I was extremely proud of how our team captain performed at this tournament and his decision to hand over the reins to his successor so she could gain some experience in the role she has shadowed for the past two seasons.

April 2017

As we had “played with fire” in February in Principles of Technology, I elected that water would be much safer for us to play with.

So, in mid-April, Principles of Technology built water balloon launchers and launched to strike targets at 20, 40, and 50 yards. To make this more fun, the targets were Mr. Mack McClesky (FHS Assistant Principal), myself, and Dr. Kevin Dixon (FHS Principal) respectively.

Students had to calculate maximum range, height, and launch angles in this experiment!

In addition to getting soaked, this month was also the UIL Computer Science team appearance at the UIL Regional Tournament at Texas A&M University: Commerce.

The UIL Computer Science team had a bit of a rough performance at the UIL Regional Tournament. I believe this was in-part due to over-preparing.

I appreciated with enthusiasm of the team members, but I think they over-worked themselves and succumbed to “brain drain” and fatigue ultimately did them in and they were just overwhelmed with information as they went into the test.

While we did not perform as well on the written test, the team demonstrated outstanding growth on the hands-on test. In 2015/2016, the team solved no hands-on problems at the UIL Regional Tournament. In contrast, the team solved 3 hands-on problems at the UIL Regional Tournament in 2016/2017!

On a personal note, April was when I said “Goodbye” to my home of 9 years in Forney.

For two of my children, this is the only house they really remember. Over the past several years, we have seen Forney grow from a semi-rural community to a suburban community where possessions and materialism have taken over and you are solely based upon what you have and how much you have.

We elected to move to the community where I teach in and where my oldest daughter elected to attend junior high at – Ferris.

It was a bit of a shift to go from a home that we built and was only 10 years old to a home that is over 100 years old. Our new home was built in 1894 and is now 123 years old! The pace of life in this community is wonderful and I would not go back to the suburban rush ever again, if I can have any say in it!

May 2017

Now, we have come full-circle. It has been a year! Both Robotics and Computer Science are in off-season mode and preparing for next year.

Principles of Technology finished the year with a project similar to the one we started the year with, using the 2-liter soda bottles. Unlike the project at the start of the year, students had to create an air foil to achieve non-projectile motion flight with the thrust provided by the pressurized 2-liter soda bottle.

I am looking forward to seeing my graduates walk across that stage and close one chapter in their lives and open the next new chapter! I am excited to hear how they continue to mature, grow, and develop.

I am very excited to see the programs and teams that were launched this year continue to develop next year.

In 2017/2018, we will be launching 2 new engineering courses:

  • Principles of Applied Engineering
  • Engineering Design & Problem Solving

In addition to those two new courses, we will be streamlining the robotics courses:

  • Robotics I
  • Robotics II

We will also be expanding our Computer Science program:

  • Computer Science I (based on AP Computer Science Principles)
  • Computer Science II (based on AP Computer Science – A)

I am extremely blessed to work for a school district and on a campus that supports my out-of-the-box teaching style and methods. I look forward to continuing to work in Ferris and with the children of this community.

A Real Final Exam: Business Information Management

Well, since entering K-12 education in the 2004/2005 school year, I have now written and administered my first “real” semester exams!

While I have always given exams at the conclusion of the semesters, I have never really given a genuine exam “experience”. There would be a test. That test usually consisted of 50 questions. 25 of the questions were True/False and 25 were Multiple Choice. The students were given a single sentence review guide of “Always Be True to Yourself”.

Now, with that as the review guide, I think you could safely guess that the answers were “B” and “True”. Your guess would be correct. Sadly, I did have students fail that test.

The test was not a “give-me grade” since there was usually a major end-of-year project that the majority of their semester grade was based upon. This final was created so we could simply check a box that said we gave a paper final.

This year, I opted to write and administer a genuine rigorous exam as I was not using any major end-of-year projects.

BIM (EOY) Final Exam – Test

BIM (EOY) Final Exam – Answer Key

As you can see, this is a bit more rigorous of a test. In fact, all of the questions require a calculated answer.

Once the tests are completed, I will analyze student performance in another post.

A Real Final Exam: Computer Science

Well, since entering K-12 education in the 2004/2005 school year, I have now written and administered my first “real” semester exams!

While I have always given exams at the conclusion of the semesters, I have never really given a genuine exam “experience”. There would be a test. That test usually consisted of 50 questions. 25 of the questions were True/False and 25 were Multiple Choice. The students were given a single sentence review guide of “Always Be True to Yourself”.

Now, with that as the review guide, I think you could safely guess that the answers were “B” and “True”. Your guess would be correct. Sadly, I did have students fail that test.

The test was not a “give-me grade” since there was usually a major end-of-year project that the majority of their semester grade was based upon. This final was created so we could simply check a box that said we gave a paper final.

This year, I opted to write and administer a genuine rigorous exam as I was not using any major end-of-year projects.

Computer Science (EOY) Final Exam – Test

Computer Science (EOY) Final Exam – Answer Key

As you can see, this is a bit more rigorous of a test. In fact, all of the questions require a calculated answer.

Once the tests are completed, I will analyze student performance in another post.

A Real Final Exam: Robotics & Automation

Well, since entering K-12 education in the 2004/2005 school year, I have now written and administered my first “real” semester exams!

While I have always given exams at the conclusion of the semesters, I have never really given a genuine exam “experience”. There would be a test. That test usually consisted of 50 questions. 25 of the questions were True/False and 25 were Multiple Choice. The students were given a single sentence review guide of “Always Be True to Yourself”.

Now, with that as the review guide, I think you could safely guess that the answers were “B” and “True”. Your guess would be correct. Sadly, I did have students fail that test.

The test was not a “give-me grade” since there was usually a major end-of-year project that the majority of their semester grade was based upon. This final was created so we could simply check a box that said we gave a paper final.

This year, I opted to write and administer a genuine rigorous exam as I was not using any major end-of-year projects.

Robotics and Automation (EOY) Final Exam – Test

Robotics and Automation (EOY) Final Exam – Answer Key

Robotic Classification Systems Notes

As you can see, this is a bit more rigorous of a test. In fact, all of the questions require a calculated answer.

Once the tests are completed, I will analyze student performance in another post.

A Real Final Exam: Principles of Technology

Well, since entering K-12 education in the 2004/2005 school year, I have now written and administered my first “real” semester exams!

While I have always given exams at the conclusion of the semesters, I have never really given a genuine exam “experience”. There would be a test. That test usually consisted of 50 questions. 25 of the questions were True/False and 25 were Multiple Choice. The students were given a single sentence review guide of “Always Be True to Yourself”.

Now, with that as the review guide, I think you could safely guess that the answers were “B” and “True”. Your guess would be correct. Sadly, I did have students fail that test.

The test was not a “give-me grade” since there was usually a major end-of-year project that the majority of their semester grade was based upon. This final was created so we could simply check a box that said we gave a paper final.

This year, I opted to write and administer a genuine rigorous exam as I was not using any major end-of-year projects.

Principles of Technology (EOY) Final Exam – Test

Principles of Technology (EOY) Final Exam – Answer Key

Maximum Height & Range Calculator

As you can see, this is a bit more rigorous of a test. In fact, all of the questions require a calculated answer.

As I have several students who have had no exposure to trigonometry, I have had to provide them with an Excel spreadsheet that has the formulas for solving maximum height and range problems. That spreadsheet is provided above.

Once the tests are completed, I will analyze student performance in another post.

Spring Exam Exemptions

It is that time of the year again. It’s time for spring semester exams and ’tis exemption season! This is the season when students start seeking if they qualify to be exempt from having to take the semester exam in a given class.

Each school I have had the opportunity to work at does this process differently and each school has used different criteria to determine eligibility for exemptions.

Exemptions (Spring 2017 Finals)
Exemptions (Spring 2017 Finals)

Here, you can see that I have a total of 146 students. There are 88 students enrolled in Business Information Management (BIM) across 4 sections. There are 15 students in my single section of Computer Science I. There are 25 students in my single section of Principles of Technology. There are 18 students in my single section of Robotics & Automation.

As you can see in the chart, 51 of the 88 BIM students are eligible to be exempt from their spring semester exam. This means that 57.9% of my BIM students are eligible to be exempt from their exam!

In Computer Science, that percentage rises to 66.7% are exempt and in Robotics and Automation is continued to climb us to 72.2%!

Unfortunately, in my Principles of Technology, the percentage plummets to 48%. This has been due to poor grade performance because many teams elected to not submit required documentation with their projects throughout the semester.

As Computer Science, Robotics & Automation, and Principles of Technology are stand-alone single-section courses, let’s take a quick look at how each of the BIM sections performed individually.

BIM Exemptions (Spring 2017 Finals)
BIM Exemptions (Spring 2017 Finals)

Here is the break-out of the 4 sections of BIM that I teach.

While the average for all 4 sections of BIM was 57.9%, 1 section performed well above that average, 1 section section performed well below that average, and the other 2 held pretty close to that average.

  • 2(B) has 10 of 23 students qualifying for exemptions, which is 43.4%.
  • 3(B) has 14 of 23 students qualifying for exemptions, which is 60.8%.
  • 4(B) has 14 of 19 students qualifying for exemptions, which is 73.6%.
  • 4(A) has 13 of 23 students qualifying for exemptions, which is 56.5%.

Compared to past years, this is close to what I have experienced as far as exam exemption qualification is concerned.

Python Recursion and Factorial

As the final Computer Science lesson of the 2016/2017 academic year, I reviewed the somewhat concept of recursion in the Python programming language. In this review, I used the mathematical concept of factorial to discuss recursion.

#Program Name: Recursion Sample
#Programmer Name: Eric Evans, M.Ed.
#Program Description: Provide a functional example of a recursion problem in Computer Science using the mathematical concept of factorial.
#
#Define function named factorial which will have an input value of n.
def factorial(n):
    print("Factorial has been called with n = " + str(n))
    if n == 1:
        return 1
    else:
        result = n * factorial(n-1)
        print(n,"! = ",result)
        return result
#Output the function factorial with an input value of 4.
print(factorial(4))

Let’s pull this concept apart line-by-line.

Lines 1 through 5 and line 14 are comment lines and have no real bearing on the program. They simply exist for documentation purposes.

At line 6, we declare a new function named “factorial” that will receive an input of “n”. This is done using the def or define call in Python. The “factorial” function occupies lines 6 through 13.

On line 7, we output the text “Factorial has been called with n = ” concatenated with the value of “n” cast as a string.

On lines 8 and 9, we enter the first part of a conditional statement. At line 8, we use a Boolean equals to see if “n” is equal to 1. If “n” is equal to 1, then line 8 executes and returns the value “1”.

Line 10 begins the process of addressing what to do if “n” does not equal 1.

On line 11, we declare a variable named “result”, which is defined as the value of “n” multiplied by the value of the “factorial” function with an input value that is one less than the current value of “n”.

Line 12 is simply allowing us to see the factorial value of the current “n” value each time through the loop.

Line 13 returns the value of the variable named “result”.

Line 15 calls the “factorial” function and provides it the necessary input to process. In this case, it is a 4.

Now, let’s see what happens when we run this code:

Factorial has been called with n = 4
Factorial has been called with n = 3
Factorial has been called with n = 2
Factorial has been called with n = 1
2 ! =  2
3 ! =  6
4 ! =  24
24

So, let’s see what’s going on with this output.

Lines 1 through 4 of the output are generated by line 7 of the code. That code displays the static words with the dynamic output of the value of “n”. Notice that each time through the loop, it decremented by 1.

Looking at lines 5 through 7 of the output, we see that the calculations actually start with the lowest factorial number of 2 and increment by 1.

Now, if you notice, the way the calculation was coded on line 11, we are performing the following:

  • (Step 1)  4! = 4 X 3!
    • This is the original problem. Solve for 4!, but it is defined needing to know the value of 3!, which is defined in step 2.
  • (Step 2)  3! = 3 X 2!
    • To solve step 1, we need to know the value of 3!. However, it is defined needing to know the value of 2!, which is defined in step 3.
  • (Step 3)  2! = 2 X 1!
    • To solve step 2, we need to know the value of 2!. However, it is defined needing to know the value of 1!, which is defined in step 4.
  • (Step 4)  1! = 1
    • To solve 3, we need to know the value of 1!. It has a given value of 1.
  • (Step 5)  2! = 2 X 1 = 2
    • Now, that we know the value of 1!, we can calculate the value of 2!.
  • (Step 6)  3! = 3 X 2 = 6
    • Now that we know the value of 2!, we can calculate the value of 3!.
  • (Step 7)  4! = 4 X 6 = 24
    • Now that we know the value of 3!, we can calculate the value of 4!, which was the original problem.

As you can see, the final solution is dependent upon the solution of a previous step, which was dependent upon the solution of a previous step, which was dependent upon the solution of a previous step, which – well you get the idea. This is the basic concept of recursion.

Basic Variables in Python

Today, we have been playing with basic variables in Python. The plan is to output something similar to the following:

Hello World
1 + 1 = 2
2 + 2 = 4
4 + 4 = 8

This output is to be generated entirely from calling variables.

#Programmer Name: Eric Evans, M.Ed.
#Program Name: 02 - Hello Variable
#Program Description: Outputs assigned information using only variables.
#
#DECLARATION OF VARIABLES
firstWord = "Hello"
secondWord = "World"
space = ' '
#OUTPUT
print(firstWord + space + secondWord)

Now, as you can see, the first line of the output is somewhat easy to code. We declared the variables firstWord, secondWord, and space and then called them to print concatenated together.

#Programmer Name: Eric Evans, M.Ed.
#Program Name: 02 - Hello Variable
#Program Description: Outputs assigned information using only variables.
#
#DECLARATION OF VARIABLES
firstWord = "Hello"
secondWord = "World"
space = ' '
firstAddend = 1
firstProblemSum = firstAddend + firstAddend
secondAddend = firstProblemSum
secondProblemSum = secondAddend + secondAddend
thirdAddend = secondProblemSum
thirdProblemSum = thirdAddend + thirdAddend
#OUTPUT
print(firstWord + space + secondWord)
print(firstAddend + " + " + firstAddend + " = " + firstProblemSum)
print(secondAddend + " + " + secondAddend + " = " + secondProblemSum)
print(thirdAddend + " + " + thirdAddend + " = " + thirdProblemSum)

Things start to act problematically when we try to produce the last 3 lines of output. When we run the application, we receive an error because we are attempting to mix string and integer variables on a combined output line.

To resolve this issue, we must typecast the integers as strings.

#Programmer Name: Eric Evans, M.Ed.
#Program Name: 02 - Hello Variable
#Program Description: Outputs assigned information using only variables.
#
#DECLARATION OF VARIABLES
firstWord = "Hello"
secondWord = "World"
space = ' '
firstAddend = 1
firstProblemSum = firstAddend + firstAddend
secondAddend = firstProblemSum
secondProblemSum = secondAddend + secondAddend
thirdAddend = secondProblemSum
thirdProblemSum = thirdAddend + thirdAddend
#CASTING OF VARIABLES
firstProblemSum = str(firstProblemSum)
firstAddend = str(firstAddend)
secondProblemSum = str(secondProblemSum)
secondAddend = str(secondAddend)
thirdProblemSum = str(thirdProblemSum)
thirdAddend = str(thirdAddend)
#OUTPUT
print(firstWord + space + secondWord)
print(firstAddend + " + " + firstAddend + " = " + firstProblemSum)
print(secondAddend + " + " + secondAddend + " = " + secondProblemSum)
print(thirdAddend + " + " + thirdAddend + " = " + thirdProblemSum)

As you can see, on lines 15 – 21 we cast each of the integer variables as a string variable. At this point, lines 24 – 26 will execute as expected.

The compilable code can be viewed at https://repl.it/HesM/3

Boolean Truth Tables

In my Computer Science class, we are revisiting Boolean operators and are looking more in-depth at Boolean Truth Tables.

In this post, I will look at the Boolean operators of AND, OR, NAND, NOR, and XOR.

For clarification, the following are considered equal and will be used in the post:

a AND b > c is equal to a . b > c

a NAND b > c is equal to a . b > c

a OR b > c is equal to a + b > c

a NOR b > c is equal to a + b > c

a XOR b > c is equal to a ⊕ b > c

For additional clarification, here are the logic gate representations of each of the objects that are presented:

Boolean AND & NAND Logic Gates
Boolean AND & NAND Logic Gates
Boolean OR & NOR Logic Gates
Boolean OR & NOR Logic Gates
Boolean XOR & NOT Logic Gates
Boolean XOR & NOT Logic Gates

So, let’s build our truth tables for each of the above named scenarios:

a . b > c
A B Result
TRUE TRUE TRUE
TRUE FALSE FALSE
FALSE TRUE FALSE
FALSE FALSE FALSE

In this scenario, let’s say that a = 10, b = 5, and c = 7. In this case, the statement A > C is TRUE. However, the statement B > C is FALSE. If we look at the truth table above, the result is that the entire statement is now FALSE.

For an AND statement to be TRUE, all parts of the statement must be TRUE.

a + b > c
A B Result
TRUE TRUE TRUE
TRUE FALSE TRUE
FALSE TRUE TRUE
FALSE FALSE FALSE

In this scenario, let’s say that a = 10, b = 5, and c = 7. In this case, the statement A > C is TRUE. However, the statement B > C is FALSE. If we look at the truth table above, the result is that the entire statement is now TRUE.

For an OR statement to be TRUE, at least one part up to all parts of the statement must be TRUE.

a . b > c
A B Result
TRUE TRUE FALSE
TRUE FALSE TRUE
FALSE TRUE TRUE
FALSE FALSE TRUE

In this scenario, let’s say that a = 10, b = 5, and c = 7. In this case, the statement A > C is TRUE. However, the statement B > C is FALSE. If we look at the truth table above, the result is that the entire statement is now TRUE.

For a NAND statement to be TRUE, at least one part up to all parts of the statement must be FALSE.

a + b > c
A B Result
TRUE TRUE FALSE
TRUE FALSE FALSE
FALSE TRUE FALSE
FALSE FALSE TRUE

In this scenario, let’s say that a = 10, b = 5, and c = 7. In this case, the statement A > C is TRUE. However, the statement B > C is FALSE. If we look at the truth table above, the result is that the entire statement is now FALSE.

For a NOR statement to be TRUE, all parts of the statement must be FALSE.

a ⊕ b > c
A B Result
TRUE TRUE FALSE
TRUE FALSE TRUE
FALSE TRUE TRUE
FALSE FALSE FALSE

In this scenario, let’s say that a = 10, b = 5, and c = 7. In this case, the statement A > C is TRUE. However, the statement B > C is FALSE. If we look at the truth table above, the result is that the entire statement is now TRUE.

For a XOR statement to be TRUE, at least one condition in the statement must be TRUE. However, if all conditions in the statement are TRUE, then the result is FALSE.

Launch Angle, Velocity, Range, and Height

In my Principles of Technology class, we are preparing for a water balloon launching project. Teams have to build a rig to launch a water balloon at a target.

The targets are placed at fixed intervals of 20 yards, 40 yards, and 50 yards from the launchers. At each target site will be either a school administrator or myself.

Before launching, each team must present their mathematical proofs of concept of how they ensure they hit their target(s).

Leading up to several days of building, we are taking a test over these calculations.

Launch Angle Calculator

Launch Angle Exam Review Guide

Launch Angle Exam Review Guide Answers

As several of my students have not yet covered Trigonometric mathematics, I have provided a quick “plug-and-chug” worksheet in Excel that solves for the missing equations.

It will solve for the following:

  • H when given Vo and Theta
    • =((((B2)^2)*((SIN(B4))^2)))/(2*B5)
  • R when given Vo and Theta
    • =((((C2)^2)*((SIN(2*C4)))))/(B5)
  • Vo when given H and Theta
    • =SQRT((D6*(2*D5))/((SIN(D4))^2))
  • Vo when given R and Theta
    • =SQRT((E7*E5)/(SIN(2*E4)))
  • Theta when given Vo and H
    • =ASIN(SQRT((F6*(2*F5))/((F2)^2)))
  • Theta when given Vo and R
    • =ASIN((G7*G5)/((G2)^2))/2