MacTuxLin Posts: 818
Programming, in general, seems to be one of the weakest skill among undergrads across all disciplines. I'm not sure if this is also true in other countries like what I am currently experiencing. Are there any activities (e.g. on-the-job training, external training institutes etc.) implemented in other uni or organizations that help fresh grads to acquire programming skills? If so, could you share your experiences?
There really is no excuse these days outside of plan laziness to not have programming skills as an undergrad who is pursuing a degree in an area that requires programming skills.
Real programming - is a discipline that takes time and real effort to learn and do well. A lot of people express an interest and would 'like' to program but won't put in the effort to get much past:
print "Hello world!"
Another thing about programming - it doesn't tolerate sloppy work or careless errors. Sometimes those mistakes jump right out at you and sometimes they are hidden in the spaghetti. In either case it forces you to accept that you're no where near as smart as you thought you were. And just when you think you're beyond that - it bytes you again.
The Raspberry Pi has now shipped 11 million units and supports a large educational foundation focusing on programming, CS and technical skills for kids.
Way back in my undergrad physics days we had some courses in programming, BASIC, Algol and Symple (A C like language used to build The Kent Online System(KOS). We had to take those in our own time. We did have use of the ICL 2960 mainframe, mostly at night.
Today anyone who wants to learn to program, and get into some serious computer science only needs a web browser.
I guess it's a case of inspiring that "want to learn" part. Robotic toys and blinky lights to control can do it for a lot of youngsters.
man- I have tried and tried to interest young people in programming- but mostly they just don't get excited by flashing led's and bouncing balls- they can see much more exciting stuff on their 'phones. I wish I knew the magic moves required to get them to see the fun of developing something new- original. Inevitably you have to explain binary, logic, hex, even ohms law and so on and its all just too much hard work for them.
When I was in my teens I was really enthusiastic- but there was NO ONE who could explain- data sheets were expensive- books were expensive if they even existed, there were no bread boards. I struggled hoping the monthly electronics/radio magazine would have something of interest. Today there is the internet with easy access to information, tutorials, cheap gear- no excuses... Perhaps they have lost their imagination and sense of wonder with everything handed to them on a plate?
If anyone has found a method that has good results- please share with us.
1) Fresh grads (Computer Science students in particular) do have the programming skills which they learnt from school but there seems to be a gap (knowledge/skills/experiences) to what the employers are looking for. I agree 100% that self-learning is the way as that's how I learn myself. However, these young adults, with no prior work experience, will not knows what to prep themselves for the industry. As educators/instructors, how & what best bridge such gaps?
2) Fresh grads from other disciplines (Mechanical, Electronics, Mechatronics etc) generally are not interested in programming. However, convergences are happening in different industries where cross disciplines are not just an advantage but a necessary skills for them to secure a job. For these groups, what could best interest them?
I appreciates some the suggestions provided above. We've projects on Raspberry Pi, Arduino & I'm pushing the Prop. It doesn't seems to create that motivation/passion to self-learn. Could this be the influence of the smartphone/tablet that these devices can do so much that nothing else could "wow" them more while requiring less/minimal effort (apps freely/cheaply available)?
I don't mean to sound elitist but perhaps there are just too many kids in university now a days.
In my day only about 10% of people attended a university and got a degree. Which was a lot compared to times gone by. So when I got there I was over the moon to be surround by so many passionate, enthusiastic and hard working people. No matter what they were studying. Most of them smarter than me.
Universities used to be academic, they were not there to teach perceived current job skills and churn out workers. That was the job of technical schools, polytechnics, and apprenticeships.
Which sat well with my experience in school. Only a few percent were into studying anything unless they had to. Most of them seemed to be into nothing but football.
Of course that meant that when I graduated, in physics, I was totally unprepared and useless for the work place. That meant two years on the job training with a big electronics company. Perhaps I would have been better off going to one of those polytechnics!
How to motivate kids today? I have no idea, when my boy was 12/13 he was into creating games with some game creating tool. Would occupy him for hours on end. I was kind of happy about that as it was one step up the ladder to programming, creating things, not just playing games. Mind you that was 10 years ago now.
I think that robotic courses in school are great, if you opt to take the class. But in grade school, wouldn't math class been a little more interesting if the kids had had a robot or a microcontroller to test math principles on. By the time kids are in high school there main interest is socializing.
My kids were able to take a calculator to math class, that could make you lazy.
Could someone explain to me why kids need calculators in school now a days. I recall that in early school one is learning to count and do arithmetic. There a calculator is useless, you are supposed to be learning about numbers and arithmetic, right? Then comes many years progressing though algebra, calculus, set theory, linear algebra etc. No calculator ever required there either. It's all symbolic manipulation. If one got a result of 3π/2, or whatever, one stopped there. No point in turning that into a number.
Many of us had calculators. I built my own from a kit in 1972 http://www.vintagecalculators.com/html/advance_wireless_world.html Mostly got used by my father for book keeping.
When my girls were In high school, a calculator was required, at our expense. It had to be a graphing calculator, and the cheapest we could find was near a hundred bucks.
My father told me more than once, that when he was in school that everything was supplied.
My daughter told me that her children are urged to buy extra pencils, pens, paper and tissues, for someone else in case they are not able to bring their own. They had changed school districts once after two months, and had to leave the supplies behind Then turn around and repurchase supplies for the new school. Retailers treat schools open like another money making holliday.
I recall, age 12 or whatever, plotting curves of y=x², y=1/x, etc, etc. No calculator required. Doing it manually instills a gut feeling of what is going on. Which punching an abstract formula into a calculator and getting some squiggle as output can never do.
Later we were drawing the approximate, expected, shapes of polynomials by deriving their maxima, minima, points of inflection etc. No calculator required to crunch hundreds of numbers.
What are calculators in school for? Why would anyone in school need one for an exam? Our exams were about demonstrating understanding, not crunching numbers.
Speaking of which, it's not easy to find a small scientific calculator that fits well inside a shirt pocket so it doesn't just fall out the moment you bend over. The school ones are far too big.
I live with a calculator, a pencil and a torch on me at all times. When at work I add a 2.5mm flat-blade and a marker pen. The pencil has an extendable eraser - also hard to come by. The torch on my hip is not very visible but has cause more than one person to do a double take.
None of our exams since primary school were about numbers and arithmetic as such.
One could actually get an answer totally wrong and still get a 90% mark. How, because if your page of reasoning for some question is OK up till the last step or so and then you screw up, you get credit for all the good part.
As they used to say "Show us your working". Don't just write down a result. If you just wrote the result you might only get 10% of the available marks even if it was right.
Yeah, can't live without a pen/pencil and paper, knife/penknife/letterman, ruler, torch/lamp, soldering iron.
I've used one of these for years and recently bought a spare from eBay for use in the shop. I totally love this calculator. The only thing I had to do with the unit from eBay is to replace the internal battery so it would remember my settings between uses.
I'm currently using some cheap Taiwanese thing that has no battery at all. It's unnamed and doesn't even have a model number. It suits me but I doubt I'll be able to find it again when this one breaks.
Somewhere in the basement I have a Texas Instruments TI-59. LED display, card reader and all. Last time I checked it all still worked.
My first programmable, the TI-58. 100 step program memory. It helped get me interested in computers. Not that I needed any help, but that was all I could afford. My best friend at the time had the 59. I sure was envious.
EDIT: It must have been the TI-57 that I owned, by jogging my memory through eBay I realized that the calculator I had didn't have modules. And didn't have a way of saving the 100 step program that was entered.
Anyway it was my first programming experience outside of setting an alarm on a clock.
I used my computer (Atari and my trusty 8088 clone) to do most of my Math and Chemistry homework... Cheating?, no not really, you see I wrote programs to do my work for me from scratch, so I had to understand the work at hand to begin with in order to write the program. I needed to just solve the problems faster so I could play with electronics after my homework. The caveat is that I had to show my work as well, so in writing the programs, I had to write them in such a way as if it were done in long hand. Not as trivial as you might think, it's a good programming exercise to say the least. I had a few teachers that would allow me to turn in my homework typed with the work shown. <-- Yes, I was that kid in school.
Something like this Faber Castell 2/83N Slide Rule...
I still have it on my boat just in case I need to do some manual calculations in a power out situation.
Never bought a battery/electric scientific/engineering calculator though.
At least with sliderules, you still had to think when you used them. After I got my first four-function electronic calculator, the first thing that went was long division, followed soon thereafter by multiplication. It's been a slippery downward slope ever since!
This is not new. With my first degree in Electronics many moons ago in the '90s, I was writing code that was burned on an EEPROM that controlled stepper motors and other devices since that was common in the sounding Industry. Companies try to get the most bang for their buck with incoming Engineers, and to stay relevant these days is vital and the more cross decline the better. If these fresh grads are not interested in learning programming, especially with Electronics and really with Mechatronics, they have chosen the wrong major. Graduating without understanding the industry they are looking to enter I would suspect will make landing a gig much more difficult, if not impossible until they get the skills needed.
I'm a TA in middle school and we used micro:bit last year. Now, we've got an educational license and approval from parents to use the funding for BlocklyProp Solo and the upcoming projects with Zulama (using the curriculum from Carnegie Mellon).
Talking to computers also involves a lot of math, because computers are very stupid about everything except math. And the math they understand is very particular. 2's-complement binary and finite floating-point math don't act like the math you were taught in high school. They fail in very common and specific ways when you act as if they're natural or real numbers. A long time ago they taught finite math in college CS courses, but around 1990 somebody seems to have decided that wasn't necessary.
While modern computers are amazing compared to those that existed even N years ago, they are still finite and it is important to understand what you are asking them to do and whether that might be consuming all their resources. Another thing that was popular around 1990 was the idea to "never optimize" your code because it was a waste of your time to spend expensive labor shaving needs for the ever-expanding resource of memory and processor power. That was an extremely stupid trend and I still see echoes of it today. You need to understand how the machine works and what its limits are. If you don't, you will be a shitty programmer no matter how well you understand its language. It doesn't matter how perfectly I express my desire for a tractor trailer to go 300 miles per hour if that isn't within its physical capacity to perform. This is a thing all programmers who learned before 1990 or so knew by experience, but which since then many have been trained to pretend isn't ever a problem.
One thing I like about BASIC stamps is that they force you to understand the finite limits of the system. This is a thing woefully few programmers seem to understand today.
+1 ... Never optimizing code was an idea that offended my sense of what good code should be. That's probably why I preferred working with microcontrollers and assembly language.