Home
My Courses
TA Courses - CS 315H
My Resume

CS 315H-Algorithms and DataStructures

Fall 2007

TA : RUCHICA BEHL

email id : ruchicab@cs.utexas.edu

Office Hours: Painter Microlabs
Monday 3.30-4.30pm
Friday 3.00-4.00pm

IMPORTANT LINKS
  • Professor Lin's Page- he makes announcements as well.

  • Newsgroup- look for hints on assignments here.

  • Software Testing Wiki- look for hints on testing here.

  • URGENT ANNOUNCEMENTS
  • My office hours will be held in Microlabs in Painter. If you have any questions, feel free to email me.

  • A mailing list for the course has been created. I hope all of you are getting messages. I have sent out a couple of mails. If any of you haven't yet received any message please email me.

  • SAMPLE REPORTS
    ASSIGNMENT # 7
    To increase the heap size of the virtual machine, pass -Xmx(size)m argument to java.
    For example java -Xmx512m WebCrawler would increase the heap size of your virtual machine to 512megs.
    When preparing the jar file, you can use java -Xmx512m -jar prog7.jar, if you increased the heap size while running your project.
  • Supplementary Material and implementation guidelines by Adam Brown

  • Assignment#7

  • Assignment#7 code base


  • ASSIGNMENT # 6
    Name the jar as prog6.jar

  • Assignment#6

  • Assignment#6 interface


  • ASSIGNMENT # 5
    The character set of the dictionary (i.e. the characters in the words.txt file) can be a superset of normal english alphabet set (a-z/A-Z).

    Name the jar as prog5.jar

  • Assignment#5

  • Software for Prog5

  • ASSIGNMENT # 4 Some important points regarding the project that may be helpful

    undo() should take you to last committed state only. The only case I can see at the moment when one feels like going back a couple of steps is when one is loosing. So, in that case one needs to modify the brain's tactics, etc. In any case if you decide to undo() more than one states, just mention it in your report, the need to go back more than 1 committed state, advantages, etc. (Note: I would consider undo() of more than one committed states as deviation from the rules of the game, so do mention such decision properly in your report.

    You can implement undo() using any implementation strategy that seems good to you. The implementation strategy given in the assignment sheet is a sort of default case in-case you are not able to think about a better one yourself. If you have a better strategy, it would be really good that you implement your strategy, but again a proper mention in the report is mandatory.

    Pay special attention to sanityCheck(). Include as many checks as you can think of and include them in your report.

    Adversary implementation might be another area of concern. I know everybody in the class is smart enough to know how to implement multiple inheritance in java. Pay special attention to the worst piece definition. Again, whatever you do, you should not forget to mention it in your report.

    Words of Advice

  • Report should include the high level implementation details of the project. (You can see good reports for previous projects by following links on my webpage).Remember, a long report doesn't necessarily means a good report and a short report may contain all the implementation details.

  • Include the time log specifying the amount of time you and your partner spent on the project.

  • If your karma project changes the rules of the game, you should implement them seperately from the required components.

  • Finally, just before submitting do a sanity check on your project that everything is working correctly. Just check for cases, where the implementation of next step might have made you change somethings from previous step.

  • Assignment#4

  • Software for Prog4

  • ASSIGNMENT # 3 Here is a high level summary of this project that may help clarify your thoughts.

    Pretend there is this high level simulator that runs a Critter Battle. It manages the board and all the critters on it. On each turn of the battle, the simulator goes to each critter in turn and says "OK, Critter, what is your move?" The Critter then expresses its move at a high level by simply calling a method like "infect" - so critters think for themselves, the simulator doesn't have to.

    So what must you do? You are the critter. Notice that you are simulating the Critter, not the World. Your code must (1) correctly parse in the critter description file and store it in a convenient, non textual form for easy interpretation of its moves. (Once the critter loads, you should NOT be doing any more parsing on text - this is far too slow.) So now your code has (1) verified the input file is correct, and (2) created an internal version in symbols of the critter's program.

    Now that you've made a symbolic (non textual) representation of the critter's brain, you must act as the interpreter and RUN its logic. That is, when the world simulator asks your critter for its next move, you must traverse the critter's internally stored symbolic program correctly and select the correct action. You then signal this correct action to the Simulator by calling the corresponding member.

    When making your code, you need to test that it's really working so you need to make some simple back end that displays the functions the critter is asking to do and make sure it follows the critter's programming correctly. Also, you need to simulate situations that might come up during a world battle in order to thoroughly test the critter's logic - for example, you may have to simulate a barrier in front of the critter or an enemy near the critter to test these cases. But this does not mean you need to simulate a critter board - just make the critter think it's in each situation.

    For all this to work, your system must implement exactly the same (signatured) functions as our simulator. For example, if you implement a function Eat() but our interface uses the function eat(), then your critter simulator will fail to compile with our world simulator, and you will get a VERY low score. For this reason, just like in the real world we have provided a detailed interface document to show exactly how you should write the member functions that the Critter calls to indicate his actions in the third link below.

  • Assignment#3

  • Assignment#3 code base

  • Download Critter GUI World Sim

  • Instructions:
  • Unzip the proj3Gui folder.
  • Place in this folder (in the same directory as TestGUI.jar) a copy of your Interpreter.class file and any other .class files your Interpreter depends on.
  • In the species subfolder, copy in all the .cri files you wish to test.
  • Then, just double click on the jar file or in the command prompt type java -jar TestGUI.jar
  • If the command line gives a Class not found error, than you are missing some class files needed to make this all work. If everything was implemented in class Interpreter then one .class file should be sufficient.
  • If you violated the interface, then this also won't work - now's a great time to figure this out.
  • If it DOES work, a GUI window will pop up. The first thing you do is select FILE->New Simulation, and choose the Species type and amount for your battle. Your own critters should automatically appear in this menu if you put them into the included directory.

  • ASSIGNMENT # 2
  • Assignment#2

  • Software for Prog2

  • ASSIGNMENT # 1
  • ImageGallery

  • Assignment#1

  • Software for Prog1

  • ASSIGNMENT # 0
  • Assignment#0