|
Re: Teaching C++
From year to year, our team always have this problem. If we are lucky, we will have one or two students who already have some backgrounds on programming. Depending on when they join the team, we are luck if we have 2 to 3 years of their service. Then they graduate. Ideally, while they are in service, we would train less experience programming students to take over after they graduate. In reality, this doesn't always work out. Our school is a very small school with only a few hundred students. We are lucky if the FRC team has over 20 members. This year we have 18 and only a handful are interested in programming. A lot of them have very little or no background on programming. Even if we train some of them, some students may decide to quit robotics after a year or so. In order to make this work, we need a way to rapidly train students. A few years ago, their robot code was monolithic. Everything was written from scratch year after year. The code was hard to understand so it is hard to learn from reading it. One of the ways we use in recent years is to preserve knowledge continuity by developing a robotics library. This library is written as generic as possible so that it can re-used year after year. For less experience programmers, they would learn how to use this library. Reading past code that used this library is a simple way to start. It is a lot faster on-boarding than teaching them how to write the entire code from scratch. For more advanced programmers, they will learn the internals of the library and may even contribute to debugging, maintaining and extending the library year after year. This past summer, we even built a smaller form factor practice bot. It is basically a 24" x 24" running base. Small enough for students to take it home if they need to gain some experience in coding and debugging for it. All of these are more focused on teaching robotics programming, not necessarily just teaching C++. For teaching C++, we supplement it by recommending students to learn the basic language from some internet sites. It is generally difficult to teach a bunch of students who have different levels of programming skill. When you teach something too basic, intermediate or advanced programmers will lose focus. When you teach something more advanced, you will lose the beginners. So each individual student must bring themselves to a more uniform level. We usually start with doing an introduction to the C/C++ language session for really beginners. Then point them to some internet sites for more detail information. Then we start to teach how to program the robot using the library, showing code from past years and explaining the design and structure of the code. Then for whoever are interested and can handle it, we will talk about more advanced topics and how each library module works. In between all these, the small form factor robot is available for demoing concepts and hands-on experiments.
__________________
Last edited by mikets : 29-05-2012 at 18:08.
|