Sharon Rose Alterman
This weeks lectures were interesting to me because I had done all of this before in an abstract setting. When I took math logic, we did proof by contradiction all the time, but we never got into the semantics; at least not in a way that I could make meaning out of it. It was very satisfying to be able to really understand what I was saying as I applied techniques that have become old habit. This let me see how a computer could use it, and how a human brain can. It made logic more real.
The programming project is giving me issues, partially because I was flat on my back and unable to do anything that involved much sitting up until Sunday. I was working in Park 10, with Code Warrior, and it got me thinking about what they don't teach you in college computer science. I know how to program in C++ on the machines at Haverford, but I was at a loss to use the macs at Bryn Mawr. I know how to make a program file, and compile it, and then run it using the complier. That's all I can do. What good does that do me? Can I take that beyond the walls of Haverford College? If I can't make it work for me at Bryn Mawr, how will it work for me outside the Bi-Co. I don't know how things would have to change to bridge this gap. Computer Science is supposed to be a "practical" field. Will my skills be applicable outside of the Ivory Tower?
Rohit Apte
Durell Bouchard
Brianne Brown
Grace Chou
Dan Crown
Renee Findley
For the last few weeks in class we've been working on predicate and propositional calculus. My main interest in this is now I can figure out how to do those logic problems at the end of Discover magazine, which are, in effect, predicate calculus problems. But that's not a good response.
So, Konane.
To some degree, this program is a sort of old-school penultimate AI project. At the beginning of the year, we were told that people were convinced once upon a time that if we could get a computer to play chess effectively against a human, then we had achieved AI. While Konane isn't chess, it's the same concept, and it's certainly not what they were thinking of.
Implementing the program was fun (until I got sick of playing the game) and challenging. I was impressed at the difference between Alpha-Beta pruning and MinMax searching.
What I was wondering was about algorithm shortening. When we spoke of Deep Blue in class, we spoke of how the computer was designed, from hardware to programming, to be to some degree a search like MinMax, but faster. I was wondering if such a shortened algorithm (not necessarily as extreme as Deep Blue) existed for Konane, as even the Alpha-Beta pruning went through a lot of superfluous steps at times.
Scott Goldstein
Maria Hristova
Agata Jose-Ivanina
Predicate calculus presents us with a way to describe a variety of situations and a way to make conclusions given a set of prepositions. However, we didn't really explore the costs of writing a program that will perform what we did in class. One thing mentioned by Deepak in class is a search tree that needs to be created and also searched for possible resolutions. Another thing that is still unclear to me is the presentation of knowledge in the computer. How does the computer perform the resolutions? When does the actual interpretation happen? The predicates are presented as nodes, but it seems that the functions are inseparable from the interpretations - does that mean that the computer has do deal with actual sentences? On the other hand it seems more reasonable that nothing is interpreted until the very last moment. Also the computer doesn't understand sentences in the sense we are used to; it only uses them as a symbolic presentation of a piece of information. When we were solving the problems in class, we kept interpreting some of the atoms, but we never really looked at the meaning of the wholeclause. Going back to predicate nodes: what kind of data structure will such a node be? Is it a string? Or is it a symbol to be used in coding and a string for eventual interpretation?
Personally, I find predicate calculus very interesting although at this moment it seems to be more of a fun way to spend time cracking logic puzzles. Unfortunately, the knowledge representation is still very fuzzy in my head and will probably require a lot more time spent on this topic, before I can say that I understand the programming side of it.
Archana Joshee
Kip Lewis
Creence Lin
I remember back when Stu Shapiro showed us Cassie and would give the robot facts and then ask questions based on the facts. I 've always wondered how this worked so it was interesting to do resolution proofs in FOPC despite difficultlies of representing commonsense knowledge. One question that I have that when we are asked the question, we sort of already know the answer (ie. Maria can be reasched at the CC or so and so is a mountain climber, x squared is odd, etc.) so we can take the opposite of that to reach a contradiction. How does a robot or machine know to take the opposite of the answer to reach a contradiction? The robot would have to know the answer beforehand or search multiple options maybe searching each one for a certain time until a contradiction is reached, which is not as efficient. In fact, if it went through each option for a certain time and failed to get an answer, it would have to go through each each one again a longer time. If it did this and there was no answer, it could just loop endlessly or else time out and not give an answer. We all had some intuition of what the answer would be, but does the robot? It seems that we ourselves do reason differently from this process, but all the same, sometimes we do not know the answers to the questions if complicated enough.
Martin Lukac
Reshma Menghani
Todd Miller
Maria Pace
Heather Palmeter
I found that most of my attention this past week went to the completion of the gaming project. As with every other CS project I've undertaken, the key to this one was planning and preparation. In fact, that's the one thing I learned from my first CS project and it's held true for every project that followed. Ironically enough, my first project was a tic-tac-toe game. It was terribly lame just a collection of if statements but not knowing any better I sat down at the computer and began to plow through it. Needless to say, it was an unqualified disaster. I had no plan and no way to keep track of what I was doing or what was required from the various parts of my project. Half way through, I realized what it was that I was lacking, but any attempts at planning I made at that point could do nothing better than play catch-up, Anyway, to make a long story short (a very long story), I learned that if you don't plan then you'll be lucky to escape alive.
Well, the gaming project is completed and I'm still kicking, so the planning must have been sufficient. Also, I'm not sitting here staring at the code thinking of all the things I want it to be able to do that it doesn't, which means one of two things. Either I managed to do a fairly complete job, or I'm coming up with manageable expectations. Either way, I'm pleased with the results and that's always important.
In class we continued to talk about predicate logic. It is more complicated than the propositional logic, but still, it's manageable and, being a logic system, it does make sense when you think about it. At the beginning I was wondering if doing the propositional logic as a warm up for things to come was really necessary, but now that were into the thick of things, so to speak, I'm glad I got a chance to get my feet wet before diving into the deep end. (I'm pretty sure there's a mixed metaphor in there somewhere, but at the moment I just can't seem to prove it.)
Megan Rutter
I find it somewhat amusing that we spent almost the entire class writing out a resolution to something you could do in your head in less than two minutes. The logic behind a simple solution can get to be so complicated. All you have to do is read the statements, and you can figure out the answer, yet we worked for so long and went through so many resolutions and still didn't get the answer before class ended.
I also found the actual material entertaining (well, as entertaining as a lecture on resolution in predicate calculus can be) as it reminded me of those logic games I used to play when I was a kid where you have to match up 5 or so people with their respective ages and occupations and such given a few clues. Those games probably use similar knowledge representation logic to what we were doing in class. One could probably write a program that took one of those games as input and then sent out the solution as output. (But it's always much more fun to do them with a pencil and paper!)
Brian Simms
More predicate calculus. Yay!
I can understand the need for a formalized language that the computer can understand, but it is pretty dull doing it out by hand. Other than that, not much doing. Been working on the Konane project. Almost there. I have enough left to do that today is going to be fun. We'll see how it goes.
I need to fully implement A-B pruning. I have moves working for the human, including multiple jumps. Now all I need to do is get the actual AI part working, and life will be good.
Matthew Spigleman
In writing the Konane game playing program I am for the first time realizing just how hard it is to implement the many topics we have been learning about in the course. This was somewhat surprising as the ideas themselves have been quite succinct and ineligible. A procedure such as minimax can be described in a paragraph yet this paragraph cannot play a game or analyze a situation. The superstructure which is needed to actually implement the "intelligence" is staggering. My game playing program is much longer than I expected, yet the code which creates the actual "artificial intelligence" is much shorter than I would have guessed. I now realize how hard it must be to produce systems which respond to and interact with the world around them. I certainly look at Sid Shapiro's work with new found respect as I now realize that for all of the natural language rules which he showed us there are countless lines of code which allow them to be utilized.
Andreas Voellmy
Nicholas Yee
Back to CS 372 Course Materials | Back to Written Work Main Page