Go to Post What happens when everything becomes fully swagged out? Also, does my robot need to have collar-popping functionality to use every feature? - AlecMataloni [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, 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?
  #2   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
  #3   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,935
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
  #4   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
  #5   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,522
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.
  #6   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!
  #7   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: 412
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...
  #8   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,789
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

  #9   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"
  #10   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
  #11   Spotlight this post!  
Unread 28-06-2010, 08:15
byteit101's Avatar
byteit101 byteit101 is offline
WPILib maintainer (WPI)
AKA: Patrick Plenefisch
no team (The Cat Attack (Formerly))
Team Role: Programmer
 
Join Date: Jan 2009
Rookie Year: 2009
Location: Worcester
Posts: 699
byteit101 is a glorious beacon of lightbyteit101 is a glorious beacon of lightbyteit101 is a glorious beacon of lightbyteit101 is a glorious beacon of lightbyteit101 is a glorious beacon of lightbyteit101 is a glorious beacon of light
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...
We were lucky we did VC this year, at Pittsburgh, in the practice matches we were going to enable our ball recognition, but wanted to test it, so we sent it to our dashboard. But it had major bugs, and caused the robot to at some point stop recieving commands, and drive forward full speed (and its a fast one!) for a second or two, then start twitching. Back at the pit, I quickly diffed the previous version to the new version, there were two differences, vision code to zomb (dashboard), and a number tweak so our robot would be bit more managable. since another match was about to start (3 or 4 matches apart), I restored the previous version, downloaded it, and no problems! (later I figured out it was the vision code, somehow it was effecting the motors)
Quote:
Originally Posted by Tanner View Post
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
Subversion doesn't need a dedicated hardware server, just a computer that can have apache or svnserve installed on it. We have a "Code Master" computer that has apache and svn installed, and is the main dev computer, and the others just hook up to it if necessary (switches are nice at competitions, no wireless to worry about).
__________________
Bubble Wrap: programmers rewards
Watchdog.Kill();
printf("Watchdog is Dead, Celebrate!");
How to make a self aware robot: while (∞) cout<<(sqrt(-∞)/-0);
Previously FRC 451 (The Cat Attack)
Now part of the class of 2016 at WPI & helping on WPILib
  #12   Spotlight this post!  
Unread 28-06-2010, 19:58
demosthenes2k8's Avatar
demosthenes2k8 demosthenes2k8 is offline
Graduated but not gone
AKA: Matt Soucy
FRC #0166 (Chop Shop 166)
Team Role: Mentor
 
Join Date: Jan 2009
Rookie Year: 2007
Location: Merrimack, NH
Posts: 589
demosthenes2k8 is a splendid one to beholddemosthenes2k8 is a splendid one to beholddemosthenes2k8 is a splendid one to beholddemosthenes2k8 is a splendid one to beholddemosthenes2k8 is a splendid one to beholddemosthenes2k8 is a splendid one to beholddemosthenes2k8 is a splendid one to beholddemosthenes2k8 is a splendid one to behold
Send a message via AIM to demosthenes2k8 Send a message via Yahoo to demosthenes2k8
Re: What New FIRST Programmers should be taught

I agree with Andrew Schreiber. A problem that I had this year with training was that I focused too much on the language and not enough on reasoning and problem solving. I would suggest learning about the people you're training, and see how they learn best.

I agree, source control is immensely important. When I joined the team three years ago, "version control" meant "datestamped folders". Last year I was in charge of setting up SVN on googlecode, which wasn't used as much as it should have been. This year, we used it a lot more. (There are quite a few people on software in 166) Unfortunately, we had some issues with the internet, and so over the summer we're converting to Mercurial, which is also better because it supports branching, and unlike Git, is built for Windows by the HG team. It saved us big time at Battlecry, when our robot stopped working right before a match and we had to go back through the revisions to find a stable one. With SVN, it would have been harder because it's not distributed.
__________________


GSR Dean's List Finalist 2011
  #13   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,062
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).
__________________




.
  #14   Spotlight this post!  
Unread 27-06-2010, 15:54
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: 412
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

Quote:
Originally Posted by Andrew Schreiber View Post
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).
Maybe I should retract or qualify my statement that "it doesn't matter what tool you use." Dropbox is probably a decent solution for CAD, but in my opinion, it's a poor choice for code. Unless you're using Pack-Rat, it doesn't indefinitely keep track of old versions or allow you to compare them. At best, you'll still end doing things like zipping up a copy of the code each day and giving it a datestamp. Having a solid understanding of the diff and merge tools associated with VCS software has helped me a lot both at school and at work.
A real version control system is somewhat harder to set up and requires more conscious effort to use, but it's a move you won't regret.

Sorry for hijacking the thread...
__________________
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...
  #15   Spotlight this post!  
Unread 27-06-2010, 16:31
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,062
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
Maybe I should retract or qualify my statement that "it doesn't matter what tool you use." Dropbox is probably a decent solution for CAD, but in my opinion, it's a poor choice for code. Unless you're using Pack-Rat, it doesn't indefinitely keep track of old versions or allow you to compare them. At best, you'll still end doing things like zipping up a copy of the code each day and giving it a datestamp. Having a solid understanding of the diff and merge tools associated with VCS software has helped me a lot both at school and at work.
A real version control system is somewhat harder to set up and requires more conscious effort to use, but it's a move you won't regret.

Sorry for hijacking the thread...
Thank you for the information. We are currently evaluating it and haven't decided on it yet. I'll probably suggest we go with a Google Code type repo for our code. I used it for FRCFeed and liked it.
__________________




.
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 03:40.

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