CS222: Advanced Programming, Section 1, Spring 2014

Course Information

Course Title
Advanced Programming
CS222 Section 1
MWF 8:00–8:50 PM in RB122
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.



We will be using Google Drive to manage and share information. You will need a Google Account; configuring 2-step verification is strongly recommended.

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:

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. 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.


Your grade will be based primarily on the achievements that you earn during the semester, your reflections on these experiences, and your your performance on the final project and final exam.

Earning and Claiming Achievements

You earn achievements by demonstrating your understanding of course content. To claim an achievement, complete all of the criteria and then submit the corresponding form provided on Blackboard. Achievements can be claimed for collaborative work as long as all contributors are clearly identified. You may claim up to two achievements per week, although it is recommended that you plan on completing two per week for the first four weeks and one per week once we get into bigger projects. For our purposes, the "week" ends at the end of the day on Sunday.

The achievement criteria must be met with a high standard of quality. Written work is expected to be clear and concise, free of spelling and grammar errors, and representing elegance of form. When dealing with programming and modeling languages, your work is expected likewise to be clear and concise, free of compiler warnings and errors, and representing elegance of form. As always, cite your sources. Note that standards increase during the semester as you develop a better understanding of advanced programming!

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. Refer to the schedule for details.

All achievements require the creation of an achievement artifact that is shared with the class. Each artifact goes into a document with the corresponding name in the shared folder on Google Drive. If there is no such document yet for the achievement, simply create one in the shared folder.

I will evaluate your achievement artifacts using my triage grading rubric. This allows me to give you feedback on your work and help correct misunderstandings. For the purposes of computing your final course grade, an achievement is confirmed if you earn at least two of three possible points in the evaluation. You may request reevaluation of a revised achievement artifact using the form on Blackboard. You may request one reevaluation per week until finals week; note that this is strictly one request per week, not one request per achievement per week.

Finally, here are some definitions that will be useful in navigating the list of achievements:

Definitions used within the achievements list:
Production code
This may be any code you have a license to read and modify, such as a program you wrote or anything licensed under an open source license. The code must have a purpose outside of the achievement: it cannot be "throwaway" code written only to earn the achievement. Likewise, the code may not be less than fifty lines. Before we start the two-week project, any code may be used as production code, as long as it complies with the restrictions above. During the two-week project, you may use the two-week project itself or public, open source project code. During the final project, you may use the final project code or public, open source project code.
A tutorial must instruct the reader how to do something that he or she could not do before. The lesson must have a clear goal, explain the steps necessary to reach the goal, and provide the reader with means to know whether or not the tutorial was completed successfully.
An essay is an attempt at understanding. An essay should contain an original contribution to the course themes. Feel free to frame any essay in terms of our essential questions.

Writing Achievement Reflections

You are encouraged each week to take a step back from the projects and achievements and to reflect on how these activities are helping you to address the essential questions of the course. An "achievement reflection" comprises the following parts:

  1. Identify which essential question you are addressing.
  2. Attempt a partial answer to the essential question, justifying your answer with the experiences from the past week. These experiences may have come from individual work, in-class activity, collaborative efforts on a project, and so on.
  3. Having addressed the essential question, describe what this means for your personal practice. That is, what specifically will you do now that you have made this answer? This portion of the reflection should be focused on the immediate or short-term future. For example, "I will study more" is too vague, whereas "I scheduled a study room in the library for Sunday afternoon where I will make progress on my next essay" is concrete and appropriate.

Each reflection is worth up to six points, following my triage grading rubric. Whereas achievements can be earned collaboratively, reflections are necessarily individual. Reflections are submitted via Blackboard.

Final Project

The majority of the semester will be spent working in teams on a software development project. Full details will be provided on Blackboard.


Traditional mid-semester examinations are not expected for this class, although the instructor reserves the right to modify this policy to serve the needs of the class. The final exam will be Thursday, May 1, at 7:30 AM.


The table provides the projected schedule for the semester. Modifications will be announced in class. A list of suggested achievements for the first few weeks is also provided, for those who seek direction.

Week(s)ActivitySuggested Achievements
1Read CC1–4 Studious, Java Core Sampler
2Read CC5–8 Master of the Big Three, TDD Investigator
3Read CC9–12, 17 Clean Coder: Naming and Functions
4–5Two-week project
6–8Final project, first iteration
9–11Final project, second iteration
12–14Final project, third iteration
15Final presentations


Your grade will be determined according to the following table. It is recommended that you pursue two achievements per week before starting the two-week project and one achievement per week afterward. Note that Meta-Achievements are achievements, and so they count toward the minima in both columns.

Letter Grade Minimum Achievements Minimum Meta-Achievements Minimum Reflection Points Minimum Project Score 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.

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.

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.


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 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.