Learning forges new neural synapses, but it doesn't _have to hurt.
Human languages shape our consciousness; describe our reality. If you learn a new language, you learn a new way of thinking that permanently alters you. I'm a firm believer in immersion, since you are forced to read && listen; write && respond. Think about the difference between communication in person and communicating with someone you've never met via email/internet relay chat/newsgroups. Things we take for granted like tone, facial expressions and body language do not apply and so one is forced to think carefully on the words chosen and the way the paragraph is constructed (well, maybe not so much in IRC;-) ). Anyway, we now use emotives and abbreviations (ie:IMHO) without even thinking about how our language is evolving. You see, that is what languages do -- they evolve.
In the real worlde, languages are actually dying out in favour of ones more prevalent... like English. Meanwhile, flesh tries to convey ideas to silicon. Machine code translates our cognitive processes into bits that evolving silicon chips will understand... chips built with the aid of computers now in existence!
In this worlde, we have witnessed the birth and developement of several languages thus far -- and this is not the end. Within our lifetime it is highly probable that an entirely new language will come into being. What we need to learn is _how we learn. What needs to be taught is the concept that learning is never-ending.
Now to your question: IDE || {insert favourite txt editeur here} IDEs are analogous to speaking in person -- they allow you to be sloppy, but they get the job done... however, they will not teach you how to think and veil the mechanics of how the language is being rendered into something inherently useful. If you are teaching CS students then you would do them a favour to teach what the IDE is doing. Don't waste your time and theirs teaching them to use a specific IDE, rather, let them choose their own. Focus ON the language... it's syntaxt... Compare its differences and similarities with other languages.
Start with an IDE then take it away. Give it back when they are able to meet a set of predefined criteria AS A CLASS (%90 of them anyway 'cause some people will _never get it and some just won't care). Instilling a sense of teamwork is vital since software is becoming too complex for a single person to write (well). Spend some time brainstorming (within groups) on rapid fire solutions to a simple problem using pseudocode. Homework for that session would be a handwritten (and on-your-honor untested) solution turned in individually. Show them solutions that work && solutions with flaws but let them peer review it, and let them explain _why it's wrong. Do not identify the authors. The person who got it wrong will have learned something without shame/ridicule. Since homework is a small percentage, everyone should try something bold at least once! Classic algorithms have their place but reward original thought. Instructors follow lesson plans but Teachers respond to the dynamics of the group. Good luck!
A bit of personal history here: At one time I thought that I couldn't do math. My Mom said "That's OK, some people just aren't wired for that." And so, until I read 'Tao of Physics' I never really questioned it. This was in my mid-twenties. When I returned to school ( a community college, which is why this question caught my attention) I learned algebra in as many different ways as possible. There was classroom instruction and video tapes in the library. Of course there was the book, but I also had to learn how to use MathCAD and an HP48GX calculator and somehow, I accidentally learned rudimentary FORTRAN. Now make no doubt about it: Math _is a language and it's syntaxt is paramount. During several courses with my teacher, I learned the following:
The calculator is just a tool -- do not believe it blindly as it is no substitute for thinking; Always perform a sanity check -- is this reasonable?
Translation follows:: The IDE is just a tool -- it is no substitute for thinking; Always perform a sanity check -- is it reasonable code for _all situations/ for _all input?
Learning forges new neural synapses, but it doesn't _have to hurt.
;-) ). Anyway, we now use emotives and abbreviations (ie:IMHO) without even thinking about how our language is evolving. You see, that is what languages do -- they evolve.
Human languages shape our consciousness; describe our reality. If you learn a new language, you learn a new way of thinking that permanently alters you. I'm a firm believer in immersion, since you are forced to read && listen; write && respond. Think about the difference between communication in person and communicating with someone you've never met via email/internet relay chat/newsgroups. Things we take for granted like tone, facial expressions and body language do not apply and so one is forced to think carefully on the words chosen and the way the paragraph is constructed (well, maybe not so much in IRC
In the real worlde, languages are actually dying out in favour of ones more prevalent... like English. Meanwhile, flesh tries to convey ideas to silicon. Machine code translates our cognitive processes into bits that evolving silicon chips will understand... chips built with the aid of computers now in existence!
In this worlde, we have witnessed the birth and developement of several languages thus far -- and this is not the end. Within our lifetime it is highly probable that an entirely new language will come into being. What we need to learn is _how we learn. What needs to be taught is the concept that learning is never-ending.
Now to your question: IDE || {insert favourite txt editeur here}
IDEs are analogous to speaking in person -- they allow you to be sloppy, but they get the job done... however, they will not teach you how to think and veil the mechanics of how the language is being rendered into something inherently useful. If you are teaching CS students then you would do them a favour to teach what the IDE is doing. Don't waste your time and theirs teaching them to use a specific IDE, rather, let them choose their own. Focus ON the language... it's syntaxt... Compare its differences and similarities with other languages.
Start with an IDE then take it away. Give it back when they are able to meet a set of predefined criteria AS A CLASS (%90 of them anyway 'cause some people will _never get it and some just won't care). Instilling a sense of teamwork is vital since software is becoming too complex for a single person to write (well). Spend some time brainstorming (within groups) on rapid fire solutions to a simple problem using pseudocode. Homework for that session would be a handwritten (and on-your-honor untested) solution turned in individually. Show them solutions that work && solutions with flaws but let them peer review it, and let them explain _why it's wrong. Do not identify the authors. The person who got it wrong will have learned something without shame/ridicule. Since homework is a small percentage, everyone should try something bold at least once! Classic algorithms have their place but reward original thought. Instructors follow lesson plans but Teachers respond to the dynamics of the group. Good luck!
A bit of personal history here: At one time I thought that I couldn't do math. My Mom said "That's OK, some people just aren't wired for that." And so, until I read 'Tao of Physics' I never really questioned it. This was in my mid-twenties. When I returned to school ( a community college, which is why this question caught my attention) I learned algebra in as many different ways as possible. There was classroom instruction and video tapes in the library. Of course there was the book, but I also had to learn how to use MathCAD and an HP48GX calculator and somehow, I accidentally learned rudimentary FORTRAN. Now make no doubt about it: Math _is a language and it's syntaxt is paramount. During several courses with my teacher, I learned the following:
The calculator is just a tool -- do not believe it blindly as it is no substitute for thinking; Always perform a sanity check -- is this reasonable?
Translation follows::
The IDE is just a tool -- it is no substitute for thinking; Always perform a sanity check -- is it reasonable code for _all situations/ for _all input?