Last Updated: 2017-01-19 Thu 17:37

CS 211 / 211H: Object Oriented Programming

George Mason University

Spring 2016

1 Basic Information

1.1 Prerequisite

Grade of C or better in CS 112.

1.2 Instructors

Name Chris Kauffman Mark Snyder
Sections 002, 006 H01, 003, 005
Office ENGR 5341 ENGR 5346
Phone 703-993-5194 703-993-5624

1.3 Teaching Assistants

Name Email Role
Fardina Alam GTA
Maryam Arab GTA
Umang Desai GTA
Mingrui Han GTA
Yue Hao GTA
Parastoo Kamranfar GTA
Lubaba Tasneem GTA
Evan Belcher UTA
Andrew Huynh UTA
Sharon Jose UTA
Daniel Lacher UTA
Vincent Liu UTA
Sher Niazi UTA
Joseph Onifade UTA
Jason Thomas UTA
Phong Vo UTA

1.4 Lectures

# Day Time Location Professor
002 MW 12:00pm - 1:15pm IN 204 Kauffman
006 MW 3:00pm - 4:15pm IN 204 Kauffman
003 TR 12:00pm - 1:15pm DK 1006 Snyder
005 TR 3:00pm - 4:15pm ENGR 1101 Snyder
H01 TR 3:00pm - 4:15pm ENGR 1101 Snyder

1.5 Labs Meetings

All labs are in the Engineering Building. The Graduate Teaching Assistant leading each lab will be posted on the course web page.

# CRN Day ROOM Time GTA UTA Lec Prof.
205 11918 F ENGR 4457 08:30am-09:20am Mingrui Han Joseph Onifade, Sharon Jose 002 Kauffman
206 11030 F ENGR 4457 09:30am-10:20am Mingrui Han Sharon Jose, Phong Vo 002 Kauffman
207 11917 F ENGR 4457 10:30am-11:20am Yue Hao Joseph Onifade, Evan Belcher 002 Kauffman
208 13521 F ENGR 4457 11:30am-12:20pm Yue Hao Joseph Onifade, Jason Thomas 002 Kauffman
209 11357 W ENGR 4457 12:30pm-01:20pm Parastoo Kamranfar Joseph Onifade, Jason Thomas 003 Snyder
210 11031 W ENGR 4457 01:30pm-02:20pm Parastoo Kamranfar Joseph Onifade, Jason Thomas 003 Snyder
211 12455 W ENGR 4457 02:30pm-03:20pm Fardina Alam Vincent Liu (@ 2:45) 003 Snyder
212 13504 W ENGR 4457 03:30pm-04:20pm Fardina Alam Vincent Liu 003 Snyder
214 17762 R ENGR 5358 02:30pm-03:20pm Umang Desai Sher Niazi, Vincent Liu (@2:45) 006 Kauffman
218 17763 W ENGR 5358 03:30pm-04:20pm Maryam Arab Sharon Jose, Daniel Lacher 005 Snyder
219 17764 F ENGR 4457 12:30pm-01:20pm Lubaba Tasneem Phong Vo, Evan Belcher 005 Snyder
220 17765 F ENGR 4457 01:30pm-02:20pm Lubaba Tasneem Phong Vo, Evan Belcher 005 Snyder
221 17760 R ENGR 5358 12:30pm-01:20pm Umang Desai Jason Thomas, Vincent Liu 006 Kauffman
222 17761 R ENGR 5358 01:30-02:20pm Umang Desai Sher Niazi, Daniel Lacher 006 Kauffman
2H1 11358 W ENGR 5358 02:30-03:20pm Maryam Arab Daniel Lacher (@ 2:45) H01 Snyder

1.6 Course Materials


  • Required: Building Java Programs, 3rd ed. By Reges and Stepp. It comes with additional exercises that will be good practice.
  • Required: Lab Manual, free for download.


It is assumed you will have access to a computer with the ability to edit, compile, and run Java programs. Some university labs provide this ability; the first week of the course will cover how to set up your personal environment as well. If you have difficulty accessing a suitable environment, contact the course staff.

1.7 Communication

  • Piazza is the central site for our announcements, documents repository, and discussion board. The announcements and discussion board are part of the required reading for the course.
    • All instructors and TAs can view all material on Piazza
    • Do not e-mail course staff about programming problems; use the discussion board.
    • Use public posts on Piazza to discuss programming project requirements, labs, and other material related to the course.
    • When prompted by a TA, use private posts on Piazza to share portions of your code pertaining to your questions. Don't share your project code in public posts.
    • Refer to the Piazza main page for etiquette on what should be posted publicly versus privately.
    • Email course staff only for logistical issues such as meeting outside of office hours, missing lab/lecture, grading disputes, medical situations, etc. Email addresses are listed on Piazza (Resources → Staff).
  • BlackBoard is used for project submission and to post grades
  • Office Hours are listed for all Instructors and TAs on Piazza (Resources → Staff).

2 Course Description and Outcomes

2.1 Course Description

Thorough treatment of programming according to object-oriented principles. Introduces classes, interfaces, inheritance, polymorphism, and single dispatch as means to decompose problems. Covers intermediate programming techniques including error handling through exceptions, arrangement of source code into packages, and simple data structures. Intermediate debugging techniques and unit testing are covered.

2.2 Learning Outcomes

  1. An understanding of basic object-oriented (OO) programming concepts and principles.
  2. An ability to apply basic object-oriented principles and techniques in the development of software systems using a specific programming language.
  3. An ability to effectively develop software systems using both basic command line tools and sophisticated integrated development environments, and to understand the advantages and limitations of each.
  4. An ability to successfully perform debugging operations and techniques.
  5. An ability to perform software development in both individual and team environments.
  6. An understanding of programming-related references/resources available to software developers and the ability to use them effectively – both in ongoing projects and in the acquisition of new technical skills.
  7. An understanding of how acquired programming skills facilitate success in upper level CS courses and in various professional environments.

3 Coursework

3.1 Lectures

During lectures we will discuss programming concepts and instructors will provide demos of programming relevant to other course work. Programming labs will be for students to work on additional exercises and get immediate help from teaching assistants. In addition to attending the regular meeting times, you are strongly encouraged to visit the professor and teaching assistant(s) during office hours to further your understanding of the material: we are here to help you learn.

3.2 Textbook Readings

Readings from the textbook relevant to each lecture are listed in the schedule. You will increase your understanding of lectures by reading associated textbook sections ahead of time, though this is not assumed. We may provide additional reading material to supplement the textbook which will be posted on the course web page.

3.3 Labs

Labs meet once per week and attendance is required for quiz/task labs; lab "exercises" do not have a required attendance. Labs roughly alternate between Lab Exercises and Lab Quizzes/Tasks.

Associated with lab are readings from the Lab Manual posted online. It is assumed that students read the scheduled lab manual sections prior to each lab; doing so will make it relatively easy to complete the labs during the allowed time. This is one of our main sources of practice. If you don't practice, you won't succeed.

Lab Exercises

About half of labs will involve Lab Exercises. These are short sets of programming problems which are designed to be completed during the lab time so long as students have kept up with reading and lectures. Teaching Assistants will give a brief introduction to the problems and then be present to assist as students work on the exercises.

Lab exercises are open resource and open collaboration. Students may freely discuss how to solve the exercises with anyone, examine each other's code, assist one another in debugging, and employ any online or physical resources to complete the exercises. No penalties will be assessed for similar looking code on Lab Exercises. The goal is to experience and to learn.

Lab Quizzes and Tasks

About half of labs will involve either a Lab Quiz, a set of paper and pencil questions, or a Lab Task, a programming task on a computer. Lab Quizzes and Tasks are closed resource, no collaboration allowed. For Lab Tasks, students may use their own programming environment and submit their solutions to Blackboard by the end of the lab. No external resources may be used for Tasks.

Students will take the Quiz or Task in the lab room and be monitored by teaching assistants. All materials must be submitted by the end of your lab period according to the instructions associated with the assessment.

3.4 Programming Projects

Students will receive a number of programming projects during the semester. Each project will involve writing programs and answering questions about them to illustrate an understanding of course material.

Each programming project will have an "Honors Problem" which honor section (H01) students must complete. Other sections are not required to do these sections and will not receive any credit for completing them but are free to try. The normal projects will normally be scored out of 100 points, and earning 100 points would be a perfect score. The honors problem will be some additional amount of points. If a particular project had a 15 point honors problem, then they would need 115 points to get a perfect score. Disregard blackboard's "points possible" claims if it doesn't match your style of section.

3.5 Exams

There will be two midterm exams during the semester, during the regularly scheduled lecture time. There will also be a comprehensive final exam at the end of the semester. Refer to the schedule for dates of the exams.

4 Grading Policies

4.1 Graded Components

Final grades will be determined by scores obtained on the components below according to their associated weight.

Component Weight Policy
Labs 15% drop two lowest, regardless of type
Programming Projects (5-7) 40% no drops. all averaged together.
Midterm Exams (2) 20% 10% each.
Final Exam 25% must pass final (60%) to pass class.

If circumstances require it, the grading scale may be adjusted, generally in the students' favor.

4.2 Final Grade Determination

Final grades will be assigned without rounding according to the following criteria. It is a 10-point scale per letter grade, with the upper and lower 2% of each 10% earning a + or -.

Percent Grade Percent Grade Percent Grade Percent Grade
>= 98 A+ 89-88 B+ 79-78 C+ 69-60 D
97-92 A 87-82 B 77-72 C <60 F
91-90 A- 81-80 B- 71-70 C-    

4.3 Lab Exercise Grading

In order to recieve credit for completing Lab Exercises do the following.

  • Complete your program and pass the public tests that are provided.
  • Credit will be assigned on the proportion of tests that are passed, automatically. GTAs are not expected to figure out why your labs don't work; they just record the output of the tester for the code you submitted.
  • Submit your exercises as per the instructions in each lab, usually zipping and uploading to Blackboard.
  • Lab exercises may be completed and submitted after lab ends. Each lab lists the final deadline for submission, often during the following weekend.
  • No late submissions for Lab Exercises will be accepted. Missing the deadline results in 0 credit. (we do drop two lab grades overall, so this could be one of your drops if needed).
  • You may collaborate with other students in CS 211 to complete lab exercises and are encouraged to do so. Submitting identical code for exercises is acceptable so long as you understand how it works.
  • Attendance: You are encouraged to attend exercise labs physically as teaching assistants will provide help during lab periods. However, you are not required to attend lab to get credit for exercises. Full credit will be given so long as all test cases are passed in the submission.

4.4 Lab Quiz and Task Grading

In order to receive credit for lab quizzes and tasks, you must be present in your assigned lab and submit your work by the end of the lab period. No lab makeups will be given under any circumstances. Plan to attend all labs so that in the event that you miss a quiz, the resulting 0 score is dropped.

4.5 Project Grading

No collaboration is allowed on programming projects unless explicitly indicated in the project description. Utilize the discussion board and office hours of course staff if you have questions about the projects.

Project grading will usually be divided into two portions weighted 50% for each portion.

  1. Automatic Testing (50%): Public tests will be used to assess the correctness of programs. Running these tests while constructing your program will indicate exactly what your score on this portion will be.
  2. Manual Inspection (50%): Each project will include a checklist of features your programs should exhibit. These usually comprise things that cannot be easily checked via unit tests such as good variable name selection, proper decomposition of a problem into multiple functions or cooperating objects, overall design elegance, and proper asymptotic complexity. These features will be checked by graders and assigned credit based on level of compliance.

The policies for project submission are as follows.

  • Projects each have a deadline; no late work is accepted more than 48 hours after the deadline, and penalties for late work apply (see below). Work turned in more than 48 hours late doesn't count.
  • Each student starts the semester with three Day-Late Tokens. Whenever a student turns in a project late, tokens are automatically applied to the assignment.
  • if you run out of tokens, you can still turn in work up to 48 hours late, but a per-day penalty is assessed.
  • A "ceiling penalty" of 25% is assessed each 24-hour period entered after the deadline (when late-tokens are gone). For example, if you turn in work half a day late (one 24-hour period late), you can't earn higher than 75%.
  • Work turned in more than two 24-hour periods late will earn zero points and will only be inspected as a courtesy (no grade assigned) as time permits. To clarify, you can't use tokens and/or penalties to turn work in 3 days late; this would earn zero points, because it has missed the 48-hour-late hard deadline.
  • You can submit work to BlackBoard as many times as desired. Only the last valid submission will be graded, and all others are ignored. If you anticipate being rushed around the submission deadline, be sure to submit a version before the deadline as a backup, in case you find yourself only moments late in meeting a deadline, or your wifi goes out at the last moment.
  • GTAs grade the programming projects for the lab sections they teach.
  • On-time submissions will generally be graded and available a week from the 48-hour last-submission deadline, though exceptional circumstances may cause delays. Late submissions will be graded in as timely a fashion as schedules allow.
  • Be sure you actually turned in your work! We need .java files; .class files are worthless as a submission. If you tend to keep earlier versions in extra files, make sure you turned in the final product, as that is what will be graded.
  • BACK UP your work, always! Without fail, each semester multiple students will lose, drown, crack, reformat, magnetize, or generally destroy their computers at the worst possible time. Keep everything somewhere backed up, such as a DropBox or Google Drive folder, so that this doesn't happen to you.

4.6 Exam Policies and Grading

  • Your Mason ID is required for tests and final exams.
  • Missing an exam results in a zero score and make-up exams will be considered only in situations involving death, near death, and documented dangerous diseases. Proof of such circumstances will be required for a make-up to be considered.
  • Failing the final exam will result in an F in the entire course. Failing is defined as receiving less than 60% of the available points on the exam.

4.7 Grading Disputes

Address grading issues with the grader first via a direct email or in person. Email address for staff are at the top of the syllabus and on Piazza under Resources → Staff.

  • Projects: Email your lab GTA
  • Lab work: Email your lab GTA
  • Exams: Email your Professor

This should be done respectfully either in person or via e-mail. If it is not possible to reach a resolution, the professor may be contacted by the grader to resolve the dispute.

If you have not initiated contact within 1 week after a grade being available, the chance to contest the grade has closed.

5 Academic Integrity

PRIME DIRECTIVE: Be able to explain your own work including homework code and exam solutions. The work you submit should be the product of your own effort and reflect your personal understanding.

Nearly all cheating in programming can be averted by adhering to the PRIME DIRECTIVE. Students may be asked at any time to explain code or exam solutions they submit. Inability to do so will be construed as evidence of misconduct. More specific guidelines are given below.

5.1 Thou Shalt Not

Unless otherwise specified, all assessments in this course are individual efforts involving no unfair collaboration. For the purposes of this course, the following actions constitute scholastic misconduct (cheating) and will be reported.

  • Directly copying someone else's solution to an assessment problem, including student solutions from a previous semester
  • Directly copying an answer from some outside source such as the Internet or friend for a homework problem
  • Making use of an Instructor Solution manual to complete problems
  • Paying someone for a homework solution or submitting someone else's work as your own
  • Posting solutions to any web site including public posts to our course web site
  • Collaborating or copying someone else's answer during an exam
  • Aiding or abetting any of the above
  • Witnessing any of the above and failing to report it to an instructor immediately

Refer to the following links for additional information.

5.2 Penalties

Any instance of misconduct that is detected will be referred to the honor board and will likely result in failing the course. Be advised that the teaching team will be employing electronic means to detect plagiarism. This is extremely easy with computer code so keep your nose clean.

5.3 Fair Collaboration

The purpose of this course is to learn about programming and learning from one another is a great help. To that end, the following actions will NOT be considered cheating in this course.

  • Collaboration on Lab Exercises is allowed and encouraged. These are a great opportunity to help one another on work that counts towards your final grade. Just make sure that you understand any solutions you submit as per the PRIME DIRECTIVE.
  • Reading and working together on the exercises contained in the Lab Manual with other students. The manual contains many good readings and exercises for unrestricted group work.
  • Outside coding practice sites such as Coding Bat and PracticeIt! can be done in unrestricted groups for practice.
  • If you are unsure whether a given collaboration is fair or not, stop the activity and clear it with your instructor.

At all times keep the PRIME DIRECTIVE in mind when studying with another student. The above collaborations should be limited to getting someone over a hurdle, not carrying them across the finish line.

6 General Policies

Students are expected to maintain a high level of civility for all participants in and out of class meetings. This includes respecting participants of all genders, ethnicities, and social backgrounds. Harassment of any type will not be tolerated and failure to behave in a respectful manner will result in referrals to University Counseling or the Office of Student Judicial Affairs. Any instances of sexual harassment will be reported to the Office of Equal Opportunity according the following policy:

Observance of religious events will be accommodated for students of any faith. Some policies, such as late-day tokens, are intended to be used at your disgression for flexibility of schedule and deadlines - using tokens is assumed to be the solution to meeting your other obligations for any particular day.

All possible accommodations will be made for students with disabilities. Please contact Disability Services ( and the instructor for further information.

7 Section Specific Policies

7.1 Additional Policies for Prof. Kauffman's Sections

Attendance Policy

Bonus credit will be awarded based on participation in class discussions in lecture. Students may elect to sit in the first few rows of the room ("hot seats") and answer questions. Reasonable effort on answering questions in class will garner class participation credit. Occasionally there may be "challenges" issued which involve work outside class which also earn participation credit.

Participation points will be tracked over the semester and the highest point earner will receive a 3% bonus to their overall score in the course. All other students will receive a bonus proportional to the highest point winner. For example, someone tied with the highest point scorer will also receive a 3% bonus while someone with half the participation points will receive a 1.5% bonus.

Open Resource Exams

Unless otherwise specified, Prof. Kauffman's exams will be open resource: notes, textbook, editor, compiler, and any code the student finds useful is allowed to be used. No communication is allowed during the exam (no email/texting/chat), no Internet searches are allowed, and no unauthorized web sites may be visited. If in doubt, ask about specifics before or during the exam.

7.2 Additional Policies for Prof. Snyder's Sections

Attendance Policy

Attending both lecture and lab are quite to your benefit. Test or exam questions are likely to be based on materials that are only shared in these venues. In lieu of the hot-seat approach to extra credit described in Prof. Kauffman's sections, there will be extra credit opportunities on exams that will draw from in-class experiences and also total a 3% bonus to overall grades.


The exams in Prof. Snyder's sections will be closed resource: no notes, textbooks, or computers will be allowed.

Honors Section Differences (Snyder)

During some lectures, additional material will be mentioned with some reading associated with it. Students in H01 are expected to do these additional readings and master those topics as they may appear on the H01 tests and final exams.

Each programming project will have an "Honors Problem" which honors students must complete. These problems may reflect the additional topics covered in lecture and often be more difficult than other portions of the project.

Grading projects for honors students will be out of total points available including the honors section: each project will have 100 points plus an honors section, frequently worth up to 20 points. In such cases honors students will be scored e.g. as X / 120 for a score of X on a project with 120 points. Late projects will have the standard -25 pts deducted per day late.

  • An honors student who turns a project in on time and receives a 99 on it will get 99/120 = 82.5% for the project.
  • If the same student turns in their work 1 day late without using a late token, they will receive min(99/120, 95/120) = 95/120 = 79.2%.

Author: Mark Snyder, Chris Kauffman (,
Date: 2017-01-19 Thu 17:37