Does anyone have any sort of curriculum for a programming class/ training that they follow?
I was thinking that I may want to hold afterschool tutoring for whoever wanted it specifically for C and FIRST related programming, but since this is my first year ever programming and I am the only programmer,I would like some advice.
I have decided to run this on my own because I can not depend on school mentor support for many reasons, but I think that this sort of tutoring would complement the computer science class, especially since it would push me learn more faster so that I could stay ahead and push those who want to excel to learn faster.Personally I love informal learning settings where discussion is the norm.
Remember that next year FIRST is going to be moving to a new robotics controller, which may or may not alter your decision on where to focus your attention on programming concepts or other factors. I would continue to use the media here on ChiefDelphi until details about the robotics controller are unveiled, and at that time the CD community can probably help you make appropriate decisions about the direction you take your team.
The above warning noted, programming concepts are pretty much universal as is the thought process of developing an algorithm. It all depends on what experience the people you are teaching have. If they have experience in other languages often they can pick up C relatively easily. I have found that most people don’t struggle as much with the syntax as they do the concept of programming in general. My suggestion to you is to develop algorithms and other things to use. Even if the control system next year changes the whole thing you gained some experience. In FRC there is no such thing as bad experience as long as you learn from it.(Yes getting hurt sucks but you LEARNED did you not?)
… people who know FORTRAN can program FORTRAN in any language.
Sorry, couldn’t help myself there. Yes, you’re right, the biggest challenge is learning how to develop algorithms with the tools you’re given - for example, an elegant solution in C definitely does NOT always transfer well to other languages like JAVA, LabVIEW, or PERL (and vice versa); however, the process of learning to create those algorithms is the heart of the issue.
With that, the best thing you can do is just practice. When I started learning algorithm development in C, I actually picked up some ACM programming challenges and tried to solve them. Once I thought I knew how to solve them, I would talk to others and they would give other solutions. The thing you want to do is expose yourself to as many problem-solving techniques as possible, and the ACM programming challenges are my favorite. Too bad I never joined ACM. :rolleyes:
As Subteam Captain, I figured that instead of calling pointless meetings during off-season, I would get my kids be able to program anything. Most of the kids that joined Programming, the team in general (the new ones atleast) had no prior knowledge of anything. Some were taking a course in Visual Basic, which does not really heavily touch on concepts of programming. Therefore, I decided what better to do than run my own C programming class. (Our team also does side apps, mainly in Java run by my colleague and he used to teach Java). I’ve been programming for 3 years now and last fall I started calling weekly meetings, where I would spend an hour teaching a new concept to kids. To be honest, I pretty much used a few books as the groundwork for a curriculum. Best part was assigning homework, which some kids actually did and some just copied and pasted (showed me who really wanted to learn).
I started off with the basics of programming languages, not real in depth of history and stuff but what programming is and everything.
Then I move onto writing a simple program on the board and dissecting it, to show them what each part meant. Told them to write a program to what I did.
I continued with teaching them what types of major variables there are and what values they hold. I gave them basic homeworks such as create two variables two be some numbers and then display those numbers.
I then went on to Control Flow (ifs, whiles, fors, all the good stuff). the Control Flow took two meetings to get into their head. I gave them hw to print out from 0 - 100 Celsius and its conversion into Farenheit.
At that time, winter break was about a couple weeks away and I decided to get them more involved in Robotics Programming and told everyone to familiarize themselves with the WPILib Documentaion(we used WPILib for the 07 bot), being the insanely good kids they were (I did not expect them to) they read the entire documentation. I gave them each a part of the code that we had written, and told them to comment the file so that if someone like our mech subteam captn was to read it, they would understand what was going on. (I thought them how to comment sparingly yet fillingly :)) At that point they had a decent knowledge of our 07 bot code and basic C programming.
Throughout build season, I gave them tasks such as researching on different sensors and utilizing them for autonomous. Unfortunately we switched out of WPILib and couldn’t use any of the code they wrote (even though it was wrong, we couldnt test it) but I hope to call a meeting soon and continue making sure they are familiar to be able to program and maybe make them program next year, so I can go volunteer on the field and chill with other teams.
Even though they are changing the control system next year, I think it is still important to learn a strong language such as C. Many of the kids I taught, find Java and C++ much easier because they know basic programming concepts.