CS211 (SPARC) - Introduction to Object Oriented Programming - Fall 2017

Professor Contact Information Dr. Kinga Dobolyi
Office: Engineering Building, room 4440
Email: kdobolyi@gmu.edu (preferred)
Phone: 703–993–4198
http://www.cs.gmu.edu/~kdobolyi/sparc_cs211/
Office Hours: 10:45am – 11:45am, Tuesdays and Thursdays
DASHBOARD View your progress in the course
Course Outcomes
  • An understanding of basic object-oriented (OO) programming concepts and principles.
  • An ability to apply basic object-oriented principles and techniques in the development of software systems using a specific programming language.
  • An ability to effectively develop software systems using both basic command line tools and sophisticated integrated development environments, and to understand the advantages and limitations of each.
  • An ability to successfully perform debugging operations and techniques.
  • An ability to perform software development in both individual and team environments.
  • An understanding of programming-related references/resources available to software developers and the ability to use them effectively, both in ongoing projects and in the acquisition of new technical skills.
  • An understanding of how acquired programming skills facilitate success in upper level CS courses and in various professional environments.
Prerequisite C or better in CS112.
TA Contact Information GTA:


You may visit any TA, not just the one assigned to you.
Textbook Required: CS211 class workbook: free chapters are linked as needed
Optional: Java Software Solutions: Foundations of Program Design by John Lewis & William Loftus, Pearson Education
Optional: There are lots of free online Java tutorials you can google for, including YouTube channels; let us know if you find something you particularly like!
Class Structure This class will be very different from your prior high school classes and other university classes in several ways:
  1. This class is self-paced, and therefore we will spend very little time lecturing in the classroom (if any). Instead, you will explore online videos, slides and readings before coming to class, and we will practice programming together in class. (This is called the flipped classroom model.)
  2. We will have two types of programming assignments: practice and assessment. You can work on practice assignments at any time, and do as many as you want. We encourage you to work with your classmates or anyone else that can help, and use online resources that you can find. Practice assignments will not count towards your grade, but will prepare you for assessments. When you are ready, you will schedule an assessment for your lab section, to be taken in lab. These will be done individually on a lab computer, and you must score at least a 70% to pass each one. You are allowed to try each assessment up to three times, though you may not repeat an assessment for a higher score once you've passed it.
  3. This class is self-paced in the sense that you can take assessments whenever you are ready. You can complete several assessments in the same week, or use several weeks to complete an assessment. You must finish all assessments/exams by the last day of finals. The dates established by the University for dropping and selective withdrawal remain the same for this course regardless of the class structure. Refer to Registrar calendar for dates.
  4. You must attend class to work on practice assignments until you have completed all assessments. Attendance (while you still need to pass assessments) will be taken and is worth 10% of your overall grade. You may miss three classes without penalty. An exception is that if you complete all assessments before the end of the semester, you are automatically marked as attending all remaining class meetings. You are also required to attend an in-class meeting with the professor during the first half of the semester, at her discretion; not attending this meeting will cause a 5% drop in your grade.
  5. In an effort to encourage students to finish the course in a timely manner, any student that passes assessments 1 through 9 on or before Thanksgiving break will automatically be awarded 100% on the final (and therefore won't have to take it). Additionally, any student who finishes the course before the last day of lecture will recieve a letter grade bump in their course (so a B to an A, an A to an A+, for example).
Discussion Board Use All students will be enrolled in the discussion forum for CS 211 on Piazza. You will receive a free invitation to this resource via your Mason email. We will all use the discussion board throughout the semester to ask and answer questions and to disseminate information. We will make every effort to answer questions within 24 hours, but usually sooner (often two hours during adult working hours). The instructor reserves the right to make any post public, should it benefit the class.
Practice Assignments We offer several practice assignments to prepare for each assessment. Practice assignments should be done collaboratively; you can and should work on these assignments during class meetings (where the instructor and TA will be available), at home, or with your classmates at any place and anytime. Although we will track how many practice assignments you are working on and will complete, they will not be graded. If you are struggling with assessments, your best solution is to work more practice assignments.
Assessment Assignments Labs will be offered weekly, and used for automated, online student assessments. Please request an appointment for an assessment in lab. Students must attempt at least one assessment a week (until you've passed all assessments). To encourage students to complete the course in a timely fashion, students will have up to 10% of their grade in the class reduced for missing to take an assessment every week.

All students must sign up for an assessment slot every week (until you've passed all assessments); if there is room, you will be allowed to take additional assessments each week on a first-come, first-served basis. Out of fairness to other students, you must show up for an assessment slot you schedule; failing to do so will count as failing that assessment (this way we can prevent a handful of students using up all assessment slots without showing up to take them). You may schedule one assessment per week, but you may take more assessments each week, assuming slots are available. In addition, you may take as many assessments in an assessment slot as you like; if for some reason you already know python/programming and you want to finish this course in a week or two, this is entirely possible. We budget 45 minutes for each assessment, but you're free to do them faster, and if there are free assessment slots later in the day (you won't know these until the day-of, however), then you can stay later and take another assessment(s).

Assessments will be graded in terms of percentage passing tests/questions. You must score at least a 70% to pass the assessment, and you have up to three chances to pass each assessment. Only the highest scoring assessment will count towards your final grade, and you may not make additional attempts after passing an assessment. All grading is automated so you will receive the score the computer tells you, or you will submit a scantron. We will not grade any assignments by hand, however, we reserve the right to reduce the grade on an assessment if we find evidence of soft-cheating (such as coding so that your answer only passes certain inputs) or hard-cheating (such as copying off your neighbor during an assessment).
Grading Your final grade will be determined as follows:

        10% for class participation
        up to -10% of your final grade for NOT attempting an assessment each week
        90% for the assessments

Practice assignments do not count towards your grade, and the class has no final exam.

Final course grades are calculated as follows:

A+ (>= 98.0%) A (>= 92.0%) A– (>= 90.0%)
B+ (>= 88.0%) B (>= 82.0%) B– (>= 80.0%)
C+ (>= 78.0%) C (>= 72.0%) C– (>= 70.0%)
D (>= 60.0%)
F (< 60.0%)

Please note that you must pass all assessments within three attempts in order to pass the course with a C- or higher. If you pass all assessments except one, you will recieve a D in the course. If you fail two or more assessments, you will recieve an F in the course.
Honor Code As with all Mason courses, CS 211 is governed by the GMU Honor Code. Practice assignments may be done collaboratively with any resources, so there are no honor code restrictions. However, graded assessments carry with them an implicit statement that it is the sole work of the student.
Office Hours Office hours are times that I commit to being in my office, door open, first come, first served. You do not need an appointment, and no appointments are made. If office hours are very busy, I will limit the amount of time I spend with each student to try and see all students for at least a little bit. If you cannot make my office hours, then I will suggest you visit the office hours of any of our TAs (unless it is a specific question a TA would be unable to answer, such as a course policy question not answered on the syllabus).
Email Use I occasionally send important announcements to your Mason email account, so please read it regularly. I also use Piazza to send important announcements through email.

General class questions that might be useful or interesting to other students should be posted to the discussion board, not sent through email.
Learning Disabilities If you are a student with a disability and you need academic accommodations, please see the instructor and contact the Office of Disability Services (ODS). All academic accommodations must be arranged through ODS.
Other Useful Campus Resources Counseling and Psychological Services (CAPS): (703) 993-2380
Writing Center: A114 Robinson Hall; (703) 993-1200
Ask a Librarian through the University Libraries

Tentative Class schedule

Class Number Assignments Labs This Week
1 Introduction to class and flipped classroom

Syllabus crossword puzzle
Required assessment: Assessment 0 (start of semester survey)
schedule ANY assessment(s)
2 Chapter 1: Java Installation and Java Basics
  • Installing Java and Eclipse
  • Basic types and expressions
3 Chapter 2: Control Flow and Arrays
  • if-else and switch statements
  • while and for loops
  • arrays
Required assessment (if not completed): Assessment 0 (start of semester survey)
schedule ANY assessment(s)
4 Chapter 3: Classes and Objects
  • attributes
  • constructors
  • methods
5 Chapter 4: Basic Testing with Junit
  • test cases in Junit
  • assertions in Junit
work on Sample Assessment 1
Recommended assessment: Assessment 1 (testing)
schedule ANY assessment(s)
6 Chapter 5: Visibility and Scope
  • public, private, and protected
  • static modifier
  • scope
7 continue working on chapter 5 problems and reading Recommended assessment: Assessment 2 (basic classes in Java)
schedule ANY assessment(s)
8 work on Sample Assessment 2
9 Chapter 6: Inheritance and Abstract classes
  • extends, super
  • overriding, equals, toString
  • abstract classes
Recommended assessment: Assessment 3 (Basic Inheritance, visibility, static, and this)
schedule ANY assessment(s)
10 work on Project 1
11 continue to work on Project 1 Recommended assessment: Assessment 4 (Polymorphism and Dynamic Binding through Inheritance)
schedule ANY assessment(s)
12 Chapter 7: Interfaces
  • implements
  • Comparable
  • Iterator
13 work on Project 2 Recommended assessment: none (you may skip this lab if you passed assessments 1-4 only)
schedule ANY assessment(s)
14 continue to work on Project 2
15 work on Sample Assessment 5 Recommended assessment: Assessment 5 (Abstract classes and Interfaces)
schedule ANY assessment(s)
16 Chapter 8: Exceptions
  • try-catch
  • multiple catch blocks
  • finally
  • throw and throws
  • exceptions as objects
17 Chapter 9: Collections and Generics Recommended assessment: none (you may skip this lab if you passed assessments 1-5 only)
schedule ANY assessment(s)
18 work on Project 3
19 continue to work on Project 3 Recommended assessment: Assessment 6 (Collections, Generics, and Exceptions)
schedule ANY assessment(s)
20 work on Sample Assessment 6
21 Chapter 10: Basic Data Structures Recommended assessment: none (you may skip this lab if you passed assessments 1-6 only)
schedule ANY assessment(s)
22 work on Project 4
23 continue to work on Project 4 Recommended assessment: Assessment 7 (Data Structures)
schedule ANY assessment(s)
24 study for Assessment 7 by reviewing Chapter 10
25 Chapter 11: Recursion Recommended assessment: none (you may skip this lab if you passed assessments 1-7 only)
schedule ANY assessment(s)
26 work on Chapter 11 exercises
27 finish Project 4 Recommended assessment: Assessment 8 (Recursion)
schedule ANY assessment(s)
28 work on Sample Assessment 8