No one teaches PROGRAMMING any more
-
Sound like you really know what your talking about...Steve-o... .NET is a great development framework. Programming languages do make it easy for people to think they know what they're doing...do you write your programs in assembly...oh wait that would still be a language. As for intellisense, it doesn't do anything except act as a reference for your code and any other classes you are working with, how does that substitute the actual use of those classes, methods, fields etc...? C++ is great so is C++ w/ .NET and so is C# and Java.
I program in binary - intellisense 0/1. :-D Wasn't saying that .net, intellisense, high level languages aren't great, just that they are allowing a lot of people who aren't programmers to enter the fray and give dedicated, professional programmers a potentially bad name, similar to what VB did in the 90's. Back then, if you told someone you programmed in VB, you didn't get much respect, even if you were a great VB programmer, used oop and the works. If you were a C/C++ programmer, on the other hand, people had a lot more respect for you, since they knew it required some level of skill. Now, it's a little grayer, since everything is .net, and the language doesn't make a damn bit of difference, but when people start pumping out slow, poorly designed, memory hungry .net apps, it's going to give the whole framework a black eye and take all the developers down with it, regardless of whether you're a "real" programmer or not. Dang, I'm turning into a grumpy old man, aren't I?! :)
- S 50 cups of coffee and you know it's on!
-
GoodSyntax wrote:
this Millenium Generation needs instant gratification and suprisingly lacks the dedication to their profession that previous generations had.
oh yes, we can just sum this up with how awesome the generation was before the Millenium generation as you call it. that explains it all. everyone is just lazy and useless now and the world will probably self-destruct when whatever prior generations have all died away and can't save the Millenium.
----------------------------------------------------------- Completion Deadline: two days before the day after tomorrow
jgasm wrote:
everyone is just lazy and useless now and the world will probably self-destruct when whatever prior generations have all died away
- Senseless hyperbole. What I am saying is that previous generations of software engineers, the same group that built the software and hardware foundations that we take for granted today, were intellictually inquisitive pioneers relentlessly driven to extract the maximum value out of the modest capabilities of the hardware and software of the time. They were the ones that invented, revolutionized and drove into the mainstream ideas and concepts that others were disparaging as senseless and infeasable. Many of those old-timers were severely undervalued financially or were simply dedicated hobbyists. There was a large percentage of the talent pool at the time that exhibited all of the above traits. Today, that percentage has shrunken immensely. There will always be superstars in every generation, but there are just fewer of them now. There is simply a change in the motivational drivers today - the differentiator is that for one group it's a job, for the other it is/was an obsession. Does that mean that the Mellenium generation us incapable of innovation, or will self-destruct as you say? No, as a matter of fact, I expect that this generation will revolutionize technology and introduce new ideas that will make electronics inseparable in every day life. This is the generation that was raised with technology, and so will be the ones that will find new, practical uses that other generations would never have though of. Laziness, not necessity, is the mother of innovation. Laziness brought us the remote control, and for that, I'm grateful.
-
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. :) But, yeah, outsourcing hasn't helped the situation out much.
- S 50 cups of coffee and you know it's on!
Yes! I think the "here's a magical class that does stuff" attitude means someone doesn't HAVE to take the time to know what that magic is. I also blame academics for giving in to the whiners who complain that they got a B because their program compiles. Even worse, are those who pass a project when their project doesn't even compile! What would happen if the were harder on students? Would they drop out of the program and the programming work force die? I don't know...but I totally agree with everything being said on this thread. I got my MS in CS 3 years ago and I don't think things have changed that much.
-
I need to throw-in my contrarian points-of-view. I have met many university students in the last few years who have learned the fundamentals very well! I have been lucky to work with young people from very good American universities (not meant as a knock against other countries' schools, but just putting it context), so I cannot say this is 100% representative of the next generation of Engineers. My experience with Indian engineers on outsourced projects is that they are very capable of doing the work which they were contracted to do. Appropriately from an economic standpoint, they are well-trained for the task at hand, which is often high-level programming (as opposed to embedded or high-performance coding). We'll see if this trend continues. If the Indian and other off-shore (that is, not North America or Europe) countries begin to school their best and brightest in real electrical and computer fundamentals, and if American schools begin to lose focus of them and on hard-core science and math, then we (that is, American) technical industries are in trouble! The next generation will all be pushing frapaccinos to our Indian and Asian neighbors. The good news is that American Universities are still REALLY desireable places for the best foreign students around the world. Of course, our visa situation is horrible. We're basically encouraging students to come and study and then we kick them out to be our competitors. Rather, we should teach anyone who wants to learn the fundamentals, as well as the state-of-the-art and have an immigration policy that allows us to take advantage of the best young minds the world has to offer.
-
I'm one of those people that has a development job (vb.net) and has not been taught programming. I got my job from working as a finance/payroll admin where I built a system to manage my companies Flex benefits using VBA and spreadsheets. I tought myself the VBA. I was moved into the development team (5 peeps) and sent on a course for people upgrading from asp to asp.net (!?!?!??!?!?). What's asp I asked. I've been doing this for 2 years now. I rely heavily on intellisense but no dragging and dropping. I tend to learn from asking colleagues, friends, reading books and google. I am well aware that there are some fundamental pieces of the puzzle that I am missing but I can build apps that achieve what they are supposed to do. If I had to go through the interview process for my job now I do not believe I would get it. The purpose of my post is two-fold 1. Does it matter that I am missing some coding fundamentals since I can build working applications? (don't get me wrong, I'm not kidding myself about my abilities) 2. Where and how do I learn these fundamentals? Should I turn off intellisense as a start? Do you all use intellisense?
Westie
westicle wrote:
The purpose of my post is two-fold 1. Does it matter that I am missing some coding fundamentals since I can build working applications? (don't get me wrong, I'm not kidding myself about my abilities) 2. Where and how do I learn these fundamentals? Should I turn off intellisense as a start? Do you all use intellisense?
1. Yes. By missing coding fundamentals you are essentially writing "broken code". That doesn't mean your code won't work, but it may be very inelegant and extraordinarily difficult to maintain. In addition, by not knowing basic algorithmic concepts, you may be making your work harder than it actually is. 2. You can read about them. Any good programming text will do. Turning off intellisense will only help you memorize libraries of functions. While this is useful for speeding up your coding, it still won't teach you fundamental basics. I could recommend any number of excellent books to you. But my choices are highly language specific (I prefer books written in Java right now as it is my current language of choice). If you are willing to go with that, I strongly recommend Big Java by Cay Horstmann. This is a very excellent tome on the craft of writing software well (in Java). I disagree, however, about needing to know all that math Juju. While I am familiar with the math concepts and I can perform base-16 multiplication and division in my head, I don't think it is necessary to know that to be a good programmer. Knowing binary and boolean algebra is another matter, as someone else pointed out, you need to know that to construct well defined conditional statements.
JPaula wrote:
What you need is basic understanding of how a computer works and what goes on behind the "magic" of high level languages. You need to understand binary math in order to understand what is behind a conditional instruction in your current language. You need to understand what a pointer is, so you know what is going on when you pass a parameter by reference or by value or what happens when you do a "a=b".
I also disagree with this statement, even though I agree with JPaula's other arguments. I don't think you need to know how electrons are moved in hardware to have a strong grasp of program construction. I assume by binary math, JPaula means boolean algebra...binary math is actually useless unless you want to create performance tricks like minimized data storage a
-
I began with my first computer when I was 9 years old. A Radio Shack MC-10 8 bit computer with a whopping 16K of memory. All you could do is program a flavor of BASIC that only vaguely resembles what it has evolved to today. It had no non-volitile memory, if you shut it off, or had a bug that required a reset, you had to write it all over again. At the time I loved it, and I learned how to memorize lots of code, by the simple idea that form follows function. If I know what it needs to do, I can write it, and memorize it, regardless of how long it is. I have since self taught my self over a dozen languages, learned how computers work down to the electronics, I have worked in a wafer fab and know how every part of how a computer is designed and produced. In High School I could teach the the teachers, how to do things and gave them tips on how I developed my understanding. One of my favorites was the analogy between a checking books out at a Public Library, and the idea of a Semaphore. In college, again there was little real programming being taught, I truly believe that if you do not understand a computer at the assembly language level you can not fully realize your programming potential. Unfortunately in todays world, it seems true knowledge of programming is almost lost. With the knowledge of almost every Language, Platform, and OS, capable of the english character set (I am sure there are some Russian and Chinese systems I don't know), I have only been able to keep myself gainfully employed by avoiding the IT field. If you get into IT, you get outsourced almost as quickly. By keeping myself tightly coupled with hardware and other engineering disiplines, I have found my programming skills to be incredibly useful, even outside the relm of actual programming. Project planning and execution have so many parallels to programming, it should be required for project managers. I have watched the Internet from its infancy (Pre M$) to the present get completely corrupted. There is no excuse for the proloferation of malware, had some of these software vendors stuck with basic security priciples that were established for the Internet. The first principle is DO NOT EXECUTE ARBITRARY CODE FROM A REMOTE SOURCE EVER! Of course that was completely violated by M$ and the like with client side scripting, ActiveX, DCOM, etc. I do know the answer to the problem, but much like the Auto industry, a car that never needs maintenance will never be produced even if they could because that does not make them enough money. Software has n
-
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.
T-Mac-Oz
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.
-
I absolutely hate to agree with you, but I have to. I was SO excited about a year ago to return to school to learn to be a web programmer (to build on web design skills and lots of interest). I was ready to take on all the classes, learn, program, etc. But! Many of the classes kept being canceled. There was no real overview of the whole field, and even intros into basic stuff like XML were canned. No PHP, no Perl, no QBasic, no C#. The tools needed to do basic stuff like learn SQL Server didn't work or the school's IT folks brilliantly decided to replace or dismantle servers the first week of the quarter. But worst of all, I came to realize after 4 quarters of 4.0 grades that there had been no series of really basic programming classes. There was one, with a really good instructor, but one was not nearly enough and most of the basics - well, let's just say I am having to find a way to teach myself. I was getting "A's" in ASP.Net without having basic programming background, and it was showing (to me) in how much I struggled in what seemed like basic assignments where the VS2005/2008 Intellisense and error messages intruded on basic work without providing any help but hindering me from doing simple stuff - all because, it turned out, I didn't have a grasp of most basic programming skills. A shiny new certificate - that means very little. Back to the drawing board for me. Here's hoping there's at least enough front-end work to keep me employed while I learn more on my own. . . DOES anyone here have a suggestion of 1-2 basic sites/tutorials (or series) that go over the programming BASICS with little assignments/examples, etc.? Thanks!!! :cool:
_________________________________________________ Have a great day!!! -- L.J.
lbothell wrote:
DOES anyone here have a suggestion of 1-2 basic sites/tutorials (or series) that go over the programming BASICS with little assignments/examples, etc.?
-
I need to throw-in my contrarian points-of-view. I have met many university students in the last few years who have learned the fundamentals very well! I have been lucky to work with young people from very good American universities (not meant as a knock against other countries' schools, but just putting it context), so I cannot say this is 100% representative of the next generation of Engineers. My experience with Indian engineers on outsourced projects is that they are very capable of doing the work which they were contracted to do. Appropriately from an economic standpoint, they are well-trained for the task at hand, which is often high-level programming (as opposed to embedded or high-performance coding). We'll see if this trend continues. If the Indian and other off-shore (that is, not North America or Europe) countries begin to school their best and brightest in real electrical and computer fundamentals, and if American schools begin to lose focus of them and on hard-core science and math, then we (that is, American) technical industries are in trouble! The next generation will all be pushing frapaccinos to our Indian and Asian neighbors. The good news is that American Universities are still REALLY desireable places for the best foreign students around the world. Of course, our visa situation is horrible. We're basically encouraging students to come and study and then we kick them out to be our competitors. Rather, we should teach anyone who wants to learn the fundamentals, as well as the state-of-the-art and have an immigration policy that allows us to take advantage of the best young minds the world has to offer.
-
I'll be interested to see the code for your Excel replacement written entirely in x86 assembler... History is the interminable record of mass stupidity infrequently puctuated by accidental individual brilliance...
I'll be interested to see the code for Halo 4 written entirely in Java... I did not say that you should write huge applications in assembly. No one in their right mind would try such a feat. I said that you should learn assembly before learning abstracted languages. If you do not understand how a computer works on a low level,you will never fully comprehend how it works on a higher level; and your code will suffer because of it. Learning Java or .NET without knowing assembly and C is like learning Calculus without understanding Algebra. You might say that nobody does that, but my college calculus classes would have begged to differ. Personally, I learned C++ first. But it was not until after I learned assembly that I truly understood C++. A prime example is the difference between a switch and an if/else structure. Keywords and classes and library functions are not magic spells that instantly execute in one clock cycle. If you do not understand what's behind the code you write, then you are no better off than a script kiddie typing out some HTML for his geocities.com page.
I have nothing against VB or .NET; all programming languages are respectable. It just seems that some languages attract one echelon of programmers, and other languages attract another echelon of programmers. :P
-
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 )
You know what all that is? Outsourcing. Those are the outsourcing people asking everyone else for help, and we fools supply them with answers while we site idle because companies would rather pay someone in India or China 1/4 the pay to do what we used to do, correctly and accurately. Why do we do this? I have no idea. Would you see an attorney give another attorney the answers to legal issues prior to going to court? No. On a similar note, would you ever see an attorney (or plumber, electrician, construction people, you name the trade) anything for their clients WITHOUT pay (or for much less pay?) No way. We, developers, are the only fools that have allowed this to happen to our profession/trade. We worked for hundreds of hours of OT without (much) pay if any at all, and for what? To eventually be outsourced AND, oh yea "you will train your replacement in Bombay or you dont get any of your 4 month severence package".. We deserve what has happened. We allowed it to.
-
cpkilekofp wrote:
Only a computer scientist can teach this.
this of course is just wonderful rhetoric from the many professors over the years im sure. chest thumping Computer Science faculty.
----------------------------------------------------------- Completion Deadline: two days before the day after tomorrow
I'm not a professor. I'm not an academic of any sort, never have been, but who knows, maybe someday after I retire I'll think about it. I specifically recommended texts of the sort that would allow one to become a computer scientist. Did you read that part, or stop dead at the first thing you found objectionable? As I used to say to my recalcitrant trainees for QA/Support jobs on the software I'd helped build, "Read ALL the instructions before you start." I recommend you read the rest of my post. Alan Turing and Frank Church never went to school for Computer Science. The first person to graduate from a computer science program was Stan Kelly-Bootle, the (former?) columnist for Unix Review - he was most certainly taught by computer scientists, yet none of them were degreed in computer science. How, then, did they become computer scientists? They pursued the study of computer science. They learned how to construct an algorithm, and studied their own and other people's algorithms, comparing them for resource usage, efficiency, effectiveness, etc. They used those comparisons to induce and deduce rules and patterns by which the true cost of an algorithm could be measured. They did many things for the advancement of their understanding of computer science that sometimes did not even require a computer, being mathematical examinations appropriate for pencil and paper. Knowing each of the object properties of a Windows Form object makes you a technologist, not a scientist. Being able to build a lookalike after studying the Windows Form object makes you a great programmer, not a computer scientist. Being able to really understand when to build the lookalike and when to use the available tool...takes a computer scientist. IMO :D
-
Christian Graus wrote:
I am considering changing careers
why that? If there is a lack of people who can do the job, then you are welcome to do it right. No?
Why is that? Because some developer in India told ME to stop whining the other day. This is how he put it: "An average developer in India earns the equivalent of $1000 USD a month, gross pay. If you want to match or beat that then I would be willing to bet you'd get the contracts in America. Otherwise, you simply wont". So....... thats what we're being reduced to people. We're being reduced to $12,000 a year employees. People in WALMART make about that. Mc Donalds. Borders. And they dont have 1/10th of the pressure. So, yea, I too am looking for a new career. This one has been pulled from under my feet.
-
I'll be interested to see the code for Halo 4 written entirely in Java... I did not say that you should write huge applications in assembly. No one in their right mind would try such a feat. I said that you should learn assembly before learning abstracted languages. If you do not understand how a computer works on a low level,you will never fully comprehend how it works on a higher level; and your code will suffer because of it. Learning Java or .NET without knowing assembly and C is like learning Calculus without understanding Algebra. You might say that nobody does that, but my college calculus classes would have begged to differ. Personally, I learned C++ first. But it was not until after I learned assembly that I truly understood C++. A prime example is the difference between a switch and an if/else structure. Keywords and classes and library functions are not magic spells that instantly execute in one clock cycle. If you do not understand what's behind the code you write, then you are no better off than a script kiddie typing out some HTML for his geocities.com page.
I have nothing against VB or .NET; all programming languages are respectable. It just seems that some languages attract one echelon of programmers, and other languages attract another echelon of programmers. :P
David I Hunt wrote:
Personally, I learned C++ first. But it was not until after I learned assembly that I truly understood C++. A prime example is the difference between a switch and an if/else structure. Keywords and classes and library functions are not magic spells that instantly execute in one clock cycle.
I learned AppleBASIC, then Logo, then C, then Fortran, then C++ then Java, then Prolog, then ML, then Motorola Assembly, then x86 Assembly... Yeah, starting languages are meaningless to me (except in a specific context I'll elaborate on in a moment). While each language I learned taught me a different nuance, each had their own place. Once I knew C, I could pretty much use any other procedural language. Once I groked OO (which didn't happen until I learned Java), I could do OO in any language that supported it. And by extension onward. Knowing the binary representation, or bytecode, for a construct like a switch or if/else may give you deeper understanding, but if you don't know what the hell you're looking at, it can actually do more harm than good. Do you really need to know that a switch is occasionally more efficient than an if/else sequence? I don't think so, most good compilers will figure that out for you, and honestly, if you are optimizing just for the sake of optimization, you don't get it. The first rule to optimizing is, don't. Do I really need to know if my atomic commands execute in one clock cycle? Does it really matter that it takes 40 cycles to execute a division on an x86 architecture as opposed to 2 cycles to do the bit shift? Not unless I'm trying to squeeze every last ounce of performance out of my gear. Besides, to really understand that junk, you need to get the instruction set manual for the motherboard you're coding for and I don't think they give those out for free anymore (I'd love to be proven wrong though!). Does knowing that stuff make you a better programmer? No. Does it make you sound l33t at your ub3r g33k parties? sure. If you have a solid foundation in understanding algorithms and data structures and you can competently implement them from pseudocode, you're far better off than someone who merely knows how to squeeze a handful of nanoseconds off a calculation by using fiddly code hacks and compiler tricks. I think the biggest nail in the programming coffin is that they removed GW-BASIC from the IBM bootstrap. If computers shipped with a built in programming language, I think the worl
-
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.
-
No. I do have strong opinions on immigration policy, but I was in no way "trolling" or had any ulterior motives. I guess my big point is that this is subject (teaching programming) is really part of a bigger set of interwoven issues: math and science education in the US and compared to other countries, university education for professional (read "useful") careers, international competition, brain-drain, out-sourcing, etc.
-
.NET and Java are definitely the problem, though ignorance is the cause of it. People go to "easy" languages for two reasons. 1) They are stupid. 2) The Pointy-Haired Boss is stupid and forced them to use "easy" language. There are some people who are just lazy, but IMHO, laziness is a form of ignorance. Bjarne Stroustrup saw this problem appearing a while ago and is focusing his efforts on trying to get schools to actually teach programming again. For anyone reading this who wants to learn to code well... start with x86/64 assembly any work up from there.
I have nothing against VB or .NET per se. It just seems that some languages attract one echelon of programmers, and other languages attract a much higher echelon of programmers. :P
David I Hunt wrote:
.NET and Java are definitely the problem, though ignorance is the cause of it. People go to "easy" languages for two reasons. 1) They are stupid. 2) The Pointy-Haired Boss is stupid and forced them to use "easy" language. There are some people who are just lazy, but IMHO, laziness is a form of ignorance.
You can say guns are to blame for gun killings, but someone has to pull the trigger. I pulled that trigger once. I told my customer at the time not to use C++ as the base language for their project, which was database-driven, but to use Access and VB because "the programmers are cheaper and more easily disposable." Four years later I was one of the two programmers struggling to convert that Access package into a Web application, so karma was served. My main point was that C++ programmers talented enough to do the work would also have held the company hostage, as in this area (southeast Pennsylvania, near New York City in the US) good C programmers were very hard to find and keep. VB programmers were and are a dime a dozen (though, curiously, the ones who are good enough to be good C++ programmers are still very hard to find...a finding that has been touched on in more than one post on this topic). The problem isn't the environment, the problem is that so many programmers are helpless when the environment doesn't provide a solution. The sort of skills a study of computer science produces cross all environments, define all environments, and allow analysis of the environment, its shortcomings and how they can be avoided, and its fine points and how to best utilize them. It's not the environment, it's how you use it that makes or solves the problem.
-
cpp.samurai wrote:
Therefore, blaming the situation on lack of jobs (out-sourcing) can't be right.
Outsourcing is not a function of lack of jobs, but rather a function of wanting to pay less for a given job. The concept of paying less for the same thing is not a new one, what has changed in the recent decade is more or less a lack of oversight, or lack of checks and balances, or how ever you want to view it... the result is less quality for less money. It hurts the real programmers in India, and in the USA and everywhere. There are more than enough jobs, and more than enough people to fill them. A given IT job usually gets on the order of 100 to 300 applications. Even here with all our restrictions we get 100 applications for any one job. But those jobs are going elsewhere because no one wants to pay us the money, or even you the money, they want to pay someone less than either of us makes, and not bothering to find out if they can do the job before giving it to them. The result is encouraging failure, and living with 2nd rate products, and in many cases 3rd rate products or vaporware because no product is ever produced for the money.
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 HaGadol -
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
Atle Bjanes wrote:
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?
The Art of Programming by Donald Knuth can be used with VB 2005. It's not cheap, but worth ten times that. Build up to it by letting them create their own "shell" for use with later assignments. By the end, they'll be ready for the workforce (or for the seed programmers for your own startup ;-) ).
-
I'll be interested to see the code for Halo 4 written entirely in Java... I did not say that you should write huge applications in assembly. No one in their right mind would try such a feat. I said that you should learn assembly before learning abstracted languages. If you do not understand how a computer works on a low level,you will never fully comprehend how it works on a higher level; and your code will suffer because of it. Learning Java or .NET without knowing assembly and C is like learning Calculus without understanding Algebra. You might say that nobody does that, but my college calculus classes would have begged to differ. Personally, I learned C++ first. But it was not until after I learned assembly that I truly understood C++. A prime example is the difference between a switch and an if/else structure. Keywords and classes and library functions are not magic spells that instantly execute in one clock cycle. If you do not understand what's behind the code you write, then you are no better off than a script kiddie typing out some HTML for his geocities.com page.
I have nothing against VB or .NET; all programming languages are respectable. It just seems that some languages attract one echelon of programmers, and other languages attract another echelon of programmers. :P
Ouch! Halo in Java would be painful! I mostly agree with you - in fact, I think you have largely stated what I voiced in a different post on the same thread - I do agree that understanding in principle what happens when your high-level language code runs is what separates the 'script kiddies' from developers - on the other side of the coin, however, are folk like me: My first intro to programming was two weeks of digital electronics on the Navy's ComTran10 - designed to teach basic digital electronics (focused on hardware - didn't even have a CPU, just a couple of shift registers!). One day's lab was writing a machine code (yes, machine code, not assembler) calculation routine. Other than some personal reading/study, that was the last that I've touched anything that low-level. I also took a short "Intro to C" course at a local community college. Since then it's been VB, VBA, VBscript, and now C#, and entirely self-taught. I am, unlike some, very interested in the whole process, and in my own research have gained what I think is a fairly decent understanding of the way programming languages work, and what happens all the way down to the hardware level. Not programming in the lower-level languages hasn't prevented me from gaining that understanding. OK, so maybe I'm a bit unusual ... I think you did wrap up our agreement in your last sentence - '...all programming languages are respectable. It just seems that some languages attract one echelon of programmers, and other languages attract another echelon of programmers.'