diff --git a/ci/robot-software/generic/.clang-format b/.clang-format similarity index 100% rename from ci/robot-software/generic/.clang-format rename to .clang-format diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 0000000..222861c --- /dev/null +++ b/.prettierrc @@ -0,0 +1,4 @@ +{ + "tabWidth": 2, + "useTabs": false +} diff --git a/ci/robot-software/generic/.styleguide b/.styleguide similarity index 100% rename from ci/robot-software/generic/.styleguide rename to .styleguide diff --git a/.styleguide-license b/.styleguide-license new file mode 100644 index 0000000..636a722 --- /dev/null +++ b/.styleguide-license @@ -0,0 +1 @@ +// Copyright (c) FRC Team 3512, Spartatroniks {year}. All Rights Reserved. diff --git a/Assets/arch.png b/Assets/arch.png new file mode 100644 index 0000000..10df8fa Binary files /dev/null and b/Assets/arch.png differ diff --git a/Assets/github.png b/Assets/github.png new file mode 100644 index 0000000..9490ffc Binary files /dev/null and b/Assets/github.png differ diff --git a/Assets/image.png b/Assets/image.png new file mode 100644 index 0000000..bdbf8d7 Binary files /dev/null and b/Assets/image.png differ diff --git a/Assets/mac.png b/Assets/mac.png new file mode 100644 index 0000000..def0977 Binary files /dev/null and b/Assets/mac.png differ diff --git a/Assets/revit.jpeg b/Assets/revit.jpeg new file mode 100644 index 0000000..6181a53 Binary files /dev/null and b/Assets/revit.jpeg differ diff --git a/Assets/ubuntu.png b/Assets/ubuntu.png new file mode 100644 index 0000000..92a2fa9 Binary files /dev/null and b/Assets/ubuntu.png differ diff --git a/Assets/windows.png b/Assets/windows.png new file mode 100644 index 0000000..d956820 Binary files /dev/null and b/Assets/windows.png differ diff --git a/Assets/youtube.png b/Assets/youtube.png new file mode 100644 index 0000000..88c0fe1 Binary files /dev/null and b/Assets/youtube.png differ diff --git a/admin/goals.html b/admin/goals.html new file mode 100644 index 0000000..04474ad --- /dev/null +++ b/admin/goals.html @@ -0,0 +1,117 @@ + + +
+ + + ++ The following is a list of goals the software team tries to meet each year. + They inform decisions regarding our curriculum design and operating procedures. +
+Teach incoming members enough C++ to be useful
+Integrate modern C++ development paradigms, tools, and practices
+Teach a set of skills motivated by industry best practices
+By industry best practices, we don't mean extremely conservative, waterfall model practices. + We're more focused on breaking down and solving problems using industry standard tools. + We emphasize reliability, but reliability and innovation aren't mutually exclusive.
+Software shall meet embedded and real-time requirements
+Prepare students for Computer Science at university
+The focus should be on "Design before build". That is, developing a specification for behavior + before implementing it.
+Teach common development practices like Git and code review.
+Teach an introduction to control theory for those interested
+This is also needed for a reliable / maximally efficient robot and includes state machines, + motion profiles, filters, and feedback/feedforward controllers.
+Provide implementations for things unrelated to the lab's learning outcomes
+The student shouldn't get bogged down in setting up infrastructure for their solution if the lab + is intended to teach something specific. For example, the state machine lab here provides a template + with all the subsystems necessary to implement a robot's state machine. The comments tell the student + where to insert their state machine logic, as practicing writing state + machine logic is the purpose of the lab.
+Assuming a few prerequisites is acceptable to enable showcasing a topic's utility
+By showcasing advanced topics in an approachable, introductory way, students can appreciate the breadth + of knowledge they can and will learn. If prerequisites are skipped, the lab should provide requisite + knowledge as it is needed to understand or implement dependent concepts.
+Labs should encourage students to develop practical methods for solving problems
+Labs exist to provide hands-on experience with a topic. They should supplement the theoretical + material covered in lecture to foster practical or intuitive understanding. After finishing a + module and its labs, students should be capable of applying topics initially introduced in + lecture.
+Use graphical tools to gain insight
+Basically, a picture or movie is worth a thousand words. The following are good examples of + visualization tools.
+rltool from MATLAB aids in students' intuitive understanding of how root locus plots + represent a system's response and how the pole and zero locations affect the plot.
+GRIP facilitates experimentation with complex image processing operations via an + easy-to-use package.
+Common wisdom imparted through lectures should be motivated in labs with data
+For example, it is understood that mutexes are preferred over lock-free data structures unless + there are scalability requirements for distributed, concurrent accesses. A lab requiring the + implementation of an atomic data structure may motivate the exercise by making a mutex + implementation first, then benchmarking both. (This would be a good opportunity to show the + utility of and best practices for benchmarking software, by the way.)
+Use industry standard tools to handle auxiliary tasks
+Students should be able to leverage existing tools to make their jobs as + software developers easier. Labs are encouraged to use tooling if it doesn't automate + what the student is intended to learn through practice.
+