CS 211: Object Oriented Programming
George Mason University Department of Computer Science
Fall 2019
  1. Course Basics

    Instructor:

    Name: Ivan Avramovic
    Email: iavramo2-at-gmu.edu
    Hours: 1:30-2:30pm Mon/10:30-11:30am Tue
    Office: 4609 Engineering

    Assistants:

    GTA:Soumita Das(sdas22-at-gmu.edu)
    Xu Han(xhan21-at-gmu.edu)
    Semhar Mengisteab(smengis-at-gmu.edu)
    Mohammad Rahman(mrahma23-at-gmu.edu)
    Ashwin Ravishankar(aravisha-at-gmu.edu)
    Jin Zhou(jzhou23-at-gmu.edu)

    UTA:Adrian Crespo(acrespos-at-gmu.edu)
    Zahin Faruque(zfaruqu-at-gmu.edu)
    Yumna Fatima(yfatima-at-gmu.edu)
    Mustafa Ghulam Hussain(mghulamh-at-gmu.edu)
    Ram Kammari(rkammari-at-gmu.edu)
    Vandana Keshavamurthy(vkeshava-at-gmu.edu)
    Blake Khan(akhan64-at-gmu.edu)
    Bonmyeong Koo(bkoo3-at-gmu.edu)
    Bakr Marouf(bmarouf-at-gmu.edu)
    Benjamin Ong(bong-at-gmu.edu)
    Sarad Pant(spant2-at-gmu.edu)
    Raymond Phan(rphan2-at-gmu.edu)
    Ayman Slamani(aslamani-at-gmu.edu)
    Javier Talavera(jtalaver-at-gmu.edu)
    Apoorva Thumma(athumma-at-gmu.edu)
    Jimmy Tran(jtran51-at-gmu.edu)

    Prerequisites: CS112 (C or better) and access to a Java-capable computer
    Format: Lecture plus weekly lab
    Lectures:

    3:00-4:15pm
    SectionDaysTimesLocation
    005Tue/Thu12:00-1:15pm1006 David King Hall
    006Mon/Wed1006 David King Hall

    Textbooks:

    GMUCS 211 Lab Manualavailable for free download from https://cs.gmu.edu/~marks/211/textbook/
    zyBooksProgramming in Javaavailable online at https://learn.zybooks.com/ (access using the sign-in code GMUCS211AvramovicFall2019)
    (Optional)Reges and SteppBuilding Java Programs, 3rd ed.see online at https://practiceit.cs.washington.edu/

    Webpage: https://cs.gmu.edu/~iavramo2/classes/cs211f19.html
    Piazza: Piazza will be used for all official announcements and online discussion; any information discussed on Piazza will be assumed to be known to students.

    • Course schedule, announcements discussion. GTA/UTA contacts and office hours will be on Piazza too.
    • 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.
    • 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 above and on Piazza.
    Blackboard: Blackboard will be used for course slides, assignments (including submissions), and grades.

  2. Course Information

    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.

    Outcomes

    1. An understanding of basic object-oriented programming concepts and principles
    2. An ability to apply basic object-oriented principles and techniques in the design and development of software systems using a specific programming language.
    3. An ability to effectively use both basic command line tools and sophisticated integrated development environments, and to understand the benefits and limitations of each.
    4. An ability to successfully perform debugging operations and techniques.

  3. Coursework

    zyBooks: online textbook with practice problems; weekly deadlines for completing the practices are checked automatically.
    Labs:

    • Exercise: programming assignment; open resources; collaboration/group work allowed; several days to submit.
    • Quiz: pencil and paper; closed resources; individual; due same-day during lab.
    • Task: computer assignment; closed resources; individual; due same-day during lab.

    Projects: programming assignment; individual work; possibly more than a week to complete.
    Exams: individual work; in-class.

  4. Grading Procedures

    Grade Distribution

    MaterialWeightDrop policy
    zyBooks5%lowest 15 subsections
    Labs (weekly)10%lowest three
    Programming projects (5)40%none
    Midterm exams (2)20%-
    Final exam25%-

    Grading Policies

    • Grades within a category (i.e. midterms, projects, labs) are weighted equally.
    • Students must show their Mason ID card when taking exams.
    • By department policy, the student must pass the final or the weighted average of all three exams must be a passing grade (≥ 60) in order for a student to pass the course.
    • The final exam is cumulative; a high final exam score dominates (replaces) lower scores on one or both of the midterms.
    • Challenging of any grade must occur within a week of when the graded assignment has been returned.
    • Any number of resubmissions are allowed (the most recent is used), however a resubmission turned in after the deadline will be considered a late submission.
    • Lab attendence is mandatory; for lab exercises which do not need to be submitted during lab, attendence can impact one point (out of 10) of each assignment; a grace of up to 3 missed points is allowed (this is independent of dropped lab scores and late tokens).
    • Lab exercise grading is fully automated. Quizzes may be hand-graded. Lab task and project grading is partially automated. Even when manually graded, code which does not compile will receive a zero in most cases.
    • Absences are absorbed by the drop policy - in general, make-ups are not allowed except on exams (provided a valid excuse).
    • Assignments are typically due at midnight on the listed due date.
    • Late work can be mitigated by emergency tokens (see below).

    Emergency Tokens

    • Every student begins the semester with a non-replenishing allotment of three emergency tokens.
    • For every emergency token, a submitted assignment (programming projects and lab exercises) can be submitted a day (24 hours) late without penalty. An assignment can be submitted two days late at the cost of two tokens.
    • No assignment will be accepted more than 2 days late (i.e. if 3 tokens are available, at most 2 of them can be used on the assignment).
    • Without applying tokens, a one day late assignment can receive a maximum score of 75%, while a two day late assignment can receive a maximum score of 50%. Beyond that an assignment receives a zero, regardless of tokens. The score is a score cap rather than a penalty (a one day late assignment which would have recieved an 85% would still get a 75%).
    • Tokens are applied in the order that assignments are submitted, such that projects have priority over labs (tokens are first applied to projects and then to labs if there are any remainng); a student cannot pick and choose where to use tokens to maximize impact.
    • Tokens are use-it-or-lost it; if a student has tokens remaining at the end of the semester, nothing happens with them.

    Grading Scale

    Grade A+AA- B+BB- C+CC- DF
    max 9791 898781 797771 6959
    min 989290 888280 787270 60

    Tips

    • Make backups, because the unexpected happens, and cannot be used as an excuse to get an extension.
    • Submission times are automatically recorded by Blackboard, and there's no distinction between a tiny bit late and nearly a day late - plan ahead to make sure that your submission is on time.
    • To receive a grade, the submission must be gradable. This means submitting .java source rather than compiled .class files or word documents containing the source. It also means that the code must be submitted on Blackboard rather than simply saved.

  5. Honor Code

    Unless specific instructions are given to the contrary, programming assignments are an individual effort, no group work is allowed. In addition to code, this includes the sharing of test cases, pseudocode, or approaches, receiving assistance in debugging code, as well as the use of external Internet sites.

    Both the GMU Honor Code and the CS Department Honor Code apply in this class. Any use of a direct contribution on any program, homework, quiz, or exam will be reported as a violation of the honor code.

  6. Special Accommodations

    Students who have a right to accommodations due to disabilities or other conditions should discuss this with the instructor as soon as possible. Accommodations will follow the recommendations of the University's Office of Disability Services.

  7. Schedule

    WeekDateTopic(s)Lab Text readingzyBooks readingLabNotes
    week 18/26-9/1Introduction; Basics; Flow control1,21-3Exercise-1
    Sun, Sep 11-3 due
    week 29/2-9/8Arrays; Input/Output3-54,5Exercise-2
    Mon, Sep 2E1 dueLabor Day, no class
    Fri, Sep 64,5 due
    week 39/9-9/15Classes; Objects; Methods; Fields66,7Exercise-3
    Mon, Sep 9E2 due
    Fri, Sep 136,7 due
    Sun, Sep 15P1 due
    week 49/16-9/22Command line args; Packages; Javadocs11,138Quiz-4
    Mon, Sep 16E3 due
    Fri, Sep 208 due
    week 59/23-9/29Task-5
    Mon, Sep 23Review, sec 006
    Tue, Sep 24Review, sec 005
    Wed, Sep 25Midterm 1, sec 006
    Thu, Sep 26Midterm 1, sec 005
    week 69/30-10/6Inheritance; Polymorphism; Dynamic dispatch79,10Exercise-6
    Fri, Oct 49,10 due
    week 710/7-10/13Abstract classes; Interfaces; Enums8,911Exercise-7
    Mon, Oct 7E6 due
    Fri, Oct 1111 due
    Sun, Oct 13P2 due
    week 810/14-10/20Exceptions; Unit testing10,1212Exercise-8
    Mon, Oct 14Columbus Day, no class
    Tue, Oct 15E7 dueMonday sections meet
    Fri, Oct 1812 due
    week 910/21-10/27Generics1413Exercise-9
    Mon, Oct 21E8 due
    Fri, Oct 2513 due
    Sun, Oct 27P3 due
    week 1010/28-11/3Quiz-10
    Mon, Oct 28E9 due
    Tue, Oct 29P3 due
    Wed, Oct 30Review, sec 006
    Thu, Oct 31E9 dueReview, sec 005
    week 1111/4-11/10Collections, Lists & Queues14Task-11
    Mon, Nov 4Midterm 2, sec 006
    Tue, Nov 5Midterm 2, sec 005
    Fri, Nov 814 due
    Sun, Nov 10P4 due
    week 1211/11-11/17Recursion15, A215Exercise-12
    Tue, Nov 12P4 due
    Fri, Nov 1515 due
    week 1311/18-11/24Sort & search1616Exercise-13
    Mon, Nov 18E12 due
    Fri, Nov 2216 due
    Sun, Nov 24P5 due
    week 1411/25-12/1
    Mon, Nov 25E13 due
    Tue, Nov 26P5 due
    Wed-Fri, Nov 27-29Thanksgiving Break, no class
    week 1512/2-12/8Anonymous classes; Lambda functions; Regular ExpressionsA1Quiz-15
    Wed, Dec 4Review, sec 006
    Thu, Dec 5Review, sec 005
    exams12/9-12/17
    Thu, Dec 12Final exam, sec 005, 10:30am-1:15pm
    Mon, Dec 16Final exam, sec 006, 1:30-4:15pm