This course uses the development of software applications for local non-profit community organizations as the framework for learning software engineering and design concepts, developing technical skills in creating Ruby on Rails interactive applications, and practicing "softskills" applicable for working on a team-based environment - either in research or industry.
We develop database-driven web applications or application prototypes in partnership with a variety of non-profit organizations, helping them fulfill their missions while giving students the opportunity to work on a real-life product. Since these projects often span more than one term, students also experience what it is like to work with existing code (aka "legacy code") and to have to prepare their work for handing off to other teams (i.e. learning to test and document).
The following instructional strategies and formats will be used:
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 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 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 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.
Students from prior semesters have left a few tips for your success. One of the most important is that you embrace self-directed learning and get comfortable with finding and using resources through Google, Stack Overflow, and other software development sites and communities.
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.
Through the course (usually Monday and possibly Wednesday), I will 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 (I like cat memes). This is to enourage 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.
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.
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!! You may use any standard citation style you like.
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!
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.
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.
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 your final; submissions received after that time will not be counted in the grading of the course.
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|
|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.
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 wave.webaim.org, however, if this website is not "readable" for you, please let me know as soon as possible.