CS222: Advanced Programming, Section 1, Fall 2014

Course Information

Course Title
Advanced Programming
CS222 Section 1
MWF 11:00–11:50 AM in RB117
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. 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:

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. There is also an excellent tutorial on what Mercurial is and how it works at HgInit.com.

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.


During the first three weeks of the course, we will read and discuss a selection of chapters from Clean Code:

1 Chapters 1–4
2 Chapters 5–8
3 Chapters 9–12, 17

There will also be some required practice during this period, which will be announced in class.

This introduction will be followed by a two-week project, to be completed in pairs. You will form pairs and begin the project on September 8, and it will be due on September 22. All deadlines are in effect at the start of class on the designated date.

The two-week project serves in part as preparation for the final project, which will occupy the bulk of the semester's attention. This project will be undertaken by teams of three or four students and completed in three iterations, following the schedule below:

Date Event
September 22 Form teams
September 26 Pitch your projects
September 29 Start first iteration
October 22 First iteration deadline; start second iteration
October 22–24 Iteration 1 presentations
November 10 Second iteration deadline; start third iteration
November 10–12 Iteration 2 presentations
December 5 Third iteration deadline
December 5–8 Iteration 3 presentations

Additional details on the final project can be found in the final project specification page.

We will have our last meeting during our final exam period, 9:45–11:45 on Thursday, December 11.


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 a shared folder on Google Drive so that the rest of the learning community can benefit from them.

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 or, for a collaborative effort, the names of all collaborators; format 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. Following standard typographic conventions, ensure that source code is properly formatted and presented in a fixed-width typeface such as Consolas. Finally, submit your achievement for evaluation using the form linked on Blackboard.

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.

The final day to claim achievements (new or revised) is Sunday, December 7.

List of Achievements

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.


During your final project, you may complete one or more quests. Claiming completion of a quest is done using the same process described above for achievements. Additionally, quests count as achievements for the purposes of determining your final grade.

The final day to claim quest completion is Sunday, December 7.

List of Quests


Your default grade in the course is equal to your final project grade capped at C+; earning above-average grades requires additional work. To earn a B-level grade, you must complete ten achievements, and to earn an A-level grade, you must complete ten achievements and one quest. Additionally, to earn an A-level (A−, A) or B-level grade (B−, B, B+), you must have completed all of the required work in the first three weeks of the class.

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

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.

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