Software Development (CSC 321 2016F) : Home

Front Door


Introduction

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

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 changes recently, and we will hit some hicups because of those changes.

Warning! I continue to adapt to a subject that is not my primary specialization.

Warning! I am unaccustomed to linking 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 for the SaaS stuff.

Basics

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 https://rebelsky.youcanbook.me. 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: TBD Office hours: TBD.

Grading

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

Workload

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.

Communication

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

Development

The course designers now recommend that we do development on Cloud 9. Instructions are at https://github.com/saasbook/courseware/wiki/Setting-up-Cloud9.

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 https://read.amazon.com/ or an appropriate app, you should be able to read the book on any electronic device.) If you purchase a hardcopy, you should not purchase a used copy, since they've made significant changes.

Hartl, Michael (2016). Ruby on Rails Tutorial (4th Edition). Addison-Wesley.

The book we'll be using to learn Rails. Available online at https://www.railstutorial.org/book

Fox, Armando and Patterson, David (2014). BerkeleyX: CS169.1x Engineering Software as a Service (Archived Edition). Available online at https://courses.edx.org/courses/BerkeleyX/CS-CS169.1x/3T2014/.

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

Citations

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. The design of the SaaS course is clearly due to Fox and Patterson.