Coursework and grading

Working in groups

You will work in groups of 4 or 5. You can collaborate as much as you want within a group. You are not allowed to collaborate, unless expressly asked to, outside the group. This collaboration extends to both the labs and the project.

All github repos will be open. You may look at others labs after they are submitted, but not before. You may in general not look at other group's projects, even though the repos will be open, except for the code-review part talked about in "Participation" below. This works on the honor system: we are all adults here.

Your grade

Your grade in this class is made up of the following components:

  • Homeworks (40%)

    • Submission of all homework (15%): All homework must be submitted. Just submitting will get you 15% of the grade, even if answers are wrong.
    • Random and Non-Random Evaluations (25%): Homework (perhaps not all) will be evaluated. You may collaborate with other members of your team on the homework, once you have formed teams. But, you must write your own solutions.
    • Solutions will be made available a week to two after submission
  • Project (45%). The project is to create a time-series analysis library and database with a REST API to it.

The deliverables will be:

  • (a) code for library
  • (b) code for database
  • (c) a web server with a REST API to analyze/add/etc time series in this database; with tests exercising this API
  • (d) a web page which provides a user interface which utilizes the REST api
  • (e) documentation of the library and the API at a web site. These should be a combination of written and automatically generated documentation.

A portion of this project is what we call "basic" and must be implemented by each group. Simpler versions of some of the code in this basic part will be played around with in the labs after class. We'll add grade splits for milestones and post milestone work here soon (see below).

Another portion of the project is what we call "additional" and consists of the additional features you add to the library or the database. These might be different distance algorithms (between time series), an tick-database extension to the search database, etc. Your imagination is the limit. Start thinking about this immediately after Milestone M1 and discuss with your TF.

  • Implement a project feature for another group (7%)

We will divide groups into "red" groups and "black" groups. (See Red-Black trees.). In the second milestone, a red group will contribute one feature (to be decided) to a black groups codebase. Similarly, a black group will contribute another feature to a red group's codebase. This contribution will be made via a github pull request. The contributee will conduct a code review, and request changes. Such discussion will take place via issues and pull requests on github. When satisfied, the contributor will merge the feature into their code base.

The contributor group's contributions will be taken into account in their project grade (the basic part). The discussions and code review: the entire back and forth will contribute to both color's participation grade.

  • Participation (8%)

The final 7% of your grade comes from participation.

Participation comes from your presence in online discussions, individual commits, and via a within-group peer review. This is to ensure that certain team members dont slack off.

An important note

Peer-review may be used at the end to adjust ENTIRE individual grades up or down.

Workflow

The work for this course will be done on github.

Each user must have a repo: cs207work.

Each group will have an organization, with its members and the teaching staff in it. The organization will be called "cs207_groupname", and the project repo will be called "project". The group is free to make other repos, etc for experiments, but "project" is the one we will grade.

The lectures and labs will be available from https://github.com/iacs-cs207/cs207 .