CS 201 Advanced Object Oriented Programming

This is the second programming course in the required Computer Science major sequence. By the end of this course, you will be a more sophisticated programmer comfortable with the object-oriented programming (OOP) language Java. You will also learn elementary data structures.


  • Object-oriented programming (OOP) concepts
    • Abstraction
    • Inheritance
    • Polymorphism
  • Java
    • Interfaces
    • Abstract classes
    • Basic Java GUI (Graphical User Interface) design with swing
  • More advanced programming concepts and elementary data structures
    • Sorting
    • Recursion
    • Arrays
    • Linked Lists
    • Stacks
    • Queues
    • Binary trees

Course Requirements

  • Weekly assignments (primarily programming)
  • Weekly labs
  • Mid-semester programming project
  • Final programming project
  • One in-class midterm exam
  • A self-scheduled final exam in the final exam period


  • Assignments: 30%
  • Labs: 5%
  • Mid-semester project: 10%
  • Final project: 15%
  • Midterm exam: 15%
  • Final exam: 15%
  • MaGE participation: 5%
  • Class participation: 5%

General Grading Guidelines

  1. Many of your assignments and labs will be submitted online -- their submission will simply require you to save your final files in your dev folder on athena.cs.mtholyoke.edu (the CS department server) by the deadline, please note that anything on the Desktop or other folders of the lab Macs will disappear forever when you log out (see the CS help site's [1]).
  2. Important: do not modify files beyond the submission date! If you decide to work out some bugs after the deadline, do so in a postSubmission directory. Include a README text file that lists the changes you've made, as this will help us with grading.
  3. You must have comments in your code! Poor commenting or missing javadocs (after we have seen automatic documentation) will result in a deduction of up to 10%.
  4. Your program must compile! Non-compiling code will result in an automatic deduction of 25%. It is better to submit a program that works but does not satisfy all required behavior than a program that attempted to do everything, but does not run!
  5. A and A- level work means quality programs that run, do what they are supposed to do, are well designed, well documented and submitted in time.

Honor Code

REMINDER: WE ARE UNDER THE HONOR CODE! While I encourage you to:

  • Talk to your classmates about the lab and homework
  • Organize study groups
  • Consult other books or the internet for inspiration and clarifications
  • Ask the lab instructor or TA to help you find bugs in your code

I also have to remind you that:

  • All the work that you submit should be yours: it is against the honor code to have somebody else do the assignment for you (including TAs or tutors) or to copy it from somewhere else (including books or the internet).
  • You MUST acknowledge classmates or TAs that you worked with for each assignment -- this should be done in a comment at the top of your main source code file.
  • I understand that a great way to learn about new technology is by adapting code snippets found online; however, this enters very sensitive territory! For most of the assignments, you should not be adapting code you've found online; you may, of course, adapt code from the course web site. In some rare situations, there will be cases where it is appropriate to use other online resources (e.g., when using Java swing libraries we have not explicitly worked through in class or lab). Any code that you have adapted MUST be properly referenced (e.g., give the URL of the site you obtained the original from)! I expect to see comments where you have modified the original code. If you are at all unsure about what is acceptable, contact one of the instructors.
  • We will be automatically comparing code submissions to other submissions from this semester and past semesters.

Late Policy

You have 4 "free" late days to use on assignments throughout the semester. These may not be applied to the mid-semester project (Tetris) or the final project (20 Questions)!

To use a late day, you must fill out this late day google form prior to the assignment due date. You will need to specify:

  1. the number of late days being used for the submission
  2. the number of late days you have remaining

You may earn late days for your late day "bank" by turning in an assignment 2 days (48 hours) early!

  • every 2 days (48 hours) early = 1 late day earned
  • there are no partial late days earned for submitting 24 hours early

To earn a late day, you must fill out this late day google form when you are ready to submit. You will need to specify:

  1. the number of late days you anticipate earning
  2. the number of late days you have remaining

If you do not use all your late days, each unused day (max of 4) will transform into an extra 1/8 point (i.e., up to 0.5) on your final course grade.

If you run out of late days, you may submit beyond the deadline with a penalty of 10% per day late.

Access to CS Lab and Network

  • You will be given
    • An account on the Computer Science network, with the same username and password as you MHC account
    • Access to the Clapp 202 and Kendade 307 labs, which is equipped with Macs on the Computer Science network
    • See the CS help site for more information

Remote Access to CS Network

  • If you wish to work on a computer not in the lab (e.g., your personal computer or a LITS machine), you are responsible for transferring your files to the CS network for submission or when asking for debugging assistance.
  • To access and change your files from a your own computer, follow these instructions.
  • To access the network from off-campus, connect via these instructions first, then follow the instructions above.

Reference Materials

There is no required textbook. The following are recommended reference materials:

  • Java API
  • Learning Java, 4th edition, Patrick Niemeyer and Daniel Leuck, O’Reilly, 2013.
  • Data Structures and Other Objects Using Java, 4th edition, Michael Main, Addison-Wesley, 2012.
    • Book on 3-hour reserve at the library.
  • Head First Java, 2nd edition, Kathy Sierra and Burt Bates, O’Reilly, 2005.


Because we are not following a specific textbook, class and lab attendance is extremely important. You are responsible for material presented in class; be sure to ask questions if there are concepts you do not understand. If you miss a class, please ask a classmate for notes and see me or the lab instructor with any subsequent questions on covered material.

Classroom Expectations

Cell phones should not be out during lectures. Laptop computers and tablets are allowed only for taking notes or following along with course materials. If you choose to use a laptop or tablet, you must to sit in the front row(s) of the classroom. Violations of these policies will affect the participation component of your final grade.


If you have a disability for which you require accommodations, please make an appointment to see the instructor within the first two weeks of classes so that we can make appropriate arrangements. You will need to have a letter from the AccessAbility Services Office, located in Wilder Hall B4 (phone: 413-538-2634, Accessability-services@mtholyoke.edu).

Skin by RIL Partner