Skip to content

Commit

Permalink
Updated main README.md
Browse files Browse the repository at this point in the history
  • Loading branch information
a-mishmash committed Aug 21, 2024
1 parent a62eb7d commit 497f269
Show file tree
Hide file tree
Showing 11 changed files with 141 additions and 141 deletions.
73 changes: 12 additions & 61 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
# Software Team Quickstart Guide

Welcome! If you're here you have at least passing interest in coding for IronRiders. Here you'll find pointers on how to get started.
Welcome! If you're here you have at least passing interest in coding for the Iron Riders. Here you'll find pointers on how to get started.

TODO - this document is a work in progress, incomplete sections marked with TODO

## What you need to know
## What You Need To Know

There are a number of tools and technologies we use as a team that you should familiarize yourself with. If you aren't an expert in some (or all!) of these, don't worry. There's tons of learning resources online and your teammates and mentors are here to help!

Expand All @@ -21,82 +21,33 @@ Unfortunately we can't currently do this install on school laptops. So you'll n

Here's some specific things you should install & familiarize yourself with:

- [GitHub](#github)
- [VS Code](#vs-code)
- [FRC Game Tools](#frc-game-tools)

### GitHub

We use Git and GitHub for managing source code files and other information (like this file!)

_Git_ is an open source "source control" system. It is a tool that runs on your local computer. You probably already have git installed.

_GitHub_ is a website that offers a central place for teams to manage projects.

[Learn about Git and GitHub here](https://docs.github.com/en/get-started/start-your-journey/about-github-and-git)

You are ready to use GitHub when:

- You've used Git to create a copy of IronRiders code on your local computer
- You are familiar with the following:
- _cloning a repository_
- _committing_, _pushing_ and _creating pull requests_
- _pulling_ and _rebasing_
- _reviewing pull requests_

IronRiders code is at https://github.com/IronRiders. You'll need your own GitHub account and permission to access the IronRiders organization.

### VS Code

VS Code is software for writing software. Normally you would download VS Code from Microsoft and install yourself. But don't do that! FRC provides its own version of VS Code. Unless you know what you're using, just use that.

So, to get VS Code installed see [WPILib](wpilib) below.

FRC's [VS Code Overview](https://docs.wpilib.org/en/stable/docs/software/vscode-overview/) is a good place to learn more about VS Code.

### WPILib

_WPILib_ refers to both the software libraries that FRC provides for writing robots and a massive (2GB+) installer that installs everything you need to program a robot.

To install WPILib, follow [FRC's instructions]. Be sure to say "yes" when it asks if you want to install [VS Code](#vs-code).
- [GitHub](./tools/README.md/#github)
- [VS Code](./tools/README.md/#vs-code)
- [FRC Game Tools](./tools/README.md/#libraries-and-apps)

## Programming

With installation out of the way, you're ready for the fun part - actually coding!

Depending on your skill level, here are some resources to help you pick up the basics of what you'll need to be a productive robot software engineer.

Programming is a large topic but please don't get overwhelmed - FIRST is designed for beginners and you don't need to know everything about technologies like Java to be productive. And don't be afraid to ask for help!
Programming is a large topic but please don't get overwhelmed - FIRST is designed for beginners and you don't need to know everything about technologies like Java to be productive. And please don't be afraid to ask for help!

### Java

- [Java Curriculum](./java/README.md)
- [Java w3Schools](https://www.w3schools.com/java/default.asp)

TODO

### WPILib

TODO

### Other libraries
- [WPILib Curriculum](./wpilib/README.md)
- [WPILib Website](https://docs.wpilib.org/en/stable/index.html)

TODO


---

content to integrate

Last Update: 5/8/24

We could use a repository like this to store key information for the 4180 software team. This file could become an introductory welcome page for new developers with helpful "getting started" links.


Temp links that should possibly be here:

WPI Lib Download and Docs:
https://docs.wpilib.org/en/stable/docs/zero-to-robot/step-2/wpilib-setup.html

Basic Java Course:
https://www.w3schools.com/java/

Java Course (Has more advanced things):
https://www.codecademy.com/learn/learn-java
Last Update: 8/21/24
8 changes: 4 additions & 4 deletions java/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,22 +6,22 @@ in any programming language, if you already know a little Java, or anything inbe

### Overview

Week 1: Core Concepts (September 16th - 20th)
Week 1: Core Concepts
- Hello World
- Variables
- Object Oriented Programming

Week 2: Control Flow (September 23rd - 27th)
Week 2: Control Flow
- Conditions and Control Flow
- Arrays and ArrayLists
- Loops

Week 3: Advanced OOP (September 30th - October 4th)
Week 3: Advanced OOP
- String Methods
- Access, Encapsulation, and Static Methods
- Inheritance and Polymorphism

Week 4: Practice Project (October 7th - 11th)
Week 4: Practice Project
- Debugging
- Two Dimensional Arrays
- Practice Project
32 changes: 16 additions & 16 deletions java/week-1-core-concepts.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,29 +2,29 @@

### 1.1 Hello World

[Lesson](https://www.codecademy.com/courses/learn-java/lessons/hello-world-java/exercises/commenting-code)
- [Lesson](https://www.codecademy.com/courses/learn-java/lessons/hello-world-java/exercises/commenting-code)
[Cheatsheet](https://www.codecademy.com/learn/learn-java/modules/learn-java-hello-world/cheatsheet)

[w3Schools Syntax](https://www.w3schools.com/java/java_syntax.asp)
[w3Schools Output](https://www.w3schools.com/java/java_output.asp)
[w3Schools Comments](https://www.w3schools.com/java/java_comments.asp)
- [w3Schools Syntax](https://www.w3schools.com/java/java_syntax.asp)
- [w3Schools Output](https://www.w3schools.com/java/java_output.asp)
- [w3Schools Comments](https://www.w3schools.com/java/java_comments.asp)

### 1.2 Variables

[Lesson](https://www.codecademy.com/courses/learn-java/lessons/learn-java-variables)
[Cheatsheet](https://www.codecademy.com/learn/learn-java/modules/learn-java-variables/cheatsheet)
- [Lesson](https://www.codecademy.com/courses/learn-java/lessons/learn-java-variables)
- [Cheatsheet](https://www.codecademy.com/learn/learn-java/modules/learn-java-variables/cheatsheet)

[w3Schools Variables](https://www.w3schools.com/java/java_variables.asp)
[w3Schools Data Types](https://www.w3schools.com/java/java_data_types.asp)
- [w3Schools Variables](https://www.w3schools.com/java/java_variables.asp)
- [w3Schools Data Types](https://www.w3schools.com/java/java_data_types.asp)

### 1.3 Object Oriented Java

[Lesson](https://www.codecademy.com/courses/learn-java/videos/classes-and-objects-video)
[Cheatsheet](https://www.codecademy.com/learn/learn-java/modules/learn-java-object-oriented-java-u/cheatsheet)
- [Lesson](https://www.codecademy.com/courses/learn-java/videos/classes-and-objects-video)
- [Cheatsheet](https://www.codecademy.com/learn/learn-java/modules/learn-java-object-oriented-java-u/cheatsheet)

[w3Schools Methods](https://www.w3schools.com/java/java_methods.asp)
[w3Schools OOP](https://www.w3schools.com/java/java_oop.asp)
[w3Schools Classes/Objects](https://www.w3schools.com/java/java_classes.asp)
[w3Schools Class Attributes](https://www.w3schools.com/java/java_class_attributes.asp)
[w3Schools Class Methods](https://www.w3schools.com/java/java_class_methods.asp)
[w3Schools Class Contructors](https://www.w3schools.com/java/java_constructors.asp)
- [w3Schools Methods](https://www.w3schools.com/java/java_methods.asp)
- [w3Schools OOP](https://www.w3schools.com/java/java_oop.asp)
- [w3Schools Classes/Objects](https://www.w3schools.com/java/java_classes.asp)
- [w3Schools Class Attributes](https://www.w3schools.com/java/java_class_attributes.asp)
- [w3Schools Class Methods](https://www.w3schools.com/java/java_class_methods.asp)
- [w3Schools Class Contructors](https://www.w3schools.com/java/java_constructors.asp)
22 changes: 11 additions & 11 deletions java/week-2-control-flow.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,23 +2,23 @@

### 2.1 Conditionals and Control Flow

[Lesson](https://www.codecademy.com/courses/learn-java/lessons/java-conditionals-and-control-flow/exercises/introduction-to-control-flow)
[Cheatsheet](https://www.codecademy.com/learn/learn-java/modules/learn-java-conditionals-control-flow-u/cheatsheet)
- [Lesson](https://www.codecademy.com/courses/learn-java/lessons/java-conditionals-and-control-flow/exercises/introduction-to-control-flow)
- [Cheatsheet](https://www.codecademy.com/learn/learn-java/modules/learn-java-conditionals-control-flow-u/cheatsheet)

[w3Schools Booleans](https://www.w3schools.com/java/java_booleans.asp)
[w3Schools If/Else](https://www.w3schools.com/java/java_conditions.asp)
- [w3Schools Booleans](https://www.w3schools.com/java/java_booleans.asp)
- [w3Schools If/Else](https://www.w3schools.com/java/java_conditions.asp)

### 2.2 Arrays and ArrayLists

[Lesson](https://www.codecademy.com/courses/learn-java/lessons/learn-java-arrays)
[Cheatsheet](https://www.codecademy.com/learn/learn-java/modules/learn-java-arrays-and-arraylists/cheatsheet)
- [Lesson](https://www.codecademy.com/courses/learn-java/lessons/learn-java-arrays)
- [Cheatsheet](https://www.codecademy.com/learn/learn-java/modules/learn-java-arrays-and-arraylists/cheatsheet)

[w3Schools Arrays](https://www.w3schools.com/java/java_arrays.asp)
- [w3Schools Arrays](https://www.w3schools.com/java/java_arrays.asp)

### 2.3 Loops

[Lesson](https://www.codecademy.com/courses/learn-java/lessons/learn-java-loops)
[Cheatsheet](https://www.codecademy.com/learn/learn-java/modules/learn-java-loops/cheatsheet)
- [Lesson](https://www.codecademy.com/courses/learn-java/lessons/learn-java-loops)
- [Cheatsheet](https://www.codecademy.com/learn/learn-java/modules/learn-java-loops/cheatsheet)

[w3Schools For Loops](https://www.w3schools.com/java/java_for_loop.asp)
[w3Schools While Loops](https://www.w3schools.com/java/java_while_loop.asp)
- [w3Schools For Loops](https://www.w3schools.com/java/java_for_loop.asp)
- [w3Schools While Loops](https://www.w3schools.com/java/java_while_loop.asp)
24 changes: 12 additions & 12 deletions java/week-3-advanced-oop.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,24 +2,24 @@

## 3.1 String Methods

[Lesson](https://www.codecademy.com/courses/learn-java/lessons/java-string-methods)
[Cheatsheet](https://www.codecademy.com/learn/learn-java/modules/learn-java-string-methods/cheatsheet)
- [Lesson](https://www.codecademy.com/courses/learn-java/lessons/java-string-methods)
- [Cheatsheet](https://www.codecademy.com/learn/learn-java/modules/learn-java-string-methods/cheatsheet)

[w3Schools Strings](https://www.w3schools.com/java/java_strings.asp)
[w3Schools String Methods](https://www.w3schools.com/java/java_ref_string.asp)
- [w3Schools Strings](https://www.w3schools.com/java/java_strings.asp)
- [w3Schools String Methods](https://www.w3schools.com/java/java_ref_string.asp)

## 3.2 Access, Encapsulation, and Static Methods

[Lesson](https://www.codecademy.com/courses/learn-java/lessons/access-encapsulation-and-scope-[Lesson/exercises/what-are-access-and-scope)
[Cheatsheet](https://www.codecademy.com/learn/learn-java/modules/java-access-encapsulation-and-static-methods/cheatsheet)
- [Lesson](https://www.codecademy.com/courses/learn-java/lessons/access-encapsulation-and-scope-[Lesson/exercises/what-are-access-and-scope)
- [Cheatsheet](https://www.codecademy.com/learn/learn-java/modules/java-access-encapsulation-and-static-methods/cheatsheet)

[w3Schools Encapsulation](https://www.w3schools.com/java/java_encapsulation.asp)
[w3Schools Modifiers](https://www.w3schools.com/java/java_modifiers.asp)
- [w3Schools Encapsulation](https://www.w3schools.com/java/java_encapsulation.asp)
- [w3Schools Modifiers](https://www.w3schools.com/java/java_modifiers.asp)

## 3.3 Inheritance and Polymorphism

[Lesson](https://www.codecademy.com/courses/learn-java/lessons/access-encapsulation-and-scope-[Lesson/exercises/what-are-access-and-scope)
[Cheatsheet](https://www.codecademy.com/learn/learn-java/modules/learn-java-inheritance-and-polymorphism/cheatsheet)
- [Lesson](https://www.codecademy.com/courses/learn-java/lessons/access-encapsulation-and-scope-[Lesson/exercises/what-are-access-and-scope)
- [Cheatsheet](https://www.codecademy.com/learn/learn-java/modules/learn-java-inheritance-and-polymorphism/cheatsheet)

[w3Schools Inheritance](https://www.w3schools.com/java/java_inheritance.asp)
[w3Schools Polymorphism](https://www.w3schools.com/java/java_polymorphism.asp)
- [w3Schools Inheritance](https://www.w3schools.com/java/java_inheritance.asp)
- [w3Schools Polymorphism](https://www.w3schools.com/java/java_polymorphism.asp)
12 changes: 5 additions & 7 deletions java/week-4-practice-project.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,20 +2,18 @@

### 4.1 Debugging

[Lesson](https://www.codecademy.com/courses/learn-java/lessons/java-debugging)
- [Lesson](https://www.codecademy.com/courses/learn-java/lessons/java-debugging)

### 4.2 Two Dimensional Arrays

[Lesson](https://www.codecademy.com/courses/learn-java/lessons/2-d-arrays-java)
[Cheatsheet](https://www.codecademy.com/learn/learn-java/modules/java-two-dimensional-arrays/cheatsheet)
- [Lesson](https://www.codecademy.com/courses/learn-java/lessons/2-d-arrays-java)
- [Cheatsheet](https://www.codecademy.com/learn/learn-java/modules/java-two-dimensional-arrays/cheatsheet)

[w3Schools Arrays](https://www.w3schools.com/java/java_arrays.asp)
- [w3Schools Arrays](https://www.w3schools.com/java/java_arrays.asp)

### Practice Project

For the final part of your Java training, you will build a program that reads user input from the console and
does something cool. This is a vague goal, so it's up to you to figure out what you want to make. It can be
relatively small and simple but try to actually use everything you learned.
For the final part of your Java training, you will build a program that reads user input from the console and does something cool. This is a vague goal, so it's up to you to figure out what you want to make. It can be relatively small and simple but try to actually use everything you learned.

Example Ideas:

Expand Down
58 changes: 54 additions & 4 deletions tools/README.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,59 @@
# Software Tools

Our departmet uses all sorts of helpful tools to make the
process of coding collaboratively much easier.
Our department uses all sorts of helpful tools to make the process of
coding collaboratively much easier.

### VSCode
- [Essentials](#essentials)
- [Libraries & Apps](#libraries-and-apps)

### Github
## Essentials

### GitHub

We use Git and GitHub for managing source code files and other information (like this file!)

_Git_ is an open source "source control" system. It is a tool that runs on your local computer. You probably already have git installed.

_GitHub_ is a website that offers a central place for teams to manage projects.

[Learn about Git and GitHub here](https://docs.github.com/en/get-started/start-your-journey/about-github-and-git)

You are ready to use GitHub when:

- You've used Git to create a copy of IronRiders code on your local computer
- You are familiar with the following:
- _cloning a repository_
- _committing_, _pushing_ and _creating pull requests_
- _pulling_ and _rebasing_
- _reviewing pull requests_

IronRiders code is at https://github.com/IronRiders. You'll need your own GitHub account and permission to access the IronRiders organization.

### VS Code

VS Code is software for writing software. Normally you would download VS Code from Microsoft and install yourself. But don't do that! FRC provides its own version of VS Code. Unless you know what you're using, just use that.

So, to get VS Code installed see [WPILib](#wpilib) below.

FRC's [VS Code Overview](https://docs.wpilib.org/en/stable/docs/software/vscode-overview/) is a good place to learn more about VS Code.

### WPILib

_WPILib_ refers to both the software libraries that FRC provides for writing robots and a massive (2GB+) installer that installs everything you need to program a robot.

To install WPILib, follow [FRC's instructions](https://docs.wpilib.org/en/stable/docs/zero-to-robot/step-2/wpilib-setup.html). Be sure to say "yes" when it asks if you want to install [VS Code](#vs-code).

## Libraries and Apps

### PathPlanner

PathPlanner is used to generate paths and autos which the robot follows during the autonomous period of the game (generally the first 15 seconds), and provides a library for running the generated path/auto files in code. The [PathPlanner website](https://pathplanner.dev/home.html) has intructions on everything you need to know about it.

### YAGSL

YAGSL is another library which does all the calculations for the swerve drive required to get it to work. JSON files in the deploy directory give YAGSL the info it needs, then in code we give a target speed/rotation/etc. and it controls each wheel for us. You probably won't be doing much with YAGSL as we don't need to re-code our swerve drive every year. If you do, it's very well documented in [its website](https://yagsl.gitbook.io/yagsl).

### DriverStation

DriverStation actually has very little to do with the code, but it the tool the driver uses to connect with the robot. It is also where the driver specifices the team, the game, and other important info which the code can access.

20 changes: 7 additions & 13 deletions wpilib/week-1-system-structure.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,25 +2,19 @@

### 1.1 What is WPILib?

It would be unreasonably difficult, not to mention time-consuming, to
code an entire system architecture for the robot. So, WPILib provides
a standardized way to interact with the robot with (fairly simple) Java.
It would be unreasonably difficult, not to mention time-consuming, to code an entire system architecture for the robot. So, WPILib provides a standardized way to interact with the robot with (fairly simple) Java.

[WPILib Description](https://docs.wpilib.org/en/stable/docs/software/what-is-wpilib.html)
- [WPILib Description](https://docs.wpilib.org/en/stable/docs/software/what-is-wpilib.html)

### 1.2 Subsystems

Generally, it's best to split the code into modular parts which are kept
seperate. Not doing so can result in 'spaghetti code' as demonstrated [here](https://www.youtube.com/watch?v=k238XpMMn38).
Generally, it's best to split the code into modular parts which are kept seperate. Not doing so can result in 'spaghetti code' as demonstrated [here](https://www.youtube.com/watch?v=k238XpMMn38).

[WPILib Subsystems](https://docs.wpilib.org/en/stable/docs/software/commandbased/subsystems.html)
- [WPILib Subsystems](https://docs.wpilib.org/en/stable/docs/software/commandbased/subsystems.html)

### 1.3 Commands

Commands are a little like methods, with a big difference: commands can
run off triggers, instead of constantly checking something. (It's fine
if you don't understand what that means yet). The point is, it makes
things way more efficient.
Commands are a little like methods, with a big difference: commands can run off triggers, instead of constantly checking something. (It's fine if you don't understand what that means yet). The point is, it makes things way more efficient and easy.

[WPILib Command-Based Programming](https://docs.wpilib.org/en/stable/docs/software/commandbased/what-is-command-based.html)
[WPILib Commads](https://docs.wpilib.org/en/stable/docs/software/commandbased/commands.html)
- [WPILib Command-Based Programming](https://docs.wpilib.org/en/stable/docs/software/commandbased/what-is-command-based.html)
- [WPILib Commands](https://docs.wpilib.org/en/stable/docs/software/commandbased/commands.html)
Loading

0 comments on commit 497f269

Please sign in to comment.