Nathan Sutter

PhD Student

Home > Teaching > CS 175a

CS 175, Project in Artificial Intelligence - Fall 2007aaa

I'm the TA for CS 175 for Fall 2007, taught by Professor Smyth.  If you have any questions regarding the course, policies, etc, please see his website for the course.

I am basically at my computer all the time, or am close to it.  If you have any questions, please do not hesitate to contact me.

Updates
10/18/2007 : Assignment 3 Grades up on eee
Generally things went well for this assignment.  Here is the point breakdown.

Point Distribution :
    Three functions @ (6 for correctness, 2 for error checking, 2 for comments) = 30 points.
    Two slight function modifications/plot additions @ 5 points each = 10 points.
    One write-up @ 10 points.
    Total possible : 50 points.

The interesting thing about this assignment is that most everyone got a very high score.  It seems that you either completely got the requirements of the assignment (and missed points on minor details), or simply didn't get it (or didn't turn parts of the assignments in).

One notable improvement is that there was almost no one with significant speed issues with their code.  This is great, as I have a sense that everyone is really starting to get comfortable in MATLAB.

Good work on this one.

10/16/2007 : Assignment 2 Test Cases
For problems that involve doing a large number of operations that can possibly scale badly in the number of datapoints, I typically test three things.  I usually do two tests that are fairly simple, with a small number of data points (in this case).  The third test I usually throw in a large number of points (for the KNN example, the 3rd and 4th part).  People who have not properly optimized their code usually have trouble with this third part, in that they are using lots of for loops (analogously no vectorization), no pre-allocated arrays, or other issues that can make your code run terribly slow.  So, when testing your code, you should throw the kitchen sink at it to be absolutely sure it won't have any issues being run when you turn it in.

For assignment 2, I gave everyone a 10 minute limit.  If your code didn't run in that time (on my machine), I considered it "failing" that particular test.  Note that for running KNN with an increasing number of topics, optimized code should take about a minute to finish, max.  I figured 10 times this would be relatively leniant as a requirement.

Here's my test cases for assignment 2.  You can expect similar ones in future homeworks.

For both KNN pieces of code, one test was a simple one with a small number of simdata1 for the datapoints.  The second was more points, still simdata1.  The third was half of simdata2, all mixed up (4000 points total).

10/11/2007 : Grades for Assignment 2 up on eee
Generally everyone did well.  A few people are starting to have issues with scaling your implementations to larger sets of data - which will be problematic in future assignments if you don't test for it prior to submitting.  

Breakdown of point distribution for this assignment :
    Four functions @ (6 for correctness, 2 for error checking, 2 for comments) = 40 points
    One write-up @ 10 points.
    Total possible : 50 points.

Problems with knn :
    Not returning the correctly sized vector/something completely unrelated to the classification task at hand.  knn computation not being done properly.

Comments on plot functions :
    In general these were all very good.  Note that in particular if a large K and/or a large data set were passed to the knn_errors function, some people had problems dealing with the larger data sets (i.e., plot not coming back for 10 minutes or so).  You should in the future test your code for scalability like this, as it is one thing we test for.

Problems with write-up :
    The assignment simply asks for a plot or two and a short discussion.  Many people put no significant discussion of the results, or didn't include a plot for clarity.  For future writing assignments note that one sentence will not suffice as an analysis.

    Also, you lost points if you really didn't at least try to discuss why the error rate starts increasing as k->inf.  All we expected was some ideas about why this is happening.

10/05/2007 : Grades for Assignment 1 up on eee
Generally everyone did well, but some people missed some points for not doing simple error checking.  We don't require anything elaborate, just a few checks to make sure you are getting reasonable input.

Here is the point distribution for the assignment :
6 points per function for correct opetation.  2 for error checking, and 2 for comments.  A total of 10 points for each function was possible, and 10 points for the writing assignment.  

There were a few comments I had, which I've seperated out on a per-function basis :

Euclidean Distance :
Minus comments and error checking, this could have been effectively computed in one line of MATLAB code.  
The statement sqrt(sum((v_1_a-v_1_b).^2)) will give you it.  Try and use all the functions available to you, as they are optimized nicely.

Maxvalue :
Many of you wrote complicated loops to calculate this that made your programs relatively slow.  A few MATLAB function calls would have done the job easier.  This will get very important as your assignments get more complicated.  Avoid loops if you can in MATLAB!  Email me for details on this if you'd like.

Nearest Neighbour :
Generally these were good.  Some people lost a point for not handling more than one error case.

09/27/2007 : Welcome to the Course
Just a quick welcome to the course - if you have any questions about assignments please contact me.  My contact info and office hours are listed below.

Contact Information :

I'm best reached by email, nsutter[at]ics[dot]uci[dot]edu.  

Office Hours :
I'll be holding office hours on Mondays from about 4:00-6:00pm in ICS 364 Lab.  If you'd like to talk some other time, send me an email and I'd be happy to schedule an appointment.

Notes on Projects :
Since each project in the course is due on a Tuesday, I'll try my best (barring unforseen natural disasters), to have your projects back to you for the subsequent course (on Thursday).  You'll get both a print out of your program including score and my comments in class, as well as on eee in the course gradebook.  Also, I may post some statistics about how the class did overall on the project here.

Info on Grading :

Below are the criteria I'll be keeping in mind when grading projects:
  1. Correct formatting of assignment as per specifications.
  2. Overall clarity of program. That is, there should be enough comments so that I can discern what is going on in the program without trouble.  Also, I'm a stickler for proper spacing of code, so _please_ put some time into spacing your code effectively and consistently.
  3. Appropriate amount of error checking of input.  If I pass innappropriate data to your functions, will they blow up?  Will I get a message about improper input?
  4. Correct functionality.  See specific project specifications for functionality requirements.
There are multiple things that one can do for their program to not adhere to these criteria.  Be sure to thouroughally check that your program is designed, implemented, and functions to specification to avoid deduction of points.

If you have any questions regarding these criteria, please contact me for clarification.

      






Bren School of ICS
University of California, Irvine