No one teaches PROGRAMMING any more
-
I blame all those RAD tools like VB and (to some degree) C#. Pity, isn't it. But then again, RAD tools survive because of the market.
Stupidity is an International Association - Enrique Jardiel Poncela Die deutsche Sprache sollte sanft und ehrfurchtsvoll zu den toten Sprachen abgelegt werden, denn nur die Toten haben die Zeit, diese Sprache zu lernen. - Mark Twain
-
Hello folks, I'm de-lurking here to get some advice: I do have a formal CS background having taken a number of classes in CS while getting my BS and MS in EE and continued writing software for machine control for 15-20 years now. I will be teaching a class for our two home-schooled daughters and a handful of their classmates this fall using a text called "An introduction to Programming using MS VB 2005". The text book and accompanying teacher's handouts, class notes, work sheets etc are geared towards becoming proficient (at high-school level) in VB2005. My question to y'all is what would you do/teach/focus on to ensure that a proper foundation is laid for the kids to want to choose programming as a vocation later in life? Some thoughts I have would be to require to see pseudo code for each programming assignment prior to coding as a means to help them learn the abstract thinking required to become a programmer? Any thoughts? Thanks! Atle
modified on Tuesday, May 13, 2008 8:46 AM
Our two daughters are homeschooled also. Nice going! My daughters aren't interested in programming but I do have a thought: VB2005 would definitely be a good platform to teach with. What I would suggest, though, as you do it that you teach them some of the low-level basics of logic and program flow. You might want to spend a little time covering some older material like computer history - after all these machines for all their sophistication are really still Von-Neuman (stored-program) machines. If they can understand the concepts of variables, memory and conservative use of them then they will be more powerful than their counterparts who know nothing but "click-and-drag". Spend a lot of time on fundamentals, loops, program-flow - GENERAL stuff. All the sophisticated object-oriented stuff is fine, but if they don't have the basics down then they're going to write bloated junk. I've been at this for over 30 years now myself and am constantly amazed at how these younger kids glaze over when trying to understand the basics of writing good and reliable code. They just seem to want to throw the kitchen sink at everything and hope something comes out that might work. My 2-cents. -CB ;)
-
Bottom line, those of us who know not only how to code, but to write elegant code will always be in high demand. There are plenty of jobs in companies that use proper interviewing and weeding to find the diamonds in that mountain of sand that apply. I've never had a problem when I wanted to make a move.
-
25 years of development and, not only head-down/hands-on development, but business experience (across hospitality, accounting, financial, utilities, medical and machinery to name a few). I can read and understand a balance sheet and speak business as well as developer talk in one breath. I would consider myself a true hybrid. Yet, most dont care and the ones that do are waning quickly. But if you say that there are a large number of organizations beginning to reject outsourcing then who am I to deny it? I am hoping to come into contact with some of these companies soon. I hope the turn-around happens before I decide to go back to a trade school and learn how to wire electric into homes or build houses so that when the next housing boom happens, I am ready! Right now they're asking me to slash my rates or else they go to India, China, Vietnam even Lithuania!! And by slash rates I mean from $100/hr to less than $30, some even less than $20. After I take out healthcare, mortgage, car(gas), food and simple business expenses (software, internet, etc), there is nothing left from $25/hr. Nothing. Its crazy. Its backwards AND upside-down all at once.
UD wrote:
25 years of development and, not only head-down/hands-on development, but business experience (across hospitality, accounting, financial, utilities, medical and machinery to name a few). I can read and understand a balance sheet and speak business as well as developer talk in one breath. I would consider myself a true hybrid. Yet, most dont care and the ones that do are waning quickly.
If you're located in the Midatlantic States of the US, you need a few good recruiters to help (check out Indeed.com as well, it will explain itself nicely). Right now they're asking me to slash my rates or else they go to India, China, Vietnam even Lithuania!! And by slash rates I mean from $100/hr to less than $30, some even less than $20. After I take out healthcare, mortgage, car(gas), food and simple business expenses (software, internet, etc), there is nothing left from $25/hr. Nothing. Its crazy. Um, this was a subtle but important point of what I said: they want you IN HOUSE. $100/hour consulting work is dying rapidly as a result (one of the jobs I recently interviewed for was to sepcifically avoid retaining a consultant any longer than I needed to jumpstart my own project). They'll pay part or all of your benefits, but they want you as theirs, not shared, and right now salaries in this area are running $60-85k with benefits. This won't support your current lifestyle, I'm guessing, but it beats the heck out of $12000/year or "may I take your order, please?". However, you're not going to get rich doing it.
-
Patrick S wrote:
Little or no emphasis on languages; little or no emphasis on application development for its own sake. Lots of emphasis on algorithms and data structures; lots of emphasis on math.
With the exception of the math, that's the way I gather most CS faculties were oriented through at least the 80's & early 90's (if not the whole 90's). Lots of stuff (who remembers the name of that notation/language used for proving the logic of an algorithm?) that most graduates will never even think of again unless they land in some highly specialised area like NASA, DOD or purely academic CS. Most CS graduates were useless for the first couple of years while they learned how to actually apply the useful stuff they were taught & forget the arcane. I do wonder if it's gone too far the other way now though, too much reliance on pre-existing frameworks is bound to stifle innovation in some areas but with the ever increasing complexity of computing environments it is a practical option. Personally I'd like to see more emphasis on problem-solving & design, which has historically been (in my experience, first as a student, later as an employer) a bit light-on in CS faculties. As an employer, I'd rather hire someone who can conceptualise a solution, then find the best tool(s) for the job as opposed to someone who can make a specific RAD environment do backflips but I think I might be in the minority on that one. Also schooled in Engineering (though combined with CS so I saw both sides :) ), I might be a bit biased :) .
T-Mac-Oz
T-Mac-Oz wrote:
Personally I'd like to see more emphasis on problem-solving & design, which has historically been (in my experience, first as a student, later as an employer) a bit light-on in CS faculties. As an employer, I'd rather hire someone who can conceptualise a solution, then find the best tool(s) for the job as opposed to someone who can make a specific RAD environment do backflips but I think I might be in the minority on that one.
Maybe, but I'm finding shops that are looking for older progammers who have some familiarity with the bleeding edge but have lots of familiarity with solving problems. Then again, that's to whom I target my resume. My MSCS program was about to drop the Math course requirement after I joined, but I was able to use a math course due to a "grandfathering" rule. The course I took was Mathematical Modeling, which taught a bunch of techniques but was primarily aimed at teaching you how to start solving a problem by building models and checking them againsts reality - this made it the most effective "problem solving" course I took.
-
Hi, I'm a regular user of CodeProject's codebase and saw this interesting post. I'm a master's student finishing up this term in robotics. The CS (we call it course 6--my school loves numbers for some reason) department at my institution is pretty rough and produces some pretty good programmers, but we don't take classes in programming. A point was made that managed languages like C#/Java/Python/etc. make it easier for people to just get by. IMHO, I think spending higher education time learning languages is a waste of money. The concepts of application development should be taught, and it should be left up to the student to experiment with different languages to find the best fit for their application. I guess what I'm trying to say is that no class has ever taught me programming, coming up with implementation for B-trees (without ever having seen one) and the like I think can only come from hardened experience in coding up a wide variety of apps over several years. This leads me to believe that the misconception here is that these "programmers" that keep applying for these jobs might not necessarily need to take classes in programming, maybe they just lack the experience necessary to acquire these programming skills. I constantly find myself referring to my intuition about programming which usually comes from a combination of intimate knowledge of application development concepts with experience with a variety of different programming languages. So I guess I completely agree with the point made that you just need to learn from reference books and the internet. In short, I'd probably shoot myself if I took a class on learning how to count in octal or learning the intimate details of Python or any other language. Seems like a waste of time unless its needed for the application. What most managers should be looking for is the ability for the new-hire to acquire knowledge quickly given the right amount of information. The industry is growing too fast for someone to know everything that you might want out of them.
daChiefrocka wrote:
What most managers should be looking for is the ability for the new-hire to acquire knowledge quickly given the right amount of information. The industry is growing too fast for someone to know everything that you might want out of them.
LOL that's part of my resume charm...I've acquired a new language, OS, or database server with every job I've had.
-
Someone the other day posted their VB assignment ( in university ). It was 'name your 10 favourite properties of VB.NET controls and why you like them. The OP was asking 'what's a property' and 'what's a control property'. I think CS is dead, I am considering changing careers.
Christian Graus Please read this if you don't understand the answer I've given you "also I don't think "TranslateOneToTwoBillion OneHundredAndFortySevenMillion FourHundredAndEightyThreeThousand SixHundredAndFortySeven()" is a very good choice for a function name" - SpacixOne ( offering help to someone who really needed it ) ( spaces added for the benefit of people running at < 1280x1024 )
-
There hasn't been anything fundamentally new in computing since 1973 all we've seen since then is ever more trivial refinement, what do you expect? This is the age of the "architect" not the "developer". I completely agree that anything called "computer science" should be reserved for nuts and bolts stuff and the 1 or 2 people per semester that are still interested in that can take it, the rest can be in "application development" etc. It's kinda like they don't teach carpenters how to make carpentry tools anymore and at some point in history some guys were sitting around with mugs of ale and deploring the loss of the good old days. :)
"The pursuit of excellence is less profitable than the pursuit of bigness, but it can be more satisfying." - David Ogilvy
I have to agree. But, you have to consider this much: the software developer that KNOWS the underlying hardware (as well as the business stuff too) is going to be the one who comes out smelling like a rose. That is, if outsourcing doesnt choke us all first. While it may be true that they dont teach carpenters how to make tools anymore, those who know how the tools are made and the history of the tools themselves, are at an advantage... Some of the best carpenters were able to devise their own tools because they knew tool-making as well as carpentry.
-
You forgot to mention that the trip to the mill was all uphill - both ways.
Jon Smith & Wesson: The original point and click interface
-
Steve Echols wrote:
I blame .net, intellisense and languages that make it easy for people to think they know what they're doing. I've seen a lot of drag n drop kiddies in the U.S. as well.
Imagine the power of Intellisense and such tools to those of us who DO know what we are doing, eh? -CB ;)
Yeah, we have some pretty sweet tools. I don't mind the intellisense when I'm exploring new classes or trying to use classes I don't use that often, but for the most part they get in my way, so I turn it off and use Ctrl+Space, Ctrl+Shift+Space. Is it me, or is C#'s intellisense way better than VBs? Just imagine how fast we could code if we had all the classes/functions/parameters memorized and didn't have to stop to read! ;)
- S 50 cups of coffee and you know it's on!
-
Yeah, we have some pretty sweet tools. I don't mind the intellisense when I'm exploring new classes or trying to use classes I don't use that often, but for the most part they get in my way, so I turn it off and use Ctrl+Space, Ctrl+Shift+Space. Is it me, or is C#'s intellisense way better than VBs? Just imagine how fast we could code if we had all the classes/functions/parameters memorized and didn't have to stop to read! ;)
- S 50 cups of coffee and you know it's on!
Hey Steve,
Steve Echols wrote:
Yeah, we have some pretty sweet tools. I don't mind the intellisense when I'm exploring new classes or trying to use classes I don't use that often, but for the most part they get in my way, so I turn it off and use Ctrl+Space, Ctrl+Shift+Space. Is it me, or is C#'s intellisense way better than VBs?
Hmm ... very interesting. I personally find VB's Intellisense better - it generally appears earlier. I also prefer the incremental compiler in VB - it really makes finding errors much quicker. In C# you generally have to compile everything before you find most of the errors. They're both fine - but I prefer VB.
Steve Echols wrote:
Just imagine how fast we could code if we had all the classes/functions/parameters memorized and didn't have to stop to read!
Heh ... yeah, but OTOH, I'm to the point where I've done this for so long I'm glad I don't HAVE to memorize things any more. Just knowing where to look for 'em suits me fine! -CB ;)
-
T-Mac-Oz wrote:
Leslie Sanford wrote: B-trees[^] are rather non-trivial, aren't they? Depends on the requirements: Leslie Sanford wrote: a simple b-tree is little more than a linked list (though with two "next" - left & right - nodes instead of one). A self balancing b-tree (actually useful as more than just an academic exercise) does take a bit more work.
I'm thinking an array for faster access time. And binary trees are actually quite trivial if you've actually built one before. An experience I highly recommend, by the way.
There's a difference between a b-tree and a binary tree. Look 'em up: B-tree (Not to be confused with Binary Tree)
-
There's a difference between a b-tree and a binary tree. Look 'em up: B-tree (Not to be confused with Binary Tree)
azonenberg wrote:
There's a difference between a b-tree and a binary tree. Look 'em up: B-tree (Not to be confused with Binary Tree)
how odd, I have never heard of them before. It is kind of like a tree of priority queues, weird. Looks like I have a coding project for the weekend now :)
-
Ray Cassick wrote:
Ah, where are those days again....
I hear you, Ray. I'm surprised at the number of developers who hold a CS degree who've never written a compiler, never programmed in assembler and haven't had more than an introductory course in operating systems. :sigh: /ravi
My new year resolution: 2048 x 1536 Home | Articles | My .NET bits | Freeware ravib(at)ravib(dot)com
Well I guess I'm in the minority then. I'm 17 years old and will be entering a CS program at a major university this fall. I wrote my first C program in 1999 and was learning C++ before my tenth birthday. I've written a bytecode compiler and interpreter for an object-oriented language based on C++. I not only wrote a complete Windows GUI application (albeit a simple one) in x86 assembly, I actually enjoyed doing it. I've never had a formal course in operating systems, but that will be coming soon...
-
i agree. i think it's because when WE cut our teeth on the stuff, computers were something you could understand more easily. back then it was assembler, turbo pascal and ms/dos. maybe c64 and basic. maybe Amiga and C. You could figure it all out yourself and the OS was not a huge monstrosity like windows or unix that we have now. Well, ok, the Amiga os was starting to get monstrous, but ms/dos? Easy. The languages were simpler, the OS was way simpler. What's simpler than load"*",8,1 ?? That was the whole c64 os right there :) Ok ok, well, screen memory for text, graphics mode for pixels, nice simple sound chip. Not too bad. I'd say, to teach programming now adayz, your best bet is with slackware linux and straight c. You don't program by plopping in a prebuilt class into a java dev environment. For cryin out loud, you should know SOME assembler coming out of college.
You should know assembler coming OUT of college? I'm 17 and will be a college freshman (CS major, obviously) this fall. I wrote the code snippet below off the top of my head, using no references but an ASCII table (to look up the value of '0'. It doesn't do anything complicated - just outputs the numbers 0 to 9 inclusive - but it proves my point.
main: xor eax, eax ; initialize loop loop: mov ebx, eax ; convert to ascii for output add ebx, 30h push ebx ; print it call putc add esp, 4 ; unwind the stack inc eax ; bump loop counter cmp eax, 9 ; time to stop? jle loop ; no, keep going done: ret putc: ; implementation not shown - print character at top of stack to screen ; using __cdecl calling convention
modified on Tuesday, May 13, 2008 7:28 PM
-
I have to agree. But, you have to consider this much: the software developer that KNOWS the underlying hardware (as well as the business stuff too) is going to be the one who comes out smelling like a rose. That is, if outsourcing doesnt choke us all first. While it may be true that they dont teach carpenters how to make tools anymore, those who know how the tools are made and the history of the tools themselves, are at an advantage... Some of the best carpenters were able to devise their own tools because they knew tool-making as well as carpentry.
I don't really agree. It would be comforting to think so being a person that learned from assembly on up, I could say "I am better" but in the trenches it's a minor advantage in rare cases at best. Hardware is dirt cheap, it's far cheaper to simply spec higher level hardware than to pay developers to spend a month optimizing something and the majority of software is written for a virtual machine these days anyway. Your tool analogy might be applicable to craftsmen that are hand making furniture, but a run of the mill carpenter not so much. Society has made it's choice: faster and cheaper. Few care about quality these days, just "is it good enough". That's one reason why I have my own company, I couldn't work in a cubicle all day on something I know is simply "good enough" day after day.
"The great pleasure in life is doing what people say you cannot do." - Walter Bagehot
-
You should know assembler coming OUT of college? I'm 17 and will be a college freshman (CS major, obviously) this fall. I wrote the code snippet below off the top of my head, using no references but an ASCII table (to look up the value of '0'. It doesn't do anything complicated - just outputs the numbers 0 to 9 inclusive - but it proves my point.
main: xor eax, eax ; initialize loop loop: mov ebx, eax ; convert to ascii for output add ebx, 30h push ebx ; print it call putc add esp, 4 ; unwind the stack inc eax ; bump loop counter cmp eax, 9 ; time to stop? jle loop ; no, keep going done: ret putc: ; implementation not shown - print character at top of stack to screen ; using __cdecl calling convention
modified on Tuesday, May 13, 2008 7:28 PM
azonenberg wrote:
You should know assembler coming OUT of college?
well, i think i said "at least know..." or something to that effect... Not sure why you're trying to prove to me you know asm... Looks kinda like an answer to a short quiz... Not code i'd likely have written. your labels are a little lamely named. your comments should say "printing out the string 0123456789 instead of "bump loop counter" and won't it print a character beyond 9 due to your cmp?
-
El Corazon wrote:
There are more than enough jobs, and more than enough people to fill them.
Can you explain to me exactly what this means? Aren't these mutually exclusive states?
"The difference between genius and stupidity is that genius has its limits." - Albert Einstein
"How do you find out if you're unwanted if everyone you try to ask tells you to go away?" - Balboos HaGadolBalboos wrote:
Aren't these mutually exclusive states?
Not really. If there is no intention of hiring someone local, then you simply leave the job open, turn away all 300+ applicants, and then outsource the job to India. Or you simply never offer the job locally, and determine behind the scenes that you need to hire n number of people from India, and then never check their qualifications. You get them cheap, so what does it really matter right?
------------------ John Andrew Holmes "It is well to remember that the entire universe, with one trifling exception, is composed of others."
-
-
Well I guess I'm in the minority then. I'm 17 years old and will be entering a CS program at a major university this fall. I wrote my first C program in 1999 and was learning C++ before my tenth birthday. I've written a bytecode compiler and interpreter for an object-oriented language based on C++. I not only wrote a complete Windows GUI application (albeit a simple one) in x86 assembly, I actually enjoyed doing it. I've never had a formal course in operating systems, but that will be coming soon...
Very cool! :cool: /ravi
My new year resolution: 2048 x 1536 Home | Articles | My .NET bits | Freeware ravib(at)ravib(dot)com