This class is under development and will change substantially before we begin in August.

Class Meetings

We meet Monday, Wednesday and Friday from 10:00 to 11:50 am in Science (Noyce) 3818.

While we will use class time for team projects, you should also assume that you will need to schedule additional team meeting times - especially after Fall Break - in order to work on your project.


Barbara Z. Johnson, Ed.D. See website for additional details.


2811 Noyce (Science)

Phone number: x4695

Email: johnsonba@grinnell.edu

Office hours: I generally am available to talk to students who drop in during the following times:

If the door is closed, please assume that I am meeting with someone. If none of these times work for you, please check my calendar for an available time and email me to set up an appointment.


Our peer mentor for this course is Maddie Kirwin.

Course Description and Overview

This course combines two courses: CSC 321 (Software Design Princples) and CSC 322 (Team Software Development for Community Organizations). Since is the first semester to merge these two, expect that this course will be a work in progress, and the schedule may change.

The first 1/3 of the course will focus on software design principles, especially Software as a Service (SaaS), software development models (especially Agile), and development of web-based solutions using the Ruby on Rails framework.

The rest of the course will move into the application of these ideas and tools as students work in teams to build software projects that support local community organizations while we revisit principles of object-oriented design in context.  Thus, the majority of this course is a practicum in which students will work with each other, with alumni mentors, and with clients from outside of the Grinnell College.

Learning Goals

  1. Apply Agile software development methodology, tools, and practices in real-world team projects
  2. Contrast Agile software development with plan-and-document methodologies
  3. Build SaaS applications with the Ruby on Rails framework and apply those skills on a large-scale project
  4. Apply object-oriented design principles and design patterns
  5. Apply techniques for understanding and modifying legacy code
  6. Gain experience with the complexities of real-world software development:

You will be able to draw upon these experiences in pursuing academic or industry positions. By storing your source code through GitHub, you will make a substantial beginning or addition to your professional portfolio. In addition, you will develop professional skills and perspectives.