Course Work

Course Format

The following instructional strategies and formats will be used:

  1. Class meetings will usually include a mixture of mini-lecture, class discussion and Q & A, meetings with outside guests (guest speakers, project mentors, and clients), and time set aside to work with your team on your project
  2. Assigned readings, exercises, and reading journals
  3. Team-based, small-group programming. This mirrors the practical world of software design and development and gives you an opportunity to practice skills you will need after graduation
  4. Project-based learning toward your team's semester project. It is expected that your team will successfully implement serveral features in developing a web-based application for a community client, but you might not complete the entire project during the semester.  The learning objectives of the course focus on learning the process and skills of software design and development
  5. You will almost certainly need to schedule time outside of class meetings in order to work with your team!
  6. Additional materials, especially video, are available at the Fox & Patterson online course

Submitting Work

Most assignments will be submitted through our course in Pioneer Web, especially during the first half of the course. In progress scores can be found in the Pioneer Web course grade center. I will do my best to get assignments graded and feedback returned within a week of submission.

For teamwork, only ONE report per team will be necessary.

Anticipated Work Load

This class will be challenging and should take about 12 hours of work per week. Some of the work will be done during class meeting times, but you should plan to spend about 6 hours outside of class in addition to class meetng times. During the first part of the term, this will be spent in learning software development principles, Ruby, and Ruby on Rails. During the second part of the class, you will be working on your team project.

Hence, it is very important that you attend class meetings and work with your development team to arrange out of class meetings and work sessions.


Required Texts

Recommended Resources

Other Resources

Ruby and Ruby on Rails are very powerful and rich development tools. We will not be able to cover everything you need to know, especially since different projects will probably require different features. Hence, I am providing you with a variety of links to aid you in learning not only Ruby and Ruby on Rails but also software development tools that you may find useful not only in this class but also in your future careers. As several of our authors point out, as software developers and researchers, you will always be learning.

So, whenever you are scratching your head over something, try clicking the "Resources" button and see if anything there is helpful. Also, check on the class Slack channel to see if anyone can answer your question since our alumni mentors, class mentor, and instructor will be checking Slack periodically.

On the flip-side ... if you find a particularly useful resource, please share it with the rest of us!

There is also the ever-helpful strategy of entering in any error messages that you encounter into a Google search and finding an answer there.


Seating and Pairs

Through the first part of the course (i.e. before Fall Break), I will ask you to sit in different places in the classroom, usually by some random method of assignment. This is to enourage you to meet new people and get different viewpoints on the material during discussions.

Once teams have been formed, you will work the rest of the term with your assigned team.

Group Project

You will be assigned to work with a team of 4 other people (teams of 5 total) in order to develop web-based software for a local client that is a non-profit organization. Depending upon the current availability of clients, you may be extending existing code or starting a new project.

In about Week 6, the local clients will make presentations about their needs, and each student has the opportunity to rank their interest in each project. At the same time, each of you will be asked to complete a survey identifying your technical skills in areas such as HTML and JavaScript as well as comfort with (and interest in) serving in the various possible roles of an Agile development team (leadership, presentations, organization, reporting, etc.). Using this information, I will create teams that are as balanced as possible while assigning people to the projects that seem most interesting to them.

We have alumni mentors who support each team's development efforts. They come to campus early in the term to meet face-to-face with their assigned team, and then they maintain contact with the team during the remainder of the term, usually using remote meetings and other digital communication services.

Academic Honesty

Please take a moment to review the Computer Science Department's Academic Honesty Policy. This course is one important and practical step on your transition to becoming practicing computer scientists, whether you plan to work in the industry or continue on in acadmic research. Since we will be creating software that will be published and used by clients, you must practice appropriate attribution habits so that they become second nature. Failure to do so may cause embarassment and lawsuits in the "real world" (see Sam's excellent exposition on the subject since I don't think I can say it better). While we are here in class, forgetting to credit a source or a collaborator may be cause for disciplinary action.

There are two main categories of assignments in this course. Individual assignments are the Reading Journals (RJ), Homework (HW), and and your Ethics Paper. I expect that you will write up your own answers and not copy from anyone else. If you ask anyone else (other than me) for help, proofreading, or comments, you must cite the person. If you go to another online or written source (other than our textbooks or other listed resources), cite it. When in doubt, cite!!

I will also ask for individual reports during the second half of the term; these are intended to communicate your individual progress (or barriers or concerns) to me, and they are separate from the team reports.  In this case, there is no such thing as a "wrong" answer; please write these from your own perspective.

Most of our work this term will be done collaboratively. Be sure to list everyone who works on code, documents, reports, and presentations with you.  You only need to turn in one copy of an assignment for the whole group.  You will "turn in" your portfolio as well, and these documents should cite everyone who worked with you to create each item in your portfolio.  It is also very important to include citations for books or online sources that you used as reference material.  Again, when in doubt, CITE!

Getting Help

If you are having trouble with readings and individual assignments, try using the class Slack channel to get help from your classmates and mentors (or possibly me, depending upon the time of day).

If you're still stuck, come and see me. If I am in my office with the door open, pop your head in. Otherwise, set up a time to meet.

Course Policies


  1. Do the reading for the day BEFORE class. This way, you can ask questions and contribute to the discussion.
  2. Submit reading journals BEFORE class. This will help me understand what concepts need to be addressed during class time.
  3. Come to class. This will be especially important as we begin to work on the team projects. If you cannot make it to class, email me as soon as possible!
  4. Work with your team, both during class meeting times and outside group project times. If you cannot make it to a group meeting or work session, inform them as soon as possible and negotiate a way to help the group meet its objectives for that sprint.

Dates and Deadlines

Assignments are designed to aid your learning and also to help me gauge how well the class as a whole is understanding the material. Therefore, I want you to do assignments and hand them in, even if they are late. So, you may hand in assignments past the due date & time, but you will receive a lower score. I will subtract 20% per day from the points you would have received if it was on time. In reality, this only will apply to assignments that are done individually.

If you do not appear when your team makes a presentation or you do not contribute to a team report, your team will have the opportunity at the end of the term to rate your performance as a team-mate, and that will affect your final grade.

When turning in group work, please turn it in on time, even if it is not perfect. It is far more important that I see how your team is doing -- the good and bad -- than it is to try to make it look, or sound, better.

Emergencies and Illnesses

Although dates for homework, reading journals, reports, and the final project submissions are firm, I understand that circumstances arise when you are not able to attend class. If you cannot attend class, you must let me and your team know as soon as possible since, especially after Fall Break, this will impact the work your team needs to accomplish during the current sprint.

When circumstances are known ahead of time (e.g., academic activities, athletic events, religious holy days), I expect you to make arrangements with me before the activity occurs. Normally, we will identify an alternative date for the due date.

When circumstances cannot be reasonably anticipated (e.g., illness, family emergencies, serious injury), I expect you to notify me as soon as is reasonably possible. (Email is fine.) In the case of medical problems that require you to miss several classes, I expect a written note from a medical professional or counselor that indicates that your health interfered with the course activity. (I do not need to know any details of the medical problem, but I do need to know that you sought help and that the medical professional believed meeting the deadline would likely interfere with your health.)

Absolute Deadline: All homework must be turned in by the date of your final; submissions received after that time will not be counted in the grading of the course.

Cell Phones

Cell phones, text-messaging devices, and other social-networking connections may not be used in this class. If you bring such equipment to the classroom, it must be turned off before the class starts and stay off throughout the class period. Use of such equipment is distracting to those nearby. If you have some sort of emergency that requires you to "be connected", keep the device on silent mode and move into the hallway to respond to a call or text message.


Grading will be done on a fixed scale:

Letter Grade down to % cutoff
A 93.0
A- 90.0
B+ 87.0
B 83.0
B- 80.0
C+ 77.0
C 73.0
C- 70.0
D+ 67.0
D 60.0
F anything < 59.0%

Grades in this class will be based on:

I aim to balance grading criteria so that 50% of your grade depends upon your solo efforts and the other 50% will be determined by your team's success in implementing Agile software development processes to work together and succeed in developing Ruby on Rails features for our community partners.

Accommodation and Accessibility

My goal is to make this an effective learning environment for everyone.

Grinnell College offers alternative options to complete academic work for students who reserve religious holy days. Please contact me within the first three weeks of the semester if you would like to discuss a specific instance that applies to you.

If you have a disability of any sort, please see me as soon as possible so we can arrange for appropriate adaptation or accomodation! It is certainly easier if you have domentation and are working with Disability Services or have already spoken with academic advising since they often have recommended, tested solutions to help me adapt instructional and assessment methods. Generally, I have found that making content universally accessible and providing a variety of instructional media is beneficial to all students.

Accessibility of this website was tested using, however, if this website is not "readable" for you, please let me know as soon as possible.