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

Note that this website covers both 324 and 326. Most of the material will directly apply to students in 324. Students taking 326 should consult with the instructor and refer to the expectations for CSC 326.

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 week 3 - 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 will poll the class to find times that work for the majority of the class.

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

Course Description and Overview

This course combines two courses: CSC 321 (Software Design Princples) and CSC 322 (Team Software Development for Community Organizations). Although this combined course was taught in the Fall, substantial changes are being made this spring in order to provide more time in working with your community partner on the team project. Expect changes during the term!!

The about 1/3 of the course will focus on software engineering and design principles, especially Software as a Service (SaaS) and software development models (especially Agile). These may not be directly applicable to the team project, but they form a theoretical basis for work on large-scale projects.

About another 1/3 of the course will focus on technical skills applicable to the 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, a large component 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.