COMPSCI 308: Advanced Software Design and Implementation