Syllabus S12


Programming experience in an object-oriented language. Additionally, a basic familiarity with HTML will be important for the Rails project part of the class.


  • The Ruby Language
  • OOP with Ruby
  • Text Processing and Scripting
  • Misc advanced topics:
    • Threading
    • Networking
    • Serialization
    • Meta-programming
  • Ruby on Rails: Extending RubyGame, a live Rails-based web-application
    • Using Rails to perform CRUD operations against a database
    • User authentication
    • File upload / download (and game / agent design)
    • Safe execution of untrusted code
    • Any other topics needed to achieve target functionality (TBD)

The first 5 weeks of the class will be spent learning the Ruby language and covering miscellaneous advanced topics. The remaining 3 weeks will be spent improving and extending RubyGame, a web-application that was built using the Rails framework during the Fall 2008 offering of this class. RubyGame users may write (in Ruby only) games and game-playing agents of their own design and upload the code files to the RubyGame MySql database. Then matches between agents can be executed on the RubyGame server and the outcomes displayed back to the user. The existing application will be studied and target functionality for improvements will be determined in part by the class and then implemented.


Scores will be posted on Blackboard.

If you believe there has been a grading error for one of your assignments, you have one week from the time the grade is made available to you to submit a complaint to the instructor, by email, along with any supporting evidence or arguments. Any grade change requests made in person or after the one week period has elapsed will not be considered.

Your final grade will be calculated as follows:

Programming Assignments70%
Class Participation10%

There will be a small reading assignment to be completed in advance of each class meeting, and one short in-class quiz each week (except the first week). The quiz questions will be based on the reading and on material covered in previous classes. If you miss the quiz due to absence or lateness your score will be zero.

Class participation is a measure of your attendance in class meetings, and also participation on the class discussion board on Blackboard. There are no exams.

Academic Honesty

Any work you submit should be entirely your own. You are permitted and encouraged to discuss concepts, algorithms, and ideas with one another, in person or on the course newsgroup. However, you may not under any circumstances view, read, copy, or in any way access source code that is not your own unless it is provided to you by the instructor. You are also responsible for maintaining the privacy of your own source code — if you share your code with another student, you will be held responsible. You may not get outside debugging help with your code. For the most part, you should know whether what you are doing is dishonest or not. If you have any questions, ask the instructor before doing it. Students found in violation of this academic honesty policy will receive a failing grade in the course and be referred to the Dean of Students for possible further disciplinary action. Don't cheat.

Late Work Policy

Assignments will all be posted at the beginning of the semester so that you can work around any planned events (e.g. religious holy days) that would interfere with your completing the assigned work on time. However, in order to account for unforeseen or extenuating circumstances, you will be given three (3) "slip days" for the semester. Here, a "slip day" is defined to be a 24-hour period after the assignment is due, during which you may submit the assignment without penalty. You may distribute your slip days however you like across the assignments. Slip days will be deducted when you submit a late assignment. You do not need to contact the instructor or get permission before submitting late work but if you don't have enough slip days to 'pay' for the lateness, it will not be graded and you will receive a score of zero.