Due Dates
All assignments are due at 11:59 PM New York local time.
# | Assignment | Due Date | Graded? | Submission Site |
---|---|---|---|---|
1 | hw-setup | 9/11 | Not graded but required | CourseWorks |
2 | hw-ruby | 9/18 | Yes | Codio |
3 | hw-saas | 9/25 | Yes | Codio |
4 | proj-team | 9/27 | Not graded but required | CourseWorks |
5 | hw-rails | 10/4 | Yes | Codio |
6 | hw-bdd | 10/11 | Yes | Codio |
7 | proj-proposal | 10/18 | Yes | CourseWorks |
8 | hw-tdd | 10/25 | Yes | Codio |
9 | proj-iter1 | 11/1 | Yes | CourseWorks |
10 | proj-iter2 | 11/15 | Yes | CourseWorks |
11 | proj-demo | 12/4 | Yes | CourseWorks |
12 | proj-launch | 12/18 | Yes | CourseWorks |
Assignments
1. hw-setup (required but not graded)
The first goal of this assignment is to set up your Ruby environment. While we will use the environments in Codio for the CHIPS programming assignments, you will need a Ruby on Rails environment for your project. In general, it is helpful to be able to easily switch the versions of Ruby and/or Rails, which you will achieve in this assignment.
- Follow the rbenv Github page to install rbenv for your platform.
- Once rbenv is installed, you can use
rbenv install -l
to list the available Ruby versions. - Use
rbenv install --verbose 2.6.6
to install a specific version (2.6.6 in this example). - Use
rbenv global 2.6.6
to set the default Ruby version for your environment. - Use
ruby -v
to verify that it is installed correctly. - Run the following commands (
Note: replace YOUR-UNI with your actual UNI) to generate a SHA256 digest of your UNI:$ irb # starts an interactive ruby shell irb(main):001:0> require 'digest' => true irb(main):002:0> Digest::SHA256.hexdigest 'YOUR-UNI' => "f1b136b58da1bf976eecec2605d1cdddd97daf17639b416f7cd25a29a95d5c0e"
Submit the output from ruby -v
and the digest of your UNI
(like "f1b13..." in the example above) in a file called
ruby.txt
to CourseWorks.
Another goal of this assignment is to agree to the course collaboration
/ copying policy. Please sign by adding your name, UNI, and date to the
following text and submit it as signed_collaboration_policy.txt
to the corresponding assignment in CourseWorks.
I have read and understood the following documents:
1. CS department's Policies and Procedures regarding Academic Honesty;
2. Columbia College and Columbia Engineering’s Academic Integrity website; and
3. The Engineering Software-as-a-Service course policies.
I pledge that I will abide by the rules set forth by the documents, and
that I will accept the corresponding penalties if I fail to do so.
I also pledge that I will never post any Course Materials to public code
repositories or web sites like GitHub, CourseHero, etc., nor will I
share Course Materials privately with any person who may take the same
class in the future. I understand Course Materials include, but are not
limited to, my own code, skeleton and solution code I received, lecture
notes, and exams and solutions.
Name:
UNI:
Date:
2. hw-ruby
Complete Codio 2.5 CHIPS: Ruby Intro.
3. hw-saas
Complete Codio 3.7 CHIPS: Wordguesser.
4. proj-team (required but not graded)
Complete forming your project team. Your team should have four members.
Fill the following form and submit it as a team.txt
file to the
corresponding assignment in CourseWorks.
Member 1 Name:
Member 1 UNI:
Member 2 Name:
Member 2 UNI:
Member 3 Name:
Member 3 UNI:
Member 4 Name:
Member 4 UNI:
5. hw-rails
Complete Codio 5.2 CHIPS: Ruby Intro.
6. hw-bdd
Complete Codio 7.7 CHIPS: Intro to BDD and Cucumber.
7. proj-proposal
Submit a your project proposal as a proposal.txt
file to
the corresponding assignment in CourseWorks. It should have the following
contents:
Title: tagline of your project, such as "Slack: Where work happens"
Details:
- Team members (name and UNI for each teammate)
- Pain points you're addressing
- What your SaaS does to address the pain points
- Why is your SaaS unique/different from the solutions in the market
- A link to a short YouTube video explaining your proposal
A few paragraphs are enough. No need to write a detailed business plan. The YouTube video will be played in class during our Proposal Day. The length of the video will be determined based on the total number of projects. Everyone in the team must speak (approximately equally). If time allows, we will conduct a quick live Q/A session for each proposal. Submit any additional materials such as presentation deck you may have.
Only one member of the team needs to submit. Be sure to include in
proposal.txt
the names and UNIs of all team members.
After the submission, but before Proposal Day, post your proposal and video to the course discussion board and prefix the post title with "[Project Proposal]..." for the entire class to learn what you plan to do and provide feedback.
Grading rubric:
- Pain points are clearly explained (25%).
- Proposed solution is clearly explained (25%).
- Proposed solution is clearly differentiated from the solutions in the market (25%).
- Well-made proposal video (25%).
8. hw-tdd
Complete Codio 8.9 CHIPS: The Acceptance Test/Unit Test Cycle
9. proj-iter1
Submit the iteration 1 of your SaaS product to the corresponding assignment in CourseWorks. Only one member of each team needs to submit. Your submission should include
- README with (1) the names and UNIs of all team members and (2) instructions to run and test your product.
- User stories written in Cucumber for the most basic features of your product.
- RSpec tests for the code written.
- Working SaaS prototype that passes the user stories and RSpec tests.
- Heroku deployment link.
- Code (Github repository link).
- Any additional materials you would like to submit.
Grading rubric:
- User Stories (40%): provides user stories of how the service or product is used; the user stories have been well thought of; and user stories pass cucumber with good coverage.
- Minimal Viable Prototype (20%): demonstrates that effort has been spent on making a working prototype with minimum features.
- Testing (30%): good test coverage in RSpec; well thought out tests; tests pass.
- Deployment (10%): deployment (most likely to Heroku) is complete; no visible errors.
10. proj-iter2
Submit the iteration 2 of your SaaS product to the corresponding assignment in CourseWorks. Only one member of each team needs to submit. Be sure to include in README the names and UNIs of all team members. Your submission should include
- README with (1) the names and UNIs of all team members and (2) instructions to run and test your product.
- User stories written in Cucumber for the main features of your product.
- RSpec tests for the code written.
- Working SaaS prototype that passes the user stories and RSpec tests.
- Heroku deployment link.
- Code (Github repository link).
- Any additional materials you would like to submit.
Grading rubric:
- User Stories (40%): provides user stories of how the service or product is used; the user stories have been well thought of; and user stories pass cucumber with good coverage.
- Minimal Viable Prototype (20%): demonstrates that effort has been spent on making a working prototype with main features.
- Testing (30%): good test coverage in RSpec; well thought out tests; tests pass.
- Deployment (10%): deployment (most likely to Heroku) is complete; no visible errors.
11. proj-demo
Prepare a short demo video of your SaaS product. Submit a link to the video, a Heroku deployment link, and the presentation deck to the corresponding assignment in CourseWorks. The demo video will be played in class during our Demo Day. The length of the video will be determined based on the total number of projects. Everyone in the group has to speak (approximately equally). If time allows, we will conduct a quick Q/A session for each team. Submit any additional materials such as usage curves you may have.
Only one member of the team needs to submit. Be sure to include in README the names and UNIs of all team members.
After the submission, but before Demo Day, post your demo video to the course discussion board and prefix the post title with "[Project Demo]..." for the entire class to appreciate what you have built and provide feedback.
Grading rubric:
- Argues clearly why the product needs to exist (25%).
- Concise demonstration of the product functionality (25%).
- Well-made pitch deck / presentation materials (25%).
- Well-made pitch video (25%).
12. proj-launch
Submit the final version of your SaaS product to the corresponding assignment in CourseWorks. Only one member of the team needs to submit. Be sure to include in README the names and UNIs of all team members. Your submission should include
- README with (1) the names and UNIs of all team members and (2) instructions to run and test your product.
- User stories written in Cucumber for the complete features of your product.
- RSpec tests for the code written.
- Working SaaS product that passes the user stories and RSpec tests.
- Heroku deployment link.
- Code (Github repository link).
- Any additional materials such as usage curves you would like to submit.
Grading rubric:
- User Stories (40%): provides user stories of how the service or product is used; the user stories have been well thought of; and user stories pass cucumber with good coverage.
- Minimal Viable Prototype (20%): demonstrates that effort has been spent on making a working prototype with complete features.
- Testing (30%): good test coverage in RSpec; well thought out tests; tests pass.
- Deployment (10%): deployment (most likely to Heroku) is complete; no visible errors.