Skip to content

Commit de4aec0

Browse files
committed
Re-work Admin
2 parents 2518298 + a73d68f commit de4aec0

File tree

3 files changed

+98
-240
lines changed

3 files changed

+98
-240
lines changed

admin/goals/index.html

Lines changed: 46 additions & 220 deletions
Original file line numberDiff line numberDiff line change
@@ -49,36 +49,36 @@
4949
</div>
5050
<div class="body">
5151
<h1>Goals</h1>
52+
<button type="button" class="collapsible">
5253
<p>The following is a list of goals the software team tries to meet each
5354
year. They inform decisions regarding our curriculum design and operating
54-
procedures.</p>
55+
procedures.</p>
56+
</button>
57+
<div class="content">
5558
<ul>
5659
<li>Produce an effective product</li>
5760
<li>Employ industry best practices</li>
5861
<li>Expand our knowledge and capabilities</li>
5962
<li>Involve less experienced team members</li>
60-
<li style="list-style: none; display: inline">
61-
<ul>
62-
<li>Find tasks requiring less experience</li>
63-
</ul>
64-
</li>
6563
<li>Create an autonomous software team / encourage learning</li>
66-
<li style="list-style: none; display: inline">
67-
<ul>
68-
<li>Provide access to resources for motivated students</li>
69-
</ul>
70-
</li>
71-
</ul>
72-
<h2 id="Curriculum_design_guidelines">Curriculum design guidelines</h2>
64+
</ul>
65+
</div>
66+
<div class="Info">
67+
<h2 id="Curriculum_design_guidelines">Curriculum design guidelines</h2>
7368
<ol>
74-
<li>
75-
<b>Teach incoming members enough C++ to be useful</b>
76-
<p>Integrate modern C++ development paradigms, tools, and practices.
77-
The C++ language has improved a lot since 2003; we don't need to
78-
program in the dark ages anymore.</p>
79-
</li>
80-
<li>
81-
<b>Teach a set of skills motivated by industry best practices</b>
69+
<l>
70+
<button type="button" class="collapsible">
71+
<b>Teach incoming members enough C++ to be useful</b>
72+
</button>
73+
<div class="content">
74+
<p>Integrate modern C++ development paradigms, tools, and practices.
75+
The C++ language has improved a lot since 2003; we don't need to
76+
program in the dark ages anymore.</p>
77+
</div>
78+
<button type="button" class="collapsible">
79+
<b>Teach a set of skills motivated by industry best practices</b>
80+
</button>
81+
<div class="content">
8282
<p>By industry best practices, we don't mean extremely conservative,
8383
waterfall model practices. We're more focused on breaking down and
8484
solving problems using industry standard tools. We emphasize
@@ -87,20 +87,25 @@ <h2 id="Curriculum_design_guidelines">Curriculum design guidelines</h2>
8787
<p>Software shall meet embedded and <a href=
8888
"https://en.wikipedia.org/wiki/Real-time_computing">real-time</a>
8989
requirements.</p>
90-
</li>
91-
<li>
92-
<b>Prepare students for Computer Science at university</b>
93-
<p>The focus should be on "Design before build". That is, developing a
94-
specification for behavior before implementing it. Teach common
95-
development practices like Git and code review.</p>
96-
</li>
97-
<li>
98-
<b>Teach an introduction to control theory for those interested</b>
99-
<p>This is also needed for a reliable / maximally efficient robot and
100-
includes state machines, motion profiles, filters, and
101-
feedback/feedforward controllers.</p>
102-
</li>
103-
</ol>
90+
</div>
91+
<button type="button" class="collapsible">
92+
<b>Prepare students for Computer Science at university</b>
93+
</button>
94+
<div class="content">
95+
<p>The focus should be on "Design before build". That is, developing a
96+
specification for behavior before implementing it. Teach common
97+
development practices like Git and code review.</p>
98+
</div>
99+
<button type="button" class="collapsible">
100+
<b>Teach an introduction to control theory for those interested</b>
101+
</button>
102+
<div class="content">
103+
<p>This is also needed for a reliable / maximally efficient robot and
104+
includes state machines, motion profiles, filters, and
105+
feedback/feedforward controllers.</p>
106+
</div>
107+
</ol>
108+
</div>
104109
<h2 id="Lab_design_guidelines">Lab design guidelines</h2>
105110
<ol>
106111
<li>
@@ -138,17 +143,6 @@ <h2 id="Lab_design_guidelines">Lab design guidelines</h2>
138143
<p>Basically, a picture or movie is worth a thousand words. The
139144
following are good examples of visualization tools.</p>
140145
<ul>
141-
<li>
142-
<a href="https://github.com/frc3512/LiveGrapher">LiveGrapher</a>
143-
allows visualizing physical phenomena in real time.
144-
</li>
145-
<li><i>rltool</i> from MATLAB aids in students' intuitive
146-
understanding of how root locus plots represent a system's response
147-
and how the pole and zero locations affect the plot.</li>
148-
<li>GRIP facilitates experimentation with complex image processing
149-
operations via an easy-to-use package.</li>
150-
</ul><br>
151-
</li>
152146
<li>
153147
<b>Common wisdom imparted through lectures should be motivated in labs
154148
with data</b>
@@ -170,180 +164,8 @@ <h2 id="Lab_design_guidelines">Lab design guidelines</h2>
170164
to verify correctness of the data structures' synchronization.</p>
171165
</li>
172166
</ol>
173-
<h2 id="Learning_outcomes">Learning outcomes</h2>
174-
<p>This is a list of topics we hope to teach software team members
175-
throughout their membership. These may not all be accomplished in one
176-
season. They are mainly structured in a way for which we can test
177-
competence.</p>
178-
<p>They include programming-specific topics such as C++, program planning
179-
and implementation, testing and debugging, version control, and
180-
robot-specific topics including control theory. Inter-team communication is
181-
important for most of these.</p>
182-
<h3 id="C.2B.2B_programming_language">C++ programming language</h3>
183-
<p>The list of topics below is largely based on part 1 of <i>Programming:
184-
Principles and Practice Using C++ (2<sup>nd</sup> edition)</i>.</p>
185-
<ol class="sub">
186-
<li>Can build and run programs
187-
<ol class="sub">
188-
<li>"Hello World!"</li>
189-
<li>Understands the building/linking process</li>
190-
</ol>
191-
</li>
192-
<li>Can declare, initialize, and assign variables</li>
193-
<li>Can perform input/output operations (std::cin, std::cout)</li>
194-
<li>Understands the various commonly used types
195-
<ol class="sub">
196-
<li>Signed and unsigned integer</li>
197-
<li>float and double</li>
198-
<li>std::string</li>
199-
</ol>
200-
</li>
201-
<li>Understands expressions and statements
202-
<ol class="sub">
203-
<li>Are "i++", "3 + 2", and "int i = 0;" each an expression or
204-
statement?</li>
205-
</ol>
206-
</li>
207-
<li>Understands implicit/explicit (casting) conventions</li>
208-
<li>Understands loops/iteration (counters, range-based, iterators)</li>
209-
<li>Can prototype, define, and call a function
210-
<ol class="sub">
211-
<li>With a return type of void</li>
212-
<li>With a return type of int</li>
213-
<li>Can return a value which is used by the caller</li>
214-
</ol>
215-
</li>
216-
<li>Can instantiate a std::vector
217-
<ol class="sub">
218-
<li>Add elements</li>
219-
<li>Index into vector</li>
220-
</ol>
221-
</li>
222-
<li>Understand different kinds of errors and how to deal with them
223-
<ol class="sub">
224-
<li>Compile time errors</li>
225-
<li>Run time errors (extremely important to handle properly)</li>
226-
<li>Exceptions thrown by standard containers, etc.</li>
227-
</ol>
228-
</li>
229-
<li>Knows when to utilize functions to deduplicate behavior and manage
230-
complexity</li>
231-
<li>Can define a class
232-
<ol class="sub">
233-
<li>Contains member variables and functions</li>
234-
<li>Contains a constructor and destructor</li>
235-
<li>Uses the default constructor or "= default" for empty
236-
implementations</li>
237-
<li>Includes static member functions
238-
<ol class="sub">
239-
<li>Understands the significance of static member functions</li>
240-
</ol>
241-
</li>
242-
<li>Creates appropriate files (ClassName.hpp, ClassName.cpp)</li>
243-
<li>Defines class in header with include guards</li>
244-
<li>Includes header in source file</li>
245-
<li>Writes implementation in source file</li>
246-
</ol>
247-
</li>
248-
<li>Understands the uses of public, protected, and private class
249-
membership</li>
250-
</ol>
251-
<h3 id="Constructing_a_Program">Constructing a Program</h3>
252-
<ol class="sub">
253-
<li>Makes effective use of language features</li>
254-
<li>Follows commonly accepted best practices</li>
255-
<li>Uses proper format/style</li>
256-
<li>Follows an appropriate problem solving process
257-
<ol class="sub">
258-
<li>Understand the problem</li>
259-
<li>Formulate a design</li>
260-
<li>Implement the design</li>
261-
<li>Test the design</li>
262-
</ol>
263-
</li>
264-
</ol>
265-
<h3 id="Testing_and_Debugging">Testing and Debugging</h3>
266-
<ol class="sub">
267-
<li>Can effectively debug a program through analysis of its behavior via
268-
a debugger or print statements</li>
269-
<li>Knows how to thoroughly test one's code to ensure a quality
270-
product</li>
271-
<li>Consistently delivers well-tested software</li>
272-
<li>Can use Google as an aid in solving one's problem</li>
273-
</ol>
274-
<h3 id="Git">Git</h3>
275-
<ol class="sub">
276-
<li>Can create a new Git repository</li>
277-
<li>Can make commits in separate branches</li>
278-
<li>Gerrit
279-
<ol class="sub">
280-
<li>Can push branches to Gerrit for review and provide feedback to
281-
others
282-
<ol class="sub">
283-
<li>Knows how to rebase patches to push them for review</li>
284-
</ol>
285-
</li>
286-
<li>Can fetch changes from Gerrit</li>
287-
<li>Can resolve conflicts when merging or rebasing</li>
288-
<li>Understands the value of code review in quality assurance</li>
289-
</ol>
290-
</li>
291-
</ol>
292-
<h3 id="Robot">Robot</h3>
293-
<ol class="sub">
294-
<li>WPILib
295-
<ol class="sub">
296-
<li>Can write code to control a simple two-wheeled robot
297-
<ol class="sub">
298-
<li>Two joysticks: one for forward speed; one for turning</li>
299-
<li>DifferentialDrive</li>
300-
</ol>
301-
</li>
302-
<li>Can interface with various sensors (encoders, limit switches,
303-
gyroscopes) and perform actions based on their outputs</li>
304-
</ol>
305-
</li>
306-
<li>Embedded systems
307-
<ol class="sub">
308-
<li>Understands the tenets of event-driven design
309-
<ol class="sub">
310-
<li>What is an event?</li>
311-
<li>How are they used in state machines?</li>
312-
</ol>
313-
</li>
314-
<li>Can design a state machine to model the desired actions of a
315-
robot when completing a task</li>
316-
</ol>
317-
</li>
318-
<li>Control Theory
319-
<ol class="sub">
320-
<li>Knows the dynamics of a PID controller, its limitations, and how
321-
to tune one</li>
322-
<li>Knows how to use motion profiles with feedback controllers and
323-
the importance of feedforwards</li>
324-
<li>Can apply filters when necessary to obtain better estimates of
325-
system outputs</li>
326-
<li>If students have time, they can learn feedback controller design
327-
(more feedback controllers exist besides PID)</li>
328-
</ol>
329-
</li>
330-
</ol>
331-
<h3 id="Slack">Slack</h3>
332-
<ol class="sub">
333-
<li>Is a member of frc3512.slack.com</li>
334-
<li>Can effectively explain one's problem when asking for help
335-
<ol class="sub">
336-
<li>Can use <a href="https://www.google.com/">Google</a> first
337-
</li>
338-
<li>
339-
<a href=
340-
"https://web.archive.org/web/20201203051626/http://www.catb.org/esr/faqs/smart-questions.html#before">
341-
How to Ask Questions the Smart Way</a>
342-
</li>
343-
</ol>
344-
</li>
345-
</ol>
346-
<h3 id="Veterans">Veterans</h3>
167+
<div class="Info">
168+
<h3 id="Veterans">Veterans</h3>
347169
<p>Us mentors assume you already know how to write software. Software
348170
engineering is what we really want to teach you. If you can explain this
349171
year's robot code and why you designed it <i>that</i> way versus the other
@@ -353,6 +175,10 @@ <h3 id="Veterans">Veterans</h3>
353175
choosing the least bad design based on some criteria and justifying that
354176
choice). Our role as mentors is to show you what tools are available in the
355177
C++ language so you can make an informed design decision.</p>
178+
</div>
179+
180+
356181
</div>
182+
<script src="../../Collapse.js"></script>
357183
</body>
358184
</html>

admin/index.html

Lines changed: 31 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -49,17 +49,7 @@
4949
</div>
5050
<div class="body">
5151
<h1 id="Administration">Administration</h1>
52-
<h2 id="Goals"><a href="goals/">Goals</a></h2>
53-
<p>Contains our goals, curriculum design guidelines, and learning
54-
outcomes.</p>
55-
<h2 id="Varsity"><a href="varsity/">Varsity</a></h2>
56-
<p>Contains our varsity letter requirements.</p>
57-
<h2 id="Software_for_non-software_team_members"><a href=
58-
"software-for-non-software-team-members/">Software for non-software team
59-
members</a></h2>
60-
<p>What non-software team members should know about the software team.</p>
61-
<h2 id="Style_guide"><a href="styleguide/">Style guide</a></h2>
62-
<p>Contains the software team style guide.</p>
52+
<div class="Info">
6353
<h2 id="Student_organizational_structure">Student organizational
6454
structure</h2>
6555
<p>Since 3512 was founded, the software team has enjoyed a certain level of
@@ -74,6 +64,8 @@ <h2 id="Student_organizational_structure">Student organizational
7464
work hard to promote learning among rookies to raise their level of
7565
competency to that of their peers. We encourage collaboration with the
7666
other students to aid in this process.</p>
67+
</div>
68+
<div class="Info">
7769
<h2 id="Role_of_the_mentor">Role of the mentor</h2>
7870
<p>Pursuant to the goals listed <a href="goals/">here</a>, the mentors
7971
teach rookies the basics of writing software and enough of the tools to
@@ -98,15 +90,19 @@ <h2 id="Role_of_the_mentor">Role of the mentor</h2>
9890
should be walked through it step-by-step if necessary. Remember that FIRST
9991
is a mentor-based program, but it is for the <i>students</i>; giving them a
10092
sense of accomplishment and ownership keeps them engaged and returning each
101-
year.</p>
93+
year.</p>
94+
</div>
95+
<div class="Info">
10296
<h2 id="Learning_versus_reuse">Learning versus reuse</h2>
10397
<p>I like to take the "add tools to the toolbox" approach with my software
10498
team. We try some random alternative to improve on previous architecture,
10599
and a student or two takes that on as an R&amp;D project. They usually
106100
stabilize and end up on the robot by the time competition occurs. We've
107101
done probably four different approaches to state machines at this point,
108102
and our controls solutions have evolved a lot. Prefer evolution over
109-
revolution.</p>
103+
revolution.</p>
104+
</div>
105+
<div class="Info">
110106
<h2 id="Why_I_mentor">Why I mentor</h2>
111107
<h3 id="Tyler_Veness">Tyler Veness</h3>
112108
<p>My time as a student in FRC was basically one giant R&amp;D experience
@@ -121,7 +117,28 @@ <h3 id="Tyler_Veness">Tyler Veness</h3>
121117
can.</p>
122118
<p>I tell college students this often: "Don't let schooling interfere with
123119
your education.". Seek out projects that you're interested in and learn
124-
everything you can. It opens a lot of avenues for you later.</p>
120+
everything you can. It opens a lot of avenues for you later.</p>
121+
</div>
122+
<div class="Contain_links">
123+
<div class="Direct_links_1">
124+
<h2 id="Goals"><a href="goals/">Goals</a></h2>
125+
<p>Contains our goals, curriculum design guidelines, and learning
126+
outcomes.</p>
127+
</div>
128+
<div class="Direct_links_1">
129+
<h2 id="Varsity"><a href="varsity/">Varsity</a></h2>
130+
<p>Contains our varsity letter requirements.</p>
131+
</div>
132+
<div class="Direct_links_1">
133+
<h2 id="Software_for_non-software_members"><a href=
134+
"software-for-non-software-team-members/">Software for non-software members</a></h2>
135+
<p>What non-software team members should know about the software team.</p>
136+
</div>
137+
<div class="Direct_links_2">
138+
<h2 id="Style_guide"><a href="styleguide/">Style guide</a></h2>
139+
<p>Contains the software team style guide.</p>
140+
</div>
141+
</div>
125142
</div>
126143
</body>
127144
</html>

0 commit comments

Comments
 (0)