Software Development (CSC 321 2015F) : Home

Front Door


Welcome to the Fall 2015 section of Grinnell College's CSC 321, Software Design: Principles and Practices. In CSC 321, we build your skills in software development to prepare for you to do projects in CSC 322 and elsewhere. The current model of the course focuses on Web applications with the Sofware as a Service (SaaS) model using Agile Development principles. We will ground many of the ideas in the Ruby on Rails framework.

Catalog Description

Provides a foundation for "programming in the large" and developing high-quality software that meets human needs. Introduces the software lifecycle, agile development methods, professional tools, and software design principles. Includes hands-on laboratory work.

Class Format

This course is being offered in a non-traditional format. We will be relying on a MOOC and SPOC as part of the core "textbooks" for the course. We can then spend class time more on discussion and problem-solving based on the readings and videos from the MOOC/SPOC. (Some people would call this a "flipped classroom.")

This is also a course in which you should be developing professional skills and habits. Hence, some of the work in the class will require you to do exploration on your own. The College would probably call this an opportunity to "learn how to learn". When you are stuck, I recommend that you follow the strategy of you must try, and then you must ask.

Learning Goals

By the end of this course, you should be able to

Important Warnings

Warning! The Berkeley CS 169 course that forms the underpinnings of this course is undergoing some siginficant changes this semester, and their start date is not until October. We may hit some hicups because of those changes.

Warning! I am adapting Dr. Davis's course. Some of her natural approaches may not match my own, so things may be uneven at times.

Warning! I am new to using EdX as an instructor and reworking Dr. Davis's materials. I only got access to EdX the weekend before the first day of class. Hence, The EdX portions of this course may be a bit wonky for now.

Warning! Many past Grinnell students have said that they prefer the readings to the videos. You should try both.

Warning! I am teaching three new courses this fall (as well as CSC 151) and serving as department chair. I am trying to institute a wellness schedule: Except on weeks in which I have an exam to grade, I am limiting myself to two hours of evening work per day and five hours of weekend work.


Meets: Tu 2:00-3:50 in Science 3819.

Instructor: Samuel A. Rebelsky [rebelsky], Science 3824. 641-269-4410 (office). 641-990-2947 (cell).
Office hours: MWF 11:00-11:45. Book time at I also tend to follow an open door policy: Feel free to stop by when my door is open or to make an appointment for another time. You can also look at my normal schedule for some information.

Class Mentor: Nora Bresette-Buccino. [bresette]. Office hours: TBD.


These policies are based on the previous version of the course and may change.


I know that there have been concerns about the workload in this class. I will do my best to keep the load reasonable. Let me know when it's more than seven hours per week. (If you don't want to tell me, tell the SEPC and they'll tell me.)

Here's what I expect you'll be spending your seven hours per week on.

The first week may be a bit busier as you get set up.


Dr. Davis created a Slack team for general discussion of CSC 321/2. Join it here: There is a #homework channel for discussion of homework assignments!


The course designers now recommend that we do development on Cloud 9. Instructions are at

Books and Other Readings

The CSC 321 Course Web

The hypertext that you are currently reading. Right now, it looks like it will primarily contain my notes for each class (outlines) and my record of each class (eboards), but we'll see.

Fox, Armando and Patterson, David (2014). Engineering Software as a Service: An Agile Approach Using Cloud Computing, edition 1.1.1.

Our core textbook. Fox and Patterson synthesized a lot of ideas to produce a textbook that grounds software engineering principles in a new model of computing. This textbook is rapidly evolving. I would recommend that you purchase the Kindle edition through Amazon, particularly since they are updating the textbook again this semester. (With the Kindle Cloud Reader, available at or an appropriate app, you should be able to read the book on any electronic device.)

Fox, Armando and Patterson, David (2014). BerkeleyX: CS169.1x Engineering Software as a Service (Archived Edition). Available online at

The underlying MOOC. You can use this MOOC for videos that correspond to the various readings. There are also many other resources available on the MOOC.

James Shore and Shane Warden (2007), The Art of Agile Development, 1st edition.

A nice text on the agile development methodologies we will be using in CSC 322, which provides more depth than the Fox and Patterson stuff.
The text is required in CSC 322 and optional in CSC 321.


Many parts of this overview, as well as the overall design of the course, are due to Janet Davis. I have reused materials with her permission.