CS222: Advanced Programming, Section 1, Spring 2015

Course Information

Course Title
Advanced Programming
CS222 Section 1
MWF 8:00–8:50 AM in RB104
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 practice the craft of 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 software developer 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.



We will be using Google Drive to manage and share information. You will need a Google Account; configuring 2-step verification is strongly recommended. Details on accessing this section's shared drive will be given on Blackboard.

Each student is expected to bring a laptop computer to class that is configured for software development. Configuration should be completed within the first first 48 hours of the semester; be ready to develop in class by our second meeting. This configuration minimally includes:

Mercurial Configuration

Mercurial is a distributed version control system that we will use throughout the semester, both for me to share my code with you and for you to share code with each other. There is also an excellent tutorial on what Mercurial is and how it works at HgInit.com.

You can install MercurialEclipse through the Eclipse Marketplace: launch Eclipse, open the Help menu, open the marketplace, and search for "mercurial". In order for the MercurialEclipse Plug-in to work, you will need to install the Mercurial binaries for your operating system. On Microsoft Windows, these can be downloaded during the plug-in installation process; users of other operating systems will need to install binaries manually. Note that 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 BSU username. Refer to the first step of the Mercurial QuickStart for instructions. Note that the Eclipse configuration sometimes gets confused and uses the wrong information; always doublecheck that your username is properly formatted before committing.

Should you encounter difficulties with your system configuration, I recommend that you post on the General Discussion forum on the course Blackboard page or contact the friendly neighborhood system administrator.


The following table gives an overview of the planned semester activity. The week numbers are approximate; see the detailed schedule for exact dates.

1 Assignment 1
2 Assignment 2
3 Assignment 3
4–5 Two-week project
6 Final project preparation
7–9 Final project, iteration 1
10–12 Final project, iteration 2
13–15 Final project, iteration 3
16 Final exam

We will have our last meeting during our final exam period as assigned by the university.


The details of the assignments are given on the assignments page.

Two-Week Project


Date Event
January 26 Form pairs
February 6 Project due at 8AM; Project showcase in class

Final Project

The details of the final project are given on the final project page.

Date Event
February 9 Form teams and workshop pitches
February 11 Pitch your projects
February 13 Start first iteration; repeat pitch as necessary
March 11 First iteration deadline; start second iteration
March 11–13 Iteration 1 presentations
April 1 Second iteration deadline; start third iteration
April 1–3 Iteration 2 presentations
April 24 Third iteration deadline
April 24–27 Iteration 3 presentations


After the third week of the semester, you will have the opportunity to earn achievements, one per week (counting the week as ending on Sunday). All achievement artifacts will be posted to our shared folder on Google Drive so that the rest of the learning community can benefit from them.

I will review your achievement claim. If I agree that all the criteria have been satisfied, then I will approve your claim; if I disagree, I will reject it. Either way, this will be made explicit in a comment in the document. You may resubmit one revised achievement claim per week. Note that collaborative achievements will be held to higher standards.

Achievements are earned by individuals, although multiple people may submit a claim based on a shared experience. You are encouraged to read and discuss each others' claims, which is one of the reasons they will all be placed in the shared folder.

Note that when an achievement refers to a "project", this can be either your two-week project or your final project.

The final day to claim new achievements is Sunday, April 26. The final day to revise an achievement claim is Monday, April 27, which counts as a separate week.

Making a claim

To claim an achievement, check the shared folder for a document with the corresponding name. If one does not exist, create it in the shared folder. Begin your entry by typing your name, formatting this line as Heading 1. Once your entry is complete, set a bookmark on this line by going to the “Insert” menu and selecting “Bookmark;” this will allow you to link directly to your entry. Place the achievement artifacts under this heading, using the Normal text style. Finally, submit your achievement for evaluation using the form linked on Blackboard.

You are expected to follow best practices of college-level writing, including consideration for content and form. Following standard typographic conventions, ensure that source code is properly formatted and presented in a fixed-width typeface such as Consolas. We're writing in a digital format, so be sure to use hyperlinks, pictures, and other media when they are appropriate to your message.

An etymological note

Several achievements require the writing of an “essay.” I use this term in the classical sense, to describe a composition that represents an attempt to understand a complex idea. An essay is neither a summary nor a staid five-paragraph construction. As the course prerequisite implies, these essays should represent collegiate-level writing. You are welcome to leverage the digital writing environment to compose multimodal pieces.

List of Achievements


First, a bit of philosophy. I grade almost everything according to my triage grading approach. Briefly, each item is graded as incorrect, partially correct, or correct. These correspond to D, C, and A grades, respectively. If you get some things right and some things wrong, you should expect to get a C; that's how I interpret "average." If you want to get a grade corresponding to "very good" or "excellent", you will need to get things right much more often than not.

Your final grade in the course is determined by your final project grade, and this grade is capped based on your class participation. The grade-capping rules are listed below, in priority order.

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.

Note that during the second half of the semester, I tend to hold a lot of meetings in the lab. I usually remember to put a note on my door to this effect, but if I don't, you can look for me there.


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 my office telephone number is listed on my Web site, email and face-to-face communication are strongly preferred. I will respond to every student email I receive; I will likely not 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.

File Formats

When file submission is necessary outside of Google Drive, all files 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.

The Writing Center

Want extra feedback on your papers? The Writing Center is a community of Ball State students and faculty who value writing. Come and collaborate with one of our trained peer tutors on any project for any major. The Writing Center is a comfortable, supportive environment for writers from all communities and backgrounds. It is located in Robert Bell 291. To make an appointment, go to http://ballstate.mywconline.com.

Notice for Students with Disabilities

If you need course adaptations or accomodations because of a disability, please contact the instructor as soon as possible. Ball State's Disability Services office coordinates services for student with disabilities; documentation of a disability needs to be on file in that office before any accomodations can be provided. Disability Services can be contacted at 765-285-5293 or dsd@bsu.edu.