CS 211: Object Oriented Programming
George Mason University
Department of Computer Science

Fall 2020
  1. Course Basics


    Name: Tessema Mengistu (PhD)
    Email: tmengis-at-gmu-dot-edu
    Webpage: https://cs.gmu.edu/~tmengis/courses/FA20/CS211Fall20.html
    Hours: MW 11:00 AM - 12:00 PM or by appointment
    Office: Nguyen Engineering Building, 2703

    Name: Socrates Dimitriadis (PhD)
    Email: sdimitr-at-gmu-dot-edu
    Webpage: https://cs.gmu.edu/~sdimitr
    Hours: TR 3-4 PM or by appointment
    Office: Blackboard Ultra

    Name: Brian Hrolenok (PhD)
    Email: hrolenok-at-gmu-dot-edu
    Webpage: https://cs.gmu.edu/~hrolenok
    Hours: TR 1:30-2:30 PM or by appointment
    Office: Blackboard Ultra

    Graduate Teaching Assistants:

    Name: Xu Han
    Email: xhan21@
    Hours: TBA

    Name: Jonathan Mbuya
    Email: jmbuya@
    Hours: TBA

    Name: Mohammad Rahman
    Email: mrahma23@
    Hours: TBA

    Name: Biao Xie
    Email: bxie@
    Hours: TBA

    Name: Jin Zhou
    Email: jzhou23@
    Hours: TBA

    Undergraduate Teaching Assistants:


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

    Sec 001MW3:00 pm - 4:15 pmOnline
    Sec 003TR10:30 am - 11:45 amOnline
    Sec 006MW1:30 pm - 2:45 pmOnline
    Sec H02MW1:30 pm - 2:45 pmOnline




    GMUCS 211 Lab Manualavailable for free download from https://cs.gmu.edu/~marks/211/textbook/
    zyBooksProgramming in Javaavailable online at https://learn.zybooks.com/ (Subscription using code GMUCS211Fall2020 is $58. Be aware that the price at GMU Bookstore might be higher.)
    (Optional)Reges and SteppBuilding Java Programs, 3rd ed.see online at https://practiceit.cs.washington.edu/

    Blackboard: Blackboard will be used for all official announcements, course slides, assignments (including submissions), and grades.

    Piazza: Piazza will be used for 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.
  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.


    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.

    • Lab submissions: Programming exercises during recitation(lab) sessions; collaboration/group work allowed;same date as the recitation(lab) sessions.
    • Exercise: programming assignment; open resources; collaboration/group work allowed; several days to submit.
    • Quiz: closed resources; individual; online (you need Respondus browser lockdown installed to take quizzes. Please refer here about respodus browser lockdown). You need to have a working webcam and microphone as well.

    Programming Projects: programming assignment; individual work; possibly more than a week to complete.
    Exams: individual work; online (you need Respondus browser lockdown installed to take exams. Please refer here about respodus browser lockdown). You need to have a working webcam and microphone as well.

  4. Grading Procedures

    Grade Distribution

    MaterialWeightDrop policy
    zyBooks5%lowest 15 subsections
    Lab Submissions and Quizzes5%
    Weekly Exercises (9)20%lowest Two
    Programming projects (5)25%none
    Midterm exam (2) 20%-
    Final exam25%-

    Grading Policies

    • Grades within a category (i.e. midterms, projects, labs) are weighted equally.
    • Students must have Respondus Browser locakdown installed before taking any quiz or 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 exercise grading is fully automated. Quizzes may be hand-graded. 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 ( under very special circumstances).
    • Assignments are typically due at midnight on the listed due date.
    • Late submission policy (up to 48 hours) is as follows: <=24 hours with 10% off, >24 hours &&<=48 hours with 25% off, > 48 hours will receive 0. For example, if you are late by 10 hours and you get 90 on the assignment, your final points will be 81. Submission times are automatically recorded by Blackboard, and there is no distinction between a minute late and a day late. Please plan ahead to make sure that your submission is on time. Taking backups regularly is highly recommended.

    Grading Scale

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


    • Take backups regularly, 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 108/24-08/28Introduction; Basics; Flow control1,21-3Exercise-1
    Sun, Aug 301-3 due
    week 208/31-09/04Arrays; Input/Output3-54,5Exercise-2, Project 1
    Mon, Aug 31E1 due
    Sun, Sep 064,5 due
    week 309/08-09/11Classes; Objects; Methods; Fields66,7Exercise-3
    Mon, Sep 07NO class - Labor Day
    Tue, Sep 08E2 due
    Sun, Sep 136,7 dueP1 due
    week 409/14-09/18Command line args; Packages; Javadocs11,138,9
    Mon, Sep 14E3 due
    Wen, Sep 16Quiz 1
    Sun, Sep 208,9 due
    week 509/21-09/25Project 2
    Mon/Tue, Sep 21/22Mid Term 1 - Review
    Wed/Thu, Sep 23/24Midterm 1
    Sun, Sep 27
    week 609/28-10/02Inheritance; Polymorphism; Dynamic dispatch
    Sun, Oct 04 10 due
    week 710/05-10/09Abstract classes; Interfaces; Enums
    Mon, Oct 05E4 due
    Sun, Oct 11 11 dueP2 due
    week 810/12-10/16Exceptions; Unit testing10,1212Exercise-6, Project 3E5 due
    Sun, Oct 1812 due
    week 910/19-10/23Generics
    Mon, Oct 19E6 due
    Wen/Thu, Oct 21/22Quiz 2
    Sun, Oct 2513 dueP3 due
    week 1010/26-10/30Project 4
    Mon/Tue, Oct 26/27Mid Term 2 - Review
    Wed/Thu, Oct 28/29Midterm 2
    Sun, Nov 01
    week 1111/02-11/06Collections, Lists & Queues14Exercise-7
    Tue, Nov 03NO class - Election Day
    Sun, Nov 0814 due
    week 1211/09-11/13Recursion15, A215Exercise-8
    Mon, Nov 09E7 due
    Sun, Nov 1515 dueP4 due
    week 1311/16-11/20Sort & search1616Exercise-9, Project 5
    Mon, Nov 16Quiz 3E8 due
    Sun, Nov 2216 due
    week 1411/23-11/24Anonymous classes; Lambda functions; A1
    Mon, Nov 23E9 due
    Nov 25 - Nov 29NO class - Thanksgiving
    week 1511/30-12/05Anonymous classes; Lambda functions; A1
    Mon, Nov 30P5 due
    Wed/Thu, Dec 02/03Final Exam Review
    Exam week12/07-12/11Final Exam (time TBD)