Showing posts with label Learning. Show all posts
Showing posts with label Learning. Show all posts

Saturday, June 6, 2015

Makerspace: A Semester's Resource Masterpost


Overall my makerspace has had a great year. I't's gone by super fast - there's something to be said for just jumping in there, but there's a learning curve that can be a little hard to jump. So in case it can help anyone else, I'm going to write about some of the opportunities I've found and the stuff I've learned here!


FUNDING:



Codecademy, in a collaboration with Google and Donorschoose, offers codes worth $100 on a Donors Choose project to support a classroom program to every student who completes their tutorials through a school program. This is a great opportunity for ANY school Makerspace to get some funding while teaching kids about programming. Although the program advertises itself as solely for High Schools, there are options for all grades and schools, and it wasn't a problem for my middle schoolers. The program is closed for 2015 right now, but it pops back up annually, so watch that space!

I'm also going to be looking at the NCWIT AspireIt awards. I was a national runner up and regional winner this last year, which is how I learned about the opportunity (For other girls in high school or college - APPLY, APPLY, APPLY!)

Also, the teacher sponsoring my club was even able to set up a Donorschoose project, where we're trying to raise money to get a 3D printer for next year. If you want to fund the project, you can find a link here. If you're able to give support, any would be appreciated!

ACTIVITIES:



However, even though funding was limited, I was able to come up with ways to make the materials I DID have stretch, to groups ranging from a core group of about 20 students, to larger groups of up to 50-60 at one point. What I found worked really well was:

- Dividing the kids into groups, and assigning each group a different part of the activity. For example, I was able to spread my two Mindstorms kits across a large group by assigning each smaller group to build a certain part of the robot.

- Alternating activities between groups: While I was able to raise enough money with my earlier fundraiser to buy 15 Arduino Uno clones for the Makerspace, I was still limited in the number of computers we had to program them. To fix this problem, I divided the kids into two groups: one spent the first half of the time building circuits, and the other, programming. Then they switched, so everyone got a chance to try everything

-Large group discussion/brainstorming activities: During the weeks I was short on materials or planning time, I defaulted to activities that didn't need anything more than a pen and some paper, or computers. I took inspiration from a middle school SMU competition called Visioneering, which I participated in in the 7th and 8th grades. In the competition, teams of students are challenged to create plans for solving some problem with technology, no matter how expensive or "out there". For my adaptation, I had each table brainstorm a plan for improving the school using technology, which they had to share with a group at the end of the class period.

Those are just the ones that come to mind right now. Over the summer, I plan on putting together some guides to the various lessons/projects we did, and, ideally, I'll publish them somewhere online (though exactly where is TBD. I'll post a link here as soon as I figure it out).

PLANS:







For next year, I'm looking at trying to expand my program to merge with one at an existing elementary school in the area, though that plan is still very much in its "what if?" stage. I'll also have a chance to talk to the principal soon about getting the sorts of programs we'd need on the school computer. Plus, over the summer, I'll hopefully have a few more volunteers to assist me with planning meetings and keeping track of the budget. So overall, there's still a lot of work to be done, but I feel good about my plans as the next year comes around.

OTHER HELPFUL THINGS:

Don't be afraid to ask for help, information, or anything else from people who seem interested. You'd be surprised what you can learn.

Practice talking about your project. You should be able to give a compelling summary in 30 seconds.

The fancier the technology, the less time you'll have to do the activity (You have to account for the ooh-and-aahing).

If you're having fun, chances are everyone is.


Anyone have any comments, other suggestions, or anything to say? Please, comment below!


Thursday, April 16, 2015

The Importance of the Humanities in STEM

Let's start with an easy opinion to swallow:  The US has a problem with its STEM education. But not in the way you might think. The trouble with STEM in the US isn't that we rank low worldwide in math, or in science. It's that the money going toward improving those test scores is too often taken from the arts. And it shouldn't be. That might sound odd coming from me - the organizer of a STEM program that serves 50+ kids, as well as an engineer and programmer - but hear me out. It's not that I think STEM education is useless, or that we need to take resources away from science and technology classes. But too many schools teach STEM materials poorly, and at a much bigger cost than they realize.

In the digital age, we're hyperfocused on teaching math and science to "catch up" to countries like China and India in terms of scores on international exams. This emphasis on test scores has increased funding for STEM programs - great! Student interest can flourish. Teachers can get new technology for their classrooms. And where the funding is used to improve test scores, they improve. It's a win/win deal.   But that funding has to come from somewhere, and often it comes from budget cuts in the liberal arts and humanities. That is very, very bad.

Note: Not how the brain works. 

We seem to have this idea that STEM and the arts are two immutably separate entities. Just ask an engineering major what they think of the liberal arts at their university, or vice versa. It follows that they have to be in constant competition - one has to be more important. You can't have both science AND religion. You can't love both math AND painting. Maybe such a divide meant more when technology was factory machines and assembly lines, but the way we use technology has changed immensely even in the past few years. Supporters of STEM education often remind us that, in the future, every job from will require some knowledge of technology. But the reverse is also true: every worker in a STEM related field would benefit from the kind of education that comes with the arts. 

There's so much more to building, programming, and selling a computer than hardware specifications. A computer has to be used by humans, humans that bring their own aesthetic preferences, learning curves, and emotional pulls to the table. All of that has to be designed into the machine, and there's more to it than statistics. There's some psychology, some visual arts, maybe even some music or some writing. Computers are sold as lifestyles, not machines. And that' s not even counting the interpersonal skills the production team had to use to brainstorm, or the dozens of concept sketches and pitches created before the final design was chosen.  There's a creativity needed to get ahead in technology, and it doesn't come from the  skill set that makes kids better at taking math tests. But somehow, although the need for the humanities in technology becomes more prevalent every day, we've been devaluing the classes and the skills they give us. What can we gain from the humanities in STEM? And how can we make sure those skills aren't left out?



The best STEM class I ever took was a technology class taught by a middle school librarian. (I've mentioned it before, here.) She started the school's technology club the first year I attended - I was one of the founding members. In the club, we tried to finagle our favorite technologies into different parts of the school and curriculum. We taught the English and Social Studies teacher how to make Google Earth tours. We made videos for new students using editing programs and green screens. One member even designed a new website for the school. By the next year, the club has become a class, and one that was unique in two ways. One, we were working with people outside of the class and our experience with technology. Anything we created had to be presented in a way that was easy for anyone to understand and use. Two, our projects were working to solve real world problems, problems that required skills beyond just our programming expertise. 

So we wrote tutorials. We created animated sequences and music for the videos. We read books and drew pictures and argued over the latest technology news. We were able to use the skills we learned in our English, History, Art, and Music classes to augment our projects in the class. While I know the class wouldn't have worked for everyone,  many of the later engineering and science classes I took only focused on teaching the minimal technological  skills necessary for a basic concept. That's fine for a technology class. But those are skills you have to get somewhere. This only emphasizes the importance of Humanities focused classes in all student's education. Those classes are where students gain the skills needed to turn technology into real world solutions for real world people.

As I mentioned before, this is more important today than ever. Take a minute to watch these commercials :









Notice anything about these advertisements? They aren't selling their products based on how many processors they have, or how many transistors they can fit on a chip. They sell computers based on how people use them. And computers are used for so much more than pedigree STEM purposes. You need artists who can create programs for artists. You need historians. You need musicians. If for no other reason, you need art educated people to create the media you enjoy so much today. Every TV show, game, article and more you find online comes from arts education every bit as much as STEM.  Who'd want to live in a world without the art we love? How could we move forward without the art that has inspired us to create new things?

We play a dangerous game by ascribing innovation to the kinds of skills that can be measured by standardized tests. Support your local arts and humanities programs. Bring art into your STEM classes, and STEM into your art classes. Read, watch, create, and enjoy how the world you live in hasn't been created by opposing forces, but a beautiful mixture of every skill humanity has to offer. Push for access to education in each and every one. We've got to create a future that's worth the time we put into it. 


Wednesday, February 25, 2015

AI and Tic-Tac-Toe -

If you've seen any of my posts in the past, you know about my clearly negligible interest in artificial intelligence. I also mentioned in my review of James Barrat's Our Final Invention that I wanted to take the next step, and bought myself an Artificial Intelligence Textbook at Half Price Books (this one, to be exact, although only the 2nd edition.) I'll be short about it - SO. COOL. I've talked my family's ears off about every chapter so far, which is about a third of the way through. However,  I have one major complaint about the textbook - it doesn't feature any actual programming exercises. It refers to possible problems to solve - games, like chess; mathematics problems and solving theorems; P vs NP problems; but the book doesn't offer any exercises that let you try out the methods for solving them in real time. And for me, that just isn't good enough.

So, I decided to take matters into my own hands, and try out the first problem mentioned by the book: Tic -Tac-Toe.

WARNING: THE FOLLOWING SECTION IS EDUCATIONAL, BUT ALSO REALLY LONG
SKIP TO THE PROGRAM PICTURES IF YOU JUST WANT TO HEAR ABOUT MY SOLUTION

The book uses Tic-Tac-Toe to introduce the concept of a heuristic search. A heuristic is a way of gauging whether or not a potential solution to a problem is a good one. For example, if you were trying to walk downtown in a foreign city, a good heuristic would be to take a path that goes toward the tall buildings. This might not always be a perfect method(some cities are more labyrinthian than others), but it will usually do a good job of finding a solution for your problem. Our thinking is completely tied up in heuristics - they're the rules you make up about how you run your life, whether it's how much money you save each month, or the lucky socks you wear to every test.

In the context of Artificial Intelligence, a heuristic search is one way a program can do its thinking.
Let's look at this in terms of Tic-Tac-Toe
The program looks at a problem as a series of states. These are possible states of a Tic-Tac-Toe problem.

Pretty simple, right? You can perform an action on a state to change it to another state - like making a move on the board. Now a solution to this particular type of problem is a progression of actions and states that ends in the program either getting a three-in-a-row, or tying with the opposite player - a "winning" state.

In order to find a solution, the program takes a state, performs an action on it to create a new state, and checks if it's a winning state. If it is, it returns the action it took. Otherwise, it tries a different action.

The most basic kind of thinking is trial-and-error. You generate a random possible action to solve a problem, and if it doesn't work, discard it and try another. This WILL get you a good solution... eventually. For small problems, this might not be an issue. But for big problems with millions upon billions of possible solutions, there's no way.



This is where the heuristic part comes in. I find it useful to imagine an AI as on a map, starting on a base state, with paths to every other possible state representing every possible action it could take. When the AI tries an action, it moves along the path to the new state, which has paths connecting to all of IT'S possible states, and so forth. And every state has an elevation - the higher up it is, the better is fits a heuristic (with the highest being winning states, of course). Your AI's goal then is to find the action from the state it's at that will get it to a higher state (one that better fits the heuristic).  This means a lot of heuristic search techniques have funny names like Hill Climbing. The program's  ultimate goal is to get to higher (or highest, when possible.) ground.

For example, your Tic-Tac-Toe playing program (assuming computer plays X) might decide that a good state is one that has the most possible, shortest paths to a winning state for X, or, in other words, the most rows, columns, and diagonals with only Xs in them. From a base state, a program with this heuristic will make a move in the middle space as it's action, because the state created is the "highest" state - it gives you 4 possible ways to win. It's the best possible action.

At this point it's important to note, however, that finding a best possible action isn't always possible - for problems where you can take a lot of different actions, it might take too much time. For problems where states can be far away from the winning state, you can get stuck on a 'ridge' or a 'plateau' where you've found the best possible state for your local area, but there's one much better many, many actions away. This is the reason heuristic search algorithms can get so complicated, and why so many different ones exist. AI's greatest achievement and it's greatest challenge is dealing with situations where 'best' isn't possible.

However, Tic-Tac-Toe is a relatively simple problem - one small enough that it COULD be solved through trial and error, we just want it to be solved faster. For my programs, I decided to combine two different heuristic techniques - Steep Ascent Hill Climbing and Minimaxing.

Steep Ascent Hill Climbing is a heuristic search method where you evaluate all the possible states you could reach from your given state and pick the best one. Because of this, it can take longer for your computer to complete than plain old vanilla hill climbing, which just finds any state that's better than the current one. But it will typically take fewer steps to get to a winning state, and, in the case of a game like Tic-Tac-Toe, a 'good' move really isn't good enough.



Minimaxing is a a method more specific to game theory. You assume that, for every move each player makes, they are going to try and maximize their own gains and minimize their own losses - while maximizing the losses and minimizing the gains for the opposing player. In true minimaxing, you estimate the number of moves it will take for you to win the game from a given state, and use that to assign the state a score. I combined this approach with a different heuristic to make my program as fast and effective as I could




 I actually built the first two iterations of this program back in mid-October, but I was then hit in quick succession with the Girl Scout National Convention and GSLI conference, my Gold Award Project, make-up work, then school, and it's just been crazy ever since.

The first draft took about a week to build.  I coded everything in Ruby.


Basically, the computer takes the tic tac toe board, uses is to test all the possible moves it can make, and picks the one that gets it the highest score. 

It played Tic Tac Toe, for sure! It just... didn't play very WELL. I used a heuristic that scored the board on the number of open rows, columns, and diagonals, but it just didn't give the weight needed to winning states. So I tried again.

I found a promising looking heuristic here. This one made use of an array to store all the possible ways to win, and another to score the state based on how many ways X and O can win on the board. But even better, I gave the computer the ability to look one move further ahead, and try to guess how the opponent would respond to its move.  This was minimaxing - the computer assumed the opposing player would play their best, and could then use its move to put the opponent in the worst possible position.

This program worked GREAT! It was almost unbeatable!

But, it had one weakness.



It could only look two moves ahead, and beating THIS trap required the program to look ahead 4.

In the end, I found it was easier to adjust my heuristic than to double up on the moves my program watched. I made sure it treated getting these traps - the three corners, or this triangle - as winning when scoring the boards, but NOT when checking for a win. In this way, the program finally worked.


Next, I'm working on trying to make a program that can learn the game on it's own from repeated trials - but that's a whole other ball game. For now, I'm just happy with how my first foray into AI programming worked out!

If you have questions/or comments don't hesitate to ask! I'm always happy for feedback.

Friday, December 12, 2014

Makerspace, Part 2: The Plan.

Last week, I finally got to have my first meeting with the middle school Technology club I'm working with to create the Makerspace. We talked about what a Makerspace was, how we were planning to use it in the school, and the various bits and pieces of old projects that I brought to show what kinds of things could be made in a Makerspace. Basically, it was a condensed version of this post, with a few pictures from Big Hero 6 and Iron Man 3 as reference points.

Good movie...  but it was no Wreck-it-Ralph. 

At the end of the meeting, I had ever student write down on their slip of paper the top ten things they wanted to be able to make/learn in the technology club. Over the weekend, I looked through all the answers I got, and came up with the five main units that would be the most useful and interesting to kick off the Makerspace and the Tech Club. The Technology club has two types of meetings - "Class" meetings, which teach skills like the one's seen below, and "Business" meetings, where we'd focus more on the Makerspace itself, and where members would have time to share the projects they've been working on (THAT is for a different post). But the introductory skills are important for the students with little or no experience. So here's what I've put together: 



1. Programming
 This is the obvious one, but I've put it as the first unit because it's a vital skill so many of the other projects the students were interested in, and because it doesn't require expensive materials. I'm working on lesson plans for a programming intro class for Scratch, which will hopefully give enough of an introduction that the students will feel comfortable working on Codecademy tutorials or learning from other online resources



2. Robotics
These kids love robotics almost as much as I do. The issue here is limited time and materials. I'm planning on doing two classes with Mindstorms Ev3 - one for building, one for programming. I'd also like to incorporate robotics into an Arduino introduction later on - I have an RC car that I robotized with an Arduino that would make a good example.



3. Circuitry
While I'd actually prefer this unit before robotics, the littleBits are one of the more expensive items in the budget, and, while I have an Ev3 kit at home that I could bring as an example, the same isn't true here.



4. Computers
This is kind of a catch-all unit. Here I definitely want to have a class on the Raspberry Pi, but I also want to bring in some of the other Technology Club Alumni to teach classes on things I'm not as familiar with, like App programming and Web Design. (It's interesting to see how our individual interests were foreshadowed through Tech Club and the technology class. The ones who spent all their time on the iPod touches now program them, the ones who spent all their time tweaking Powerpoints and Tshirt designs have gone into 3D animation or computer graphic design. And yours truly MAY have turned in a final paper analyzing potential uses for robots that could create their own languages after researching this. I really should post it here if I can find it.)




5. 3D Printing
I have never had the opportunity to use a 3D printer, and I could not be more excited to learn. That's why this unit is last - I know the least about it, and I need that time to learn. I'm planning on getting the Printrbot kit, and using Google Sketchup and Autodesk inventor to do the modeling, since our school system already has that software.



These are the things we decided would be the most useful. I've said before that you don't need expensive tools to make a Makerspace, and I stand by that statement. But good tools make making more accessible, and especially in a school setting, that's important. And tools cost money.
About $1,300 worth of money, not counting shipping or storage.

I'm looking at a couple different ways of doing money-earning.  For the more expensive kits, I've talked to my sponsor about using DonorsChoose. It seems like a great program, and I'd appreciate the help in offsetting the cost. However, with finals rapidly approaching, we haven't had the chance to talk to the school administration yet. So I've started with some simpler money-earning opportunities. Right now, I'm creating kits for making small light up ornaments to teach younger kids about the basics of circuitry. The kits would also be good for making a string of lights, good for teaching Parallel vs. Series. Plus, who doesn't love holiday themed illumination? Here's a picture of the prototype. I'll be posting a tutorial soon.



I'm selling the kits to local scout troops as an end of year craft project and my goal is to raise about $100 to start off with.

And finally, while I can't expect to rely on donations, I had the opportunity over Thanksgiving break to collect some of my great-grandfather's old tools for use in the Makerspace, which I cleaned up and labeled.



It wasn't anything too fancy - just screwdrivers, wrenches, a level, things that would be useful for building or disassembling small projects. But that toolbox has officially become the first thing in the Makerspace.



It's a long road ahead, but we have a plan. Let the making commence!

PS: One last thing. One of our main concerns with the technology club is the participation of girls. I was one of two girls out of about fifteen people at the clubs inception, a ratio that improved a little  the next year, I suspect because both of us were so active in the club. Now, she's actually come back to help with my project. But we still see the same problem. There were only two girls at the meeting and about twenty boys. Do any of you have suggestions for getting more girls involved? 

Thursday, November 27, 2014

Why Artificial Intelligence IS Real Intelligence



One of the most common arguments I've seen in the face of AI research is that computers aren't REALLY intelligent. They merely emulate intelligence, something that is inherent to biological life, or , in some views, only humans. In his article "Artificial Intelligence, Really, Is Pseudo-Intelligence," Alva NoĆ« argues that computers lack 'drive': they can't attach meaning to things, and therefore they can't have wants like biological beings do.

Lets say, right now, I want a chocolate bar. "Want" is a pretty complex term. Does it refer to the lack of calories, calcium, sugar, magnesium, or even serotonin that my body's sensors detect in my bloodstream? Does it refer to the physical symptoms that manifest in my stomach and mouth that my brain recognizes, or the memory of how a chocolate bar negated these symptoms a week ago? Does it refer to my memories of having a chocolate bar while at the computer that have taught me chocolate is the "right" choice in this situation, just one of many learned behaviors? Does it refer to an emotional component, a combination of learned behavior and brain chemical levels that tell me that chocolate makes me 'happy'?

"Want" encompasses all of these things. It's complex, and it's more complex than anything AI can do right now as a whole. But when you break it down this way, what up there can we do that computers can't? We can create programs that take information from sensors. We can create programs that can access memories and find patterns, and determine a course of action based on that pattern. That's all intelligence is. The human mind, our meanings and desires, are only complex derivatives of very basic mechanical things, in the same way that the leaves on a vine create a beautiful spiraling pattern simply as a way of maximizing the sun coverage each leaf gets. Biological machines aren't inherently different from artificial machines. They've just had a head start. 



Another argument he uses is that of understanding. Computers can't understand, they can only perform the actions they are told to. One example is that of the Translator's Room. A human is locked in a room with nothing but a pen, and dictionaries that translate one foreign language into another. The human knows neither of these languages. However, every day, they receive papers with writing in one of the languages. Using the books, they are able to perfectly translate the writing into the other language before passing the paper back out of the room. They can complete this task despite not 'understanding' either language. 

This argument doesn't negate the possibility of artificial intelligence. It shows that a system can only do so much with limited information. If the books in the Translator's Room scenario had a picture for each word they translated, the human would be able to understand another component to the sentences they wrote. What if they were familiar pictures? Just like Helen Keller, with her hand underneath the spigot, the human could recognize water in any language if they just had another reference point. Another piece of information. Could that be considered understanding? A computer can store associations and memories just as a human mind can, and the more data a computer has access to, the more associations can be made. Isn't that all that understanding is? A summary of our experiences and the patterns we've derived from them? 



The Jeopardy-Playing robot, Watson, which the article cites as an example of a lack of understanding THRIVES on those summaries. It doesn't have any visual or physical references, which make up most of our human understanding. But it knows a river is a flowing body of water. It knows water is a compound in a liquid state that is common on Earth, and necessary for human life. It knows flowing is a type of movement only fluids, like liquid, can achieve. Even without visual reference, how is this not understanding? Watson can induct. It can deduct. And it can use those abilities to answer questions.

I'd argue that's what intelligence is. Our ability to derive patterns from information and act using those patterns. That ability is just as real in computers as in any biological creature. It's just our job to prepare computers to use it.