CS211: Introduction to Object Oriented Programming Fall 2014

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
Professor Contact Information Dr. Kinga Dobolyi
Office: Engineering (Rm. 4440)
Email: kdobolyi@gmu.edu
Phone: 703–993–4198
http://www.cs.gmu.edu/~kdobolyi/cs211/
Office Hours: FIXME and FIXME 12:45pm—2:45pm, or by appointment. Please email the professor at least 48 hours in advance when seeking an appointment.
GTA Contact Information Ruoxi Li (sections 207, 2H1)
rli7@masonlive.gmu.edu
Office: Engineering (Rm. 5321)
Office Hours: Thursdays 10:30AM— 12:30PM


You may visit the office hours of any GTA, not just the lab section you're signed up for.
Textbook REQUIRED: Course workbook (TBA)

OPTIONAL: Java Software Solutions: Foundations of Program Design by John Lewis & William Loftus, Pearson Education. Students often ask if they are required to buy the textbook; we will not refer to any specific chapters or material from the textbook this semester during lecture. There are also plenty of online resources for Java that you can google for. In past semesters students have found this tutorial useful.
Course Materials Marmoset — All assignments must be submitted (per published deadlines) via Marmoset. We will only be using Marmoset for assignment submission, Piazza for discussion boards and announcements this semester — all other materials (slides, etc) will be available only on this course homepage. Grades (except the final course grade) will be posted to Blackboard.
Email Students must use the GMU email system for all correspondence with professor (using the following email subject format: CS211 — insert your subject — failure to adhere to this policy will result in returned emails).
Please note that general project or class questions should NOT be sent to the professor or TAs - in such events, your email will be returned and you will be asked to post your question to the discussion board. In general, the turnaround time for responses to questions will be much quicker on the discussion board.
Students should also avoid emailing their code to the professor or TAs unless permission has been obtained (under no circumstances should code be posted publicly to the discussion board).
Grading
  • 6 programming assignments (40% together - some assignments will be worth more than others, with each being around 7% of your grade)
  • Weekly quizzes, labs, and homework (15% together)
  • 2 Exams (25%, 12.5% each)
  • Final Exam (20%)

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%)

Note: per departmental policy, a failing grade on the final exam (<60.0%) will result in a failing grade (F) for the entire course, regardless of performance on other assignments.
Contesting of grades on any/all submissions must be requested within one week of the item's return. No grade changes will be considered subsequent to that deadline, or after the final exam meeting.
Class Participation Take notes — a significant portion of the information disseminated during classroom sessions are not delineated on slides.

If you don't do the reading and homework before lecture, lecture will not make sense and/or be a waste of your time. Some weeks have more reading and homework than others, to be balanced with project difficulty. Doing the readings and homework, and paying attention when we review the homework during lecture will make the projects significantly easier.
Labs Students must attend and participate in the lab section for which they are registered, unless prior permission is granted by lab GTAs. Quizzes will be administered during lab sessions. If you know in advance that you are unable to make a lab, you must notify your lab GTA that you would like to transfer to another lab that week at least 3 days before that lab, in email. If you miss a quiz due to a university-accepted excused absence, you must notify your GTA within 24 hours of your absence to make arrangements for a makeup, and bring documentation with you when you take the make-up quiz. Failure to follow either of these policies will result in a zero. The lowest quiz grade will be dropped from the overall class grade calculation.
Programming Assignments Programming projects are considered individual efforts, therefore no sharing of code and/or discussion of problem solutions are allowed with anyone except the lab GTA, UTA or the professor. Test cases must also not be shared. Student projects will be manually and automatically assessed for cheating. You may not look at or otherwise view any other individuals code or pseudocode.
The discussion board on Piazza is required reading for all projects. Although every effort is made to post complete and consistent project specifications, because projects are designed from scratch every semester, it is inevitable that specs will change slightly throughout the semester. You MUST read the discussion board daily for clarifications and project updates, and you MUST be prepared to implement these small potential changes.

Programming assignments are significantly more difficult than labs, require more planning, and in general no implementation level details will be given: you are free to use your creativity here, as long as you conform to the inputs and outputs expected of your methods.

All programming project must run on Marmoset to be considered for credit. All projects will be automatically graded on Marmoset (using textual comparison like UNIX diff — failure to pass a test case with diff will result in zero points for that test case). See the Marmoset submission instructions.
Office Hours For students seeking help with programming assignments during office hours, students must identify the line number, through debug print statements, where they believe an error to be before seeing the TA or instructor. This implies that you must have your own test cases, at least one of which that fails, to bring to office hours before the TAs or instructor can help you.

For more general programming assignment questions, students must bring their own pseudocode to office hours before the TA or professor can help you.

Under no circumstances will the professor or GTA reveal more than three lines of code at a time during office hours. Students must make significant, individual effort on all projects before coming to see a GTA/professor. Waiting until the last minute, in the expectations that the entire project will be explained in one office hours session, is not feasible.

Office hours are often crowded - do not rely on them for last minute help, as we cannot guarantee that we will be able to spend significant time with every student. Use the discussion board instead for posting questions.
Discussion Board Students are encouraged to use the discussion board, Piazza, to ask and answer questions. Responses to questions can be expected within 24 hours, and often times much sooner (within two hours or less during the day).

Students can post questions and code privately, although the instructor reserves the right to make any post public, so that other students can see the responses. Therefore, students may post anonymously, if they choose to do so, although in general this is less preferred as it is often easier to help a student if we know their name and can look up their code on Marmoset that way.

For students wishing to post their code to Piazza, the same rules apply as when coming to office hours; if you have code written, you must produce at least one failing test case where you have identified what line number is giving you problems.
Late Submissions All programming projects must be submitted by the deadline to be considered for full credit. Projects that are up to one day late will be tolerated, but are subject to a penalty of 20%. No assignment will be accepted for credit after last class meeting.
Marmoset being unavailable is not an excuse for turning in a late assignment; in the rare situation that the website is somehow unavailable or giving the student an error, the student MUST email their submission to their GTA before the deadline, otherwise it will be considered late.
Similarly, having a laptop die or losing source code is not an excuse for turning in a project late — students are responsible for maintaining their own backup copies of code.
Note that Marmoset accepts multiple assignment submissions; we will grade the submission with the highest score. You can also download your previous submissions from Marmoset.
Exams Exams are closed book/notes unless specified otherwise by instructor. Appropriate documentation (as determined by instructor) and requisite permissions are required for make-up exam requests. Picture IDs are required to take all exams. Note: A failing grade on the final exam (<60%) will result in a failing grade (F) for the entire course, regardless of performance on other assignments.
If you know in advance that you are unable to make an exam for a valid and unavoidable reason (such as a scheduled surgery, etc), you must notify the professor at least one week before the scheduled exam date to make arrangements for a make-up, and bring documentation with you when you take the make-up. If you miss an exam due to a university-accepted excused absence (such as an illness or car accident the day and time of the exam), you must notify your professor within 24 hours of your absence to make arrangements for a makeup, and bring approved documentation with you when you take the make-up exam. Failure to follow either of these policies will result in a zero.
You must take the final exam for the section that you are registered for.
Honor Code All students are expected to abide by the GMU Honor Code. This policy is rigorously enforced. All class-related assignments are considered individual efforts unless explicitly expressed otherwise (in writing). Review the university honor code and present any questions regarding the policies to instructor.
Cheating on any assignment will be prosecuted and result in a notification of the Honor Committee as outlined in the GMU Honor Code. Sharing, collaboration, or looking at any code related to programming assignments that is not your own is considered cheating.

The computer science department has an additional, more restrictive CS Honor Code that you are also subject to. Make sure you read and familiarize yourself with these rules.

It is your responsibility to lock your computers with a password, to not post your code to websites like Pastebin that are publicly accessible, to guard your USB drives and computers, to not upload your files to someone else's computer, etc. You will be liable for any access gained to your code. Stating that "I don't know how he/she got access to my code", or "I left the room and they stole my code" are not acceptable excuses in an honor code violation.
Learning Disabilities Students with a learning disability or other condition (documented with GMU Office of Disability Services) that may impact academic performance should speak with professor ASAP to discuss accommodations.

Tentative Class schedule JLS (Java Language Specification)
API (Application Programming Interface)

Week # Date (start of week) Assignments Lecture Topics References
1 8/25 Read Chapter 1 in handbook: exercises (handed out in lecture) due 8/27
Read supplement on testing (handed out in lecture): exercises due 9/3

Lab: Install Eclipse; get HelloWorld.java to run
Course into slides
Java Basics
  • Course Introduction
  • Introduction to UNIX
  • Introduction to Java
  • Syntax, Expression, Java Basics
  • UNIX commands
  • JLS (3.1) [unicode]
  • JLS (3.6-3.9) [whitespace, comments, identifiers & keywords]
  • JLS (3.10-3.12) [literals, separators, operators]
2 9/1
No class Monday
Programming Project 1
(due Friday 9/19 at 4:55pm)

Read Chapter 2 in handbook: exercises (handed out in lecture) due 9/8

Lab: running Junit on Eclipse (project 1)
Testing
  • Test Cases
  • Junit
3 9/8
Read Chapter 3 in handbook: exercises (handed out in lecture) due 9/10
Read Chapter 4 in handbook: exercises due 9/15

Lab: quiz and coding exercise on Chapters 1-2
Control Flow and Arrays
  • Control Structures
  • Arrays
  • JLS (14.9, 14.11-14.17) [if; switch, while, do, for, break, continue, return]
  • JLS (10) [Arrays]
4 9/15 Read Chapter 5 in handbook: exercises due 9/22

Lab: quiz and coding exercise on Chapter 3
Regular Expressions
  • Regular expressions
  • API (Pattern) [Regular Expressions]
5 9/22 Programming Project 2
(due 9/26 and 10/3 at 4:55pm)

Read Chapter 6 in handbook: exercises due 9/29

Lab: quiz and coding exercise on Chapter 4
Classes and Objects
  • Class construction
  • Objects
  • JLS (4.3.1, 4.3.2) [objects/Object]
6 9/29
Lab: quiz and coding exercise on Chapter 5
Methods
  • Methods
  • Static
  • Scope
  • Visibility
  • JLS (6.6.1-6.6.5) [public, private]
  • JLS (6.3.1-6.3.2) [scope]
  • JLS (8.3.1, 8.4.3.2) [static]
7 10/6 Programming Project 3
(due 10/10 and 10/17 at 4:55pm)

Read Chapter 7 in handbook: exercises due 10/13

Lab: quiz and coding exercise on Chapter 6
sample exam 1 (updated)
  • review for exam 1
  • Exam 1 (Wednesday)
8 10/13 Read Chapter 8 in handbook: exercises due 10/20

Lab: finish recap of exam 1 and/or examples from chapter 7
Inheritance and Abstract Classes
  • Exam 1 recap
  • Inheritance
  • Abstract classes
  • Abstract methods
  • JLS (8.2.2-8.2.4) [inheritance]
  • JLS (8.1.1.1) [abstract]
9 10/20 Programming Project 4
(due 10/24 and 10/31 at 4:55pm)

Read Chapter 9 in handbook: exercises due 10/22
Read polymorphism notes: due 10/27

Lab: quiz on chapter 7 and 8
Interfaces and exceptions
  • Interfaces
  • Exceptions
  • JLS (4.12.6) [interfaces]
  • JLS (11) [exceptions]
10 10/27
Monday class meets
Tuesday at same time
Read ArrayList notes: due 10/29

Lab: quiz on chapter 9
Polymorphism and Collections
  • Polymorphism
  • Dynamic binding
  • Collections
  • API (Collection)
  • API (ArrayList)
11 11/3 (mini group) Programming Project 5
(due 11/21 at 4:55pm)

Read Linked list notes: due 11/10

Lab: quiz on polymorphism
sample exam 2
  • Review for exam 2
  • Exam 2 Wednesday
12 11/10 Read Chapter 10 in handbook: exercises due 11/17

Lab: work with partner on project
Linked Lists
  • Exam 2 recap
  • Linked lists
13 11/17 Read Chapter 11 in handbook: exercises due 11/24

Lab: quiz on linked lists
Trees and recursion
  • Trees
  • Recursion
14 11/24
Monday class only
Programming Project 6
(due 12/5 at 4:55pm)

Lab: quiz on chapter 10
Generics
  • Generics
  • JLS (8.1.2) [generics]
15 12/1 Lab: quiz in chapter 11 Final exam study guide 1, 2, 3 ( the third sample exam solution has been posted to BB)
There will be no office hours the week of 12/10 except by appointment
Final Exam: see the standard time on the George Mason Academic Calendar. The exam will be given in the regular classroom.