Sunday, August 26, 2007


A Plethora of Databases

I'm teaching the undergraduate Database Design course this Fall 2007, CSU430. A lot has changed since I last taught a database course. I'll continue to use the O'Neil's DB book, now in its second edition. What has changed is the industry. Major players such as Oracle, IBM, and Microsoft have been supplemented by the appearance and growth of MySQL and embedded DBs such as Berkeley DB (now owned by Oracle) and Caché. I have used Berkeley DB Java Edition (BDB JE) and it works fine. BDB JE is just one small jar file. Java Annotations are used in classes to indicate various DB options. I've yet to try Caché. Caché claims to be an embedded OO store that simultaneously supports SQL. We'll see.

I can't demo all of the DBs for my class, so I'll focus on one, MySQL. A fully functional freely downloadable versions available for many platforms. I actually had a painful time getting it installed under Mac OS X, but, using a whole bucket of pixie dust, I finally got it installed and it's just fine. Starts up at boot time and is just always there. The students can install it themselves or use some other SQL DB, as long as they can generate things to hand in for comments and grading. In addition, the College has MySQL running on its CGI server that any student can access. There is also MS SQL available, but I'm not a Windows person. Students are welcome to use it. Our textbook is fully SQL-oriented, so SQL makes sense.

MySQL has a two or three nice GUI-based controllers - I downloaded two and they work just fine. (MySQL is installed on the Mac OS side of my Intel MacBook Pro and I'm running pure Windows while I type this so I can't give all the interesting details at this moment.)

I will definitely demo BDB JE and encourage students to choose it or Caché for a project. Since I'll be doing GUIs in my HCI class, also this Fall, there may be some interesting synergies.

Thursday, February 22, 2007


Hybrid Closed-book, Open-book exams

Next week, in both my AI classes, undergraduate and graduate, I will do the following experiment:

"The first half of the exam will be closed book. After you hand in your answers to the first part, the remainder of the exam will be open book. This is a strategy to evaluate your performance under both conditions."

I will update this posting after I grade the (four) exams.

Note of 8/26/2007: The exams appeared to be useful. In fact, a number of students in the classes thought the idea was just fine. So I'll continue to do this in my upcoming classes, though not necessarily for every exam.


Sunday, February 11, 2007


Interesting AI undergraduate class projects

Project topics in CSU520 Spring 2007 class
From initial project plans
Professor Futrelle 2/11/2007

The undergraduates chose a different mix from the grads:

Modifying Buckland's Raven game
Roomba-like simulation
Reinforcement learning
The Singularity
Machine translation using NLTK (Natural Language Toolkit)
Smart allies in games
Correlated knowledge in text and graphics
Responsive website via machine learning
Clustering to filter Usenet items
Pathfinding or maybe elevator scheduling
Moving image analysis
Starcraft game from an AI point of view


Interesting AI graduate class projects

Project topics in CSG120 Spring 2007 class
From initial project plans
Professor Futrelle 2/11/2007

WEKA spam detection
AI - Games
3D object recognition - faces and cars
Machine translation for Japanese
Alarms in passive networks (alarms in homes, businesses)
Simulating animals in groups (birds, ants)
"Beyond the facts" subjective opinions in Biomedical papers
Suspicious ships activity using OWL and additional reasoning
Health behavior Ontology
Machine learning for Disease diagnosis
Natural language query/answer system - about Boston
Natural language analysis/generation of Hip Hop lyrics
Ontologies of diagrams

My general comments: The best were the ones in which the student had
found and discussed relevant papers or books.

Many had problems formatting their bibliography items - see the
Bibliography, pg. 987 of the AIMA textbook for examples. Include URLs
where needed.

Monday, January 15, 2007


Real-world semantics is in the eye of the beholder

The notion of semantics in logic can be confusing. I found some good discussions of possible world semantics as based on interpretations, in a book I have on Reserve for my AI courses:

Brachman, R.J. and Levesque, H.J., Knowledge representation and reasoning. Elsevier/Morgan Kaufmann, San Francisco, CA, 2004.

I'll paraphrase their comments on page 20.

The meaning of "hammer" in some interpretation is no more or less than those objects that we consider to be hammers. As far as FOL is concerned, we do not try to say what a hammer is in the way a dictionary might, describing its shape, materials, size, or weight. All we need to say is which objects are and which are not hammers.

On pages 24 and 25, there are further statements to the effect that we can build a system that can be told that Hammer(h1) is true in some user-intended interpretation, so that the system can later come to believe other sentences that are true in that interpretation. "Hammer" is a predicate, and "h1" a term that we create; they have no other existence beyond our creation of them in our system.

I quote their fundamental tenet of knowledge representation:

“Reasoning based on logical consequence is weak, and only allows safe, logically guaranteed conclusions to be drawn. However, by starting with a rich collection of sentences as given premises, including not only facts about particulars of the intended application, but also those expressing connections among the non-logical symbols involved, the set of entailed conclusions becomes a much richer set, closer to the set of sentences true in the intended interpretation. Calculating these entailments thus becomes more like the form of reasoning we would expect of someone who understood the meaning of the terms involved."

Figure 7.6 in the AIMA textbook for the course illustrates some of this from a slightly different perspective.

Saturday, January 6, 2007


My teaching gateway page

You might have noticed below that all my teaching pages live in a certain section of my webspace. In fact I have a "gateway page" that links to my current courses and others all the way back to 1998 (some on a second page). The course pages vary a lot in depth and quality, depending on how much time I devoted to building them. The gateway is at:

Otherwise, I'm hard at work finishing off all the major pages for my UG and grad AI courses. First class is the UG one, the afternoon of Monday the 8th of January. Grad one is the following Thursday evening. For whatever reason, these two courses are better organized than any of mine in recent memory. (So if you're not happy, the others were worse ;-).

I've had a bit of luck learning to play Gears of War on my XBOX - enough for me to begin to see what type of artificial intelligence techniques are used in it. One example: When I pick up a weapon, my partner is aware that I now have the weapon and changes his behavior to suit his new knowledge, e.g., suggesting that I use it in a situation in which he is further aware of the fact that I'm being targeted by some nasty foes. There is nothing profound in this; it's not hard to imagine how this could be programmed in. But the accumulation of many such things, including an "understanding" of the physical environment, etc., all adds up to enough complexity and smarts to make it interesting (and to $ales).

Sunday, December 31, 2006


Nice results from my UG graphics course, Fall 2005

I've taught a wide variety of CS courses in my twenty years at Northeastern.

In the Fall of 2005, I taught undergraduate Computer Graphics, CSU540. The construction of 3D objects and lighting them was based on triangular patches. Using barycentric coordinates, as described in Peter Shirely's graphics text (A K Peters, 2005), it is possible to easily decide whether or not a ray intersects the interior of the patch.

Course website:

Below are two of the best project results from the class. All programming was done from scratch in Java, using no prebuilt libraries or systems such as OpenGL. The only drawing primitive used was the ability to display a single pixel of a chosen color/intensity. I furnished a portion of the linear algebra code and the triangle intersection code. That's all.

By Alison Campanella -

By Jason Bernardo -

This page is powered by Blogger. Isn't yours?

Subscribe to Posts [Atom]