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

Spring 2023
  1. Course Basics

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

    Instructors:

    NameemailOfficeHours
    Prof. Archange Giscard Destineadestine@gmu.eduBuchanan Hall D215AFriday 9:30-11:30am
    Dr. Socrates Dimitriadissocrates@gmu.eduENGR 4508Tuesday 1-3pm

    Graduate Teaching Assistants:

    NameemailOfficeHours
    Sadia Afrin Mimsafrinmi@gmu.eduENGR 4456Friday 3-6pm
    Dibyendu Dasddas6@gmu.eduENGR 4456Wednesday 4-7pm
    Long Cao Thanh Doanldoan5@gmu.eduENGR 4456Thursday 4-6pm & Friday 2-3pm
    Saad Muhammad Abdul Ghanisghani2@gmu.eduENGR 4456Monday 9-11am & Tuesday 12-1pm
    Prommy Sultana Hossainphossai@gmu.eduENGR 4456Monday 12-3pm
    Saadat Hasan Khanskhan225@gmu.eduENGR 4456Tuesday 9-11am & Thursday 11am-12pm
    Jonathan Mbuyajmbuya@gmu.eduENGR 4456Wednesday 1-4pm
    Fardin Sakibfsakib@gmu.eduENGR 4456Thursday 1-4pm

    Lectures:

    SectionDayTimeInstructorLocation
    Sec 001TR10:30 am - 11:45 amDimitriadisHorizon Hall 2014
    Sec 002MW9:00 am - 10:15 amDimitriadisPlanetary Hall 129
    Sec 003TR1:30 pm - 2:45 pmDestineExploratory Hall L004
    Sec 004MW1:30 pm - 2:45 pmDimitriadisEnterprise Hall 178
    Sec H01MW1:30 pm - 2:45 pmDimitriadisEnterprise Hall 178

    Labs:

    Section (Lab / Lec)DayTimeInstructorUTAUTALocation
    201 / 001W8:30am Jonathan Mbuya Raajita Battina Isaac ChoiENGR 4457
    202 / 001W9:30am Jonathan Mbuya Tushar RangaswamyArjun GiridharENGR 4457
    203 / 001W10:30am Sadia Afrin Mim Rohina Naderi Sandhya KurugantyENGR 4457
    204 / 001W11:30am Sadia Afrin Mim Rohina Naderi Raza HussainENGR 4457
    205 / 002R10:30am Fardin Sakib Muhammad Nomad Qasim KhanENGR 4457
    211 / 002R11:30am Fardin Sakib Nicolas Alt Qasim KhanENGR 4457
    212 / 002R12:30pm Saadat Hasan Khan Nicolas Alt Calvin NguyenENGR 4457
    213 / 002R1:30pm Saadat Hasan Khan Tushar RangaswamyIsaac ChoiENGR 4457
    214 / 003F11:30am Long Cao Thanh Doan Zachary Canter Jahnavi PaladuguENGR 4457
    215 / 003F12:30pm Long Cao Thanh Doan Raza Hussain Jahnavi PaladuguENGR 5358
    216 / 003T10:30am Dibyendu Das Ilyas Fazelyar Kevin DanielENGR 4457
    217 / 003T11:30am Dibyendu Das Ilyas Fazelyar Kevin DanielENGR 4457
    218 / 004T12:30pm Prommy Sultana Hossain Samanvitha Matta Arjun GiridharENGR 4457
    219 / 004T1:30pm Prommy Sultana Hossain Calvin Nguyen Sandhya KurugantyENGR 4457
    220 / 004T2:30pm Saad Muhammad Abdul Ghani Calvin Nguyen Kevin DanielENGR 4457
    2H2 / H01T3:30pm Saad Muhammad Abdul Ghani Joniel Jerome Muhammad NomadENGR 4457

    Textbooks (required):

    1. Object-Oriented Programming in Java. Available online at zyBooks.
      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. Go to learn.zybooks.com, sign in or create an account, and enter zyBook code GMUCS211Spring2023 to subscribe.
      If you've taken this course before and you paid for a subscription once already, send an email to support@zybooks.com and ask them to reactivate your subscription for free.
    2. Supplemental Java Textbook. Available for free download

    Blackboard: Blackboard will be used for all course material (slides, etc.), assignment descriptions, and grades.

    Gradescope: Gradescope will be used for homework submission and grading.

    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
    Exercises: small programming assignments (5-7 days); individual or group work
    Projects: large programming assignments (10-14 days); individual work only
    Exams: in-class; computer-based; require the Respondus Lockdown Browser

  4. Grading Procedures

    Grade Distribution

    CourseworkWeightNotes
    Class participation3%format varies by instructor
    Readings3%lowest 15 subsections dropped
    Labs (14)10%lowest 2 dropped
    Exercises (3)9%3% each, no drops
    Projects (5)35%7% each, no drops
    Midterm Exam15%replaced by final exam grade if final exam score is higher
    Final Exam25%must pass final to pass the course

    Grading Policies

    1. By department policy, students must pass the final exam with a passing grade (≥ 60) in order to pass the course.
    2. The final exam is cumulative; a high final exam score dominates (replaces) lower score on midterm.
    3. For homework, 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.
    4. Late submission is allowed for projects and exercises only (up to 48 hours).
    5. Late submission policy: Less than 24 hours is 10% off. From 24 hours to 48 hours is 20% off. More than 48 hours is 0. Submission times are automatically recorded by Blackboard and Gradescope, and there is no distinction between a 1-minute late and a 23-hours late.
    6. Code which does not compile will receive a zero in most cases.
    7. 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.
    8. 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 rather than simply saved.
    9. There are no make-ups for absences to classes and labs. The drop policy is used in these cases.
    10. Challenging of any grade must occur within a week of when the graded assignment has been returned.

    Grading Scale

    grade:
    A+
    A
    A-
    B+
    B
    B-
    C+
    C
    C-
    D
    F
    range: [98,100][92,98)[90,92) [88,90)[82,88)[80,82) [78,80)[72,78)[70,72) [60,70)[0,60)

  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.

  8. Schedule

    WeekDatesTopicSupplemental readingzyBooks readingAssignments
    week 11/23-1/29Introduction; Basics; Control Flow1, 2, A21, 2, 3E1
    week 21/30-2/05Arrays; Input/Output; File I/O3, 54, 5E1
    week 32/06-2/12Classes; Objects; Methods; Fields4, 66, 7P1
    week 42/13-2/19Command line args; Packages; Javadocs11, 138P1
    week 52/20-2/26Inheritance; Polymorphism; Dynamic dispatch
    710E2
    week 62/27-3/05Abstract classes; Interfaces; Enums
    8, 911P2
    week 73/06-3/12Midterm Review & ExamP2
    week 83/13-3/19SPRING BREAK
    week 93/20-3/26Exceptions; Unit testing10, 1212P3
    week 103/27-4/02Generics
    1413P3
    week 11 4/03-4/09Collections, Lists & Queues9, 14E3
    week 124/10-4/16Recursion1515P4
    week 134/17-4/23Searching & Sorting1616P4
    week 144/24-4/30Nested classes; Lambda functionsA119P5
    week 155/01-5/07Graphical User Interfaces; Final Exam Review17, 18P5
    Reading days5/08-5/09
    Exams5/10-5/17Final Exam