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

Fall 2021
  1. Course Basics

    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.

    Prerequisites: CS 112 (C or better)

    Format: Lecture plus weekly lab


    Name: Dr. Socrates Dimitriadis
    Email: sdimitr@gmu.edu
    Webpage: https://cs.gmu.edu/~sdimitr
    Hours: Mondays 3-5 PM
    Office: ENGR 4508

    Name: Dr. Brian Hrolenok
    Email: hrolenok@gmu.edu
    Webpage: https://cs.gmu.edu/~hrolenok/
    Hours: Mondays, Wednesdays 4:30-5:30pm
    Office: ENGR 4708

    Graduate Teaching Assistants:

    Name: Dhiman Goswami
    Email: dgoswam@gmu.edu
    Hours: TBD
    Office: TBD

    Name: Seyed Hooman Mostafavi
    Email: smostaf6@gmu.edu
    Hours: TBD
    Office: TBD

    Name: Michael Solah
    Email: msolah@gmu.edu
    Hours: TBD
    Office: TBD

    Name: Weisen Zhao
    Email: wzhao9@gmu.edu
    Hours: TBD
    Office: TBD

    Name: Liuchuan Yu
    Email: lyu20@gmu.edu
    Hours: TBD
    Office: TBD


    001MW3:00 pm - 4:15 pmHrolenokENGR 1101
    002MW1:30 pm - 2:45 pmHrolenokENGR 1101
    003MW9:00 am - 10:15 amDimitriadisEXPL L004
    004MW10:30 am - 11:45 amDimitriadisPLANET 129
    H02MW1:30 pm - 2:45 pmHrolenokENGR 1101


    Section (Lab / Lec)DayTimeInstructorLocation
    201 / 001R8:30amTBDIN 129
    202 / 001R9:30amTBDIN 327
    203 / 001R10:30amTBDENGR 5358
    204 / 001R11:30amTBDENGR 4457
    209 / 003W1:30pmTBDENGR 1505
    210 / 003W2:30pmTBDENGR 1505
    212 / 003W12:30pmTBDENGR 1505
    213 / 004F2:30pmTBDENGR 5358
    221 / 002W8:30amTBDENGR 1505
    223 / 002W9:30amTBDENGR 1505
    224 / 002W10:30amTBDENGR 1505
    225 / 002W11:30amTBDENGR 4457
    226 / 004F12:30pmTBDENGR 1505
    227 / 004F1:30pmTBDENGR 5358
    228 / 004F11:30amTBDENGR 1505
    2H2 / H02W12:30pmTBDENGR 4457


    requiredzyBooksObject-Oriented Programming in JavaAvailable online at zyBooks
    1. Sign in or create an account at learn.zybooks.com
    2. Enter zyBook code GMUCS211Fall2021
    3. Subscribe
    A subscription is $52.20 (includes a 10% discount, original price is $58).
    The discount is not available through third-party sites like GMU Bookstore, etc.
    requiredGMUCS 211 Lab ManualAvailable for free download from https://cs.gmu.edu/~marks/211/textbook/
    optionalReges and SteppBuilding Java Programs, 3rd ed.See online at https://practiceit.cs.washington.edu/

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

    Piazza: Piazza will be used for all official announcements, online discussion and Q&A; any announcements made on Piazza will be assumed to be known to students.

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

    Projects: programming assignments; individual work; 2-3 weeks to complete.
    Labs: in-lab assignments, must complete during lab session:

    • Exercise: Open, collaborative problem solving
    • Quiz: Paper/pencil assessment, closed resource
    • Task: Programming assessment, closed resource, individual work

    Exams: individual work; paper-based and/or computer-based programming tasks and multiple/short-answer questions
    Readings: online textbook with practice problems; weekly deadlines; automated grading
    Class participation: it varies by instructor

  3. Grading Procedures

    Grade Distribution

    CourseworkWeightDrop policy
    Readings3%lowest 15 subsections
    Labs12%lowest two
    Midterm Exam20%none (but see Grading Policies below)
    Final Exam25%must pass final to pass the course (see Grading Policies below)

    Grading Policies

    • Grades within a category (i.e. midterms, projects, labs) are weighted equally.
    • In case of online quizzes, tests, exams, students must have Respondus Browser lockdown installed.
    • 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 grading is fully automated. Projects and Exercises grading is partially automated.
    • 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 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 20% 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. Saving 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


    • Save backups regularly because the unexpected happens and cannot be used as an excuse to get an extension. Save backups on a cloud service because the local file system timestamp is not acceptable.
    • 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.

  4. 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.

  5. 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.

  6. Schedule

    WeekDateLecture topic(s)Lab Text readingzyBooks readingHomework dueLab activity
    week 18/23-8/27Introduction; Basics; Control Flow1,21,2,3L1 - Exercise
    Fri, 8/27ZY 1,2,3
    week 28/30-9/3Arrays; Input/Output; Files3-54,5L2 - Quiz
    Fri, 9/3ZY 4,5
    week 39/6-9/10Classes; Objects; Methods; Fields66,7L3 - Exercise
    Mon, 9/6No Monday Classes (Labor Day)
    Fri, 2/12ZY 6,7; P1
    week 49/13-9/17Command line args; Packages; Javadocs11,138,9L4 - Task
    Fri, 2/19ZY 8,9
    week 59/20-9/24Inheritance; Polymorphism; Dynamic dispatch710L5 - Quiz
    Fri, 9/24ZY 10
    week 69/27-10/1Abstract classes; Interfaces; Enums
    8,911L6 - Exercise
    Fri, 3/5ZY 11; P2
    week 710/4-10/8Midterm
    L7 - Quiz
    Mon, 10/4Review
    Wed, 10/6Exam
    week 810/11-10/15Exceptions; Unit testing10,1212L8 - Quiz
    Mon, 10/11No Class (Fall break)
    Tue, 10/12Monday Classes Held (Fall break)
    Fri, 10/15ZY 12
    week 910/18-10/22Generics
    1413L9 - Exercise
    Fri, 10/22ZY 13; P3
    week 1010/24-10/29Collections, Lists & Queues14L10 - Quiz
    Fri, 10/29ZY 14
    week 1111/1-11/5Recursion15, A215L11 - Quiz
    Fri, 11/5ZY 15
    week 1211/8-11/12Sorting & Searching1616L12 - Exercise
    Fri, 11/12ZY 16; P4
    week 1311/15-11/19Anonymous classes; Lambda functionsA1
    L13 - Task
    week 1411/22-11/27TBD
    L14 - Quiz
    Wed-Fri, 11/24-11/27No Class (Thanksgiving break)
    week 1511/28-12/3Final Exam Review
    L15 - Exercise
    Fri, 12/3P5