Java Project with different programming patterns for Advanced Software Engineering course