CS222: Advanced Programming, Section 2, Fall 2013

Course Information

Course Title
Advanced Programming
CS222 Section 2
MWF 1:00–1:50 PM in RB122
CS121 and CS124
Paul Gestwicki, Ph.D.


The course catalog provides this short description of the course:

Project-intensive study of advanced topics and best practices in software development, including advanced language features, modular decomposition, and development tools.

This semester, our inquiry will be guided by the following essential questions of advanced programming:

  1. What does it mean to be a "professional" in software development?
  2. How do you know when a feature is done?
  3. How do small teams of developers coordinate activity?
  4. How does a Computer Science professional use ubiquitous and chaotic information to be a lifetime learner?

Note that, because this is a three-credit course, you should expect to invest nine hours of attention to it per week.




Each student is expected to bring a laptop computer to class that is configured for software development. This must minimally include:

In order for the MercurialEclipse Plug-in to work, you will need to install the Mercurial binaries for your operating system. On Windows, these can be downloaded during the plug-in installation process; users of other operating systems will need to install binaries manually. You will not need the CodeBeamer component of the plug-in.

You will need to create and edit a Mercurial configuration file that specifies your username. Refer to the first step of the Mercurial QuickStart for instructions.


Your grade will be based on the achievements that you earn during the course of the semester and your reflections on these. Claiming achievements and submitting reflections are done via Blackboard; check the course site for instructions.

Claiming Achievements

You earn achievements by exploring the content of the course in such a way that addresses our essential questions. Each achievement has its own criteria, and all of them require you to create one or more achievement artifacts that represent your work.

When claiming an achievement, ensure that you have met all the criteria to a high standard of quality. When dealing with natural languages, your work is expected to be clear and concise, free of spelling and grammar errors, and representing elegance of form; when dealing with programming languages, your work is expected likewise to be clear and concise, free of compiler warnings and errors, and representing elegance of form. Note that this means that the standards for quality necessarily increase during the semester as you develop a better understanding of advanced programming.

Achievements can be claimed for collaborative work, although each contributor must credit his or her collaborators. As always, cite your sources!

For the purpose of claiming an achievement, "production code" refers to code that was developed for an external purpose, as opposed to code that was invented strictly for the achievement's sake. This can be any code you are legally allowed to modify, including your own code (such as past or current assignments as well as hobby projects) or code you are licensed to modify (such as free and open source software).

Note that the achievements are divided into categories. Some may be claimed at any time, and some require us to be in a specific portion of the semester.


Reflections are written after completing all criteria of an achievement, and they provide an opportunity for you to focus on what you learned through the process. Reflections will be evaluated using my triage grading rubric based on the following criteria; it is strongly recommended that your reflection be formatted in three paragraphs, one for each criterion.

Each reflection is worth up to nine points. You may submit up to two reflections per week; details and deadlines will be posted on Blackboard.

You may resubmit reflections for re-evaluation. Each time you resubmit a reflection, you enter a five-day "cool-down" period: you may not resubmit again until five working days have elapsed. Resubmissions will not be accepted after the start of finals week. Note that resubmission presupposes submission: you cannot "resubmit" something that was never submitted.

Whereas achievements can be earned collaboratively, reflections are necessarily personal. See the List of Achievements below for details on each achievement's criteria.


Your grade will be determined according to the following table. It is recommended that you pursue two achievements per week before starting the final project and one achievement per week afterward. Note that meta-achievements are achievements—that is, they count in the Minimum Achievements column—and hence they require explicit claiming and permit achievement reflections.

Letter Grade Minimum Achievements Minimum Meta-Achievements Minimum Points Minimum Final Exam Score

The instructor reserves the right to make modifications to the balance and allocation of points as necessary to reflect the needs of the community of learners. Any such modifications will be announced in a class meeting.


During the first week, we will review fundamentals of Java programming (within the Eclipse IDE) and object-oriented design.

In the first month of the course, we will read and discuss the first twelve chapters of Clean Code according to the table below. Note that the table also provides recommendations on which achievements would dovetail nicely with these readings. How you sequence Clean Code achievements with the Java-oriented achievements depends on your experience and comfort level with Java.

WeekReadingRecommended achievements
1 Clean Code chapter 1 Studious and Java Core Sampler
2 Clean Code chapters 2–4 Master of the Big Three and one of Clean Code Phases 1–4
3 Clean Code chapters 5–8 Two of Clean Code Phases 5–8
4 Clean Code chapters 9–12 Two of Clean Code Phases 9–12

In mid-September, we will begin a small project in pairs, through which we will put the Clean Code principles to practice.

In early October, you will form a team and pitch a project idea to me and the rest of the class. The remainder of the semester will focus on the context of these projects. They will be created in three iterations of about three weeks each.

List of Achievements

File Formats

All files contributed for achievements and reflections must be submitted in open file formats. Good examples include HTML, PDF, OpenDocument, and my personal favorite, plain text. Note that Microsoft Office and Adobe Creative Suite formats do not qualify.


Traditional examinations are not expected for this class, although the instructor reserves the right to modify this policy to serve the needs of the class. Note that we will have a class meeting during the university-scheduled final exam slot, as required by university regulations. This meeting will be Friday, December 13, at noon.

Attendance and Related Policies

Your learning is commensurate to your participation, and so attendance is expected. You are responsible for your learning regardless of attendance. If you miss a class meeting, you should consult with trusted classmates to ensure you have the appropriate notes. I will not repeat myself unnecessarily over email, during office hours, or by appointment. Meetings begin at the time scheduled, and you are expected to be ready to begin at this time; late admittance is prohibited.


Office Hours and Appointments

Students who come to office hours are helped on a first-come, first-served basis; no appointment or prior contact is required. If a student wishes to make an appointment to meet outside of office hours, he or she should email the instructor the request along with several possible meeting times.


All email communication to the instructor should be from a BSU-affiliated address. This policy ensures that senders can be correctly identified and protects your privacy. Email sent from other domains may not be answered.

The instructor may access email through services not affiliated with the University. Please note that such messages necessarily pass through the campus firewall in an unencrypted format, and they may be stored on servers not owned or managed by Ball State University. It is therefore advisable to restrict confidential information to office hours or appointments.

If you are emailing regarding questions in a computer program, it is recommended that you send a copy of the code in question in your email. The preferred method is to copy the code into the body of your message, using plain text and following standard formatting conventions. Alternatively, if the code is in a publicly-readable repository, email the URL.


Although the instructor's office telephone number is listed, email and face-to-face communication are strongly preferred. I will respond to every student email I receive; I will not necessarily respond to telephone messages.

Academic Integrity

Students and faculty are bound by the Student Academic Ethics Policy of the Code of Student Rights and Responsibilities.

Intellectual Property

It behooves you to be aware of fundamentals of copyright law and the university's intellectual property policies for student-created work.


We will be using Google Docs and other connected technologies to coordinate community activity. If you do not already have a Google account, you will need to create one. Using two-step verification is strongly recommended.

All students have free access to The Writing Center.

Notice for Students with Disabilities

If you need adaptations or accomodations because of a disability, if you have emergency medical information to share with the instructor, or if you need special arrangements in case the building must be evacuated, please make an appointment as soon as possible.

Image Credits