CSC321 2015F, Class 01: An Introduction to the Course
=====================================================

_Overview_

* Preliminaries.
    * Admin.
    * Upcoming Work.
    * Extra Credit.
    * Questions.
* What is this course?
* Course goals.
* Why this course?
* Course structure.
* Work time.

Preliminaries
-------------

### Admin

* I'll take attendance for the first few days to make sure that I know
  everyone's name.

### Extra Credit

* CS Extras (generally on Thursdays at 4pm); I don't know about this week
* CS Table (generally on Tuesdays at noon); I don't know about next week

What is this course?
--------------------

CSC 321 - Software Design Principles and Practices

* Learn theory, practice, and tools pertaining to the design and
  construction of software.
* Using Agile methodologies
* Constructing software under the Software as a Service (SaaS) model
* Using Ruby on Rails as our development software

Course goals - What is the *subject matter* of this course?
-----------------------------------------------------------

* Write down (or type or text yourself) about five things for yourself.
* Discuss your answers with the person near you.
    * What is common among your answers?
    * What do you consider most important among the anwer you
      came up with?
    * Did your partner come up with anything especially important
      or surprising?
* Be prepared to share with the broader class.

Things students came up with

* Understanding the relationship between front-end and back-end.
* UI design (nope)
* Good practices in designing software
    * We will cover two primary methodologies: Agile and plan-and-document,
      with a focus on agile
* A vocabulary for communicating with other developers
    * And a deeper understanding of the underlying processes
* How to analyze/measure where you are within a project.
* How to set up a server and deploy software (at least SaaS software).
* Not just Saas, but also other models of software we can build.
* Writing good code as an individual
* Developing software as a member of a team
* Working with a client (theory in 321, practice in 322)
* Documentation - Getting better at it
* Sharing code
* Testing and testing frameworks
* Databases and SQL.

Why this course?
----------------

Questions

* Why did you enroll?
* Why should we require a course like this in the major?

Answers

* To prepare us for careers in industry
    * Better serve the client, our employers, and ourselves
    * Even if we aren't writing software, it's useful to know how
      software can be written
* To help us understand practices
* To work on another aspect of CS; many of our courses focus on
  the theory side of CS; this lets us focus on the development side
* It's useful
* Developing software is fun!
* More generally, we learn to develop software because we can have
  a positive impact on the world through the software we develop.

Course structure
----------------

* Look at the course home page and the schedule of topics.
  <http://www.cs.grinnell.edu/~rebelsky/Courses/CSC321/2015F/>
* Think about
    * What is surprising?
    * What is confusing?
    * What don't you see that you expected to see?

Surprising

* Ethics essay.
    * As you build software, you have a responsibility to think about
      the ethics of the software you build.
* Journaling
    * Questions about the reading that you are expected to respond
      to seriously, usually with a paragraph each.
    * I will try to use your journal questions as the prompt for the
      way I organize the subsequent class period.
* What work is due?
    * Hasn't migrated from SPOC to course web
* No exams.  Grading is more on process than product.

Confusing

* What does MOOC stand for?  Massive Open Online Course
* What does SPOC stand for?  Small Private/Personalized Online Course
    * We take a MOOC, and build a "section" for a smaller group of
      students.
* What does 10.1 mean?  First section of chapter 10.
* Why doesn't my EdX account work for this course?  Edge.EdX and
  EdX maintain separate accounts.
* Why can't I sign up for the MOOC?  They changed it a few days ago.
  You can still the archived version.
* Sam screwed up at least one link.
* How do we keep it under 7 hours?
    * Limit yourself
    * Leave time for a reading journal
    * Log what you do, so that there's evidence that you tried
* Quizzes, weekly, on your own
* Tell me about extra credit
    * Send me a paragraph within two days
    * Value likely to be similar to 151

Other

* I am here to help support your learning, not to lecture to you.
* Read and sign the academic honesty policy within the next week.

Work time
---------

* Sign up for the class on edge.edx.org
* Take the week 2 pretest
* If you haven't programmed in Ruby, start working on the Ruby
  tutorial on CodeCademy

