Syllabus

Overview

Note that this website covers both 324 and 326. Most of the material will directly apply to students in 324. Students taking 326 should consult with the instructor and refer to the syllabus for CSC 326.


Important Note!!

Since this course includes an experiential learning component that takes place off-campus, F-1 Visa holders must secure Curricular Practical Training authorization through the Office of International Student Affairs before the projects start.

Additionally, depending upon the project to which you are assigned, you may also need to consent to a background check as a volunteer working at that site.


Class Meetings

Section 1: MWF from 10:00 to 11:50 am in Noyce 3820.
Section 2: MWF from 2:00 to 3:50 pm in Noyce 3820.

While we will use class time for team projects, you should also assume that you will need to schedule additional team meeting times – especially after week 3 – in order to work on your project.

Instructors

Barbara Z. Johnson, Ed.D.  (she/her/hers)
Noyce 2811
See website for additional details.

Anya Vostinar, Ph.D. (she/her/hers or they/them/theirs)
Noyce 2610
See website for additional details

Course Description and Overview

This course combines two courses: CSC 321 (Software Design Principles) and CSC 322 (Team Software Development for Community Organizations). Although this combined course was taught in the Spring, substantial changes are being made this fall in order to provide more practice with Ruby on Rails and other technical skills. Expect changes during the term!!

About 1/3 of the course will focus on software engineering and design principles, especially Software as a Service (SaaS) and software development models (especially Agile). These may not be directly applicable to the team project, but they form a theoretical basis for work on large-scale projects.

About another 1/3 of the course will focus on technical skills applicable to the development of web-based solutions using the Ruby on Rails framework.

The rest of the course will move into the application of these ideas and tools as students work in teams to build software projects that support local community organizations while we revisit principles of object-oriented design in context.  Thus, a large component of this course is a practicum in which students will work with each other, with alumni mentors, and with non-profit organizations (who function as clients)  from outside of the Grinnell College.

Learning Goals

  1. Apply Agile software development methodology, tools, and practices in real-world team projects
  2. Contrast Agile software development with plan-and-document methodologies
  3. Build SaaS applications with the Ruby on Rails framework and apply those skills on a large-scale project
  4. Apply object-oriented design principles and design patterns
  5. Apply techniques for understanding and modifying legacy code
  6. Gain experience with the complexities of real-world software development:
    • communicating with clients
    • working as part of a team
    • self-directed technical learning
    • creating a substantial project from scratch, or learning and extending an existing code base
    • making design decisions that may have long-term consequences
    • managing a large code base
    • addressing pragmatic and ethical dilemmas

You will be able to draw upon these experiences in pursuing academic or industry positions. By storing your source code through GitHub, you will make a substantial beginning or addition to your professional portfolio. In addition, you will develop professional skills and perspectives.

Textbooks

Required Texts

  • Fox and Patterson Engineering Software as a Service. Buy the Kindle edition from Amazon.com for about $10.  We will be reading from this text during about the first half of the semester.  (On the schedule, this is referred to as the SaaS Book …. or sometimes, just “SaaS”).
  • Hartl. Ruby on Rails Tutorial 4th Edition (Rails 5). This is currently available as an e-book for free from https://www.learnenough.com/ruby-on-rails-4th-edition-tutorial/beginning. Note that this is the previous version of Rails and that this free copy may disappear at any time! We highly recommend your purchase a copy of the correct edition, which is available through the College bookstore. We will be reading in this book and doing exercises from it throughout the course.
  • Russ Olsen’s Design Patterns in Ruby (2009).
  • Additional readings will be assigned during the semester, usually as links to online readings.

Recommended Resources

  • We recommend that you enroll in the free, (possibly archived) online course associated with the SaaS textbook  and try watching some of the videos.  This was developed by the SaaS book authors, and some concepts may be easier to grasp if you try different learning media.  The course is available at: https://www.edx.org/course/agile-development-using-ruby-rails-uc-berkeleyx-cs169-1x-1.
  • Head First Ruby by Jay McGavren
  • James Shore and Shane Warden (2007) The Art of Agile Development.

Also, check out the success tips from the students from prior courses.

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.

This class will be challenging and should take at least 10 hours of work per week. Some of the work will be done during class meeting times, but you should plan to spend about 4 hours outside of class in addition to class meeting times. Each week, some time will be spent on learning software design principles and software engineering practices, some time will be focused on learning a variety of languages and related frameworks, and the rest will be available for work on the individual or 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.

Policies

Expectations

  1. Do the reading for the day BEFORE class. This way, you can ask questions and contribute to the discussion.
  2. Reading journals are due before your class meeting begins.  In PioneerWeb, the time listed is 2:00 pm because both sections are combined in PioneerWeb.
  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 and your team as soon as possible!  See also the policy on absences and lateness below.
  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 10% 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 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 finals by 5:00 pm; submissions received after that time will not be counted in the grading of the course.

Absences and Lateness

Your classmates and teammates depend on your contributions to learn new material and complete the required work for this course. Don’t let them down! You are expected to arrive on time and participate actively in every class.

Because your participation is so important, I will not grant excused absences except in exceptional circumstances. I will deduct 2% from your final grade for each unexcused absence and 1% for each time you are late to class. However, each student is allotted a 4% “penalty buffer,” so you may miss two classes or arrive late four times with no impact on your final grade. This policy is intended to give you the flexibility to deal with brief illnesses or personal issues that require you to miss class.

I encourage students who plan to observe religious holidays that coincide with class meetings or assignment due dates to consult with me in the first three weeks of classes so that we may reach a mutual understanding of how you can meet the terms of your religious observance and also the requirements for this course.

If you need to miss more than two class periods for an exceptional reason (e.g. to attend an academic conference, deal with a family emergency, or due to long-term illness) please talk to me as soon as possible and we will make an alternate arrangement.

If you are are sick, please do not come to class. Stay in your room, send me a message, rest, and seek medical care as needed. Student Health and Wellness (SHAW) offers health and mental health services to students.

I will generally only grant excused absences if you notify my at least 48 hours before the class you will miss. The penalty buffer is in place so that you are not penalized for short-term illness, but it still counts as unexcused. You do not need to notify me ahead of time if you are comfortable allowing your absence to count against the “penalty buffer,” but I strongly encourage you to contact your classmates or review the posted notes from class to catch up on any material you missed.

If the attendance policy raises accessibility concerns for you, please let me know and I will work with you on alternatives.

Collaboration

Through the course (usually Monday and possibly Wednesday), I may ask you to sit in different places in the classroom for small group discussions and to work on in-class assignments, usually by some random method. This is to encourage you to meet new people and get different viewpoints on the material during discussions.

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 2 or 3, Susan Sanning from CLS will give an overview of the projects we have available this term, 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, 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 academic 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 embarrassment  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!! You may use any standard citation style you like.

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!

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

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:

  • Individual work on reading journals and homework assignments
  • Team reports, plans, and presentations
  • Progress on the team project through several sprints
  • Feedback from team and self evaluations

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.

5% Class Participation
10% Reading Journals and Homework
15% Portfolio
20% Ethics Paper
10% Weekly Reports
10% Weekly Presentations
10% Technical and Public Presentations
20% Project (which includes the self and peer evaluation scores)

Accessibility and Inclusion

My goal is to create a learning environment that supports the learning needs of all students. If you have specific physical, psychiatric, or learning disabilities and require accommodations, please let me know early in the semester so that your learning needs may be appropriately met. You will also need to have a conversation about and provide documentation of your disability to the Coordinator for Disability Resources, John Hirschman, located on the 3rd floor of Goodnow Hall, 641-269-3089.

Religious Observances

Grinnell College offers alternative options to complete academic work for students who observe 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. Since this class will incorporate class discussions and working sometimes in pairs or groups, it is important that I know you will be absent ahead of time so that I can adjust the assignments!

Acknowledgements

Neither teaching nor computer science are solitary pursuits. This syllabus and all course materials have been prepared in conversation with and adapted from the example of many generous colleagues, including but not limited to those who have taught prior iterations:  Dr. Janet Davis, Dr. Barbara Johnson, Dr. Sam Rebelsky, and Dr. Anya Vostinar.