Spring 2009
Audrey St. John

Advanced Object-Oriented Programming


This is the second programming course in the required Computer Science major sequence. By the end of this course, you will be a more sophisticated programmer comfortable with object-oriented programming (OOP) languages. We will start the course off programming Flash apps using ActionScript 3.0, then continue with Java.

Why Flash and ActionScript as opposed to just Java? Computer science is a fun field, and I believe that programming should be exciting and engaging! I want you to be creating GUIs (Graphical User Interfaces), animations and interactive projects that you can show your friends from your web site. Learning graphics in Java can be a little cumbersome to start off with, so I have chosen Adobe's Flash application and ActionScript 3.0 to get you started right away with fun and exciting graphics! Click here for some example Flash apps similar to what you might make during this course.


Object-oriented programming (OOP) concepts
  • Abstraction
  • Inheritance
  • Polymorphism
ActionScript 3.0 and Java
  • Interfaces
  • Abstract classes
  • Packages
  • Basic Java GUI (Graphical User Interface) design
More advanced programming techniques and basic data structures
  • Arrays
  • Linked Lists
  • Stacks
  • Queues
  • Recursion

Course Requirements

  • Weekly programming assignments.
  • Early semester programming project: Tetris (worth 2 assignments).
  • One in-class midterm exam and a final in the final exam period.
  • Final programming project with in-class presentation.


  • Assignments and class participation 65%.
  • Exams 25%.
  • Final Project 10%.
For the final grade, you have the option to choose one out of the 9 or so homeworks - presumably the one with the lowest grade - which will be dropped from the final average computation. However, you can only choose to drop a homework for which you did the work, and you may not drop Tetris. If you miss a homework, you get 0 points on it (and that will count towards the final average).

General Grading Guidelines

  1. Assignments will generally be given out on Wednesday, due the following Tuesday at 11:59pm.
  2. Since almost all your assignments will be web-published, submission will simply require you to place your final files online by the deadline. During class, you will make the permissions public. Please do not do so until I tell you to in class!
  3. You must have comments in your code! Poor commenting will result in an automatic deduction of 10%.
  4. Once we have seen automatic documentation (e.g., javadoc), you must be sure the documentation has been created and is available. Lack of documentation will result in an automatic deduction of 10%.
  5. Your program must compile! Non-compiling code will result in an automatic deduction of 25%.
  6. It is better to submit a program that works but does not satisfy all required behavior than a program that attempted to do everything, but does not run!
  7. Throughout the semester, I will occasionally add optional enhancements to your homework assignments. Doing them will help you accumulate EXTRA CREDIT points, which I will use for your final grade as follows:
    • In case you are on the borderline between two grades
    • To make up for exceptional situations when your performance was low (illness or other documented cases like this).
    • To differentiate EXCEPTIONAL (A level) performance from VERY GOOD one (A- level).
  8. To summarize: A and A- level work means quality programs which run, do what they are supposed to do, are well designed and documented and submitted in time.
  9. Reminder: we are under the Honor code.
    While I encourage you to:
    • Talk to your class mates about the lab and homework
    • Organize study groups
    • Consult other books or the internet for inspiration and clarifications
    • Ask the TA to help you find bugs in your code
    I also have to remind you that:
    • All the work that you submit should be yours: it is against the honor code to have somebody else do the assignment for you (including tutors) or to copy it from somewhere else (including books or the internet).
    • I understand that a great way to learn about new technology is by adapting code snippets found online; however, this enters very sensitive territory. For most of the assignments, you should not be adapting code you've found online. However, there will be some cases where this is appropriate (e.g., when using Flash or Java libraries we have not explicitly seen). Any code that you have adapted MUST be properly referenced (e.g., give the URL of the site you obtained the original from)! I expect to see comments where you have modified the original code. If you are at all unsure about what is acceptable, you must contact me immediately!

Lateness Policy (or lack thereof)

NO late homework will be accepted, except for very special, documented circumstances. You should submit, by the midnight deadline, the homework solution reflecting your work on it up to that point.


There is no required textbook. I recommend that you use reference texts from O'Reilly for ActionScript 3.0, Java and Design Patterns.