TIP

You can copy-paste this entire article into a Notion portfolio post, then begin filling out that post as you work on your culminating task this week.

Enduring Understanding

Working in a group with shared purpose and an appropriate workflow allows for the creation of a product that would otherwise be unapproachable for an individual in the same period of time.

Product

You are about to begin post-secondary education – the biggest adventure of your life – so far.

In that spirit, the suggested product is a “Choose Your Own Adventure” (CYOA) app that:

  • presents a complete narrative (either original or existing)
  • includes a polished user experience and interface
  • provides some additional functionality or utility that would not be possible with a CYOA narrative that is presented in the form of a book (e.g.: statistics, animations, or other)

Discussion

Concepts

In class, we will look through some Choose Your Own Adventure books.

A directed graph is the essential data structure of a CYOA narrative. Here is a particularly epic narrative made by students in a prior year at LCS.

Template

A Choose Your Own Adventure Template will be provided in our next class as an example of how to implement and use a directed graph to tell a story with many possible endings:

RocketSim_Screenshot_iPhone_15_6.1_2024-06-05_07.02.48.png|700

Exemplars

DISCUSS

What types of features can a CYOA app offer that a book cannot?

These students built a story where the reader is immersed in an epic “Will she / won’t she?” love triangle drama – outstanding original images added to the polish of this app:

RocketSim_Screenshot_iPhone_15_6.1_2024-06-05_07.02.48 1.png|700

The story of an aspiring rap star, Kendrick – notable enhancements here include a graph of the story outline that updates as the reader moves through the story, to show what paths have been travelled:

RocketSim_Screenshot_iPhone_15_6.1_2024-06-05_07.02.48 2.png|700

These students extended the template into a game of sorts, where various criteria (energy, food levels) change based on what parts of the story are visited. This provides the player with a sense of whether they have chosen a helpful or unhelpful path:

RocketSim_Screenshot_iPhone_15_6.1_2024-06-05_07.02.48 3.png|700

Getting started

In general terms, here is the suggested order of operations:

Day 1

  1. Agree on a unifying theme for your narrative, e.g.: “Journey Under the Sea”
  2. Begin building a directed graph; this is best done together on large-format chart paper.
    • Use point form to identify the gist of what happens on a given node (or page).
    • Later, individuals can flesh out the story on each node.
    • Take photo(s) of the directed graph for all group members to refer to.
  3. Group members must use a copy of this spreadsheet to record the text of the narrative for each node and edge.
    • Talk with your group members and assign a range of node ID’s to each person in your group.
    • For example, one member may use the range of id’s from 1 to 100, the next from 101 to 200, and so on.
    • So long as node ID’s do not overlap, each group member can work in their own spreadsheet to author the narrative.

IMPORTANT

The first page (node) of your book’s narrative must have the lowest ID. It does not need to be 1, but the first page must have the lowest ID.

Day 2

  1. One member of your group assumes the project manager role – see what to do here to get started and be sure to review documentation for the provided code here.
  2. Another member of your group assumes the database manager role; they will create the database at Supabase – see what to do here to get started and be sure to review related documentation.
  3. Collect spreadsheets from group members that contain the narrative and import this data into your database.
  4. Your group should then brainstorm possible enhancements to your app. Be conservative; time is limited.

NOTE

Code contributions and other contributions, such as original artwork, are equally valuable.

TIP

Use the GraphGenerator app included with the CYOA template project to analyze your group’s directed graph, as entered into your group’s database. You can then correct any problems with your group’s story – such as nodes (pages) without any edges connecting them to other nodes.

As well, all nodes (pages) that represent endings must be categorized so that your group can produce a directed graph that has it’s endings accurately tallied. Categorize a node (page) as an ending by populating the ending_context and ending_type_id column for a given page. For example:

Screenshot 2024-06-05 at 7.15.43 AM.png|600

All remaining days

  1. Keep iterating until your group completes a new Choose Your Own Adventure app with some fun additional software features! The wackier the story, the better. ☺️

Requirements

Primarily, your group must demonstrate the ability to manage the software development process effectively, through all of its stages – planning, development, production, and closing.

That means:

  • including evidence of narrative planning or analysis in the form of a directed graph
  • using a GitHub repository with one primary owner
  • creating forks of that repository for the other contributor(s)
  • making use of pull requests to merge changes from forks into the primary repository
  • making use of the “fetch upstream changes” feature to update from the primary repository
  • using GitHub issues to track plans with your partner(s)
  • referencing issue numbers when making commits / creating pull requests
  • evidence of user testing and receipt of feedback that has been acted upon by your team
    • this should be clearly documented within GitHub Issues
    • must occur with students outside your own group
    • user testing must occur during class time

TIP

Use of a Kanban-style status board would be a way to exceed expectations as a group for use of GitHub to keep your project organized.

Commentary

  • A CYOA app is suggested because completion requires a blend of skills and enough labour to sustain a group endeavour for the culminating task.
  • Good use of algorithms, data structures, user interface design, and creation of the raw data (the narrative) are all necessary for success.

NOTE

If a group project you have previously contributed to this year has obvious functionality left to be completed and you feel confident that there is enough work left to do for you to meet the requirements above, you are welcome to continue working on that group project – subject to approval from Mr. Gordon.

Acceptable Generative AI Use

Students are permitted to utilize generative AI tools as supplementary resources for understanding coding principles, assisting in code development, and debugging.

Students should be aware that generative AI tools can produce incomplete code, code that creates or introduces biases, code with errors, inefficiencies in how the code executes, or code complexities that make it difficult to understand and therefore explain the code. It is the student’s responsibility to review and understand any code co-written with AI tools, ensuring its functionality. Additionally, students must be prepared to explain their code in detail in their end-of-year interview.

The use of program code, media (e.g., video, images, sound), data, information, or evidence created by someone else or with generative AI tools in the creation of a program and/or a program code segment(s), without appropriate acknowledgment (i.e., through citation, through attribution, and/or by reference), is considered plagiarism.

A student who commits plagiarism will receive a score of 0 on the culminating task.

This statement aligns with College Board and Lakefield College School policy for responsible use of generative AI tools and academic honesty. The text of the statement above is largely identical to the policy described by the College Board for the AP Computer Science Principles Create Task.

Evaluation

Knowledge (25%)

Your documented ability to use key tools required to complete your part of the project. This might include Xcode, source control, the Supabase interface, or manual or software-based tools for creating illustrations, music, or sound effects.

Focus on sharing evidence of how you were able to resolve problems, such as logical errors or other issues, or use tools to efficiently and quickly to produce or contribute to the project.

Learning goals: 1, 2

TIP

Please add evidence below within this section (screenshots, photographs, or videos less than 1 minute long) and brief supporting paragraphs to support your case for exceeding expectations.

Add your evidence below…

Thinking (25%)

Your ability to contribute to data structure planning (e.g.: directed graph) and to use GitHub Issues for project planning and organization.

Learning goals: 2, 3, 6

TIP

Please add evidence below within this section (screenshots, photographs, or videos less than 1 minute long) and brief supporting paragraphs to support your case for exceeding expectations.

Add your evidence below…

Application (25%)

Your demonstrated individual contributions to the group effort to complete your app.

Learning goals: 3, 4, 5

TIP

Please add evidence below within this section (screenshots, photographs, or videos less than 1 minute long) and brief supporting paragraphs to support your case for exceeding expectations.

Add your evidence below…

Communication (25%)

In your end of year interview, your ability to clearly explain how your group’s program works – key data structures and algorithm(s) – using correct vocabulary.

Additionally, be able to identify when you have applied techniques for abstraction and separation of concerns (e.g.: MVVM design pattern), either in the culminating task or in other products you authored or helped to author this year.

Learning goals: 3, 4, 5, 10

TIP

Please add evidence below within this section (screenshots, photographs, or videos less than 1 minute long) and brief supporting paragraphs to support your case for exceeding expectations.

Add your evidence below…

Documentation

Source code

https://github.com/ORG-NAME/REPO-NAME

TIP

This should be a link to your group’s primary repository.

Video demo

Each student should produce a video, no longer than 1 minute, highlighting their personal contributions to the overall product:

Replace this with your video…

Your issues

This will become a link to issues that were specifically assigned to you:

https://github.com/ORG-NAME/REPO-NAME/issues?q=assignee:USERNAME

TIP

Mr. Gordon will help everyone in the class complete this link at the end of the week.

Your commits

These will become links to commits made by you personally:

https://github.com/ORG-NAME/REPO-NAME/commits?author=USERNAME

https://github.com/ORG-NAME/REPO-NAME/commits/development?author=USERNAME

TIP

Mr. Gordon will help everyone in the class complete this link at the end of the week.

Provide a link to your interview slides (begin with this template):

Replace this with a link to your interview slides…

Overall feedback

This will be completed by Mr. Gordon after the culminating task has concluded…