Object Oriented Programming
Fall 2017

Course Information

Class Meets:
Monday, Wednesday, and Friday - 9:55-11:40am in Harney 148 (formerly Harney 235)

Web Page: https://cs514-f17.github.io

Instructor Information

Name: Sami Rollins
Email: srollins@cs.usfca.edu - Slack preferred
Office: Harney Science Center, Room 404
Hours: Monday 4:15-5:15pm, Wednesday and Friday 12:30-1:30pm and by appointment

TA Information

Name: Marilyn Cruz
Email: use Slack!
Office: HR 411/413
Hours: Tuesday and Thursday 4:30-6:00pm

Name: Ethan Wilcox
Email: use Slack!
Office: HR 411/413
Hours: Monday, Wednesday, Friday 2:15-3:15pm

You may also visit the CS Tutoring Center for help with this course.

Course Prerequisites

If you have been admitted to the CS Bridge program then you meet the prerequisites for this course. You should have completed the equivalent of one semester of an introductory programming class in any language. This courses uses Java, so if you studied a language other than Java you will need to be prepared to come up to speed quickly with Java syntax.

If you have significant experience programming in Java speak with the professor about the possibility of transferring to a more advanced course. You will need to provide the instructor with evidence that you have implemented a program of more than 2,000 lines of code that uses arrays, inheritance, external libraries, concurrency, web technologies, and contains complex logic.

Course Materials

There is no required text for this class, however it is recommended that you get an introductory Java book as a reference. The Java How to Program series by Deitel and Deitel is recommended.

Links to online resources, including notes, code samples, and external resources, will be posted on the Schedule page. Make sure to check the schedule early and often.

Course Announcements

Announcements will be posted on Slack. Questions about assignments and projects should be posted on Slack. Students are responsible for staying current on all course announcements.

Learning Outcomes

At the end of this course, successful students will be able to do all of the following:

Course Requirements

Homework Assignments

Weekly programming assignments will be due most weeks. You may be given class time to work on these assignments, allowing you to get help from the instructor. If you do not finish these assignments in class you will need to complete them on your own time. You may always seek help during office hours.

Laboratory Assignments

You will have three substantial laboratory assignments. It is expected that these assignments will take you two to three weeks to complete and you should work on them in parallel with your homework assignments. Labs are graded on two criteria: functionality and design. This course places significant emphasis on code quality and it is not sufficient to have a working solution. Functionality is worth 85% of the final lab grade and design is worth 15% of the final lab grade. By the functionality deadline your solution must pass all provided test cases in order for your solution to be eligible to receive any credit for design. If your solution passes all test cases, the instructor or TA will conduct a thorough code review and provide feedback on design improvements that must be completed by the design deadline. If you satisfactorily address all issues identified during code review then your solution will be eligible for the remaining 15% of the score. Points may be deducted for failing to address open issues. See the following for detailed information about the Laboratory Submission Procedure


You will have one large capstone project that will be completed in three releases during the last third of the semester. For the project, this course uses mastery learning. This means that each release must demonstrate mastery and be worthy of 100% before the next release may be attempted. Once functionality requirements are complete, the instructor or TA will meet with you for an in-person code review. You must make all changes required during code review, making sure that your solution still passes all functionality requirements, before your solution will be reviewed again. This process will repeat until your solution demonstrates mastery. You may resubmit your design for the next code review a maximum of once per week. By the final deadline during the finals week, you must demonstrate mastery for two of three releases and meet the functionality requirements for the third release. See the following for detailed information about the Project Submission Procedure


The exam portion of your grade will be based on two exams administered throughout the semester and one exam administered during the final exam period. Make sure to note the exam policy below. You are responsible for being in class on the day of the exam. Make-up exams will be given only in the case of a medical emergency verified by a doctor's note.

Participation and Quizzes

You are expected to attend class, participate in class discussion, and participate in online discussion on Slack. Pop quizzes may be administered any time. If you are not in class on the day of the quiz you will receive a 0 for the quiz.

Grade Breakdown

The final grade for this course will be calculated as follows:

10% Homework

15% Labs

25% Project (3 parts)

20% Midterm Exams (10% each)

20% Final Exam

10% Participation and Quizzes

Please note that this is a tentative breakdown and subject to change.

Exam Policy

If a student earns less than 60% on any two out of the three exams the student will get an automatic F for the class.

Project Policy

If a student does not (1) demonstrate mastery for two of three project releases and (2) meet the functionality requirements for release three the student will get an automatic F for the class.

Code Review Policy

An in-person code review will be required for all three project releases and may be required for any lab. A student who does not meet with the instructor for a code review in a timely manner will be given a 0 on the assignment in question. A student who is unable to explain his/her code and answer the instructor's questions about his/her code as expected may receive a deduction of up to 100%, resulting in a 0 on the assignment.

Letter Grades

Letter grades will be assigned according to the following scale:

A+ ≥100% B+ ≥87% C+ ≥77% D+ ≥67%
A ≥94% B ≥84% C ≥74% D ≥64%
A- ≥90% B- ≥80% C- ≥70% D- ≥60%
F < 60%
For example, you will receive a C letter grade if your grade is greater than or equal to 74% and less than 77%. Please note this scale is subject to change. See the Undergraduate Student Regulations for more information about letter grades and how they are translated into GPA.

Attendance Policy

Students are expected to be on-time to all classes. Attendance is mandatory for all exams, quizzes, labs, and exercises. Exam dates will be posted on the course schedule. Topics that are discussed in class but are not in the course notes or lecture notes, might be included on the midterms and final.

Late Policy

All deadlines and exam dates are firm. No late homeworks or quizzes will be accepted. Laboratory assignments must pass all test cases by the functionality deadline and all design changes must be made by the design deadline. Project releases may be submitted once per week until the last day of the final exam week and no more than one release may be submitted per week.

Exceptions to this policy are made only in the case of verifiable medical or family emergency. Extensions and makeup exams must be arranged PRIOR to the original deadline unless in case of extreme emergency (such as an emergency room visit).

Academic Honesty

All students are expected to know and adhere to the University of San Francisco's Academic Honor Code. Go to https://myusf.usfca.edu/academic-integrity/honor-code for details.

You must never represent another person’s work as your own. Any student may be asked to reproduce any of his/her work at any time. Failure to reproduce work in a timely manner will be considered academic dishonesty.

Copying answers or code from other students or sources during a quiz, exam, or for a project or homework assignment is a violation of the university’s honor code.This includes copying code or other material from the web, and having anyone other than yourself complete your assignments. It also includes working too closely with another student. Collaboration or discussion that results in the same or very similar code indicates that you have not placed enough independent work into your solution and is a violation of the honor code.

Flagrant or repeat violations of the honor code will result in an F in the course, a report to the University Academic Integrity Committee, and a report to the Dean.

At the discretion of the instructor, a less severe penalty may be imposed for minor or first offenses. This is at the sole discretion of the instructor and any violation may result in an F in the course.

Examples of honor code violations include but are not limited to:

Peer Tutoring Services

The CS Tutoring Center provides peer tutoring services and workshops for lower-division computer science courses, including CS 112 Introduction to Computer Science II. See http://tutoringcenter.cs.usfca.edu/ for more details.

The Learning and Writing Center (LWC) also provides assistance to students in their academic pursuits. Services are free to students and include individual and group tutoring appointments and consultations to develop specific study strategies and approaches. Please visit http://www.usfca.edu/lwc for more information.

Student Disability Services

If you are a student with a disability or disabling condition, or if you think you may have a disability, please contact Student Disability Services (SDS) within the first week of class to speak with a disability specialist. If you are determined eligible for reasonable accommodations, your disability specialist will send your accommodation letter to the instructor detailing your needs for the course. For more information, please visit http://www.usfca.edu/sds or call (415) 422-2613.