{"id":19073011,"url":"https://github.com/drakealia/lambda_school-game_of_life","last_synced_at":"2026-06-22T13:31:32.500Z","repository":{"id":70797147,"uuid":"283041218","full_name":"DrakeAlia/lambda_school-game_of_life","owner":"DrakeAlia","description":null,"archived":false,"fork":false,"pushed_at":"2020-07-31T17:44:28.000Z","size":494,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-02-22T04:26:24.801Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://lambda-school-game-of-life.vercel.app","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/DrakeAlia.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-07-27T23:25:20.000Z","updated_at":"2020-07-31T17:44:30.000Z","dependencies_parsed_at":"2023-05-06T23:01:18.675Z","dependency_job_id":null,"html_url":"https://github.com/DrakeAlia/lambda_school-game_of_life","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/DrakeAlia/lambda_school-game_of_life","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DrakeAlia%2Flambda_school-game_of_life","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DrakeAlia%2Flambda_school-game_of_life/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DrakeAlia%2Flambda_school-game_of_life/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DrakeAlia%2Flambda_school-game_of_life/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/DrakeAlia","download_url":"https://codeload.github.com/DrakeAlia/lambda_school-game_of_life/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DrakeAlia%2Flambda_school-game_of_life/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34651747,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-22T02:00:06.391Z","response_time":106,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-09T01:45:04.848Z","updated_at":"2026-06-22T13:31:32.481Z","avatar_url":"https://github.com/DrakeAlia.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Cellular Automata and Conway's \"Game of Life\"\n\n---\n\n**NOTE: This is not a data science project.** If you're in the data\nscience track and want to do a DS-specific project, jump to the [Data\nScience Build Week\nRepo](https://github.com/LambdaSchool/CS-Data-Science-Build-Week-1).\n\n---\n\nWelcome to John Conway's \"Game of Life\"! This is a computer science\nclassic from 1970, a program that simulates a _cellular automaton_\n(plural _automata_). It has connections to all kinds of different\naspects of computer science and nature.\n\nOver the course of this week, students will work on creating their own\napplication in which users will be able to run different \"Game of Life\"\nscenarios. This module leads the reader through the fundamentals of\nConways's \"Game of Life\" and will guide them through the process of\ncreating an app utilizing tools and frameworks that have been taught\nover the course of their specific track.\n\n![example-patterns](https://media.giphy.com/media/4VVZTvTqzRR0BUwNIH/giphy.gif)\n\n[from Wikipedia](https://en.wikipedia.org/wiki/Conway%27s_Game_of_Life#Examples_of_patterns)\n\n## Collaboration\n\nThis is a solo project, not a team project. Each person will be expected\nto make their own repo and do their own coding.\n\nThat said, we _encourage_ cooperation during the Understand, Plan, and\nReflect phases of UPER. It's the Execution that everyone will have to do\ntheir own work for.\n\nThis doesn't mean you can't ask for help during coding. Definitely feel\nfree to reach out. But there won't be any pair programming or splitting\nthe project into different chunks for different people.\n\n## Clone this repo?\n\nOr start from scratch?\n\nRecommend starting from scratch. That way you'll have a clean commit\nhistory and won't have to worry about merging changes from this\ninformational repo in yours.\n\n## Objectives\n\n* Student should be able to create a unique, high-quality project that\n  can be added to a professional portfolio\n* [Student should be able to describe the rules of Conway’s “Game of\n  Life”](objectives/rules-game-life)\n* [Student should be able to explain what cellular automata are and\n  describe how they are useful in real\n  life](objectives/explain-describe-ca)\n* [Student should be able to correctly analyze the ‘Turing Completeness’\n  of Conway’s “Game of Life”](objectives/turing-complete)\n* Student should be able to implement a visualization of Conway’s “Game\n  of Life” using technologies related to their specific\n  track.\n* [Student should be able to utilize \"double buffering\" to implement\n  the game](objectives/double-buffer)\n\n## MVP Features\n\n### Preliminary Work\n\n* Research Conway’s \"Game of Life\". Figure out how it works, why it’s\n  useful, and how the notion of Turing Completeness is related to this\n  topic.\n\n### Building Your App\n\n#### Visualizing the \"Game of Life\"\n\nThe main entry point of your application should house the visualization\nof this cellular automaton. Include necessary components, such as:\n\n* Grid to display cells. \n* Cell objects or components that, at a minimum, should have:\n  * Properties\n    * current state: (alive, dead), (black, white)\n    * Clickable/Tappable:\n      * can be clicked to allow user to setup initial cell configuration\n      * should NOT be clickable while simulation is running\n    * Behaviors\n      * Toggle state functionality: switch between alive \u0026 dead either\n        because user manually toggled cell before starting simulation or\n        simulation is running and rules of life caused cell to change\n        state\n* An appropriate data structure to hold a grid of cells that is at least\n  25x25. Go as big as you want.\n* Text to display current generation # being displayed\n  * Utilize a timeout function to build the next generation of cells \u0026\n    update the display at the chosen time interval\n* Button(s) that start \u0026 stop the animation\n* Button to clear the grid\n\nWrite an algorithm that:\n\n* Implements the following basic steps:\n  * For each cell in the current generation's grid:\n    1. Examine state of all eight neighbors (it's up to you whether you\n       want cells to wrap around the grid and consider cells on the\n       other side or not)\n    2. Apply rules of life to determine if this cell will change states\n    3. When main loop completes:\n       1. Swap current and next grids\n       2. Repeat until simulation stopped\n* Breaks down above steps into appropriate sub-tasks implemented with\n  helper functions to improve readability\n* Uses double buffering to update grid with next generation.\n* Does something well-documented with the edge of the grid. (e.g. wrap\n  around to the far side--most fun!--or assumes all edge cells are\n  permanently dead.)\n\n### Custom Features\n\nImplement at least 3 of the following features:\n\n* Create a few sample cell configurations that users can load and run\n* Add an option that creates a random cell configuration that users can\n  run\n* Add additional cell properties, like color or size, and incorporate\n  them into your visualization\n* Allow users to specify the speed of the simulation\n* Provide functionality to manually step through the simulation one\n  generation at a time, as opposed to animating automatically\n* Allow users to change the dimension of the grid being displayed\n* Given a specific generation, calculate the configuration of cells at\n  that point in time, and jump to that state, bypassing animation (i.e.\n  skip ahead _n_ generations).\n* If you have an idea for a custom feature on this list, run it by your\n  TL or instructor\n\n#### About\n\n* On the main entry point of the application, include a separate section\n  or link to another page or popup that describes the two main rules\n  (birth \u0026 death) of Conway’s Game of Life\n\n## Stretch Goals\n\n* Implement 2+ additional custom features, above\n* Deploy your app to a hosting service or, for iOS, to TestFlight (or\n  the App Store!). Web devs can see [more deployment info\n  here](resources/web/deployment).\n* Write a how-to guide or blog post that walks readers through the\n  work you did to implement your project\n* Expand your simulation into the third dimension. Google `3D Conways\n  Life`. Google for how to do 3D stuff on your platform. Web users might\n  check out [3D-ThreeJS](https://github.com/LambdaSchool/3D-ThreeJS),\n  and iOS might look at [SceneKit](https://developer.apple.com/scenekit/).\n* Explore alternate algorithms for finding the nth generation, such\n  as [Hashlife](https://en.wikipedia.org/wiki/Hashlife)\n\n## Sample Wireframe\n\nExample wireframes here. _This is only one possible layout. You can use\nany layout you come up with, as long as it completes MVP._\n\nWe encourage you to be creative with your presentation and make it your\nown.\n\n### Mobile\n\niOS example, could also inspire mobile web.\n\n![wireframe](resources/ios/game-of-life-iOS-mock-1.png)\n![wireframe](resources/ios/game-of-life-iOS-mock-2.png)\n\n### Desktop/Tablet\n\n![wireframe](wireframes/wireframe_1.png)\n\n\n## Code and Repo Quality\n\nThough this is not currently a requirement, it is a strong suggestion.\n\n### Code\n\n* Make your code look sharp and professional if you think anyone will\n  see it.\n  * Comments that say what part of the problem a function or block of\n    code solves.\n    * Only comment on what a single line does if that single line is\n      unclear.\n  * Blank lines to visually break up logical sections of code, analogous\n    to paragraph breaks.\n\n### Repo\n\n* Well-organized directories.\n* Good file names that let a reader quickly determine which file is\n  where.\n* Good `README.md` files that help the reader with code navigation and\n  installation.\n  * What is the project?\n  * What problem does it solve?\n  * Exceptional difficulties and solutions, if any.\n  * TODO list/wishlist. What do you want to add to it if you have more\n    time?\n\n## Rubric\n\n**Your simulation will receive a 2 when it satisfies the following:**\n\n   1. Display includes a text area that shows the current generation of\n      cells being displayed\n   2. Display includes a grid of cells, at least 25x25, that can be\n      toggled to be _alive_ or _dead_\n   3. Display includes working buttons that start / stop the animation\n      and clear the grid\n   4. Algorithm to generate new generations of cells correctly\n      implemented\n   5. At least 3 features from ***Custom Features*** section\n      successfully implemented\n   6. Application includes a section outlining the rules to Conway's\n      \"Game of Life\"\n\n**Your simulation will receive a 3 when it satisfies all of the above\nrequirements AND implements one of the above stretch goals.**\n\n## Track-Specific Help\n\nChannels for help that's about your specific technologies, if the TLs\nand/or instructor doesn't have enough knowledge in that area.\n\n* DS: Your cohort channel\n* iOS: #ios_help\n* Web: Your cohort channel\n\n## Additional Resources\n\nFor various platforms:\n\n* [Resources](resources/)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdrakealia%2Flambda_school-game_of_life","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdrakealia%2Flambda_school-game_of_life","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdrakealia%2Flambda_school-game_of_life/lists"}