Skip to content

Assignments & Project

More detailed instructions for individual assignments will be available on Sakai under Resources. Due dates can be seen on the schedule page. All assignments will be turned in and graded on Gradescope, available from Sakai.

Readings

There is no “deliverable” for readings – that is, nothing to turn in for a grade. However, suggested readings are provided on Sakai under resources for most units in the course. You should plan to read or at least skim most readings – doing so will make our class experience and discussion much richer.

Homeworks

There are two homework assignments scheduled. You may work in groups of up to 4, and you are strongly encouraged to work on these in your project groups as a way of practicing your collaboration.

Homeworks are intended as opportunities to practice ideas from class and working together on algorithms analysis, design, and implementation with your peers. Each will require some analysis, some coding and testing, and writing a short report on your results. There are no auto graders.

Course Project

In the collaborative course project you will deeply research the technical and societal aspects of a real-world algorithmic system. The goal is to build a deep understanding and to produce a portfolio piece that is public-facing to educate the public about real-world algorithmic systems: Ideally you will produce something you are proud to use as part of your professional portfolio in the real world.

The course project should constitute your greatest effort beyond regular class. Projects are in groups of up to 4 but with substantial individual accountability. There are several components detailed in the subsections below in Chronological order according to the schedule.

Project Proposals

There are two rounds of project proposals: Individual and group. In the individual proposals, you will write at most one page detailing a real-world algorithmic system that you would like to investigate, and the questions (technical and societal) you seek to answer. Individual proposals will be used to jump-start group formation. In the group proposals, teams of up to 4 will submit a more detailed proposal of 2-4 pages including an annotated bibliography of sources and research questions, both technical and societal, all of which will be used for individual assessments. Societal research questions should be answerable by position statements, in which you expect to make an argument about the use of an algorithmic system in society (for example, how it should or should not be used, critiquing a particular usage, arguing for or against a kind of regulation, etc.)

Individual Assessments

There will be two in-class individual assessments designed to check the individual depth of understanding you have acquired through your research. One will be on the technical side of your algorithmic system, one on the societal aspects and implications. Assuming you receive at least satisfactory grades on the group project proposals, the questions you are asked to respond to on the individual assessments will be drawn from the same research questions you pose in your group proposals and should be answered in reference to the sources proposed in the bibliography of your group proposals. These will be in-class, individual (though you are encouraged to prepare and study together with your group!), written (typed), each of 75 minutes in length. You will be able to use your annotated bibliography from the group proposals but no other resources.

Technical Demo

The technical demo should be a working software artifact that demonstrates the technical algorithmic working of the algorithmic system your group is studying. You are welcome to use whatever external libraries, packages, APIs, languages or frameworks are most convenient. However, remember that the purpose of the demo is to demonstrate how the system works algorithmically. In other words, you will be expected to articulate the algorithmic insight of your contribution to the software artifact; if all the demo does is wrap a call to an API, this does not demonstrate much of the algorithmic working and would not receive high marks. When in doubt, consult the course teaching assistant or instructor.

All group members should be actively involved in producing the technical demo, including writing and committing code. Your demo should be hosted using Git in either Gitlab (available through Duke) or Github. In cases of dispute as to the equal participation of group members in the technical demo portion of the project I will consult your project’s Git commit history.

Presentation

In the last two weeks of class we will have dedicated time for presentations of 10-12 minutes each in which you should provide a high-level overview of the technical working of your algorithmic system and raise one or societal issues or critiques. All group members should participate in the presentation.

Final Project Site

Rather than a final “paper” you will prepare a final project website (suggested platforms are included on the help and resources page). This is the culmination of your research that will incorporate everything you have done before into a portfolio piece that (hopefully) you will be proud to share outside of this course.

The anticipated audience for your project sites are other people with at least an introductory education in computer science or involved in technology in the real world. The project site will include:

  1. An overview or landing page introducing the algorithmic system and highlighting your work, providing an executive summary.
  2. A “How it Works” page that explains the technical components of the algorithmic system. This page should cite relevant sources from your research. It could be primarily written, or it could involve a hybrid of writing and video recordings.
  3. A “Technical Demo” page that highlights your technical demo. This does not have to be a live integrated demo on the website (though it could be) – it is also fine to have a recording or written explanation showing how your demo works, as well as providing a link to your code.
  4. A “Societal Implications” page. Group members may not agree about the societal implications of the algorithmic system. Each group member should provide a separate position statement and argument (for example, you might draw on what you wrote in the individual assessments) about the societal implications of the algorithmic system. Each should be at least 500-1000 words and should draw on appropriate sources and evidence to make the argument. You are welcome to present a recording of yourself making an argument of the same length orally if you prefer, but it should have the same standards of evidence.