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 |
rcarver@cs.gmu.edu | kauffman@cs.gmu.edu | msnyde14@gmu.edu | |
Office | ENGR 5318 | ENGR 5341 | ENGR 5346 |
Phone | 703-993-1550 | 703-993-5194 | 703-993-5624 |
GTAs:
Rajhersh Patel | rpatel17@gmu.edu |
Yue Hao | yhao3@gmu.edu |
Ruoxi Li | rli7@gmu.edu |
Thabet Kacem | tkacem@gmu.edu |
Phi Hung Le | ple13@gmu.edu |
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
- Textbook
- 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.
- Computing
- 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
- An understanding of basic object-oriented (OO) programming concepts and principles.
- An ability to apply basic object-oriented principles and techniques in the development of software systems using a specific programming language.
- 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.
- An ability to successfully perform debugging operations and techniques.
- An ability to perform software development in both individual and team environments.
- 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.
- 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.
- 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.
- 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: http://universitypolicy.gmu.edu/1202gen.html
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 (http://ods.gmu.edu/) 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%.