Our course on edX: [part 1] [part 2]
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.
This course is an introduction to software development principles and practices, focusing on Web applications or "software as a service" (SaaS), for students with at least three semesters of programming experience including object-oriented design.
This course is a co-requisite to CSC 322, Team Software Development for Community Organizations. A primary goal of CSC 321 is to prepare you to undertake a significant project in CSC 322. By the end (or middle!) of this course, you should be prepared to:
Topics in CSC 321 will be introduced just in time for their application in CSC 322.
Assignments in this course should be brief but challenging. You will
often need to do some research of your own to meet technical
challenges; this is preparation for encountering the technical
challenges of your project work in CSC 322 and beyond.
This spring in CSC 321, we will be continuing an exciting
experiment. I've chosen to adopt materials from Berkeley's CS169 Engineering Software as a Service
as our basis for this course. We have access to the lectures,
exercises, and programming assignments through edX as a small private
online course (or SPOC). This
will enable me to "flip" the classroom,
so that you can spend class time not listening to lectures, but instead
discussing the material, doing practice exercises, starting on the
homework assignments, and asking questions.
Some comments and advice:
Our course materials will be on edge.edX.org. Note edge.edX.org has a separate username and password from edX.org. Unfortunately, edX is designed for MOOCs rather than SPOCs like ours. We will make the best of it.
As Armando and David
advise, do not multitask while
watching the lecture videos.
Multitasking is no better than
not watching the video at all; it goes in one ear and out the other. If
you find yourself getting bored or if you are short on time, you can
increase the playback rate so that the videos go faster. Taking notes
will help maintain your attention (see below).
If you prefer, you may to read the book rather than (or in addition to) watching the video lectures. The book sections and lectures cover essentially the same material, though with different emphasis and elaborations. If you read rather than watching the lectures, I highly encourage you to get online to watch the screencasts, so that you can see the tools and language constructs in use.
Whether you read or watch, take notes with pen and paper, so that you are fully engaged in the task and so that you process the information you are taking in. Your notes will also help you get started on the short journaling assignment that will accompany each lecture/reading. Bring your notes to class!
Your assessment will be based on your journal, several pair programming assignments which you will start in class and finish as homework, nine online quizzes, and one short essay.
I expect this class to take about half as much time as a typically rigorous, 4-credit, Grinnell CS class. You can expect to spend your time each week roughly as follows, with some weekly variations depending on the nature of our activities:
Our primary textbook:
You should purchase the Kindle edition ($9.99) through Amazon. You do not need a Kindle to read the Kindle edition. With the Kindle Cloud reader, you can read the Kindle edition in a Web browser.
If you prefer to read a bound paper book, you may purchase a used
copy of the print textbook (1st edition). At least one print copy will
available in the CS Library located in the CS Learning Center (SCI
3814). The print edition is fine for reading, but the code examples contain many errata which have been corrected in the most recent Kindle edition.
The CS Library is stocked with a shelf of books on related topics, including Ruby and Ruby on Rails; regular expressions; Web design and usability; HTML, CSS, and XML; version control and other tools; Scrum and XP; and software engineering in general.
As students, you are members of a global academic community. Both the
College and I expect the highest standards of academic honesty. (See
Among other things, this means clearly distinguishing between work that
is your own, and work that should be attributed to others. This
includes ideas and examples that you draw from labs and readings.
It is expected that you will follow the collaboration policies given in this syllabus and on assignments. In particular:
When you explicitly work with a partner, you need not identify the work of each individual (unless I specify otherwise).
You may discuss with anyone, without attribution, concepts that were presented in the readings/lectures, discussed in class, explored through lab exercises, or explained in the homework assignment.
Any individuals outside your group who make conceptual contributions to your solutions must be acknowledged and attributed with a comment in your code. That is, you must give specific attribution for any assistance you receive. The suggested acknowledgment format is "[Person X] helped me to [do thing Y] by [explaining Z]."
You may copy code from an external
source only as permitted by explicit or implicit license. If you are
not sure whether the author permits their code to be copied, consult with
Any code copied from an external source, whether a snippet or a whole module, must be cited with a comment. When
you copy the code and adapt it, you must still credit the
source. In your comment, provide a title, author, year, and page
number (for print sources) or a URL (for Web sources). If the code has an explicit license, that license and the copyright must be copied along with the code.
As an instructor, I will meet my obligation to bring any work suspected to be in violation of the College's Academic Honesty Policy to the attention of the Committee on Academic Standing, after which there is no recourse with me.
I encourage students with documented disabilities, including invisible disabilities such as chronic illness, learning disabilities, and psychiatric disabilities, to discuss appropriate accommodations with me. You will also need to have a conversation about and provide documentation of your disability to the Coordinator for Disability Resources, Autumn Wilke, located on the 3rd floor of the Rosenfield Center (x3702).
demands that you attend class consistently and contribute to both
discussions and technical work. Class is time for learning and practice
which you cannnot obtain by reading someone else's notes. Even if you
already know the
you should support your classmates' learning.
We must all strive to make class
worthwhile. In the event that we have little or no business to attend to together, I will abridge or cancel our class meeting.
In the spirit of mutual professional responsibility, each student
"vacation day" and one "sick day."
You must ask permission to take your vacation day, by email, at least one week in advance of the class day you plan to miss. You must also communicate your plans in a clear and timely fashion to any classmates with whom you are working closely.
If you need to take a sick day, please email me as soon as possible to notify me of your illness. You must also communicate in a clear and timely fashion to any classmates with whom you are working closely. If a serious illness means you must miss more than two class days, please provide me with documentation of your illness so I can work with you on appropriate accomodations.
With appropriate notice, I am willing to negotiate with
individuals for additional absences related to professional development or family obligations.
Because our class meets only once per week, I will deduct 3% from your overall grade for each absence not accounted for by the above policies.
I currently do not plan any absences myself, but one or two absences
may be necessary for my professional development. I will endeavor to
plan appropriate activities for my absence, and I expect you
to responsibly carry them out. I promise to take a sick day if need be;
you will be expected to make the most of class time in my
Deadlines will be posted on edX with the corresponding assignments. Be aware that edX posts all deadlines in
UTC. Central Daylight
Time is UTC-5, and Central Standard Time is UTC-6. WorldTimeBuddy
provides a handy conversion tool.
Homework will be assigned in class and due no sooner than the following Monday, typically at 5 p.m. CDT/CST.
Journal assignments will be due at 10 a.m.
CDT/CST the day of class to allow me to prepare for our
class at 2:15 p.m.
Deadlines may be extended for individuals and pairs in
accordance with the attendance policies
described above or, rarely,
by negotiation between the instructor and the entire class.
Because of our flipped classroom format, you will have plenty of time to get help from me and your classmates during class. In deciding when and how to seek help outside of class, exercise this policy: You Must Try, and Then You Must Ask.
To provide timely help outside of class hours, I plan to use the Slack
communication tool for both CSC 321 and 322, which I learned about from
one of last semester's CSC 322 teams and they learned about from their
mentor. I encourage you all to use it too!
You are welcome to drop in during my official office hours, posted weekly on my Google calendar, and you may knock any time my door is open. If your need is known at least 12 hours in advance, you are very welcome to schedule an appointment with me.
Because of the goal of professional development, I see my role in this class as more of a guide, mentor, and facilitator than as an instructor. However, it is also part of my duty to assess your learning and assign you a final grade for the course.
Grades on edX do not include all aspects of the course and should
not be considered final. I will maintain a gradebook on PioneerWeb to
include all aspects of the course.
I will use the following scheme as an initial basis for assigning
|Type of work
Watch for assignments on edX after videos/readings/tutorials.
You will be expected to complete 10 journal assignments for 3% each.
||Six timeboxed homework assignments at 5% each. Your lowest score will be dropped.
If you spend the required time and document your efforts on each assignment, you will earn a minimum grade of 90% (A-).
The goal is learning, rather than mastery; mastery will come in the project (CSC 322).
||In lieu of in-class exams, you will take ten online quizzes at 3% each.
|Ethics essay||10%||A single assignment after fall break. You will have the opportunity to review your essay with a peer and make revisions.|
I do not believe in grading on a curve; I would be thrilled to give you all As. However, I reserve the right to make adjustments if this weighting scheme produces grades which are lower than I believe are deserved. Any such adjustments will only raise your grade, never lower it.
Remember this is a 2-credit class
and will have half of the usual weight in your cumulative GPA.
Lectures should be watched and readings perused before
class. Readings are from Engineering
Software as a Service unless otherwise stated.
schedule should be considered provisional; any schedule changes
will appear as materials are assigned on edX.
|Date||Week||Topic||Videos/reading||Class activities||Due (evening before)
||2|| Intro to software engineering & SaaS;
Working with the customer
10.1 - 10.2; 7.1; 7.3 - 7.4
| Discussion; Role play exercise;
Start Homework 0 (Ruby warmup + Git tutorial)
||3||The Ruby language; RSpec
||Chapter 3; 8.1 - 8.2
Start Homework 1 (Ruby )
||4|| Software as a service;
Introduction to Ruby on Rails
|Chapter 2; Chapter 4
Start Homework 2 (Rails intro)
||Continue Homework 2 (Rails intro)
||6||BDD w/ Cucumber; Requirements wrapup||7.2; 7.5 - 7.12||Start Homework 3 (BDD)
||TDD w/ RSpec; Code smells||8.2 - 8.6; 9.5
||Start Homework 4 (BDD + TDD)||Quiz;
||8||Software engineering ethics
||Start Homework 5 (Oracle of Bacon)
||10||Agile project management;
Perspectives on SW engineering ethics
|10.4 - 10.9;
Code of Ethics; CACM articles
|Draft ethics essay
||12||Design patterns for SaaS
Final ethics essay
||13||Practical DevOps||Chapter 12
||Start Homework 6 (Performance)||Quiz
||Final reflections and course evaluations
|Finals week: No final exam
Janet Davis (firstname.lastname@example.org)Created August 21, 2014