Skip to main content

CSC 321.01, Class 15: Wrapup


  • Preliminaries
    • Notes and news
    • Upcoming work
    • Extra credit
    • Questions
  • The subject matter of the class
  • Apologies
  • Course evaluations
  • Debrief on the class
  • Debrief on alumni visits
  • Work time (starts at 9:15am)

News / Etc.

  • Today is our wrapup class.

Upcoming Work

Good things to do


  • CS Extras Thursday: Speaker from UIowa. Please attend.


  • Have a wonderful fall break.


The subject matter of the class

Chat with the person next to you and come up with about three items for each of the following.

Software design principles - What are principles that help you build good software? Software design practices - Primarily agile.

  • Agile - Pair, refactoring, short sprints, client-focused, …
  • DRY - A way of thinking about your code. (More generally, smells and ways to address them.)
  • Patterns, particularly MVC, as a way of thinking about the architecture of programs.
  • BDD and TDD - Approaching software development by thinking about capabilities.
  • Testing - Why - Good software, understand legacy software, think about your goals in detail, free you to make changes.
  • Acronyms: SOLID, SOFA, …
  • User stories

Tools, particularly Ruby and Rails.

  • Ruby
  • Rails
  • Rspec for testing
  • Cucumber for user stories
  • Heroku as a place for deployment
  • C9: Developing in the cloud rather than on your own laptop (or on a MathLAN workstation)
  • Git - deeper understanding of workflow and such
  • SQL, at least a bit
  • UML

Bigger picture issues

  • “I can learn stuff without a textbook or teacher providing all the information.”
  • Feedback from your team and from the software is helpful. Work in systems in which you can get feedback.
  • Ethics
  • Learn a bit about new technologies quickly.
  • Sometimes you have to work at a high enough level that you just trust that things underneath work without understanding them.


  • Too large.
  • Sam took on too much teaching responsibility.
  • Wrong format.
  • Switch back to the textbook.

Course evaluations

You know the drill.

Quick Debrief: Class

  • Would it work to have 321 + 322 + 322 in one semester? Need is unclear.
  • Should I go back to Hartl? Probably. There’s not really enough material to support the Rotten Potatoes stuff. The Rotten potatoes stuff needs more context.
    • Why Cucumber? It’s probably a bad idea. Let’s switch to RSpec or whatever.
  • Something in between would be nice.
  • Three hours straight on Tuesday/Thursday morning (bad idea). Two hour chunks would be better.
  • Notify us in advance that there’s an electronic version of the SaaSbook and that the electronic version is preferred.
  • Use the SaaSbook only for software design, and probably look for another textbook.

Debrief on Alumni Visits

  • Useful advice: Use popular gems - Confidence that they work as intended, don’t have security flaws, and likely have good documentation and a support community.
  • Useful advice: Use gems, rather than building stuff yourself.
  • Useful advice: Look at how recently things have been updated (programs, documentation)
  • Stable is often better than cutting edge
  • Beyond coding: Your first job is not your career, you will probably move.
  • Beyond CS: Grinnell remains your home
  • Tools to use: RSpec or Minitest, rather than Cucumber
  • They are an exciting, good, resource.

Work time