diff --git a/assignments/data/1-ListIMDB/c++.zip b/assignments/data/1-ListIMDB/c++.zip index 1c6aae8a7..3eed02a1a 100644 Binary files a/assignments/data/1-ListIMDB/c++.zip and b/assignments/data/1-ListIMDB/c++.zip differ diff --git a/assignments/data/1-ListIMDB/java.zip b/assignments/data/1-ListIMDB/java.zip index b0921cf74..874d3983a 100644 Binary files a/assignments/data/1-ListIMDB/java.zip and b/assignments/data/1-ListIMDB/java.zip differ diff --git a/assignments/data/1-ListIMDB/python.zip b/assignments/data/1-ListIMDB/python.zip index c9c771ea0..43baab044 100644 Binary files a/assignments/data/1-ListIMDB/python.zip and b/assignments/data/1-ListIMDB/python.zip differ diff --git a/assignments/data/10-HurricaneTracker/c++.zip b/assignments/data/10-HurricaneTracker/c++.zip index fb7921e8e..48c86d750 100644 Binary files a/assignments/data/10-HurricaneTracker/c++.zip and b/assignments/data/10-HurricaneTracker/c++.zip differ diff --git a/assignments/data/10-HurricaneTracker/java.zip b/assignments/data/10-HurricaneTracker/java.zip index b91aa4de8..e953d832e 100644 Binary files a/assignments/data/10-HurricaneTracker/java.zip and b/assignments/data/10-HurricaneTracker/java.zip differ diff --git a/assignments/data/10-HurricaneTracker/python.zip b/assignments/data/10-HurricaneTracker/python.zip index 1ad69f0ac..fd7cf634f 100644 Binary files a/assignments/data/10-HurricaneTracker/python.zip and b/assignments/data/10-HurricaneTracker/python.zip differ diff --git a/assignments/data/11-2048Game/c++.zip b/assignments/data/11-2048Game/c++.zip index 384200bcb..981cd213c 100644 Binary files a/assignments/data/11-2048Game/c++.zip and b/assignments/data/11-2048Game/c++.zip differ diff --git a/assignments/data/11-2048Game/java.zip b/assignments/data/11-2048Game/java.zip index 2bced1670..fa9fcb2ed 100644 Binary files a/assignments/data/11-2048Game/java.zip and b/assignments/data/11-2048Game/java.zip differ diff --git a/assignments/data/11-2048Game/python.zip b/assignments/data/11-2048Game/python.zip index 2886ae4d4..ec2594ae8 100644 Binary files a/assignments/data/11-2048Game/python.zip and b/assignments/data/11-2048Game/python.zip differ diff --git a/assignments/data/12-AStarMaze/c++.zip b/assignments/data/12-AStarMaze/c++.zip index 0cdc538a0..e4c680ce3 100644 Binary files a/assignments/data/12-AStarMaze/c++.zip and b/assignments/data/12-AStarMaze/c++.zip differ diff --git a/assignments/data/12-AStarMaze/java.zip b/assignments/data/12-AStarMaze/java.zip index c41db2610..7d9e66f1f 100644 Binary files a/assignments/data/12-AStarMaze/java.zip and b/assignments/data/12-AStarMaze/java.zip differ diff --git a/assignments/data/12-AStarMaze/python.zip b/assignments/data/12-AStarMaze/python.zip index c4b61c3c6..fe6f66e58 100644 Binary files a/assignments/data/12-AStarMaze/python.zip and b/assignments/data/12-AStarMaze/python.zip differ diff --git a/assignments/data/13-InfiniteRunner/c++.zip b/assignments/data/13-InfiniteRunner/c++.zip index 3102af0d5..7b6fa94f8 100644 Binary files a/assignments/data/13-InfiniteRunner/c++.zip and b/assignments/data/13-InfiniteRunner/c++.zip differ diff --git a/assignments/data/13-InfiniteRunner/java.zip b/assignments/data/13-InfiniteRunner/java.zip index a877d7db4..c2921f7eb 100644 Binary files a/assignments/data/13-InfiniteRunner/java.zip and b/assignments/data/13-InfiniteRunner/java.zip differ diff --git a/assignments/data/13-InfiniteRunner/python.zip b/assignments/data/13-InfiniteRunner/python.zip index 961b346ba..37f12f1f7 100644 Binary files a/assignments/data/13-InfiniteRunner/python.zip and b/assignments/data/13-InfiniteRunner/python.zip differ diff --git a/assignments/data/14-SpreadingFire/c++.zip b/assignments/data/14-SpreadingFire/c++.zip index 2a0b46282..e0e55b40f 100644 Binary files a/assignments/data/14-SpreadingFire/c++.zip and b/assignments/data/14-SpreadingFire/c++.zip differ diff --git a/assignments/data/14-SpreadingFire/java.zip b/assignments/data/14-SpreadingFire/java.zip index 16806e5cf..64b438d56 100644 Binary files a/assignments/data/14-SpreadingFire/java.zip and b/assignments/data/14-SpreadingFire/java.zip differ diff --git a/assignments/data/14-SpreadingFire/python.zip b/assignments/data/14-SpreadingFire/python.zip index 1a52aba2e..8d179b79a 100644 Binary files a/assignments/data/14-SpreadingFire/python.zip and b/assignments/data/14-SpreadingFire/python.zip differ diff --git a/assignments/data/15-FallingSand/c++.zip b/assignments/data/15-FallingSand/c++.zip index 88d8808a4..1783625d2 100644 Binary files a/assignments/data/15-FallingSand/c++.zip and b/assignments/data/15-FallingSand/c++.zip differ diff --git a/assignments/data/15-FallingSand/java.zip b/assignments/data/15-FallingSand/java.zip index b42f23753..349dc99ab 100644 Binary files a/assignments/data/15-FallingSand/java.zip and b/assignments/data/15-FallingSand/java.zip differ diff --git a/assignments/data/15-FallingSand/python.zip b/assignments/data/15-FallingSand/python.zip index 47096f27e..e6d219a40 100644 Binary files a/assignments/data/15-FallingSand/python.zip and b/assignments/data/15-FallingSand/python.zip differ diff --git a/assignments/data/16-ImagePuzzle/c++.zip b/assignments/data/16-ImagePuzzle/c++.zip index d8a4019c0..20c93ea26 100644 Binary files a/assignments/data/16-ImagePuzzle/c++.zip and b/assignments/data/16-ImagePuzzle/c++.zip differ diff --git a/assignments/data/16-ImagePuzzle/java.zip b/assignments/data/16-ImagePuzzle/java.zip index cfeaceb75..27f4afde7 100644 Binary files a/assignments/data/16-ImagePuzzle/java.zip and b/assignments/data/16-ImagePuzzle/java.zip differ diff --git a/assignments/data/16-ImagePuzzle/python.zip b/assignments/data/16-ImagePuzzle/python.zip index b57bbd49e..58ad0a7bc 100644 Binary files a/assignments/data/16-ImagePuzzle/python.zip and b/assignments/data/16-ImagePuzzle/python.zip differ diff --git a/assignments/data/17-ControlsTutorial/c++.zip b/assignments/data/17-ControlsTutorial/c++.zip index 0c271e799..52f5c8fce 100644 Binary files a/assignments/data/17-ControlsTutorial/c++.zip and b/assignments/data/17-ControlsTutorial/c++.zip differ diff --git a/assignments/data/17-ControlsTutorial/python.zip b/assignments/data/17-ControlsTutorial/python.zip index 1077e59b5..40a82d5bf 100644 Binary files a/assignments/data/17-ControlsTutorial/python.zip and b/assignments/data/17-ControlsTutorial/python.zip differ diff --git a/assignments/data/18-ControlsTutorialTwo/c++.zip b/assignments/data/18-ControlsTutorialTwo/c++.zip index 21e344e97..b012e86fb 100644 Binary files a/assignments/data/18-ControlsTutorialTwo/c++.zip and b/assignments/data/18-ControlsTutorialTwo/c++.zip differ diff --git a/assignments/data/18-ControlsTutorialTwo/java.zip b/assignments/data/18-ControlsTutorialTwo/java.zip index d284dc12a..687c66192 100644 Binary files a/assignments/data/18-ControlsTutorialTwo/java.zip and b/assignments/data/18-ControlsTutorialTwo/java.zip differ diff --git a/assignments/data/18-ControlsTutorialTwo/python.zip b/assignments/data/18-ControlsTutorialTwo/python.zip index edb7afc79..b8ac27a87 100644 Binary files a/assignments/data/18-ControlsTutorialTwo/python.zip and b/assignments/data/18-ControlsTutorialTwo/python.zip differ diff --git a/assignments/data/19-Bugstomp/c++.zip b/assignments/data/19-Bugstomp/c++.zip index c4d9c613b..0e0c34458 100644 Binary files a/assignments/data/19-Bugstomp/c++.zip and b/assignments/data/19-Bugstomp/c++.zip differ diff --git a/assignments/data/19-Bugstomp/java.zip b/assignments/data/19-Bugstomp/java.zip index 260d689e2..d0cbbe471 100644 Binary files a/assignments/data/19-Bugstomp/java.zip and b/assignments/data/19-Bugstomp/java.zip differ diff --git a/assignments/data/19-Bugstomp/python.zip b/assignments/data/19-Bugstomp/python.zip index d23a9b95f..a00f00f1c 100644 Binary files a/assignments/data/19-Bugstomp/python.zip and b/assignments/data/19-Bugstomp/python.zip differ diff --git a/assignments/data/2-ListEQ/c++.zip b/assignments/data/2-ListEQ/c++.zip index 0e0dbd010..da868f266 100644 Binary files a/assignments/data/2-ListEQ/c++.zip and b/assignments/data/2-ListEQ/c++.zip differ diff --git a/assignments/data/2-ListEQ/java.zip b/assignments/data/2-ListEQ/java.zip index 76b1ba3c8..4acd1612e 100644 Binary files a/assignments/data/2-ListEQ/java.zip and b/assignments/data/2-ListEQ/java.zip differ diff --git a/assignments/data/2-ListEQ/python.zip b/assignments/data/2-ListEQ/python.zip index ccab59e56..a1722f6af 100644 Binary files a/assignments/data/2-ListEQ/python.zip and b/assignments/data/2-ListEQ/python.zip differ diff --git a/assignments/data/20-Minesweeper/c++.zip b/assignments/data/20-Minesweeper/c++.zip index d1b5ca5df..b8dbf88c7 100644 Binary files a/assignments/data/20-Minesweeper/c++.zip and b/assignments/data/20-Minesweeper/c++.zip differ diff --git a/assignments/data/20-Minesweeper/java.zip b/assignments/data/20-Minesweeper/java.zip index 93293c1e2..f3d64ba75 100644 Binary files a/assignments/data/20-Minesweeper/java.zip and b/assignments/data/20-Minesweeper/java.zip differ diff --git a/assignments/data/20-Minesweeper/python.zip b/assignments/data/20-Minesweeper/python.zip index d9b5d909f..ba779d28f 100644 Binary files a/assignments/data/20-Minesweeper/python.zip and b/assignments/data/20-Minesweeper/python.zip differ diff --git a/assignments/data/21-RaceCar/README.html b/assignments/data/21-RaceCar/README.html index b9ea3ff98..b41a83e56 100644 --- a/assignments/data/21-RaceCar/README.html +++ b/assignments/data/21-RaceCar/README.html @@ -1,10 +1,19 @@ -

Race Car Game

+

Assignment 21 - Race Car Game

+

Example Output

+

+

Learning Outcomes

+
    +
  1. Encapsulation
  2. +
  3. Conditions
  4. +
  5. Loops
  6. +
  7. Arrays
  8. +

Goals

The purpose of this assignment is to learn to

  1. Create a game where the player drives a car around an ever-changing track.
-

Programming

+

Description

Tasks

-

More Details to Get You Started

-

###Key Press Events - NonBlocking Games

+

More Details to Get You Started

+

Key Press Events - NonBlocking Games

-

###Key Press Events - Blocking Games

+

Key Press Events - Blocking Games

-

###Variables, Colors, and Sprite Symbols

+

Variables, Colors, and Sprite Symbols

-

###Important Functions

+

Important Functions

-

Help

+

Extensions

+

Help

+

For Java

+

NonBlockingGame documentation

For C++

NonBlockingGame documentation

For Python

diff --git a/assignments/data/21-RaceCar/README.md b/assignments/data/21-RaceCar/README.md index f53ed369a..2d254451b 100644 --- a/assignments/data/21-RaceCar/README.md +++ b/assignments/data/21-RaceCar/README.md @@ -1,13 +1,26 @@ -Race Car Game -============= +# Assignment 21 - Race Car Game + +## Example Output + +image + + +## Learning Outcomes + +1. Encapsulation +2. Conditions +3. Loops +4. Arrays + + +## Goals -Goals ------ The purpose of this assignment is to learn to 1. Create a game where the player drives a car around an ever-changing track. -Programming ------------ + +## Description + ### Tasks - Initialize a 2D array the size of your game grid. - Initialize the NamedColors and symbols for your car, walls and background. @@ -19,9 +32,8 @@ Programming - Create a function that places random objects that the player could crash into and trigger a game over. - Create a win scenario. -More Details to Get You Started -------------------------------- -###Key Press Events - NonBlocking Games +### More Details to Get You Started +#### Key Press Events - NonBlocking Games - keyUp() - keyDown() - keyLeft() @@ -33,7 +45,7 @@ More Details to Get You Started - keyA() - keyD() -###Key Press Events - Blocking Games +#### Key Press Events - Blocking Games - getKeyPress(); Returns a string. - "ArrowLeft" - "ArrowRight" @@ -45,20 +57,29 @@ More Details to Get You Started - "d" - etc... -###Variables, Colors, and Sprite Symbols +#### Variables, Colors, and Sprite Symbols - NamedSymbol.symbolname; - NamedColor.colorname; - drawSymbol(column, row, NamedSymbol, NamedColor); - setBGColor(column, row, NamedColor); -###Important Functions +#### Important Functions - The gameLoop() function loops until the game is over. - quit() stops the game. - start() starts the game and calls the initialize() function once before it starts the gameLoop() function. - render() sends your updated game grid to the server once. This is a blocking game function. -### Help + +## Extensions + + +## Help + +#### For Java +[NonBlockingGame documentation](http://bridgesuncc.github.io/doc/java-api/current/html/classbridges_1_1games_1_1_non_blocking_game.html) + #### For C++ [NonBlockingGame documentation](http://bridgesuncc.github.io/doc/cxx-api/current/html/classbridges_1_1game_1_1_non_blocking_game.html) + #### For Python [NonBlockingGame documentation](http://bridgesuncc.github.io/doc/python-api/current/html/classbridges_1_1non__blocking__game_1_1_non_blocking_game.html) \ No newline at end of file diff --git a/assignments/data/21-RaceCar/c++.zip b/assignments/data/21-RaceCar/c++.zip index 6852991d7..b44c047ac 100644 Binary files a/assignments/data/21-RaceCar/c++.zip and b/assignments/data/21-RaceCar/c++.zip differ diff --git a/assignments/data/21-RaceCar/java.zip b/assignments/data/21-RaceCar/java.zip index 0d1c360a8..24917ceff 100644 Binary files a/assignments/data/21-RaceCar/java.zip and b/assignments/data/21-RaceCar/java.zip differ diff --git a/assignments/data/21-RaceCar/python.zip b/assignments/data/21-RaceCar/python.zip index 8497410e1..253dd6946 100644 Binary files a/assignments/data/21-RaceCar/python.zip and b/assignments/data/21-RaceCar/python.zip differ diff --git a/assignments/data/22-Snake/README.html b/assignments/data/22-Snake/README.html index b2fd46f51..c8c6157bf 100644 --- a/assignments/data/22-Snake/README.html +++ b/assignments/data/22-Snake/README.html @@ -1,4 +1,11 @@ -

Snake Game

+

Assignment 22 - Snake Game

+

Example Output

+

+

Learning Outcomes

+
    +
  1. Queues
  2. +
  3. Loops
  4. +

Goals

The purpose of this assignment is to learn to

    @@ -6,7 +13,7 @@

    Goals

  1. If it runs into itself the game is over and the player has lost.
  2. The object of the game is to make the snake as big as possible.
-

Programming

+

Description

Tasks

-

More Details to Get You Started

-

###Key Press Events - NonBlocking Games

+

More Details to Get You Started

+
+

Key Press Events - NonBlocking Games

-

###Key Press Events - Blocking Games

+

Key Press Events - Blocking Games

-

###Variables, Colors, and Sprite Symbols

+

Variables, Colors, and Sprite Symbols

-

###Important Functions

+

Important Functions

-

Help

+

Extensions

+

Help

+

For Java

+

NonBlockingGame documentation

For C++

NonBlockingGame documentation

For Python

diff --git a/assignments/data/22-Snake/README.md b/assignments/data/22-Snake/README.md index fa4202d00..59b409a03 100644 --- a/assignments/data/22-Snake/README.md +++ b/assignments/data/22-Snake/README.md @@ -1,15 +1,26 @@ -Snake Game -============ +# Assignment 22 - Snake Game + +## Example Output + +image + + +## Learning Outcomes + +1. Queues +2. Loops + + +## Goals -Goals - ----- The purpose of this assignment is to learn to 1. The classic game of Snake. Move a "snake" (line of sprites) along a 2D grid attempting to run over a randomly placed object to help it grow. 2. If it runs into itself the game is over and the player has lost. 3. The object of the game is to make the snake as big as possible. -Programming ------------ + +## Description + ### Tasks - Initialize a 2D array the size of your game grid. - Initialize the NamedColors of your background, snake, and object. @@ -19,9 +30,9 @@ Programming - Create a function that handles the condition of the snakes head interacting with the food object. Make sure the snakes body grows and the object is gone after a collision. - Implement a condition which triggers a game over if the snakes head collides with its body. -More Details to Get You Started +### More Details to Get You Started ------------------------------- -###Key Press Events - NonBlocking Games +#### Key Press Events - NonBlocking Games - keyUp() - keyDown() - keyLeft() @@ -33,7 +44,7 @@ More Details to Get You Started - keyA() - keyD() -###Key Press Events - Blocking Games +#### Key Press Events - Blocking Games - getKeyPress(); Returns a string. - "ArrowLeft" - "ArrowRight" @@ -45,20 +56,29 @@ More Details to Get You Started - "d" - etc... -###Variables, Colors, and Sprite Symbols +#### Variables, Colors, and Sprite Symbols - NamedSymbol.symbolname; - NamedColor.colorname; - drawObject(column, row, NamedSymbol, NamedColor); - setBGColor(column, row, NamedColor); -###Important Functions +#### Important Functions - The gameLoop() function loops until the game is over. - quit() stops the game. - start() starts the game and calls the initialize() function once before it starts the gameLoop() function. - render() sends your updated game grid to the server once. This is a blocking game function. -### Help + +## Extensions + + +## Help + +#### For Java +[NonBlockingGame documentation](http://bridgesuncc.github.io/doc/java-api/current/html/classbridges_1_1games_1_1_non_blocking_game.html) + #### For C++ [NonBlockingGame documentation](http://bridgesuncc.github.io/doc/cxx-api/current/html/classbridges_1_1game_1_1_non_blocking_game.html) + #### For Python [NonBlockingGame documentation](http://bridgesuncc.github.io/doc/python-api/current/html/classbridges_1_1non__blocking__game_1_1_non_blocking_game.html) diff --git a/assignments/data/22-Snake/c++.zip b/assignments/data/22-Snake/c++.zip index 1eb0c0f00..96ff78c44 100644 Binary files a/assignments/data/22-Snake/c++.zip and b/assignments/data/22-Snake/c++.zip differ diff --git a/assignments/data/22-Snake/java.zip b/assignments/data/22-Snake/java.zip index f8e08d17d..5aafe2776 100644 Binary files a/assignments/data/22-Snake/java.zip and b/assignments/data/22-Snake/java.zip differ diff --git a/assignments/data/22-Snake/python.zip b/assignments/data/22-Snake/python.zip index 5b4d036fa..055c8056b 100644 Binary files a/assignments/data/22-Snake/python.zip and b/assignments/data/22-Snake/python.zip differ diff --git a/assignments/data/23-MountainPaths/README.html b/assignments/data/23-MountainPaths/README.html index e19580678..434d89b2c 100644 --- a/assignments/data/23-MountainPaths/README.html +++ b/assignments/data/23-MountainPaths/README.html @@ -1,13 +1,22 @@ -

Mountain Paths - Determining a path of low elevation through a mountain

+

Assignment 23 - Mountain Paths - Determining a path of low elevation through a mountain

+

Example Output

+

+

Source

+

This assignment is adapted from a **Nifty assignment +from 2016 proposed by Baker Franke. See **Source

+

Learning Outcomes

+
    +
  1. Greedy Algorithm
  2. +
  3. 2D Arrays
  4. +
  5. Data Visulization
  6. +
  7. Modifying Datastructures
  8. +

Goals

  1. Working with 2D images of elevation maps
  2. Understanding Greedy algorithms and its application to a real-world application
  3. CS concepts: 2D array addressing, greedy algorithms
-

Source

-

This assignment is adapted from a **Nifty assignment -from 2016 proposed by Baker Franke. See **Source

Description

You are given elevation data of a mountainous region in the form of a 2D array of integers (see example image below of one of the datasets). Your goal is to find a path that takes @@ -29,7 +38,7 @@

Algorithm To Determine the Path:

of the image (say the leftmost column), then make moves based on the pixels to the right, each time choosing the pixel that results in the smallest change. Your goal is to reach the right edge of the image.

-

Tasks

+

Tasks

  1. get dataset, visualize as an image You will use BRIDGES to define a lat/long range (rectangular bounding box of your choice) to access the elevation data (returned in an object @@ -64,7 +73,7 @@

    Tasks

    point and rerun your program to display different paths.

-

Variants

+

Extensions

One can make variants of this assignment. Indeed, the greedy algorithm presented above is a heuristic; it does not return the path that sees the lowest change of elevation across the entire mountain. It only makes a @@ -86,24 +95,24 @@

Variants

traversed and the total change of elevation as a bi objective optimization problem.

-

Additional Help:

+

Help:

BRIDGES Team: Contact the BRIDGES team for any issues with the BRIDGES API. This is an active project.

-

for Java

-

ElevationData Documentation

-

DataSource

-

ColorGrid documentation

-

Color documentation

-

Bridges class documentation

-

for C++

-

ElevationData Documentation

-

DataSource

-

ColorGrid documentation

-

Color documentation

-

Bridges Class documentation

-

for Python

-

Elevation Data Documentation

-

ColorGrid documentation

-

Color documentation

-

Bridges documentation

-

DataSource

+

For Java

+

ElevationData Documentation +DataSource +ColorGrid documentation +Color documentation +Bridges class documentation

+

For C++

+

ElevationData Documentation +DataSource +ColorGrid documentation +Color documentation +Bridges Class documentation

+

For Python

+

Elevation Data Documentation +ColorGrid documentation +Color documentation +Bridges documentation +DataSource

diff --git a/assignments/data/23-MountainPaths/README.md b/assignments/data/23-MountainPaths/README.md index 87bd6dbeb..031b52fac 100644 --- a/assignments/data/23-MountainPaths/README.md +++ b/assignments/data/23-MountainPaths/README.md @@ -1,5 +1,22 @@ -Mountain Paths - Determining a path of low elevation through a mountain -======================================================================= +# Assignment 23 - Mountain Paths - Determining a path of low elevation through a mountain + +## Example Output + +image + + +## Source +This assignment is adapted from a **[Nifty](http://nifty.stanford.edu/) assignment +from 2016 proposed by Baker Franke. See **[Source](http://nifty.stanford.edu/2016/franke-mountain-paths/) + + +## Learning Outcomes + +1. Greedy Algorithm +2. 2D Arrays +3. Data Visulization +4. Modifying Datastructures + ## Goals @@ -7,24 +24,21 @@ Mountain Paths - Determining a path of low elevation through a mountain 2. Understanding Greedy algorithms and its application to a real-world application 3. CS concepts: 2D array addressing, greedy algorithms -## Source -This assignment is adapted from a **[Nifty](http://nifty.stanford.edu/) assignment -from 2016 proposed by Baker Franke. See **[Source](http://nifty.stanford.edu/2016/franke-mountain-paths/) ## Description + You are given elevation data of a mountainous region in the form of a 2D array of integers (see example image below of one of the datasets). Your goal is to find a path that takes you through the points with the lowest elevation changes, in an effort to minimize the overall effort in walking through the path. For this you will use a `greedy' approach and make local decisions in determining the successive points in the path. -Example Elevation Image +Example Elevation Image Input gray scale image of a terrain with gray shades mapped to elevation. Elevation ranges from low (dark shades) to high (lighter shades) The image above shows a mountainous region; lighter regions are higher elevation, and the red line shows the path taken by a walker. - ### Algorithm To Determine the Path: @@ -41,9 +55,7 @@ of the image (say the leftmost column), then make moves based on the pixels to t each time choosing the pixel that results in the smallest change. Your goal is to reach the right edge of the image. - - -## Tasks +### Tasks 1. *get dataset, visualize as an image* You will use BRIDGES to define a lat/long range (rectangular bounding box of your choice) to access the elevation data (returned in an object containing the elevation values). You will need to calculate maximum elevation value, as you @@ -73,9 +85,7 @@ of the grid, your choices will be reduced. path (see example above). You can have a simple User Interface to specify the starting point and rerun your program to display different paths. - - -## Variants +## Extensions One can make variants of this assignment. Indeed, the greedy algorithm presented above is a heuristic; it does not return the path @@ -94,44 +104,29 @@ local choice. Here are some possibilities: 3. Graduate students can consider the problem of optimizing simultaneously the distance traversed and the total change of elevation as a bi objective optimization problem. -## Additional Help: + +## Help: [BRIDGES Team:](http://bridgesuncc.github.io/) Contact the BRIDGES team for any issues with the BRIDGES API. This is an active project. - -#### for Java - +#### For Java [ElevationData Documentation](http://bridgesuncc.github.io/doc/java-api/current/html/classbridges_1_1data__src__dependent_1_1_elevation_data.html) - [DataSource](http://bridgesuncc.github.io/doc/java-api/current/html/classbridges_1_1connect_1_1_data_source.html) - [ColorGrid documentation](http://bridgesuncc.github.io/doc/java-api/current/html/classbridges_1_1base_1_1_color_grid.html) - [Color documentation](http://bridgesuncc.github.io/doc/java-api/current/html/classbridges_1_1base_1_1_color.html) - [Bridges class documentation](http://bridgesuncc.github.io/doc/java-api/current/html/classbridges_1_1connect_1_1_bridges.html) -#### for C++ +#### For C++ [ElevationData Documentation](http://bridgesuncc.github.io/doc/cxx-api/current/html/classbridges_1_1dataset_1_1_elevation_data.html) - [DataSource](http://bridgesuncc.github.io/doc/cxx-api/current/html/classbridges_1_1_data_source.html) - [ColorGrid documentation](http://bridgesuncc.github.io/doc/cxx-api/current/html/classbridges_1_1datastructure_1_1_color_grid.html) - [Color documentation](http://bridgesuncc.github.io/doc/cxx-api/current/html/classbridges_1_1datastructure_1_1_color.html) - [Bridges Class documentation](http://bridgesuncc.github.io/doc/cxx-api/current/html/classbridges_1_1_bridges.html) - -#### for Python - +#### For Python [Elevation Data Documentation](http://bridgesuncc.github.io/doc/python-api/current/html/classbridges_1_1data__src__dependent_1_1elevation_1_1_elevation_data.html) - [ColorGrid documentation](http://bridgesuncc.github.io/doc/python-api/current/html/classbridges_1_1color__grid_1_1_color_grid.html) - [Color documentation](http://bridgesuncc.github.io/doc/python-api/current/html/classbridges_1_1color_1_1_color.html) - [Bridges documentation](http://bridgesuncc.github.io/doc/python-api/current/html/classbridges_1_1bridges_1_1_bridges.html) - [DataSource](http://bridgesuncc.github.io/doc/python-api/current/html/data__source_8py.html) diff --git a/assignments/data/23-MountainPaths/c++.zip b/assignments/data/23-MountainPaths/c++.zip index 448333ed0..f96f46fb9 100644 Binary files a/assignments/data/23-MountainPaths/c++.zip and b/assignments/data/23-MountainPaths/c++.zip differ diff --git a/assignments/data/23-MountainPaths/java.zip b/assignments/data/23-MountainPaths/java.zip index 6cc71fbf7..62e0f8ab0 100644 Binary files a/assignments/data/23-MountainPaths/java.zip and b/assignments/data/23-MountainPaths/java.zip differ diff --git a/assignments/data/23-MountainPaths/python.zip b/assignments/data/23-MountainPaths/python.zip index 500b1b9c6..b4dd089f5 100644 Binary files a/assignments/data/23-MountainPaths/python.zip and b/assignments/data/23-MountainPaths/python.zip differ diff --git a/assignments/data/24-ImageCompressionKdTree/README.html b/assignments/data/24-ImageCompressionKdTree/README.html index ee17ddff4..0de8b8969 100644 --- a/assignments/data/24-ImageCompressionKdTree/README.html +++ b/assignments/data/24-ImageCompressionKdTree/README.html @@ -1,13 +1,20 @@ -

Representing and Compressing Images Using K-D Trees

+

Assignment 24 - Representing and Compressing Images Using K-D Trees

+

Example Output

+

Square Image! +Kd tree of Image!

+

Learning Outcomes

+
    +
  1. Recursion
  2. +
  3. Data Visualization
  4. +
  5. K-D Tree
  6. +

Goals

    -
  1. Work with and manipulate binary search trees; here we use a spatial search tree, which is -similar to quadtree or octree.
  2. -
  3. Introduce students to images, their representation and compression using approximate -representations.
  4. +
  5. Work with and manipulate binary search trees; here we use a spatial search tree, which is similar to quadtree or octree.
  6. +
  7. Introduce students to images, their representation and compression using approximate representations.
  8. Introduce students to BRIDGES Tree hierarchy, use of inheritance and polymorphism
-

Background

+

Description

K-D trees (K stands for the number of dimensions) are a spatial equivalent of the more familiar binary search trees, that usually have integer keys to facililtate efficient (log n) search). K-D trees belong to the class of spatial search tree structures, that include quadtrees, @@ -22,7 +29,7 @@

Background

Example of a 3 level Two dimensional K-D tree partitioned square!

Illustrates a 2D region's partitioning with horizontal (X) and vertically (Y) oriented partitioners

In the figures above, a 2D region is being partitioned. The first partitioner is the white line that goes across the region, dividing it into two subregions (these become children of the root node of the tree. At the next level, the yellow lines partition the two subregions creating two of their own children each. Finally the blue lines subdivide at the third level. Each region can contain data (di s) that can be points or other information that can then be searched for efficiently knowing the location of the partitioning lines.

-

Example

+

Example

Square Image! Kd tree of Image!

Application of K-D Trees to representing a shape. Here the green square (left image) is a @@ -38,7 +45,6 @@

Example

The entire image is now represented by the tree with enough information (leaf nodes will have the region geometry and its color) to generate the image.

Applications: Refer to the Wikipedia page on K-D trees for additional information and applications.

-

Project

You will use the K-D TreeElement class structure as a subclass of the BinTreeElement defined in BRIDGES. You will use this structure along with the ColorGrid type to represent images using K-D Trees.

@@ -132,7 +138,7 @@

PseudoCode for K-D Tree Representation of Image:

return nullptr; } -

Region Homogeneity:

+

Region Homogeneity:

We need to be able to compute how homogeneous a region is before deciding to partition that region. You will write two versions of this function

IsRegionHomogeneous ()

@@ -169,11 +175,11 @@

Other Constants

width (max-min) is less than 3, then return true (homogeneous) to avoid degenerate cases).

-

Visualization:

+

Visualization:

Note that we are using the ColorGrid type to fill the image with the region colors (r, g and b), so that we can visualize it with BRIDGES. Follow the Colorgrid tutorials for filling in regions with the computed colors (as required by the ColorRegion() function above).

-

Extensions

+

Extensions

The project can be extended in a number of ways to reinforce tree structures and explore applications:

    @@ -188,20 +194,19 @@

    Extensions

    perspective.

Help

-

BRIDGES Team: Contact the BRIDGES team for any issues with -the BRIDGES API. This is an active project.

-

for C++

-

K-D Tree Element documentation

-

ColorGrid documentation

-

Color documentation

-

Bridges documentation

-

for Java

-

K-D Tree Element documentation

-

ColorGrid documentation

-

Color documentation

-

Bridges class documentation

-

for Python

-

K-D Tree Element documentation

-

ColorGrid documentation

-

Color documentation

-

Bridges documentation

+

BRIDGES Team: Contact the BRIDGES team for any issues with the BRIDGES API. This is an active project.

+

For C++

+

K-D Tree Element documentation +ColorGrid documentation +Color documentation +Bridges documentation

+

For Java

+

K-D Tree Element documentation +ColorGrid documentation +Color documentation +Bridges class documentation

+

For Python

+

K-D Tree Element documentation +ColorGrid documentation +Color documentation +Bridges documentation

diff --git a/assignments/data/24-ImageCompressionKdTree/README.md b/assignments/data/24-ImageCompressionKdTree/README.md index cc4522213..07ae9cfcf 100644 --- a/assignments/data/24-ImageCompressionKdTree/README.md +++ b/assignments/data/24-ImageCompressionKdTree/README.md @@ -1,16 +1,25 @@ +# Assignment 24 - Representing and Compressing Images Using K-D Trees + +## Example Output + +![Square Image!](./figures/square.png) +![Kd tree of Image!](./figures/square_tree.png) + + +## Learning Outcomes + +1. Recursion +2. Data Visualization +3. K-D Tree -Representing and Compressing Images Using K-D Trees -=================================================== ## Goals -1. Work with and manipulate binary search trees; here we use a spatial search tree, which is - similar to quadtree or octree. -2. Introduce students to images, their representation and compression using approximate - representations. -3. Introduce students to BRIDGES Tree hierarchy, use of inheritance and polymorphism +1. Work with and manipulate binary search trees; here we use a spatial search tree, which is similar to quadtree or octree. +2. Introduce students to images, their representation and compression using approximate representations. +3. Introduce students to BRIDGES Tree hierarchy, use of inheritance and polymorphism -## Background +## Description K-D trees (K stands for the number of dimensions) are a spatial equivalent of the more familiar binary search trees, that usually have integer keys to facililtate efficient (log n) search). @@ -33,7 +42,7 @@ a 3 level partitioning: In the figures above, a 2D region is being partitioned. The first partitioner is the white line that goes across the region, dividing it into two subregions (these become children of the root node of the tree. At the next level, the yellow lines partition the two subregions creating two of their own children each. Finally the blue lines subdivide at the third level. Each region can contain data (di s) that can be points or other information that can then be searched for efficiently knowing the location of the partitioning lines. -## Example +### Example ![Square Image!](./figures/square.png) ![Kd tree of Image!](./figures/square_tree.png) @@ -55,15 +64,11 @@ the region geometry and its color) to generate the image. Applications: Refer to the Wikipedia page on **[K-D trees](https://en.wikipedia.org/wiki/K-d_tree)** for additional information and applications. -## Project - You will use the K-D TreeElement class structure as a subclass of the BinTreeElement defined in BRIDGES. You will use this structure along with the ColorGrid type to represent images using K-D Trees. - ### Tasks: - 1. *Preparation:* 1. Go through the BRIDGES API for both the **[K-D Tree Element](http://bridgesuncc.github.io/doc/cxx-api/current/html/classbridges_1_1datastructure_1_1_kd_tree_element.html)** and the **[ColorGrid](http://bridgesuncc.github.io/doc/cxx-api/current/html/classbridges_1_1datastructure_1_1_color_grid.html)** types and look at the tutorial examples to understand its usage. In particular, understand @@ -143,7 +148,7 @@ the class hierarchy for tree structures (Java and Python users: check the Java o return nullptr; } -### Region Homogeneity: +#### Region Homogeneity: We need to be able to compute how homogeneous a region is before deciding to partition that region. You will write two versions of this function @@ -176,13 +181,14 @@ and return false, else return true. pick a value between first and the second third (between (10+40/3, 50-40/3). If the region width (max-min) is less than 3, then return true (homogeneous) to avoid degenerate cases). -### Visualization: +#### Visualization: Note that we are using the ColorGrid type to fill the image with the region colors (r, g and b), so that we can visualize it with BRIDGES. Follow the Colorgrid tutorials for filling in regions with the computed colors (as required by the ColorRegion() function above). -### Extensions + +## Extensions The project can be extended in a number of ways to reinforce tree structures and explore applications: @@ -196,35 +202,24 @@ applications: 3. Consider using other methods for homogeneity that might be more optimal from a compression perspective. -## Help -[BRIDGES Team:](http://bridgesuncc.github.io/) Contact the BRIDGES team for any issues with -the BRIDGES API. This is an active project. -#### for C++ +## Help +[BRIDGES Team:](http://bridgesuncc.github.io/) Contact the BRIDGES team for any issues with the BRIDGES API. This is an active project. +#### For C++ [K-D Tree Element documentation](http://bridgesuncc.github.io/doc/cxx-api/current/html/classbridges_1_1datastructure_1_1_kd_tree_element.html) - [ColorGrid documentation](http://bridgesuncc.github.io/doc/cxx-api/current/html/classbridges_1_1datastructure_1_1_color_grid.html) - [Color documentation](http://bridgesuncc.github.io/doc/cxx-api/current/html/classbridges_1_1datastructure_1_1_color.html) - [Bridges documentation](http://bridgesuncc.github.io/doc/cxx-api/current/html/classbridges_1_1_bridges.html) -#### for Java +#### For Java [K-D Tree Element documentation](http://bridgesuncc.github.io/doc/java-api/current/html/classbridges_1_1base_1_1_kd_tree_element.html) - [ColorGrid documentation](http://bridgesuncc.github.io/doc/java-api/current/html/classbridges_1_1base_1_1_color_grid.html) - [Color documentation](http://bridgesuncc.github.io/doc/java-api/current/html/classbridges_1_1base_1_1_color.html) - [Bridges class documentation](http://bridgesuncc.github.io/doc/java-api/current/html/namespacebridges_1_1base.html) -#### for Python - +#### For Python [K-D Tree Element documentation](http://bridgesuncc.github.io/doc/python-api/current/html/classbridges_1_1kd__tree__element_1_1_k_d_tree_element.html) - [ColorGrid documentation](http://bridgesuncc.github.io/doc/python-api/current/html/classbridges_1_1color__grid_1_1_color_grid.html) - [Color documentation](http://bridgesuncc.github.io/doc/python-api/current/html/classbridges_1_1color_1_1_color.html) - [Bridges documentation](http://bridgesuncc.github.io/doc/python-api/current/html/classbridges_1_1bridges_1_1_bridges.html) diff --git a/assignments/data/24-ImageCompressionKdTree/c++.zip b/assignments/data/24-ImageCompressionKdTree/c++.zip index 3b8720853..ad57980de 100644 Binary files a/assignments/data/24-ImageCompressionKdTree/c++.zip and b/assignments/data/24-ImageCompressionKdTree/c++.zip differ diff --git a/assignments/data/24-ImageCompressionKdTree/java.zip b/assignments/data/24-ImageCompressionKdTree/java.zip index 23acd946a..fa227fcfb 100644 Binary files a/assignments/data/24-ImageCompressionKdTree/java.zip and b/assignments/data/24-ImageCompressionKdTree/java.zip differ diff --git a/assignments/data/24-ImageCompressionKdTree/python.zip b/assignments/data/24-ImageCompressionKdTree/python.zip index 917d28857..c4285cb27 100644 Binary files a/assignments/data/24-ImageCompressionKdTree/python.zip and b/assignments/data/24-ImageCompressionKdTree/python.zip differ diff --git a/assignments/data/25-Patterns/README.html b/assignments/data/25-Patterns/README.html index 083f1deed..f6fcdad88 100644 --- a/assignments/data/25-Patterns/README.html +++ b/assignments/data/25-Patterns/README.html @@ -1,12 +1,21 @@ -

Patterns

+

Assignment 25 - Patterns

+

Example Output

+

+

Learning Outcomes

+
    +
  1. 2D Arrays
  2. +
  3. Loops
  4. +
  5. Conditions
  6. +
  7. Visualization
  8. +

Goals

  1. Learn how to modify and display a ColorGrid using Bridges
  2. Learn how to set/change colors for each pixel in the grid
  3. -
  4. Practice using simple loops to display patterns using the BRIDGES -ColorGrid data structure
  5. +
  6. Practice using simple loops to display patterns using the BRIDGES ColorGrid data structure
-

ColorGrid

+

Description

+

ColorGrid

The BRIDGES ColorGrid class is an abstraction for representing 2D images. It serves as a convenient way to display operations on images or other two dimensional structures. A similar structure is used in the BRIDGES Game @@ -27,16 +36,17 @@

Examples

  • Quadrants, Cut the image in four quadrants of different colors
  • Or make a customized pattern of your own
  • -

    Help

    +

    Extensions

    +

    Help

    for C++

    -

    ColorGrid documentation

    -

    Color documentation

    -

    Bridges class documentation

    +

    ColorGrid documentation +Color documentation +Bridges class documentation

    for Java

    -

    ColorGrid documentation

    -

    Color documentation

    -

    Bridges class documentation

    +

    ColorGrid documentation +Color documentation +Bridges class documentation

    for Python

    -

    ColorGrid documentation

    -

    Color documentation

    -

    Bridges class documentation

    +

    ColorGrid documentation +Color documentation +Bridges class documentation

    diff --git a/assignments/data/25-Patterns/README.md b/assignments/data/25-Patterns/README.md index 975cfb89e..1d1f40654 100644 --- a/assignments/data/25-Patterns/README.md +++ b/assignments/data/25-Patterns/README.md @@ -1,15 +1,29 @@ -Patterns -======== - -Goals ------ -1) Learn how to modify and display a ColorGrid using Bridges -2) Learn how to set/change colors for each pixel in the grid -2) Practice using simple loops to display patterns using the BRIDGES - ColorGrid data structure - -ColorGrid ---------- +# Assignment 25 - Patterns + +## Example Output + +image + + +## Learning Outcomes + +1. 2D Arrays +2. Loops +3. Conditions +4. Visualization + + +## Goals + +1. Learn how to modify and display a ColorGrid using Bridges +2. Learn how to set/change colors for each pixel in the grid +3. Practice using simple loops to display patterns using the BRIDGES ColorGrid data structure + + +## Description + +### ColorGrid + The BRIDGES ColorGrid class is an abstraction for representing 2D images. It serves as a convenient way to display operations on images or other two dimensional structures. A similar structure is used in the BRIDGES Game @@ -29,27 +43,22 @@ mascot, team. - Quadrants, Cut the image in four quadrants of different colors - Or make a customized pattern of your own -### Help -#### for C++ +## Extensions -[ColorGrid documentation](http://bridgesuncc.github.io/doc/cxx-api/current/html/classbridges_1_1datastructure_1_1_color_grid.html) -[Color documentation](http://bridgesuncc.github.io/doc/cxx-api/current/html/classbridges_1_1datastructure_1_1_color.html) +## Help +#### for C++ +[ColorGrid documentation](http://bridgesuncc.github.io/doc/cxx-api/current/html/classbridges_1_1datastructure_1_1_color_grid.html) +[Color documentation](http://bridgesuncc.github.io/doc/cxx-api/current/html/classbridges_1_1datastructure_1_1_color.html) [Bridges class documentation](http://bridgesuncc.github.io/doc/cxx-api/current/html/classbridges_1_1_bridges.html) #### for Java - [ColorGrid documentation](http://bridgesuncc.github.io/doc/java-api/current/html/classbridges_1_1base_1_1_color_grid.html) - [Color documentation](http://bridgesuncc.github.io/doc/java-api/current/html/classbridges_1_1base_1_1_color.html) - [Bridges class documentation](http://bridgesuncc.github.io/doc/java-api/current/html/classbridges_1_1connect_1_1_bridges.html) #### for Python - [ColorGrid documentation](http://bridgesuncc.github.io/doc/python-api/current/html/classbridges_1_1color__grid_1_1_color_grid.html) - [Color documentation](http://bridgesuncc.github.io/doc/python-api/current/html/classbridges_1_1color_1_1_color.html) - [Bridges class documentation](http://bridgesuncc.github.io/doc/python-api/current/html/classbridges_1_1bridges_1_1_bridges.html) diff --git a/assignments/data/25-Patterns/c++.zip b/assignments/data/25-Patterns/c++.zip index 4b99dc634..ac9744624 100644 Binary files a/assignments/data/25-Patterns/c++.zip and b/assignments/data/25-Patterns/c++.zip differ diff --git a/assignments/data/25-Patterns/java.zip b/assignments/data/25-Patterns/java.zip index 01b1b9da2..52601eaf5 100644 Binary files a/assignments/data/25-Patterns/java.zip and b/assignments/data/25-Patterns/java.zip differ diff --git a/assignments/data/25-Patterns/python.zip b/assignments/data/25-Patterns/python.zip index 1caba88d7..bfd2a512f 100644 Binary files a/assignments/data/25-Patterns/python.zip and b/assignments/data/25-Patterns/python.zip differ diff --git a/assignments/data/26-TowersOfHanoi/README.html b/assignments/data/26-TowersOfHanoi/README.html index 4b2fe1a80..fd5f9bf88 100644 --- a/assignments/data/26-TowersOfHanoi/README.html +++ b/assignments/data/26-TowersOfHanoi/README.html @@ -1,4 +1,11 @@

    Assignment 26 - Towers of Hanoi

    +

    Example Output

    +

    +

    Learning Outcomes

    +
      +
    1. Recursion
    2. +
    3. ArrayLists
    4. +

    Goals

    The purpose of the assignment is to learn to

      @@ -6,7 +13,7 @@

      Goals

    1. Solve a problem using logical steps.
    2. Display multiple visualizations to Bridges.
    -

    Programming part

    +

    Description

    Tasks