110 likes | 119 Views
ISICL is a simulated robotic tank control language that compiles into Robocode, designed for AI programmers. It simplifies Java syntax, adds state machine functionality, and offers platform-independent code. Challenges faced and lessons learned are highlighted, emphasizing clear goals, effective testing, and proper communication.
E N D
ISICLIntuitive Strategic Intelligence Control Language COMSW4115 Michele Cozart Matthew Keitz Michael Marcus
Introduction • ISICL • Simulated robotic tank control language • Compiles into functioning Robocode • Designed for programmers interested in AI • Adds state machine functionality • Simplifies java syntax
Background • Robocode • Matthew Nelson of IBM • Robotic battle simulator • Encourages proficiency in Java • It’s FUN!
Why ISICL? • Intuitive way to define a Robocode tank • Abstracts away complicated event handlers • Adds state machine functionality • Platform independent code • Easily extensible • User-defined actions and states • Inheritance
Code Example state START: ahead 20 [ ScannedEnemy -> SHOOT ] state SHOOT: …
Development Environment • antlr • Java 1.4.1 • Robocode • RCS • Unix and Windows • Development and testing platforms • Columbia servers for code/website
Challenges • Team members split across country • Communication issues • Time zones • A team member disappeared • Lost knowledge • Lost development help • Diverse team • Age, gender, goals, purpose, desired outcome
Handling the challenges • Code repository “always” accessible by all • ISICL website used to organize group information • Instant Messager is a MUST. • Meetings take FOREVER • Met twice a week to plan and for status updates, more often towards the end • Everyone willing to pitch in
Testing • Test early, test often • Regression tests are important • Test harnesses are effective • Integration testing is vital but gets slighted due to time constraints
Lessons Learned • Agreement on goal/purpose • Clear tasks and requirements • Concrete schedule with firm deadlines • Expect things to take longer than they should • Spend time on developing interfaces between the components.
Conclusion • ISICL is cool (forgive the pun) • We learned a lot! • Questions? • Please visit our website at: www.columbia.edu/~mlc2106/index.htm