Software Development (CSC 321 2016S) : Home

Front Door


Welcome to the Spring 2016 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.

This semester, we are trying a new approach to the course (including a new book). We will meet three days per week for the first half of the semester. You are expected to do about twelve hours of work outside of class each week (and you may timebox that work).

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 underwent some significant changs last semester, and we will hit some hicups because of those changes.

Warning! I am re-adapting Dr. Davis's course and a new schedule.

Warning! I am unaccustomed to using EdX and my course Web site. At times, you will find that the EdX site is not up to date. When that happens, please notify me ASAP.

Warning! Some students prefer readings. Some prefer videos.
You should try both.


Meets: MWF 1:00-1:50 in Science 3819 (weeks 1-7 of the semester).

Instructor: Samuel A. Rebelsky [rebelsky], Science 3824. 641-269-4410 (office). 641-990-2947 (cell).
Office hours: TBD. 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 Mentors: Nora Bresette-Buccino [bresette]. and Albert Owusu-Asare. [owusuasa]. 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 twelve hours per week outside of class. (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 time on each week

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 (2016). Engineering Software as a Service: An Agile Approach Using Cloud Computing, latest edition.

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

Hartl, Michael (2015). Ruby on Rails Tutorial (3rd Edition). Addison-Wesley.

The book we'll be using to learn Rails. Available online at

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. (Recommended).


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.