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

Spring 2022
  1. Course Basics

    Prerequisites: CS 112 (C or better)
    Format: Lecture plus weekly lab

    Instructors:

    Name: Socrates Dimitriadis (PhD)
    Email: socrates@gmu.edu
    Webpage: https://cs.gmu.edu/~socrates
    Hours: Tuesdays/Thursdays 3:00-4:30pm
    Office: Nguyen Engineering Building, 4508

    Name: Tessema Mengistu (PhD)
    Email: tmengis@gmu.edu
    Webpage: https://cs.gmu.edu/~tmengis/courses/SP22/CS211SP22.html
    Hours: Tuesdays/Thursdays 10:30am - 12:00pm or by appointment
    Office: Nguyen Engineering Building, 2703

    Graduate Teaching Assistants:

    Name: Mrium Binte Ema
    Email: mema@gmu.edu
    Hours: TBD
    Office: TBD

    Name: Sajed Jalil
    Email: sjalil@gmu.edu
    Hours: TBD
    Office: TBD

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

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

    Name: Fardin Sakib
    Email: fsakib@gmu.edu
    Hours: TBD
    Office: TBD

    Name: Hao Yan
    Email: hyan5@gmu.edu
    Office: TBD

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

    Undergraduate Teaching Assistants:

    Sheena Anishraj

    Marcus Barreto

    Vishwapriya Baskar

    Matthew D Browne

    Stephen J Happ

    Jason Huang

    Paul F Abi Jaber

    Thomas Mark Jacob

    Ram K Kammari

    Tam-dang Hoa Le

    Seohae Lee

    Samanvitha Matta

    Parham Yastan Raeesian

    Barkev J Reisig

    Michael H Tewoldemedhin

    Azka Saquib

    Lectures:

    SectionDayTimeInstructorLocation
    Sec 001TR10:30 am - 11:45 amDimitriadisInnovation Hall 103
    Sec 002MW9:00 am - 10:15 amMengistuEnterprise Hall 80
    Sec 003TR1:30 pm - 2:45 pmDimitriadisHorizon Hall 1010
    Sec H01MW9:00 am - 10:15 amMengistuEnterprise Hall 80

    Labs:

    Section (Lab / Lec)DayTimeInstructorLocation
    201 / 001W8:30amTBDENGR 5358
    202 / 001W9:30amTBDENGR 5358
    203 / 001W10:30amTBDENGR 5358
    204 / 001W11:30amTBDENGR 5358
    205 / 001W12:30pmTBDENGR 5358
    211 / 001F8:30amTBDENGR 1505
    212 / 001F9:30amTBDENGR 1505
    213 / 001F10:30amTBDENGR 1505
    214 / 001F11:30amTBDENGR 1505
    215 / 001F12:30pmTBDENGR 1505
    216 / 002R10:30amTBDENGR 5358
    217 / 002R11:30amTBDENGR 5358
    218 / 002R12:30pmTBDENGR 5358
    219 / 002R2:30pmTBDENGR 5358
    220 / 003F11:30amTBDENGR 5358
    221 / 003F12:30pmTBDENGR 5358
    2H2 / H01R1:30pmTBDENGR 5358

    Textbooks:

    requiredzyBooksObject-Oriented Programming in JavaAvailable online at zyBooks
    1. Sign in or create an account at learn.zybooks.com
    2. Enter zyBook code GMUCS211Spring2022
    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, and grades.

    Gradescope: Gradescope may be used for exams and assignment submissions.

    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 personal issues such as meeting outside of office hours, missing lab/lecture, grading disputes, medical situations, etc. Email addresses are listed above.
  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

    Readings: online textbook with practice problems; weekly deadlines; automated grading
    Class participation: it varies by instructor
    Labs: programming exercises during recitation(lab) sessions; collaboration/group work allowed; same date as the recitation(lab) sessions
    Exercises: programming assignments; open resources; collaboration/group work allowed; weekly deadlines
    Projects: programming assignments; individual work; 2-3 weeks to complete.
    Exams: individual work; you might need the Respondus Lockdown Browser as well as a working webcam and microphone.

  4. Grading Procedures

    Grade Distribution

    CourseworkWeightDrop policy
    Class participation4%varies by instructor
    Readings4%lowest 15 subsections
    Labs (15)10%lowest two
    Exercises (4)7%lowest has half weight
    Projects (5)30%none
    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.
    • Students must have Respondus Browser lockdown installed before taking any quiz or exams.
    • By department policy, the student must pass the final exam with a passing grade (≥ 60) in order to pass the course.
    • The final exam is cumulative; a high final exam score dominates (replaces) lower score on midterm.
    • 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

    Tips

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

  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.

    We take the honor code quite seriously. Any attempts at copying or sharing code, algorithms, or other violations of the honor code simply will not be tolerated. We use automated software to flag suspicious cases, and then review them to find the cases that must be submitted to the Office of Academic Integrity. The penalty for cheating will always be far worse than a zero grade, to ensure it's not worth taking the chance. Confirmed cases of cheating almost always translate into course failure.

    Some kinds of participation in online study sites violate the Mason Honor code: these include accessing exam or quiz questions for this class; accessing exam, quiz, or assignment answers for this class; uploading of any of the instructor’s materials or exams; and uploading any of your own answers or finished work. Always consult your syllabus and your professor before using these sites.

  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. Mason Safe Return to Campus Guide

    We are in unprecedented times. For our collective safety, please follow these guides: Click here.

  8. Tentative Schedule

    WeekDateTopic(s)Lab Text readingzyBooks readingAssignmentsDue
    week 101/24-01/30Introduction; Basics; Flow control1, 2, A21, 2, 3E1
    Sun, Jan 30ZY 1,2,3
    week 201/31-02/06Arrays; Input/Output; File I/O3, 54, 5P1
    Mon, Jan 31E1
    Sun, Feb 06ZY 4,5
    week 302/07 - 02/13Classes; Objects; Methods; Fields4, 66, 7P1
    Mon, Feb 07
    Sun, Feb 13ZY 6,7
    week 402/14-02/20Command line args; Packages; Javadocs11, 138E2
    Mon, Feb 14P1
    Sun, Feb 20ZY 8
    week 502/21-02/27Inheritance; Polymorphism; Dynamic dispatch
    710P2
    Mon, Feb 21E2
    Sun, Feb 27ZY 10
    week 602/28-03/06Abstract classes; Interfaces; Enums
    8, 911P2
    Sun, Mar 06ZY 11
    week 703/07-03/13Midterm ExamP3
    Mon, Mar 07P2
    Mon/Tue, Mar 07/08Review
    Wed/Thu, Mar 09/10Exam
    week 803/14 -03/20SPRING BREAK
    week 903/21-03/27Exceptions; Unit testing10, 1212P3
    Mon, Mar 21
    Sun, Mar 27ZY 12
    week 10 03/28-04/03Generics
    1413E3
    Mon, Mar 28P3
    Sun, Apr 03ZY 13
    week 11 04/04-04/10Collections, Lists & Queues9, 14P4
    Mon, Apr 04E3
    Sun, Apr 10ZY 9, 14
    week 1204/11-04/17Recursion1515P4
    Mon, Apr 11
    Sun, Apr 17ZY 15
    week 1304/18-04/24Searching & Sorting1616E4
    Mon, Apr 18P4
    Sun, Apr 24ZY 16
    week 1404/25-05/01Nested classes; Lambda functionsA119P5
    Mon, Apr 25E4
    Sun, May 01ZY 19
    week 1505/02-05/08Graphical User Interfaces; Final Exam Review17, 18P5
    Mon, May 02
    Sun, May 08ZY 17,18
    Reading days05/09-05/10
    Mon, May 09P5
    Exams05/11-05/18Final Exam
    Mon, May 167:30am - 10:15am : Sections 002 & H01
    Tue, May 1710:30am - 1:15pm : Sections 001 & 003