Code templates and Student-Centered Policy discussion

  • if team is repeating poor behavior at event, then they should not be allowed to enter eliminations.
  • skill scores are removed - teams should not be rewarded for not adhering to Code of Conduct and Student-centered policies.

Why would you allow skills scores if team is not student-centered?
Why allow team to enter eliminations if all corrective actions are ignored?
If the team has exhausted all corrective actions, then when they are entering elimination rounds they are impacting three other teams that have acted properly.

I am hopeful that these policies and procedures for addressing G1/G2 will level the playing field such that teams are playing fairly.

I think we need a
“Student-Centered Policy” discuss thread, and not take away from the great efforts from the original purpose of this thread introducing a tool provided by Jackson Area Robotics… Teams that use this to learn and adapt to their game play should be applauded. Apologies if it appears differently. Teams need to understand the designs and software tools they appropriate need to align with their skill level.

My teams, over the years, have on occasion found partners who had no auton and have helped them write one on-site at the competition. Frequently, this would involve my kids at the keyboard of their future alliance partner, coming up with a basic auton (we are not talking elite-level routines, frequently just moving the robot). Have they now violated for their alliance partner:

demonstrate that they can program on a level equivalent to the code included on their machine.

Depending on how much of an explanation they provide during the encounter and how much of that explanation the benefiting team absorbs. I would, however, maintain that this conduct remains “student-centered” as it is direct student-to-student work and forms relationships between them (however small). Could a third-party (such as an opponent for that match) make a Report for a Code of Conduct violation for this? I think, from their perspective, they might have a reasonable case, and the EP/Head Ref/JA would then make a judgement call. Even so, I would still not hesitate to encourage my teams to help others in this way at a competition.

that is laudable - student-centered as long as adults are not telling teams what to do in terms of competition strategy. So not student-centered example “Hey Joe, your alliance partner has no autonomous, go make sure they have one”. Not student-centered.

I think it is important to understand boundaries between adults and students, these boundaries violations are the problem that are being scrutinized.

Third parties would be free to lodge complaints, but do understand not all reports are violations. For example, new team comes to event, over eager adult coach transgresses student-centered policy or code of conduct - first action by EP/Head Referee/Judge Advisor team is to educate the novice team, and if no harm, business as usual. This would be reflected in report to RECF even if resolved at event, just to document that team educated on norms.

You said that it isn’t in spirit of code of conduct if an adult tells you to help someone make an auton. Why? Plenty of times my coach has asked me, “team xyz showed up and they need help setting up their competition template, could you go help them?” IMO this is just an adult requesting a student to help others, not a violation of conduct.

sorry context matters - if adult feels that it gives team edge to win to specifically aid alliance partner in qualifying rounds, then not ok - vs general “hey guys, our teams are helpful to all” … the former is tactical info, vs general organizational culture.

We can go down many edge cases, but at VRC events, it is safe to say Adults back off!

Teams should be able to navigate on their own for most tournaments (VRC).

My mistake, I was breezing over this on my phone and didn’t see the part where you said “alliance partner”

No worries, this is a good discussion to have. Teams helping their alliance partner elevate themselves is not in itself an issue. The behavior being addressed is 1) when adults micromanage a team in all aspects of competition, 2) when teams are employing techniques outside their skill level, either on their own (iffy), or directed by adults (not ok).

If I understand correctly, Caution Tape uses a P loop, which is similar to the JAR template in IQ but with a small difference. Both methods serve the same purpose - they create a loop to control motors and fine-tune the code for precise gyro control. If the GDC decides to ban this, it would mean restricting a concept similar to Caution Tape’s P loop.

And guess what… we have not even touched on using generative AI to do the code.

Personally I would allow it, as long as the teams are not doing a wholesale Ctr-C and Ctr-V to get the robots to move. There must be certain amount of adaptions and the teams are able to explain why do they need to adapt and how or what did they do.

With generative AI coming in, I do think it will be a futile attempt to totally ban templates, etc.

Not what we’re getting at. The discussion is not about whether PID or any other programming algorithm is allowed/not-allowed, the discussion is about whether “templates or libraries” that provide implementations of algorithms are allowed to be used, and whether a particular level of skill a team possesses influences whether and which “templates and libraries” they may use.

Let’s separate specific from intent of rules - <G2> Student-centered (meaning adults are not doing the work of the team) and <R2> Robots must represent the Team’s skill level.

The Robot must be designed, built, and programmed by members of the Team. Adults are expected to mentor and teach design, building, and programming skills to the Students on the Team, but may not design, build, or program that Team’s Robot. See rules <G2> and <G4>.

Examples of problems for teams adopting a software package not authored by themselves are many. PID is clear - the maths needed to understand how it works is beyond most of MS teams (note, not all). Moreover, tuning the algorithm is challenging at best. Yet, we have MS teams using PID packages in their code base, unable to explain why they chose it or why it works, and at worse, an adult tunes it for them. So we have two Game Manual violations before us - R2 and G2 … How to handle it at events is now clearer. In particular with G2, which gives an inherent advantage over other teams at the event who are designing, building, and coding robots that represents their skill level.

The issue is not about packages that are available, but rather teams that adopt them without understanding the problems they resolve, or worse, being directed by adults to use them without the students appreciating their true value.

I have some experience trying to use chatGPT and bing AI to try and understand coding problems(codeforces.com for reference) but AI consistently solves these problems incorrectly. I don’t think AI can code complete vexcode projects without significant changes from the student. Of course, as AI gets more advanced, this problem will become more persistent, but I don’t think it needs focus right now.

Can’t this be applied to robots such as BLZI from last year, amogo from TiP, and MO from this year? The only argument in favor of these robots is that you cannot just copy paste, you have to build, and you can learn while building.

My two cents on the situation:

Using the template is fine as long as the students can do one or more of the following things:

  1. Show the development of their own PID system, separate from a template, then show a transition to a template, therefore showing that they could have developed their own, but the fine tuning and more difficult implementation of particular features would be better suited to a template as to not reinvent the wheel. Making one’s own PID system is near impossible entirely on one’s own, they will need the help of other students and possibly their teachers. As someone who programs outside of robotics, Google (stackoverflow) has been essential to my understanding and comprehension of topics I’ve previously thought impossible. For example, I was writing a program about heaps and had to show them visually (looks like a binary tree, but has different properties, but that’s a different discussion). I wrote a faulty code and couldn’t figure out the problem, so I turned to stackoverflow. I found a code on stackoverflow and copied it. I found a few bugs and fixed them, then a few style changes later, only about a third of a line remained unchanged from that stackoverflow code. Did anyone contest that the code was my own? No, my teacher told me that because I had changed the code so significantly, the code was my own. Would I have made the code the way it was without stackoverflow? No, but would anyone say that because of that, the code is not mine? Does copying a single line suddenly make the code no longer “original”? My point is, independent creation, which is 80% of the work, followed by assistance from a template to reach the final 20%, should be proof enough that the team has proved that they have the skill level to still earn a judged award.

  2. Being able to change a general template into a hyper specific code for a particular robot. This one is a bit more difficult, and goes along with my example in the previous point. To be slightly more particular, when using a drivetrain, most teams will use the VEXCode V5 binding to the controller instead of trying to figure out advanced device declaration. Does this mean their drive code is invalid? Not that I’ve seen, however, those who do are commended. Now, a basic drive code is different than a PID system such as the JAR Template, and the rules will be different. The main question for this point is following the same lines as my example in point 1: how much of a code must be changed to be considered changed enough to be one’s own? If, for example, I went through the entire library of functions from the JAR Template and changed them to be better suited for my coding style, changed some entirely, either by deleting them, or creating brand new ones, or even redoing some of the math (this is an example), does that prove I know the code well enough to be in competition for a judged award and not be in violation of <G4> or <R2>?

Again, these are just my two cents, so take them or leave them as you will.

No. Each season is its own context. This year expect focus on teams adhering to rules surrounding Student-centered \G2> and <R2> Robots must represent the Team’s skill level.

Keep it simple - your team’s robot you present at any event must represent your team’s skill level without adults (coach, parent,… ) telling you what to do in terms of design, strategy, build, … .


Does that mean a team operates in a vacuum ? of course not! However, that does not mean you should copy and paste some (random) idea you saw on YouTube without understanding what problem it is trying to solve (and hopefully the same problem you are) and considering multiple alternative solutions and weighing their merits… That is a design process (make sure to document it all!)


Again, I do not wish to discourage any team from sharing ideas - but there is a difference between telling how to build meta awesome bot, vs explaining how your team approached a particular problem and solved it (modeling solutions) without telling a specific implementation (copy your bot).

This specific example illustrates not representing skill level of team. The key here of the example you present “couldn’t figure out the problem”. As such, would this team be eligible for THINK award? I would think not.

However, had the example been “Challenged by team approach to coding solution, problem not solved, turned to template or other examples, realized flaw in team approach and understood example code to fix team’s code…” that would be example of team learning, vs adopting a solution and not understanding why canned solution worked and team approach did not.

For what it’s worth…

The past 3 years I have programmed for the teams I have been on, and I have not once resorted to using a pre-programmed library such as the ones being discussed here.

The reason I did this was because I knew that I would learn so much more if I went through the development process myself, rather than learning how to use someone else’s implementation.

Has this made our team any less competitive?
Well, yes. After going through the effort to write an entire Pure-Pursuit algorithm on my own, the results it showed were pretty discouraging. Eventually, by the mid-end of the season I had fixed most of the issues with it and was even able to rank 9th in global skills (for a while… “Quick take a screenshot!” :smile: )

Having the opportunity to write, even my own PID, from scratch showed me that there are a lot of subtle learning opportunities that can be taken advantage of only if I had done the work myself.

And now, on the other hand…

As much as I just want to say “You must make your own programs!!!” There is a lot that can be learned by using code written by somebody more experienced. I know of a professional programmer that had stated the value in even simply reading through professional codebases to learn techniques and / or gain experience, so people aren’t just making this up.

:man_shrugging:

I don’t agree with this take, and I think it misses the essence of what it is that engineers are paid to do, and therefore what a competitive robotics program should be preparing students for, especially as generative text models become more prevalent for software development. Engineering in general, and software engineering in particular, exists when there is a gap between the existing solution space and the problem that needs to be solved. Software engineers are not paid to be able to solve a problem completely independently, or even to understand a solution to a problem completely, they are paid to be able to evaluate the existing solution space and perform the necessary additional engineering work to create a solution to a given problem.

Before things like WordPress you would need to custom develop any website. Now you can spin up a WordPress blog and that might provide a solution, but that’s obviously not engineering. But maybe somebody has a problem that can’t be solved by WordPress, but you know that WordPress gets you 90% of the way there, and you can make a plugin that gets you 100% of the way there. You don’t need to understand how WordPress works, you just need to have the ability to identify that WordPress is a good base for the solution and have the skills to modify it for purpose. The result product represents the skill level of the engineer because it took the skill of identifying a tool to do the job and the skill of extending it.

I have written code with the aid of AI, especially for things like regex. I didn’t fully understand the code it generated, but it didn’t work exactly as I needed, so I had to dig through it to make it actually do what I needed it to do. I could probably have gone through the code to figure out how it worked until I understood how it worked entirely, or event have written the code myself, but that would have been pointless because I had a working solution and could move on to the next problem. And it seems silly to me to hold robotics students to the standard that they need to be able to understand every single line of code that they use to solve a problem when that’s not how I operate as an actual engineer doing actual work.

If I analyze the existing solution space and am able to use all the tools at my disposal to solve a problem, that’s engineering and that’s my skill level. If a team is able to analyze the solution space of stack overflow/tutorials/templates/etc and use those tools, and extend on them that’s their skill level. So the the good teams are the ones who are able to use the existing tools and add +1 or even +10, and that +1 or +10 should show up in interviews with judges and their robots performance on the competition field. Now to be clear, if a team relies on a bunch of nonpublic tools handed down within their team or relies on a coach to tell them how to write the code then that’s the case where it doesn’t represent their skill level, it represents the fact that they have access to a solution space that nobody else does. Using Google is a skill, having a parent who’s a professional software engineer handing you the answers is not a skill, and that’s the difference I see.

The existing V5 system is a series of magical black boxes that involve DMA transfers of magic packets between multiple ARM processors on the brain/motors/sensors/etc, a magic black box wireless protocol for transmitting data from the controller to the brain, and a bunch of magic black box APIs that deal with all the registers. All of us stand on the shoulders of giants, the job is not to learn how to become giants ourselves, the job is to be really good at identifying the right giant and climbing quicker/more safely than other people.

OMG, I can’t simply :heart: this reply enough!

This, 1000x

And this 1000x

Perhaps, in addition to the Engineering Notebook, teams should be required to make their code available to judges. I get there are practical considerations - do judges/inspectors have the ability to interpret code, written anywhere from Blocks to Python to C++, do judges/inspectors even have the time required to sus out “code that does not represent the skill level of the team”, etc. But perhaps the very act of requiring it would deter egregious violations and lead to a more student-centered approach.