CS222 Advanced Programming

Contents

General Instructions

This page contains the list of assignments for the course. Assignment submissions are due before the class meeting on the indicated day.

Managing your Assignment Portfolio Document

Most of your written work will reside on Google Drive in a shared folder. You will need to complete the account registration form (available on Canvas and required for the first assignment) to get access to this folder.

Each student will create an eponymous document in the Assignments folder on Google Drive, and this is where you will enter your assignment submissions. Each assignment entry in this document will be in its own document tab where the tab’s name matches the assignment’s. When you are satisfied with your work, you submit the URL to the corresponding tab.

Source Code Formatting

Source code must always be in a monospace typeface and otherwise unformatted. This is the de facto standard for showing source code listings within larger documents. Clean Code itself provides a good example.

Assignment Evaluation and Resubmissions

Each week, you may resubmit one assignment for evaluation, including assignments for which you did not make an initial submission. Sunday begins a new week. The last full week of classes is the last resubmission opportunity.

A valid resubmission opens with a Resubmission Report. This report describes, in one or more paragraphs, the major changes from the previous submission and how your understanding has changed. If the resubmission is your first attempt, the body of the Resubmission Report simply states that instead.

Thursday, August 27

Preliminaries (~90 minutes)

Read the course plan and document any questions you have about it. You can email questions to the professor or hold them for discussion at the beginning of the next meeting.

Complete the account registration form that is available on Canvas.

System Configuration (~1 hour)

Complete the following tasks to configure your laptop for upcoming assignments and projects.

Be sure to read and follow each step carefully. They may have you operating your computer in new ways. You may be intimidated by environment variables and paths, but this is the way to being a better software developer. If you run into any trouble, you can contact me or the CS system administrator Spencer Davis for help. The first thing we will ask you is where you currently are in the process.

These are the necessary tasks to configure your computer.

  1. Install Flutter. You will not need to configure Android nor iOS development unless your final project team decides to do a mobile app targeting these platforms.
  2. Set up platform development for your operating system. For example, if you are on a Windows laptop, set up Windows development.
  3. Install Android Studio, which we will use as our primary IDE this semester.
  4. Open Android Studio and install the Flutter Plugin. When you first open Android Studio, it may assume that you want to create an Android application; simply cancel the new project wizard to end up on the “Welcome” from which you can access and install Plugins.

You will know you have everything working if you can open Android Studio, create a new Flutter project, and run it. There is no assignment portfolio entry required; this assignment sets you up for future success.

Tuesday, September 1

An Inspectional Reading (~30 minutes)

In How to Read a Book, Mortimer Adler describes different ways of reading books and how one ought to adjust one’s approach based on the kind of book being read. He recommends approaching a new text with an inspectional reading, and that is what you’re about to do with Clean Code.

Read through the book’s index and table of contents. Notice that the main body is divided into four parts, and each part begins with a summary. Read those four summaries. Next, read through the book’s index to see what kinds of words, ideas, and people can be encountered within.

Based on this inspectional reading, what kind of book is this? Answer in your assignments portfolio document with a brief explanation.

Leap Year (~90 minutes)

Review the three laws of TDD, which can be found in CC14.

Then, complete the Leap Year example that was started in class. Export your finished project by using the “Export to Zip File” action within Android Studio and upload that file to the appropriate folder on Google Drive. Include your name in the upload so that I know whose is whose. We will soon learn a much more robust approach to submitting such work, but we have to walk before we can run.

Thursday, September 3

First Flutter App (~90 minutes)

Complete the Your First Flutter App Codelab.

The exercise recommends using Visual Studio Code, but you should use Android Studio instead. You should not have trouble with the UI if you have used IntelliJ IDEA before since Android Studio is very similar. Do feel free to help each other out—there is always a learning curve with new tools.

Post a screenshot to your portfolio document.

CC1: Clean Code (~30 minutes)

Read CC1 and consider whose definition of “clean code” appeals to you and why. This is purely for your reflection; there is nothing to submit for evaluation.

CC4: Naming (~90 minutes)

Read CC4. Take notes as you read the chapter. From the notes, distill some important principles of naming. In your submission, list and explain the principles you identified.

Review one of your previous programming projects in light of the principles you identified. Choose something significant that took serious independent effort, not just a lab or homework assignment. Evaluate that code in light of the principles you identified, clearly marking exemplars and violations using the “Insert Comment” feature of Google Docs.

Tuesday, September 8

GradeTool (~2 hours)

Use TDD to create a Dart library for converting a numeric grade to a letter grade. Create only the model layer and its associated tests, similar to how we approached the start of the leap year example. It is sufficient to deal only with simple letter grades, not “plus” nor “minus” grades. A satisfactory submission will be well-factored, following the rules of Clean Code that we have studied so far.

The work must be in a repository in our GitHub organization and have been created and managed through Android Studio. On Canvas, submit a link to your repository.

CC5: Comments (~60 minutes)

Read CC5. Take notes, identify principles, and explain them as above. Then select and review one of your previous projects, also as described above.

Thursday, September 10

Building Layouts and Interactivity (~90 minutes)

Complete the Building Layouts and subsequent Adding Interactivity tutorials. Submit a screenshot of the resulting application.

CC12: Objects and Data Structures (~90 minutes)

Read CC12 and the definition of SRP in CC19.

Select code as in previous “CC” assignments, ensuring your selection is in an OO language and has more than one class. For each class, explain whether it is a data structure or object by Martin’s definition, or if it is not clearly one or the other, what changes are required to make it one or the other.

Tuesday, September 15

GradeTool Redux (~2 hours)

Create a web UI in Flutter for your GradeTool library. A satisfactory submission will be well-factored with respect to the Clean Code principles we have discussed so far. Don’t forget: always run all the tests.

Thursday, September 17

CC7–8: Functions (~2 hours)

Read CC7–8.

TODO: Articulate the selection and review requirements.


CS222 Course Plans (Fall 2026) © 2026 by Paul Gestwicki is licensed under CC BY-SA 4.0