Last Updated: 2015-02-26 Thu 10:49

CS 211 / 211H: Object Oriented Programming

George Mason University

Spring 2015

1 Basic Information

1.1 Prerequisite

Grade of C or better in CS 112.

1.2 Instructors

Name Richard Carver Chris Kauffman Mark Snyder
Sections 001 002, 004 003, H01
Office ENGR 5318 ENGR 5341 ENGR 5346
Phone 703-993-1550 703-993-5194 703-993-5624


Rajhersh Patel
Yue Hao
Ruoxi Li
Thabet Kacem
Phi Hung Le

See the course Piazza site for contact info for all TAs.

1.3 Lectures

# Day Time Location Professor
001 TR 10:30am - 11:45am Music Theater Building 1005 Carver
002 MW 12:00pm - 01:15pm Exploratory L004 Kauffman
003 TR 12:00pm - 01:15pm Innovation 132 Snyder
004 TR 03:00pm - 04:00pm Robinson B104 Kauffman
H01 TR 10:30am - 11:45am Engineering 1107 Snyder

1.4 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 GTA to add as instructor Lec Day ROOM Time Lecture Prof.
201 11396 Rajhersh Patel 001 R 4457 12:30 pm-01:20 pm Carver
202 11838 Rajhersh Patel 001 R 4457 01:30 pm-02:20 pm Carver
203 11397 Yue Hao (attend @ rm. 5358) 001 R 4457 02:30 pm-03:20 pm Carver
204 17724 Rajhersh Patel 001 R 4457 03:30 pm-04:20 pm Carver
205 12710 Ruoxi Li 002 R 5358 11:30 am-12:20 pm Kauffman
206 11398 Ruoxi Li 002 R 5358 12:30 am-01:20 pm Kauffman
207 12709 Ruoxi Li 002 R 5358 01:30 am-02:20 pm Kauffman
208 17725 Yue Hao 002 R 5358 02:30 am-03:20 pm Kauffman
210 11399 Yue Hao 003 R 1505 01:30pm - 02:20pm Snyder
212 17704 Phi Hung Le 003 R 1505 02:30pm - 03:20pm Snyder
213 17721 Phi Hung Le 003 R 1505 03:30pm - 04:20pm Snyder
214 17722 (cancelled) 004 F 4457 08:30am - 09:20am Kauffman
215 17728 Kacem Thabet 004 F 4457 09:30am - 10:20am Kauffman
216 17729 Kacem Thabet 004 F 4457 10:30am - 11:20am Kauffman
217 17731 Kacem Thabet 004 F 4457 11:30am - 12:20pm Kauffman
2H1 11840 Yue Hao H01 R 5358 03:30pm - 04:20pm Snyder

1.5 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: Sections will be posted online on the course Piazza site for free 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 and the first week of the course will cover how to set up your personal environment. If you have difficulty accessing a suitable environment, contact the course staff.

1.6 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.
    • 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 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. 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.

Lab Quizzes and Tasks

The other 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 the 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 course 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
Lab Exercises 5%
Lab Quizzes & Tasks 10%
Programming Projects (7) 40%
Midterm Exams (2) 20%
Final Exam 25%

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.

  • You must attend your assigned lab section and be present for attendance.
  • Complete your program and pass the public tests that are provided.
  • Credit will be assigned on the proportion of tests that are passed.
  • Submit your exercises as per the instructions in each lab, usually zipping and uploading to Blackboard.
  • Lab exercises may be completed submitted after lab ends so long as you have attended. 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.
  • Failing to attend lab will result in a 0 for that week's lab exercises.

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. The lowest Quiz or Task score for the semester will be dropped. 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.
  • 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 graded 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.
  • You can submit work to BlackBoard as many times as desired. Only the last 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.
  • GTAs grade the programming projects for the lab sections they teach.
  • On-time submissions will generally be graded and available a week from submission, 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 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 receiving a grade, 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 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 Additional 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.

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. Carver's and 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 total a 3% bonus to overall grades.

Open Resource Exams

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

7.3 Honors Section Differences (Snyder)

The honors section (H01) will discuss more advanced topics than other sections of CS 211. Approximately 15% more work will be involved.

H01 will move through lecture material more quickly and explore additional topics relevant to CS. Students in H01 are expected to keep up with these additional topics as they may appear on the H01 tests and final exams.

Each programming project will have an "Honors Problem" which H01 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 H01 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 as X / 120 for a score of X. Late projects will have the standard -25 pts deducted per day late.

  • An H01 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, Richard Carver (,,
Date: 2015-02-26 Thu 10:49