Go to Post [on reputation] They're just dots. - Brandon Martus [more]
Home
Go Back   Chief Delphi > Technical > Programming
CD-Media   CD-Spy  
portal register members calendar search Today's Posts Mark Forums Read FAQ rules

 
Closed Thread
Thread Tools Rate Thread Display Modes
  #1   Spotlight this post!  
Unread 23-06-2010, 12:52
Robototes2412's Avatar
Robototes2412 Robototes2412 is offline
1 * 4 != 14
FRC #2412 (Robototes)
Team Role: Programmer
 
Join Date: Jan 2010
Rookie Year: 2007
Location: Bellevue
Posts: 312
Robototes2412 is on a distinguished road
What New FIRST Programmers should be taught

Hey,

I found out that the arduous task to teaching not one, or two, but four freshmen to program Java for a FRC robot has been lumped onto my shoulders. What should I do to help them learn how everything on the robot works and how to program it?

Last edited by Robototes2412 : 23-06-2010 at 12:52. Reason: syntactical errors
  #2   Spotlight this post!  
Unread 23-06-2010, 13:12
Ether's Avatar
Ether Ether is offline
systems engineer (retired)
no team
 
Join Date: Nov 2009
Rookie Year: 1969
Location: US
Posts: 8,101
Ether has a reputation beyond reputeEther has a reputation beyond reputeEther has a reputation beyond reputeEther has a reputation beyond reputeEther has a reputation beyond reputeEther has a reputation beyond reputeEther has a reputation beyond reputeEther has a reputation beyond reputeEther has a reputation beyond reputeEther has a reputation beyond reputeEther has a reputation beyond repute
Re: What New FIRST Programmers should be taught

Quote:
Originally Posted by Robototes2412 View Post
I found out that the arduous task to teaching not one, or two, but four freshmen to program Java for a FRC robot has been lumped onto my shoulders.
It's easier to teach 4 than 1. They can help and compete against each other. Keeps the interest level up.

Quote:
What should I do to help them learn how everything on the robot works and how to program it?
Find out what their individual learning styles are, and play to their strengths.

Recruit other mentors and experienced team members to "help them learn how everything on the robot works", especially the sensors and actuators.

For those willing and so gifted, have them read the FRC Java programming documentation - and have them help teach it to those who do not learn easily from reading.

Sun (now Oracle) has an excellent on-line Java tutorial.

Make sure they understand the "big picture" early on, so they have a mental framework on which to hang all the new stuff they will be learning. Explain the development environment and the target, and how they interact. Start will the example framework that comes with the Java installation and run through the steps of building and uploading and running it on a robot. Give them confidence that this is comprehensible and actually works.

Teach them, or find someone who can teach them, the rudimentary concepts of realtime embedded programming and concurrent execution.

Make sure they each have a laptop computer with FRC Java installed so they can continue learning at home.
  #3   Spotlight this post!  
Unread 23-06-2010, 13:17
apalrd's Avatar
apalrd apalrd is offline
More Torque!
AKA: Andrew Palardy (Most people call me Palardy)
VRC #3333
Team Role: College Student
 
Join Date: Mar 2009
Rookie Year: 2009
Location: Auburn Hills, MI
Posts: 1,347
apalrd has a reputation beyond reputeapalrd has a reputation beyond reputeapalrd has a reputation beyond reputeapalrd has a reputation beyond reputeapalrd has a reputation beyond reputeapalrd has a reputation beyond reputeapalrd has a reputation beyond reputeapalrd has a reputation beyond reputeapalrd has a reputation beyond reputeapalrd has a reputation beyond reputeapalrd has a reputation beyond repute
Re: What New FIRST Programmers should be taught

1. Lucky You. I have taught FLL kids Mindstorms, and that was fun.

2. I will teach some freshmen LabVIEW next year. I do not know how many.

3. Start with the basics, and see how far they can go with that before introducing more advanced topics (especially classes and pointers). They will learn from experience, so having something to program (not necessarily a cRio, you can run Java code on your computer too) helps them. I have found that the easiest way to learn a language is to solve a problem, as this requires more thought then just throwing down some code for the purpose of learning the syntax. They will then learn where each object is most useful, how it can be used, etc. while thinking through the problem.
__________________
Kettering University - Computer Engineering
Kettering Motorsports
Williams International - Commercial Engines - Controls and Accessories
FRC 33 - The Killer Bees - 2009-2012 Student, 2013-2014 Advisor
VEX IQ 3333 - The Bumble Bees - 2014+ Mentor

"Sometimes, the elegant implementation is a function. Not a method. Not a class. Not a framework. Just a function." ~ John Carmack
  #4   Spotlight this post!  
Unread 23-06-2010, 13:35
Andrew Schreiber Andrew Schreiber is offline
Joining the 900 Meme Team
FRC #0079
 
Join Date: Jan 2005
Rookie Year: 2000
Location: Misplaced Michigander
Posts: 4,069
Andrew Schreiber has a reputation beyond reputeAndrew Schreiber has a reputation beyond reputeAndrew Schreiber has a reputation beyond reputeAndrew Schreiber has a reputation beyond reputeAndrew Schreiber has a reputation beyond reputeAndrew Schreiber has a reputation beyond reputeAndrew Schreiber has a reputation beyond reputeAndrew Schreiber has a reputation beyond reputeAndrew Schreiber has a reputation beyond reputeAndrew Schreiber has a reputation beyond reputeAndrew Schreiber has a reputation beyond repute
Re: What New FIRST Programmers should be taught

Don't teach them to code. Teach them to program.

Don't teach them a language, teach them how to think logically through a problem. Teach them to spend time figuring out a solution rather than coding. Make them realize that writing the code is the easy part and that finding a solution to the problem is the hard part.

When they can walk you through how to complete a given task (something simple, like drawing back your kicker) then start teaching them whatever language your team uses.
__________________




.
  #5   Spotlight this post!  
Unread 23-06-2010, 13:48
Robototes2412's Avatar
Robototes2412 Robototes2412 is offline
1 * 4 != 14
FRC #2412 (Robototes)
Team Role: Programmer
 
Join Date: Jan 2010
Rookie Year: 2007
Location: Bellevue
Posts: 312
Robototes2412 is on a distinguished road
Re: What New FIRST Programmers should be taught

These kids already know "traditional" programming, and i wanted to get them diving into wpi java.

How should I show them what I did without making them rely on my code?
  #6   Spotlight this post!  
Unread 23-06-2010, 15:21
apalrd's Avatar
apalrd apalrd is offline
More Torque!
AKA: Andrew Palardy (Most people call me Palardy)
VRC #3333
Team Role: College Student
 
Join Date: Mar 2009
Rookie Year: 2009
Location: Auburn Hills, MI
Posts: 1,347
apalrd has a reputation beyond reputeapalrd has a reputation beyond reputeapalrd has a reputation beyond reputeapalrd has a reputation beyond reputeapalrd has a reputation beyond reputeapalrd has a reputation beyond reputeapalrd has a reputation beyond reputeapalrd has a reputation beyond reputeapalrd has a reputation beyond reputeapalrd has a reputation beyond reputeapalrd has a reputation beyond repute
Re: What New FIRST Programmers should be taught

Quote:
Originally Posted by Robototes2412 View Post
How should I show them what I did without making them rely on my code?
Take the robot, and show them the end result of your code, and explain the concepts in the algorithm. Don't show them the actual code itself, just the end result and the concepts involved, then make them re-implement it as a challenge.

For example, say you have something (preferably something that is not easy to break) like a kicker. It has a motor and a potentiometer. You want them to learn about PID controls between the motor and potentiometer, so you explain the basics of PID control while demonstrating how it moves the kicker to the desired position and slows down to not overshoot. Then you let them implement it themselves, and check their results.

Unless you specifically give them the output = (setpoint - process_variable) * gain equation for P, they will almost certainly try to have some IF's and drive the motor based on cases. Then, tell them why that is not the best way, and explain the correct algorithm, and let them try it.
__________________
Kettering University - Computer Engineering
Kettering Motorsports
Williams International - Commercial Engines - Controls and Accessories
FRC 33 - The Killer Bees - 2009-2012 Student, 2013-2014 Advisor
VEX IQ 3333 - The Bumble Bees - 2014+ Mentor

"Sometimes, the elegant implementation is a function. Not a method. Not a class. Not a framework. Just a function." ~ John Carmack
  #7   Spotlight this post!  
Unread 23-06-2010, 15:42
gblake's Avatar
gblake gblake is offline
6th Gear Developer; Mentor
AKA: Blake Ross
no team (6th Gear)
Team Role: Mentor
 
Join Date: May 2006
Rookie Year: 2006
Location: Virginia
Posts: 1,940
gblake has a reputation beyond reputegblake has a reputation beyond reputegblake has a reputation beyond reputegblake has a reputation beyond reputegblake has a reputation beyond reputegblake has a reputation beyond reputegblake has a reputation beyond reputegblake has a reputation beyond reputegblake has a reputation beyond reputegblake has a reputation beyond reputegblake has a reputation beyond repute
Re: What New FIRST Programmers should be taught

I can't resist: Show them a hole in the ground. Show them the robot (or optionally some part of their own anatomy). Describe the differences.

Blake

PS: Also, describe/teach your team's criteria for starting and for finishing any part of programming the robot (aka Entrance and Exit Criteria for each step in the process).

The actual writing of the code is typically one of the easier parts of the process, once someone has a basic familiarity with any language.

Designing the code carefully enough before writing it takes some time.

Planning/writing Test Procedures containing appropriate amounts of detail takes some time.

Integrating chunks of code and Testing_The_Result takes time at each level of abstraction you use (units/modules/packages/components/system/whatever).

Writing repeatable, automated continuous-integration tests takes time.

Are your team's software developers done when something they hacked together doesn't cause the robot to catch on fire or put out an eye? or ar they done when each of the steps above has been completed and the resulting "artifacts" are ready to be understood or used anyone on the team?

PPS: I loved reading eXtreme Programming Explained by Beck. Whether or not you become a fan of everything he espouses, I think that it is packed full of wisdom (and it's thin enough to be easily read cover-to-cover in a single weekend).
__________________
Blake Ross, For emailing me, in the verizon.net domain, I am blake
VRC Team Mentor, FTC volunteer, 5th Gear Developer, Husband, Father, Triangle Fraternity Alumnus (ky 76), U Ky BSEE, Tau Beta Pi, Eta Kappa Nu, Kentucky Colonel
Words/phrases I avoid: basis, mitigate, leveraging, transitioning, impact (instead of affect/effect), facilitate, programmatic, problematic, issue (instead of problem), latency (instead of delay), dependency (instead of prerequisite), connectivity, usage & utilize (instead of use), downed, functionality, functional, power on, descore, alumni (instead of alumnus/alumna), the enterprise, methodology, nomenclature, form factor (instead of size or shape), competency, modality, provided(with), provision(ing), irregardless/irrespective, signage, colorized, pulsating, ideate
  #8   Spotlight this post!  
Unread 24-06-2010, 23:11
MPlant MPlant is offline
Registered User
FRC #0008
 
Join Date: Feb 2010
Location: Palo Alto High School Robotics
Posts: 13
MPlant is an unknown quantity at this point
Re: What New FIRST Programmers should be taught

Here's how it goes:
1.) Unix
2.) SICP
3.) K&R
  #9   Spotlight this post!  
Unread 25-06-2010, 00:01
Billfred's Avatar
Billfred Billfred is offline
...and you can't! teach! that!
FRC #5402 (Iron Kings); no team (AndyMark)
Team Role: Mentor
 
Join Date: Feb 2004
Rookie Year: 2004
Location: The Land of the Kokomese, IN
Posts: 8,554
Billfred has a reputation beyond reputeBillfred has a reputation beyond reputeBillfred has a reputation beyond reputeBillfred has a reputation beyond reputeBillfred has a reputation beyond reputeBillfred has a reputation beyond reputeBillfred has a reputation beyond reputeBillfred has a reputation beyond reputeBillfred has a reputation beyond reputeBillfred has a reputation beyond reputeBillfred has a reputation beyond repute
Re: What New FIRST Programmers should be taught

What should they be taught? How to turn a wrench!

You may think I'm being flip about this, but I'm not. With the 2815/1398 collaboration this year, we had two drive bases floating around. 2815's was assembled first, so it went off with the programmers so they could get to work. While they were heavy in programming knowledge, they proved less skilled at handling the little quibbles of any new FRC drivetrain. (Compounding this problem was the fact that their work space was on the second floor of another building about a quarter-mile walk away from the machine shop...but that's life.) It reached the point that I spent several build sessions camped out in the room troubleshooting minor wiring and mechanical bugs just to keep them working while our kids were busy working on the kicker and the (ultimately-abandoned) hanger.

If you've got trained programmers, spend some of that time savings on making sure they can make minor repairs to the robot--troubleshooting the control system, fixing a bad crimp, adjusting a chain run, That Pesky Thing Your Robots Always Do--and you will reap the benefits in less down-time for the programmers and fewer drug-away-for-two-minutes moments (or, if you're like us up there, 20 minutes) for your full-fledged hardware guys.
__________________
William "Billfred" Leverette - Gamecock/Jessica Boucher victim/Marketing & Sales Specialist at AndyMark

2004-2006: FRC 1293 (D5 Robotics) - Student, Mentor, Coach
2007-2009: FRC 1618 (Capital Robotics) - Mentor, Coach
2009-2013: FRC 2815 (Los Pollos Locos) - Mentor, Coach - Palmetto '09, Peachtree '11, Palmetto '11, Palmetto '12
2010: FRC 1398 (Keenan Robo-Raiders) - Mentor - Palmetto '10
2014-2016: FRC 4901 (Garnet Squadron) - Co-Founder and Head Bot Coach - Orlando '14, SCRIW '16
2017-: FRC 5402 (Iron Kings) - Mentor

94 events (more than will fit in a ChiefDelphi signature), 14 seasons, over 61,000 miles, and still on a mission from Bob.

Rule #1: Do not die. Rule #2: Be respectful. Rule #3: Be safe. Rule #4: Follow the handbook.
  #10   Spotlight this post!  
Unread 26-06-2010, 11:03
Dustin Shadbolt's Avatar
Dustin Shadbolt Dustin Shadbolt is offline
In a server room somewhere...
AKA: Dustin Shadbolt
FRC #1555 (Team PULSE)
Team Role: Alumni
 
Join Date: Jan 2010
Rookie Year: 2010
Location: Monticello,Indiana
Posts: 320
Dustin Shadbolt is on a distinguished road
Re: What New FIRST Programmers should be taught

I agree with everyone here. You just need to teach to their own learning styles. Seeing you have 4 kids, it should be easy to teach them programming. They could split up the more complex topics and then work as a team to put it all together in all program. This is how it is done in the real world and it would definitely help them learn to cover their own parts. Using your own code could be a benefit, I know when I started programming I used a lot of open source code or snippets from other teams. (I had no previous year's code to work with). After time I would start to see better ways to code it, or i would see errors in the code it self. You could possible mess up some of your code so they can learn to find it and fix it. Tell them they need to plan everything out and have a running chart of what needs done and what's done. And again just make sure they all have FRC Java on a laptop, so they can work/learn at home!
  #11   Spotlight this post!  
Unread 26-06-2010, 17:15
StevenB StevenB is offline
is having FRC withdrawal symptoms.
AKA: Steven Bell
no team
Team Role: College Student
 
Join Date: May 2005
Rookie Year: 2005
Location: Stanford, CA
Posts: 416
StevenB has a reputation beyond reputeStevenB has a reputation beyond reputeStevenB has a reputation beyond reputeStevenB has a reputation beyond reputeStevenB has a reputation beyond reputeStevenB has a reputation beyond reputeStevenB has a reputation beyond reputeStevenB has a reputation beyond reputeStevenB has a reputation beyond reputeStevenB has a reputation beyond reputeStevenB has a reputation beyond repute
Re: What New FIRST Programmers should be taught

Teach them version control. It doesn't matter what tool you use, but getting into the habit of documenting your work is essential.

For most teams, all of the software fits inside one person's head, and they do most of the work. They know what things they've changed, and how their code works. Because of the intensity of build season, they can even keep track of things without putting in any comments. I know, because I've been that person before.

If you're fortunate enough to actually have several people working on the software, keeping track of what you've done and what has changed is essential, even if all of your code is in one place. You don't ever want to be stuck in a situation where "Johnny changed the code, and I don't know what he did, but now it doesn't work...".
__________________
Need a physics refresher? Want to know if that motor is big enough for your arm? A FIRST Encounter with Physics

2005-2007: Student | Team #1519, Mechanical Mayhem | Milford, NH
2008-2011: Mentor | Team #2359, RoboLobos | Edmond, OK
2014-??: Mentor | Looking for a team...
  #12   Spotlight this post!  
Unread 26-06-2010, 17:21
EricH's Avatar
EricH EricH is offline
New year, new team
FRC #1197 (Torbots)
Team Role: Engineer
 
Join Date: Jan 2005
Rookie Year: 2003
Location: SoCal
Posts: 19,814
EricH has a reputation beyond reputeEricH has a reputation beyond reputeEricH has a reputation beyond reputeEricH has a reputation beyond reputeEricH has a reputation beyond reputeEricH has a reputation beyond reputeEricH has a reputation beyond reputeEricH has a reputation beyond reputeEricH has a reputation beyond reputeEricH has a reputation beyond reputeEricH has a reputation beyond repute
Re: What New FIRST Programmers should be taught

Quote:
Originally Posted by StevenB View Post
Teach them version control. It doesn't matter what tool you use, but getting into the habit of documenting your work is essential.

...

If you're fortunate enough to actually have several people working on the software, keeping track of what you've done and what has changed is essential, even if all of your code is in one place. You don't ever want to be stuck in a situation where "Johnny changed the code, and I don't know what he did, but now it doesn't work...".
And version control programs can also keep a copy of the last version of the code known to work handy, for when the above situation happens 5 minutes before a match. Not that that will ever happen...
__________________
Past teams:
2003-2007: FRC0330 BeachBots
2008: FRC1135 Shmoebotics
2012: FRC4046 Schroedinger's Dragons

"Rockets are tricky..."--Elon Musk

  #13   Spotlight this post!  
Unread 27-06-2010, 01:31
Radical Pi Radical Pi is offline
Putting the Jumper in the Bumper
AKA: Ian Thompson
FRC #0639 (Code Red Robotics)
Team Role: Programmer
 
Join Date: Jan 2010
Rookie Year: 2010
Location: New York
Posts: 655
Radical Pi has a spectacular aura aboutRadical Pi has a spectacular aura aboutRadical Pi has a spectacular aura about
Re: What New FIRST Programmers should be taught

Quote:
Originally Posted by EricH View Post
And version control programs can also keep a copy of the last version of the code known to work handy, for when the above situation happens 5 minutes before a match. Not that that will ever happen...
If only we were able to do that. For some reason our subversion server doesn't play nice with regionals.
__________________

"To have no errors would be life without meaning. No strugle, no joy"
"A network is only as strong as it's weakest linksys"
  #14   Spotlight this post!  
Unread 27-06-2010, 10:32
Tanner's Avatar
Tanner Tanner is offline
Registered User
FRC #1261 (Roblions)
Team Role: Programmer
 
Join Date: Jan 2007
Rookie Year: 2007
Location: Suwanee, GA
Posts: 311
Tanner is a splendid one to beholdTanner is a splendid one to beholdTanner is a splendid one to beholdTanner is a splendid one to beholdTanner is a splendid one to beholdTanner is a splendid one to behold
Re: What New FIRST Programmers should be taught

Quote:
Originally Posted by Radical Pi View Post
If only we were able to do that. For some reason our subversion server doesn't play nice with regionals.
Not to just sound pro-git or anything, but git (and some other VCS) work distributed so they don't need a server. Sure it's a tiny bit more work to do it, but no server.

-Tanner
  #15   Spotlight this post!  
Unread 27-06-2010, 11:21
Andrew Schreiber Andrew Schreiber is offline
Joining the 900 Meme Team
FRC #0079
 
Join Date: Jan 2005
Rookie Year: 2000
Location: Misplaced Michigander
Posts: 4,069
Andrew Schreiber has a reputation beyond reputeAndrew Schreiber has a reputation beyond reputeAndrew Schreiber has a reputation beyond reputeAndrew Schreiber has a reputation beyond reputeAndrew Schreiber has a reputation beyond reputeAndrew Schreiber has a reputation beyond reputeAndrew Schreiber has a reputation beyond reputeAndrew Schreiber has a reputation beyond reputeAndrew Schreiber has a reputation beyond reputeAndrew Schreiber has a reputation beyond reputeAndrew Schreiber has a reputation beyond repute
Re: What New FIRST Programmers should be taught

Quote:
Originally Posted by StevenB View Post
Teach them version control. It doesn't matter what tool you use, but getting into the habit of documenting your work is essential.

For most teams, all of the software fits inside one person's head, and they do most of the work. They know what things they've changed, and how their code works. Because of the intensity of build season, they can even keep track of things without putting in any comments. I know, because I've been that person before.

If you're fortunate enough to actually have several people working on the software, keeping track of what you've done and what has changed is essential, even if all of your code is in one place. You don't ever want to be stuck in a situation where "Johnny changed the code, and I don't know what he did, but now it doesn't work...".
2337 is currently looking into using Dropbox for CAD and Programming version control. So far the hardest part has been setting two instances of Dropbox up on the local server (Ubuntu Server).
__________________




.
Closed Thread


Thread Tools
Display Modes Rate This Thread
Rate This Thread:

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump

Similar Threads
Thread Thread Starter Forum Replies Last Post
A new step in collaboration: FIRST Programmers' Guild Tom Bottiglieri Programming 48 15-02-2006 14:46
What FIRST has taught me V.RookieYear Validius General Forum 10 24-03-2005 23:37
What should we name the NEW TV SHOW! MattK Chit-Chat 15 05-10-2002 20:17


All times are GMT -5. The time now is 23:29.

The Chief Delphi Forums are sponsored by Innovation First International, Inc.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Copyright © Chief Delphi