=== Control Systems/ Software Training Curriculum ==== Guiding Principles * Students hate lecture style teaching. Better to be hands on. * Wide variety of skill levels. Take care not to cater to any one particular level. * Not all students go to all sessions (due to family conflicts, etc). * Make sure to coordinate with Software Leads. === General Student Skill Set * Robocode * Software fundamentals. * Java Programming Basics * Computer focused. * Individual Challenges/ Competition * Minibots * Basic bot usage and control with java. * Sensor, Drive manipulation with java. * Small Team challenges * Midbots (Peanut, etc) * Roborio * Safety * Software Development Practices (CM, Design ,etc) * Git * Testing * Basic Design * Problem Solving/ Debugging * Teambuilding There are three technical skill levels that build on their predecessors. Not all students start at level one. === Skill Level 1: Students new or beginners at Java programming ([http://robocode.sourceforge.net/ Robocode]) * Compile in Java * Eclipse * For while loops,if statements, functions. * Supplement with online training resources (on student's own time) * '''Zhaozhou running point on this task.''' * Action: Talk to dev lead, identify key constructs, create a few exercises on Robocode. See something working, change it, create something new. * Set up robocode environment. * Show idea/walk them through it. * Have them make changes. * Custom activity/challenge. === Skill Level 2: Familiar with simple programming, no embedded/io/robot experience ([wiki:PiBotHardware Minibots]) * Bots are fully built up front with OS installed. A bit of risk given timeline. * Equipment Familiarization * Basic IO manipulation with Java * Drive manipulation/autonomous without sensors * Sensor manipulation * Integration Challenges * '''Chris D running point (Alan helping).''' * Action: Build minibot. Come up with exercises like above. === Skill Level 3: Familiar with embedded java/simple robots (Midbots/RoboRIO/WPILib) * RoboRIO * FRCSim * WPILib * '''Alan running point''' * Action: Get simulator running, figure out what there is to learn. === Safety * All students take safety class. === Software Development * All students take software dev class * Student to teach git * Block diagrams flow charting * OOA&D * Teambuilding * Problem Solving/ Broken Code (Fix some code?) === Sensor Deep-Dive * Ardinuo stuff?