Mini-Lessons/Milestones

Mini-Lessons

ARC Mini-Lessons

The ARC Mini-Lessons are meant to provide teams with a constructive source of learning that they can use to gauge the skills of the team members and allow then to learn programming and computer science. The mini-Lessons can be found here: https://github.com/aeroroboticscomp/ARC-example/tree/master/Mini-Lessons

The lessons are currently split into these categories: - Algorithms: Focus more on numerical computation and algorithmic thinking. Lessons will give students the oportunities to implement algorithms and computational ideas, giving them a step towards what’s asked of them in the - Computer Programming: Focus more on the programming side of things suh as syntax, tools, and libraries that are available to teams and that teams are allowed to use for competition

In the future, additional categories may be added depending on competition tasks.

Format

In each mini-lesson folder, the below will be contained: * Project specification files (PDF and README.md) * Starter Files * Jupyter Notebook (notebook copy + online link) * Solution Folder

In each solution folder, there will be the * PDF containing a walk through of the solution * Solution Jupyter Notebook and online Jupyter notebook link * Stand-alone code package that can be run through python

A Jupyter Notebook (https://jupyter.org/) is a hybrid code environment + word document that allows programmers to instantly see the results of their code without the need to install on their machines. An online Google-based link will also be provided that will allow students to use work on this at home or in school without a computer that has Python installed.

Prerequisites

There are some basic prerequisites that are assumed for team members attempting this competition. They are listed below: * Basic knoweldge of math (addition, subtraction, fractions) * Computer access/ability to install python and its associated libraries (Python 3 will be used for all code)

Best way to tackle these lessons

Below are some tips that will help in learning the material. These mini-lessons are meant to be tough and potentially challenging; however, they are rewarding for those that finish and will help teams think through the actual competition tasks asked of them.

The best way to go about these lessons is the following order: 1. Read through the lesson description and material thoroughly 2. Coming up with a plan/algorithm/methodology that will help implement 3. Implement and test the program 4. Repeat Step 2 and 3 as much as necessary 5. Ask questions/try different ways to solve the problem

We highly recommend teams check the solution ONLY after you’ve gon through Step 1 thru 4 more then three times. This is recommended to build the “debugging instinct”, where students attempt to try to figure out why something isn’t working without the solution by logically thinking about potential reasons why the code isn’t working.

Teams should first work through the Computer Programming lessons before moving to the Algorithm lessons. The Algorithm lessons will build on the material found in the Computer Programming lessons.

List of Lessons

Below is the list of lessons that will be included. A brief summary of what each mini-lesson will be having students do is included in the description.

  • Computer Programming - CP_1: File I/O

    • Description: Create a script that will parse a data file with a complex format and then create another data file.
    • CP_2: If/Else/Switch - Description: Create a script that will go through a complex logic system
    • CP_3: Class Construction - Description: Create a class that allows the containement of information contained in a file and process the classes.
    • CP_4: Usage of Libraries - Description: Create a script that computes a graph and plots it
    • CP_5: Object Oriented Programming - Description: A culmination of all the previous examples
  • Algorithms - Algo_1: Fibonacci Sequence

    • Description: Create script that calculates the terms of the Fibonnaic Sequence and compute some statistics
    • Algo_2: Euler’s Method - Description: Create script that propagates a differential equation and check how close it is the actual solution
    • Algo_3: Simple Optimization - Description: Design a simple optimization algorithm that allows you to find the optimal solution
    • Algo_4: Sorting Algorithms - Description: Implement 3 different sorting algorithms and find out which is the “best”
    • Algo_5: Root Finding - Description: Create a script that solves non-linear equations that can’t be solved by hand
    • Algo_6: Breadth Search - Description: Create a script that goes through each different permutation and find sthe optimal “combination”