Archive for the ‘Uncategorized’ Category

Office Space: I need a red stapler

September 5, 2018

I have never had an office in my home for school work.  I have never even had a dedicated desk or table location for grading or whatever.  I do most of that sitting on the couch.  I have a small laptop perched on the arm of the couch that I can do most of anything I need to do.  Anything serious I do at school during prep times.  This scheme has worked for many years.  It is not going to work this year.  Typically, I have three preps; Stats, Alg 2 and a programming class.  The rest of the time is spent with IT work which, if things are running correctly, leaves me lots of time for class prep while at school.  This year I have six preps.  In fact one of the preps, one of the Python classes, I had to split into two separate groups because I have three students in the class are familiar with Python so I have to dream up something other than the usual Intro to Python material.  Not a problem other than it takes time.  I now have to do some serious work at home.  I am redesigning the Stats course so I have to do some writing and planning there.  The Game Making with Unity class is going to be interesting because the text reference I have used for several years no longer matches the version of Unity I am using this year.  I have to work through the book and note the differences or the kids will get majorly lost.  For my regular Python class I typically have students that have some programming background.  This class I have three with no background out of six.  This is a dual-credit course so they may be over their head.  I have one student doing an intro to programming independent study the same time I am teaching the Stats class.  She is turning out to be needier than I was expecting.  I am hoping she will come in during lunch.  Even though it is independent study I do have a lot of planning to set up for her.  If I do not do at home what I used to use my prep periods for the IT side of the job is going to be ugly.  So home office it is.  The wife is not too tickled with the idea since I set up in the living room with a table, an office chair and a dual-monitor setup.  Not exactly living room furniture but it will have to do.

I think this is going to be one of the busiest years I have had in a long time.  I am looking forward to it, should be a challenge and fun.


Aristotle and computer labs

August 16, 2018

I happened to stumble on this website.  It was not the website itself I was interested in but the picture of the computer lab.  It looks like most high school labs. It also looks like a very expensive lab. Nice computers, large monitors, nice big interactive board and a good sized room with space to move.  Is it just me or is this a terrible lab layout? When the teacher is at the front of the room, which looks like the intended location considering that big interactive board, does the teacher have a clue what the kids are doing?  Not just if some kid has lost focus but how can the teacher tell who is struggling? The teacher needs to be in the back of the room or overlooking the monitors for a couple reasons.

  1. See what kids doing on their computers – good or bad.
  2. When the teacher needs to present on the board, the kids have to turn away from their screen and focus on the teacher.  (This is huge.)

Another thing is monitors on top of computers.  To see the teacher, either in the front or back of the room, the kids are going to be trying to find a lane to look down.  Also the teacher cannot see faces, a big thing for me. If I cannot see faces I have no idea who has a clue and who does not.

If this were my room I would try to turn everything by 90 degrees.  Half the lab would face left, half would face right, with an aisle between.  Now to see the front or back of the room the kids would only have to turn 90 degrees.  While the kids were working I could pace the aisle and see every computer screen. Give me a wireless keyboard and mouse and I would be set.

Of course there are some realities involved but seems many teachers are focused on the same seating plan that has been used since Aristotle.  Oh, that reminds me, I need to find a laser pointer. I want to be able to point at something on the board without being at the board. Hot dang!  Laser point in one hand, Gyration mouse in the other. I will be a techie geeky teaching god! Now if I can just find a mini-keyboard/touchpad combo with a laser pointer built in.  Ohhh, ahhh.

Did you notice the slide rule at the base of the right whiteboard?  There is another hanging from the ceiling in one of the other pictures.  Cool. (Geek!!)

The End of an Era (hopefully).

August 15, 2018

I am doing something new tech-wise in my senior Stats class, I am going to assume the kids have a laptop.  If they do not have one they are going to have to get one, even if it is a loaner from the school. I am also going to stop using the TI calculator as the primary device for the Stats class.  I am not going to teach with the TI or show the kids how to use it. “Why” you may ask? Because to the best of my knowledge the TI is not used by anyone actually using statistics. I am not a statistician and I do not know any but I have a suspicion that I am not making a giant deductive leap here.  So I am going with Google Sheets. Why not Microsoft Excel? Google Sheets is free and all the kids have access to it. Google Sheels has evolved a long way in the last few years. It actually better than Excel for doing charts.

I have used the TI-84 as the device of choice in this class for years. The book I use has the “how to” for the TI-84 and Excel.  The TI has all the functions are right there and output is simple to understand. There is no denying it, it is a great teaching tool.  But stats should be more than just a classroom event. If the students are going to be able to use and understand real world stats they have to use real world tools, i.e. spreadsheets.  I know there is software out there that is designed for managing data (the book uses MiniTab) but there is an availability and ease of use issue. Google Sheets is available and Google will have a lot on how to use it.  Since I am more used to Excel we are going to need that help.

This may get a bit tricky.  Most of the problems in the book give only the statistics, not the data.  If finding something like the confidence interval the TI works just fine with inputting the statistics.  The spreadsheet not so much. I may have to generate or find a bunch of simple data sets to use in class.  Something to ponder.

I think the most entertaining aspect of this change is going to be the student reaction.  For some strange reason high school students seem to hate spreadsheets. “I do not know how and do not want to learn how” is a regular thread.  Personally I am too lazy to not use spreadsheets. When I started teaching in ‘82 it took me almost no time to figure out having my grades in VisiCalc was much easier than a paper gradebook.  I love them. Heck, at one time I could actually build VBA programs for Excel. Now that was cool (and just a bit geeky).

I have been lock into using TIs since they first became available.  Greatest thing since the slide rule. Weaning me off of them is not going to be trivial.  I am comfortable with the TI, I know most of its quirks and I can make it do most of what I want to do.  But it is time to grow up and move on.

High-tech classrooms vs reallity

August 14, 2018

Last Thursday I did a presentation at a local tech conference.  I do a section called “CS on the Cheap”. I just do a show and tell on free hardware that is available in Montana and free software to build a multi-year curriculum.  The conference was in the brand new Missoula College building. The building was finished late last year and is supposed to be the greatest thing since sliced bread for tech in the classroom.  It was obvious a tech knowledgeable teacher was not involved in designing these rooms. A high dollar podium stuffed in the left front corner, drop down screen, a projector hanging from the ceiling, tables in rows facing the front of the room and the front wall painted in whiteboard paint.  I took a peak in the other rooms. All the same, lecture rooms, not teaching rooms. I was disappointed. Come on folks, we have wireless so why nail down the teacher or lecturer to the corner of the room or to the front of the room? It is not like it is expensive to design a system with a mobile device so the teacher can be anywhere they want in the room, especially in a room that has the space to wander.  This room had the same design as a room I taught in in the ‘90s and so much could have been done inexpensively to bring the room into the 21st century. Well, OK, the whiteboard paint was cool, at least until I looked up the price to paint a 10’X10’ area. We use white shower board at about $20 a 4’X8’ sheet.

Over the years my idea of the ideal classroom has been evolving.  At one time I wanted a room with whiteboard on three walls and windows on the fourth.  (OK, at the time it was blackboard.) Then it was lots of whiteboard with a projector projecting on the board.  Then I was on the Smartboard wagon. I wanted student desks that move easily, a lightweight tablet with a pen that connects to the projector.  I wanted a method so the kids can easily connect their laptops/computers to the projector (going to need a easily changed key for this) so the class can see their work.  (Here is a chuckle for the day. When the local university built a nifty new wing on the Education building they built a super fancy tech classroom with all the whistles and bells; projectors to all four walls, video conference cameras that could see the whole room and a very expensive podium.  The projectors could be linked to by any laptop. These projectors were cutting edge and this was one of the first for a classroom application. There was one minor technical issue, no password key on the projectors. People walking by outside the building could link into the projectors! You can imagine the entertainment value here.  The manufacturer quickly sent a firmware update.) Now I am back to just the whiteboard on three walls and projector again.

I have become very cool in regards to interactive boards.  It pins the teacher to one location in the room. I like to project on the whiteboard so if I want to I can draw on the projection but I am not stuck there if I want to wander.  I am also leaning strongly to large (65”) flat screens TVs for those teachers that want a lot of YouTube-like action. We bought three interactive TV devices for about $2800 each.  For the amount of time the teacher actually touches the screen a $700 TV makes much more sense and maybe something like a Gyration Air Mouse ($50-$100) for the interactive part.  The visual difference between a projector and a TV is significant.  The TV may be a smaller projection area but the resolution more than makes up for it.

Of course in the real world of classrooms there are some restrictions.  In my school the rooms are small and are filled with desks from wall to wall.  The ONLY place the teacher has to walk except very narrow aisles is the front of the room.  The room I taught Stats in last year was long and narrow with the narrow end being the whiteboard.  The other three walls are either windows or computers. With 22 students in the room getting from the front to the back usually involved moving kids out of the way so I can get by.  The room was wide enough for 4 desks very close together which puts the last row of kids somewhere beyond center field in the cheap seats. My desire to be mobile around the room was not feasible.  That was last year. This year I have more students and a smaller room. Cool. At least it is wide and shallow. I can actually see the back row. My fancy tech plans are still out the window. So I have a whiteboard, a projector that almost projects on the whiteboard and a computer.  I am reliving the ‘90s. I hate to admit it but considering the room limitations I am operating with it is the best I can do. It is amazing how room size can actually affect how I teach.

My Algebra 2 and programming classes are in a smaller room.  Picture the size of a large bedroom. Max occupancy is about 12 (no, seriously, 12) and they better be close friends.  A room this small has its own tech theme. I do not need to wander because everybody is right there, sometimes a bit too “right there”.  I have to use a 10 year old short throw projector in the room because the room is so small. I tried to use it to teach Python a few years ago.  Text was too fuzzy. No “sage on the stage” in this room. The kids are sitting on the stage with you. Except for the fact the room has no ventilation I really like this room.  The small close format allows more of a discussion format for classes. Nobody can hide in the back of the room.

Through the years that original desire for a fancy high tech room has mellowed.  To teach well I actually need less that I originally wanted. All I really need is a room large enough to walk around in (not happening but I can alway dream), a projector on a whiteboard (I still want to be able to mark on a projection) and a wireless keyboard/mouse.  It would be nice to have the students be able to project from their device but there are workarounds for that.

There is no two ways about it, other than budget (I am ignoring that for now) my biggest limitation for bring my classrooms into the 21st century tech-wise is space.  But when it really comes down to it all that is really needed is a teacher and some students. Everything else is gravy.

Let the madness begin.

August 7, 2018

I am looking over my classes for this coming year.  I have a load. I am hoping I have not bit off more than I can chew.  Due to the IT work my max load is usually 3 or 4 classes. Six is going to be interesting.  Six is a full load at my school. Hopefully there are no regular IT issues.

  1. Senior Stats.  I have taught it for years so I have the material and plan down pat.  No, wait. This year I am taking the one course I can do from the textbook and in my sleep and changing it.  Bummer. Most stats courses do a chapter on the mean, then another on standard deviation and so on, pulling up a data set to use to practice with.  I am going to try to go backwards. Here is a data set. Lots of numbers. What would be nice to know about these numbers to make all these numbers understandable?  No book, no concrete lesson sequence, just students coming up with ideas (hopefully). From there we start developing the statistics. I have never done this so it will be on the fly.  I will see what happens. Of course if it dies I have the original course to go back to. How boring.
  2. Intro to Game Programming.  Basically a Unity course with lots of odds and ends; Blender, GameMaker, animation, and whatever tickles our fancy.  I have done it before so no big deal. It is not really a game making course, it is more of a game software course.
  3. Computer Programming with Python.  Been there, done that. Just have fun with Python.  I use “How to Think Like a Computer Scientist: Learning with Python 3” by Wentworth, et. al.  I do teach more than syntax. The kids have to install and troubleshoot the install for both Python and an editor.  Not always a big deal but usually at least one student has something funky happen. Especially since the class is BYOD.  I stress time away from the computer to plan and scheme on how to build the program. The kids hate it until they start at the computer.  Then they go “Ah ha!” Planning actually helps. Amazing.
  4. Intro to Computer Science 100.  A survey course of several languages.  A dual-credit course. I have to do this one independent study since the student that wants to do the course only has time while I am teaching the Stats course.  I did this independent study last year. Did not work well. I was not select enough with the students I allowed to take the course. Five students took it last year.  I gave four “Cs” and a “B”. They were not willing to work on their own and blew most the course off then tried to catch up the last week. Nope. I was not going to do this independent study again but the counselor  convinced be the one student is self motivated. We shall see.
  5. Computer Programming 1.  I usually do not teach this as we have a Programming 1 teacher with the time to do the course.  I am the IT guy and too many courses leads to IT issues I do not have time to fix. But this is a special case.  This freshman is an uber-geek. The regular Programming 1 course would bore him stiff and the Programming 1 teacher does not have the background or time to challenge him.  So we are just going to wander where he wants to go. No real plan, just tinker. Fun.
  6. Math 2.  An Algebra and Geometry course.  Been there, done that. Mostly we just play with math.  Ninety percent of these students hate math and therefore suck at it.  My objective is not only to teach math, but to change their attitude towards mathematics.  If I can influence the attitude the math will come by itself.

The year will be real busy and I am looking forward to it.

Garth does not have enough to do so PD here he comes

July 10, 2018

“It would seem about time a PD designed around problem solving, program troubleshooting, pedagogy, project based programming, what languages are good for teaching what, tech issues and so on was offered.”  I am diving in.  Montana does two week long PDs for entry level teachers, one using Mobile CSP (App Inventor) and another using The Joy and Beauty of Computing (Python).  These are funded by an NSF grant.  I need to figure this out.  I also do not want to reinvent the wheel.  If something like this has been done I will not be shy, I will plagiarize the ever-loving heck out of it.  If anyone knows of something that is presently offered please let me know.

Several years ago I started to build a CS Methods course with the intent of proposing it to my local university.  From what I hear from friends I know that work at my local university in the CS and Education departments the university’s senior people’s philosophy towards teacher CS education is closely related to “magic occurs” and denial.  So I have this initial brainstorm of ideas I started to build.  I think with a little hand waving and organization I can start to make a five-day PD with this material.

Originally I was thinking of a semester long course so I may have to rethink the depth of my original approach.  Just a bit.

Course goal – introduce prospective and experienced CS/programming teachers to the fundamentals of teaching CS/programming.  Share ideas among attendees.  Start a cohort of teachers to spread the gospel of how to teach CS.  Get things moving so Montana students can do more than play Fortnite on a computer.

Concepts to cover in course:

Why teach programming or CS?

Capturing kids interest – Robots, Games, Turtle graphics, iPod/Droid apps, micro:bit

Programming language review – pros/cons/good/bad/ugly – just what is out there – Python, Java, Alice, VB. Mindstorms Lego Robotics – NXT, RobotC, EV3, GameMaker, Scratch, Small Basic, MakeCode, ???

Free resources

Textbooks and tutorials

Language types

Line code – Small Basic

Drag and drop line code – Alice, App Inventor, MakeCode

Icon – Kudo

Fundamentals of programming




Types of errors

Installing software

Commenting and documentation

Top down/bottom up design

Naming conventions

Algebra vs programming syntax – x=x+1

Grading rubrics

Assignment goals

Parson’s projects

Sub goal labeling

What I need now are suggestions.  I also need to start looking for sources/references that will give credence to these ideas so people know they are not just ideas I pull out of thin air.


A week of PD again: not what I want but the only show to be had

July 4, 2018

I spent last week in Butte MT at a Mobile CSP teacher training/PD.  MCSP uses App Inventor as the language.  I like and dislike App Inventor.  I really like the fact kids can easily get an Android app on their phone that actually works.  Super cool.  I am not so crazy about the drag-and-drop format of the language.  It is great initially for small programs but it hits a wall pretty quickly.  I really wish there was a line code mode like MakeCode.  I cannot squawk to much, the price is in my budget range.

My biggest gripe about the week long PD was that it was a how to program and how to use the MCSP curriculum, not a how to teach problem solving, nothing on program troubleshooting, no pedogical ideas, none of the real classroom teacher needs.  There were two groups in attendance, beginning CS teachers, mostly business teachers which are the largest group in the state of Montana that are certified to teach CS courses, and one out of the twenty who were experience CS teachers (me).  (For further reading on this gripe see and  I knew what I was attending, this is the same group I was with last summer for a week long Python PD.  I attended knowing ahead of time what the theme was going to be.  But I always hope.  The best thing I get out of these is the networking with other teachers.  Admittedly I am by far the most experienced in the classroom but that does not mean there are not some excellent teachers in the group and some excellent ideas in the room.

It would seem about time a PD designed around problem solving, program troubleshooting, pedagogy, project based programming, what languages are good for teaching what, tech issues and so on was offered.  Admittedly I do not know where the instructors or the money for this would come from but it is time to start working this out.  The course for the last two summers were funded by an NSF grant.  A pretty big grant because it paid the attendees $1000 for the week and paid for rooms and per diem.  I need to figure out this NSF grant thing.  I also need to research and write up a course (maybe just plagiarize the heck out of Doug Bergman’s “Computer Science K-12”.  It is way up in Montana, who would know?).  Since next school year I am teaching 6 preps and doing the IT thing this may take a while.

It was very interesting talking to the teachers and their relationship with their IT departments.  Two of us were from private schools.  No problems there, I am my school’s IT department and the other was a school even smaller than mine so the IT was very informal.  The public school CS teachers all seemed to be in a state of war with their IT departments.  Any requests are automatic “No”.  One teacher was not allowed to use Raspberry Pi (What is the plural of Pi?  Pis?  Pies?  Something new to ponder.) because the IT director did not know what they were.  Using YouTube is a major hassle.  I know of at least three ways to make select YouTube videos available to teachers.  It seems their IT departments could not be bothered to find a solution.  I do not understand this.  Public schools seem to be terrorized by the possibility little Johnny might use a school computer to do something bad that they have reached the point where little Johnny has trouble doing anything on a school computer.  I mentioned to one teacher how I get laptops donated from businesses and just give them to the kids to keep.  The idea seemed totally out there to them.  Public school is just getting weird.

Garth goes back to College: Opps

June 14, 2018

I have been sitting in on an intro Python course at the local university.  This is a CSCI 135 course, the CS department’s first course for majors.  This course is three weeks long, three hours a day.  I can only sit in for a few days due to work at school and a week-long professional development I have scheduled.  I figured I would sit in for a few days just to see someone else teach programming.  I have not been in a programming classroom other than my own or a professional development for 20 years.  I need to be polite here but it is difficult.  The class is, ah, what words come to mind?  Confusing, boring, tedious, crappy, oh so traditional with the sage-on-the-stage, PowerPoint hell, trite, trivial, pure syntax and generally not good.  Is that polite enough?

The range of experience in the class is pretty broad.  There are students with nothing for a programming background and there are graduate students learning Python so they can use it for research.  One of my high school juniors is in the class with a month or two of Python.  So it is a difficult class to teach to but not impossible.  I can see the beginners are already lost and the experienced students are just suffering through the tedium.  The instructor is using an online textbook called zyBooks.  I understand why she would use it, it does the code grading automatically.  It is a huge time saver for the instructor.  But it is tedious and trite.

This course is a perfect example of the mindset that learning programming is nothing more than learning syntax.  Memorize the language syntax and you are learning programming.  No problem solving.  No teaching top down, bottom up or other problem solving strategies.  No debugging techniques.  Nothing that makes a programming course an actual, useful programming course.

Now my opinion could be influenced by the fact I can program in Python.  I have taken that in consideration and tried to step out of that knowledge personality.  I am trying to look at this course as a teacher with the goal of imparting a fundamental understanding of what programming is all about through the medium of a particular language.  From that view the course is a zero on a scale of zero to ten.

I am actually learning something by just sitting in.  Nothing about Python of course but a lot about ways of not teaching Python.  Not something I was planning on but it is worthwhile.  Watching this course is going to make me very conscious of how I teach my own courses.

Summer is here and it will not be a break

June 1, 2018

Today is the last day of kids in school.  The kids are happy of course.  Me, not so much.  I like kids and teaching.  Oh well, there is next year.  I will still be at school through the summer.  As the IT guy I have an eleven month contract.  Time to fix all the problems I did not have time to deal with during the school year.  This would not be a big deal if the building was air-conditioned.  It is not, it gets hot, especially on the second and third floors.  As in 100+ degrees hot.  Windows closed, no fans blowing, oikes.  That is why I make the big bucks.

Summer is also when I revamp my courses.  Nothing original there, I imagine every teacher in the US does something like that in the summer.  I have got to do something with my Stats course.  It is putting me to sleep so you can imagine what it is doing to the kids.  I have got to get Excel or Google Sheets more involved and less TI-84.  Computer access is an issue but I will figure something out.  My game making course needs to be altered a bit.  I am doing too much software and not enough philosophy and psychology of games.  You know, what defines a good game.  Why Flappy Bird was such a hit, why Tetras is still popular and why the Fortnite craze.

I have quite a few kids signed up for my dual-credit Python course.  I have it pretty well lined out but I need to expand it a bit.  Most of the kids signed up have done Python already so that sort of kills the first month of the course.  Maybe it is time for me to learn how classes work in Python.  So you think “He does not know how classes work in Python?  What a moron!”.  Well when I started programming there were no classes.  And in the many years since that beginning I have had no classes on classes.  (Sorry, I had to do that, it was there.)  I can spell OOP and I know the idea, I just do not do OOP.  Reading books and watching videos on classes and OOP just does not do the trick.  I need a class on classes with a real teacher.  And I need the time to take said class.  The local university is offering a course on Python this summer.  I just have to figure a way of working and sitting in on the course.  This is one of the big problems with learning programming on-the-job and on-the-fly, there are just so many knowledge gaps.  Kind of like 90% of the CS/programming teachers in the US right now.

I am signed up for a weeklong Mobile APCSP course in Butte.  I am really not taking the course for the material, it is the interaction with other programming teachers that I look forward to.  The course uses App Inventor which I am not a big fan of but it should still prove interesting.  The fact the class is offered at Butte is a big plus.  Some of the best mountain bike trails in the US are right out of Butte.  The town also has three breweries.  Yup, I like Butte.

For summer recreation I am heading to Oregon August 5th until August something else to go mountain biking and maybe hit the coast.  I have to be back by the morning of the 13th.  I am giving a First Lego League programming minicamp.  This will be the first year we have done a FLL team.  “Interesting” is one word that come to mind.  I said I would NOT be the coach.  We found a parent who has done it before.  He is a CS teacher at the university and has a 7th grade son who will be on the team.  Everything worked out well.

As usual the summer will not be boring.  Lots to do and lots to try to figure out.  Oh, I almost forgot, I am signed up to do a 25 mile mountain bike race at the end of July.  Right now my conditioning is zilch.  Something else to work on.  Somewhere in here I am doing some overnight backpacking trips.  I want to fish some of the high lakes in the Bitterroots.  More training required.

Palindromes and Python: Let me count the ways

May 9, 2018

I was looking for some simple Python code examples for my four programming kids.  We are going to do a little graphics so they can see Pygame then do some string and number manipulation.  Just some tinkering, nothing super fancy.  Offhand I could not think of anything so as usual I started thinking of something else.

The other day I was subbing for the golf coach and the kids were done with the math assignment in about five minutes.  Most of the class started on other assignments or went to reading.  One boy had his head on his book bag ready to take a nap.  Jokingly I said instead of taking a nap why doesn’t he find out how many palindromes there are from 1 to 1000.  To my surprise he sits up and asked what a palindrome was.  (My surprise was not that he did not know what a palindrome was, but the fact that he sat up and asked.)  I explained what a palindrome was. He gets a piece of paper and starts figuring.  He was not writing them down one-by-one, but was looking for a pattern.  (I have no idea how many palindromes there are from 1 to 1000.  Suppose if I am going to pose these types of things I should know the answer.  Python project.)  Anyway, from there I mentioned Project Euler.  He made an account and started in.  That led me back to Project Euler.  Might be a good place to find some simple Python projects to fiddle with for the class.  Here is problem number 4.

A palindromic number reads the same both ways. The largest palindrome made from the product of two 2-digit numbers is 9009 = 91 × 99.

Find the largest palindrome made from the product of two 3-digit numbers.

That looks like a good Python type project.  I Google “Python palindrome”.  OMG.  Do you know how many ways there are to write a function to identify palindromes?  Many.  Iterative, recursive, built in function, all with their own subset of variations.  I have code snippets up the wazoo, all solving the same problem.  What more could a programming teacher ask for?!  Be still my heart.  Admittedly, this approach may not work with every programing class (Math?  Yuck.) but with some classes and some kids it is a strategy.

Most of the Python palindrome functions are using the Pythonese text manipulation functions involving slicing; colons and brackets.  I do not remember any of these.  It is going to be the “here a book, here is some code, figure this out, tell me what is going on” method of teaching code.  I like it.  I probably ought to figure out all that colon and bracket business again.

For the right students Project Euler is a gold mine for programming ideas.  For other students it would be the end of their interest in programming (Math?  Yuck.).  Finding the right balance and interests is the key.