Requirements (see class blackboard/website for additional details):