EPGY Recap

First off, I can’t believe that my three-week EPGY Artificial Intelligence course is almost over.  The time flew by so fast that it still feels like I arrived at Stanford yesterday!  Okay, yesterday is a bit of an exaggeration (a week seems more accurate).  The point is that I had a lot of fun expanding my knowledge of artificial intelligence and hanging out with such an awesome, diverse group of people for part of this summer!  Here’s a brief summary of m

Most memorable moments:  Writing the code that enabled my and Arkojit’s swarms to attack each other; almost getting EPGY Author to work; playing lots of poker, speed, and other card games; talking for hours to my roommates and new friends

Most important lessons:  Java graphics; Markov chains; swarm algorithms; and learning what living away from home is like

Favorite activities:  Playing cards; flounging (fountain lounging); local excursions; and, of course, programming

What I want to accomplish:  1 year–finish the litzing component of the Pre-Shortzian Puzzle Project, do well on the SAT and AP tests, continue to program and construct/edit crosswords; 3 years–go to a good college, start a major in computer science, continue crossword-related activities; 5-7 years–graduate from college, pursue a more advanced degree and/or work for a major tech company; life–become New York Times crossword puzzle editor, work for a major tech company (or do a start-up?), get married and have kids

IMG_4771

 

At the California Academy of Sciences.

Advertisements

Logic Programming

I played around with the logic programming languages Prolog and ASP, the former of which wouldn’t run on my computer because of a missing Java plug-in.  Nevertheless, by verifying my code with a fellow EPGY camper, I was able to determine that it worked.  Since the code for both programs and output for the second program are so short, I pasted it into this post rather than creating a new PasteBin account and putting it there.

In logic programming, all events happen at once.  It seems that declarations must be processed slightly before rules, though.

Dining Hall Problem in Prolog

softserve(I) :- flavor(I).
flavor(chocolate).

Family Members in ASP

mother(X,Y) :- parent(X,Y), female(X).
father(X,Y) :- parent(X,Y), male(X).
female(karen). male(paul). male(david).
parent(karen, david). parent(paul, david).

Output for Family Members

smodels version 2.33. Reading...done
Answer: 1
Stable Model: parent(paul,david) parent(karen,david) male(david) male(paul) female(karen) father(paul,david) mother(karen,david) 
True
Duration: 0.000
Number of choice points: 0
Number of wrong choices: 0
Number of atoms: 8
Number of rules: 7
Number of picked atoms: 0
Number of forced atoms: 0
Number of truth assignments: 7
Size of searchspace (removed): 0 (0)

Open Source vs. Closed Source

I read two articles, a letter by Bill Gates and a piece in favor of free software, to help me form an opinion on the open-source vs. closed-source software debate.  Both pieces raised important points, but I ultimately agree with Bill Gates that software shouldn’t be free unless the developer is okay with it.  Software developers spend hours and hours coding their applications–they deserve whatever (often rather minimal) royalties that they make.  I do believe, however, that users who pay for a piece of software should be free to tweak the code as they see fit, as long as they don’t sell slight modifications for their own benefits.  This feels unfair and should be illegal.

On another note, my EPGY class has recently been discussing what exactly an operating system is.  I personally define an operating system as the bridge between humans and hardware.  It allows for anyone (not just the tech-savvy) to interact with computers efficiently.  Below is a picture of some low-tech windows:

Underwood and Co.  Joiners in Surrey

 

Image courtesy of Cornerstone Exteriors.

Autonomy vs. Agency

Comparing autonomy and agency is similar to comparing a thermometer to a thermostat.  A thermometer is only capable of adjusting itself to changing conditions–it has no control over its external environment.  Similarly, autonomous systems are controlled by pre-programmed functions.  I have autonomy when I go to school since I don’t control the curriculum.  A thermostat, however, is designed to regulate temperature.  Computers have agency when they “think” and “learn” for themselves; I have agency when I’m constructing crossword puzzles since the process is very creative and somewhat unpredictable.  Below is a picture of a thermometer:

mzl.atkciufz.320x480-75

Image courtesy of iTunes.

Final Project: Swarm Algorithms (in progress)

Arkojit and I have been busy polishing up our code to make bugs attack each other, which proved to be quite challenging.  This post is a rough draft of what we’ll be doing.  Arkojit and I decided that we don’t need any books to help with our project–none of the swarm algorithm books we saw on Amazon.com seemed to directly relate to our project, and they all are rather expensive.

  • Abstract/Summary

This swarm algorithms project seeks to create a virtual simulation of a swarm of bugs.  Bugs can either merge (combine into larger colonies), roam (move around randomly with their colonies), rally (move towards a target [the mouse, in this case]), or attack (kill another bug or be killed).  Arkojit and I decided to use the programming language Processing since we feel its graphical interface is easier to use than Java’s ACM.  Also, Processing programs can easily be converted into JavaScript and thus be compatible with the web.

  • Introduction/Background

Swarm intelligence in the programming sense was first introduced in 1989 by Gerardo Beni and Jing Wang.  However, the idea of swarm intelligence can be traced back to science-fiction author Olaf Stapledon’s 1931 book Last and First Men.

  • Application

Swarm algorithms have many applications.  In nature, swarms enable tiny insects like ants to transport large objects.  In programming, swarm algorithms have been used for ant-based routing, crowd simulation, art, and simulations.

  • Previous Work

TO COME

  • Current Problems in Area

TO COME

  • Proposed Solutions

TO COME

  • Conclusion

TO COME

  • Future Work

Arkojit and I will add more options for the bugs, such as reproduction.  Also, we plan on including obstacles in the environment.

  • References

http://en.wikipedia.org/wiki/Swarm_intelligence

http://staff.washington.edu/paymana/swarm/dicaro_lecture1.pdf

Swarming Conference

I was researching swarming algorithm conferences and came across one that piqued my interest.  The Fourth International Conference on Swarm Intelligence (IC-SI) spanned from June 12-15, 2013, and took place in Harbin, China.  Fun-sounding topics included Artificial Bee Colony Algorithms, Swarm Robotics, and Evolutionary Programming, the latter of which I’m most interested in.  Below is a photo of the conference logo:

2013_01

 

Image courtesy of IC-SI.

What is AI?

If a random person asked me what AI is, I would tell him/her that there isn’t a single “correct” definition.  Accepted definitions of this term are constantly changing.  I personally think that AI involves a computer “thinking” or “learning” for itself–one of my favorite examples is the crossword solver Dr. Fill (https://www.jair.org/media/3437/live-3437-6039-jair.pdf).  I don’t believe something with a billion if/else statements can be considered AI since a human has already thought through every case.