Java Forum / General / December 2005
Help, where to start learning Java
john - 23 Dec 2005 20:16 GMT Hi, i have read 2 books( thinking java and how to program in java), and
have general understanding of the programming language. But even after reading 2 books, i still feel it is hard to apply what i've learn, is there a program out there that makes learning/programming Java easier, such as dreamweaver for html? I have spend a year in learning how to program java, I've trying to memorize the syntax for me
to program, but doesn't seem to work, i tend to forget over time. Any advices?
thanks
VisionSet - 23 Dec 2005 20:25 GMT > Hi, i have read 2 books( thinking java and how to program in java), and > [quoted text clipped - 6 lines] > to program, but doesn't seem to work, i tend to forget over time. Any > advices? Write alot of code. The syntax is the least of your problems. Writing good OO code takes time, is pretty much essential and is many times harder than remembering syntax. Don't mean to be discouraging, but if you keep writing code, the syntax will be 2nd nature. It's like anything you have to do the thing to get good at it, books are good, classes are better, the internet is a valuable resource, but you have to know when to take advantage of each, generally do a bit of all of them, but above all write code! If possible get an expert to review it. (I'm still looking for that expert). comp.lang.java.* is a good resource though with a good bunch of people, I've learnt more good Java here than anywhere else.
-- Mike W
Rhino - 23 Dec 2005 21:37 GMT >> Hi, i have read 2 books( thinking java and how to program in java), and >> [quoted text clipped - 23 lines] > a > good bunch of people, I've learnt more good Java here than anywhere else. I just want to agree with what Mike has said. The best way to get better at programming is to WRITE PROGRAMS, not to read about it. There's nothing wrong with reading programming books: you have to get the basic information somewhere. But the way to progress is to _write code_.
If you were interested in being a football player but had only played a few games, which approach do you think would make you a better football player: A. reading lots of books about football strategy? B. watching lots of football games on TV? C. playing lots of football?
I think the answer is obviously "C". You might learn a few things from "A" and "B" - but I think you're going to learn a lot more by playing than reading books or watching other people play.
Programming is pretty much the same deal. Writing code - and compiling it and testing it and debugging it - are where you really LEARN how to program well.
If I were you, I'd find a project that interests you and then devote all the time you can spare to it. For instance, if you're interested in the stock market, write a program to track stocks and even buy them and sell them - or at least make recommendation for what you should buy and sell. If you're interested in music, write programs that will play your favourite music files or organize those music files so that they are easily found when you want to hear them. I find that working on an interesting project is one of the things that makes me want to program; if I have to write a program about something that doesn't interest me, it is harder to sustain my interest.
Memorizing syntax of statements is _not_ a very good use of your time, in my opinion. While it might be handy sometimes to have everything memorized, I feel that it is a better use of my limited brain cells to use them for the creative and imaginative aspects of programming than to cram them full of facts that I can easily find in a reference book or API.
Rhino
vmjava - 24 Dec 2005 13:57 GMT Hi Rhino,
I am a software Engineer having seven years of work experience. I had a break of fours years due to family reasons and now I am trying to get into IT field. I have very good software development experience in the client -server side. I have worked in c/c++ and have abundance interest and knowledge in DBMS, (sqlserver, SYBASE and little oracle exposure). This is just an introduction about me. I saw your reply and was so much impressed by the why you have answered. It is a wonderful feedback. The last two paragraphs are simply great and could steer the interest among many people.
VMogana
Rhino - 24 Dec 2005 15:31 GMT > Hi Rhino, > [quoted text clipped - 7 lines] > last two paragraphs are simply great and could steer the interest among > many people. What can I say? I love programming, particularly Java programming!
I was just sharing something that helped me when I was starting out. I found that working on my own little projects was an excellent way to maintain my interest in programming. If it helps anyone else, that's great.
Good luck with your plan to get into the IT field!
Rhino
vmjava - 25 Dec 2005 01:02 GMT Hi Rhino,
Thanks a lot. Wishing You Merry Christmas and Happy Holidays.
Regards, VMogana
Roedy Green - 23 Dec 2005 21:30 GMT >to program, but doesn't seem to work, i tend to forget over time. Any >advices? You might try Eclipse. It won't memorise the syntax for you, but it will slap you on the wrist very soon after you make a mistake so you quickly learn what WON'T work.
Also try working with code examples and modifying them. There are hundreds of them in the Java glossary. See if you can find one to roughly suit your task. That way the general framework with already be there even if you end up changing every line.
 Signature Canadian Mind Products, Roedy Green. http://mindprod.com Java custom programming, consulting and coaching.
David Segall - 24 Dec 2005 04:29 GMT >Hi, i have read 2 books( thinking java and how to program in java), and > >have general understanding of the programming language. But even >after reading 2 books, i still feel it is hard to apply what i've >learn, is there a program out there that makes learning/programming >Java easier, such as dreamweaver for html? The Java equivalent of Dreamweaver is a Java Integrated Development Environment. I can recommend NetBeans 5 Beta 2 from here <http://www.netbeans.org/community/releases/50/index.html> but I have compiled a complete list here <http://profectus.com.au/ee_JavaIDE.html>. These IDE's will create a skeleton program for you, check your code as you go and suggest the valid alternatives as you write including the documentation. Like Dreamweaver, they allow you to visually design a form and modify the generated code.
Rather than attempting to write a complete program I suggest you locate a simple program, perhaps from one of your books, and change it to add some extra features. I think the combination of reading and writing Java code is the best way to learn.
> I have spend a year in >learning how to program java, I've trying to memorize the syntax for me [quoted text clipped - 3 lines] > >thanks Luc The Perverse - 24 Dec 2005 06:02 GMT > have general understanding of the programming language. But even > after reading 2 books, i still feel it is hard to apply what i've > learn, is there a program out there that makes learning/programming > Java easier, such as dreamweaver for html? I have spend a year in > learning how to program java, I've trying to memorize the syntax for me You will never learn to program from reading - it will only serve to give you a basis on which you can grow.
You must make many projects.
If you have been studying Java for a year and still don't know the syntax then you must realize that you are doing something wrong. Begin by writing trivial programs. As you encounter problems in your life see if you could find a way to represent them with a Java program. Set out to write (or put substantial effort into) a Java program every day.
I do not believe a "do it for me" program is going to help you lean Java - just as I don't feel Dreamweaver helps people to learn HTML.
> to program, but doesn't seem to work, i tend to forget over time. Any > advices? Yes - code more.
Make simulation programs, calculators, english parsers, fun encodings/secret codes (start with something familiar like Pig Latin and then make more complicated and fun ones), or you could implement actual encryption algorithms with Sun's included functions. Make games, puzzles, solve classic algorithms.
I prefer to think in this regard, thinking in terms of a project with a purpose, and then setting out to make it.
However, you could turn the tables - create a list of "interesting" sounding available classes from the Sun website and then set out to make a project using every one of them. (You can of course use more than one per project if it suites you.)
If you study from the point of writing code - maybe 1-3 hours a day (more when you feel like it) syntax should quickly become the least of your problems.
If you do this for about a month, and complete somewhere aroud 20 projects then you should be ready to start making more complicated programs. On Roedy's website www.mindprod.com he has a list of student projects. Ultimately though you are going to need to code something that interests you. Programming in any language is like playing an instrument - you only get better with practice.
 Signature LTP
:) Stefan Ram - 24 Dec 2005 06:09 GMT >You will never learn to program from reading - it will only >serve to give you a basis on which you can grow. A professional programmer will spend more time maintaining programs than writing new programs from scratch or designing software. Maintainig programs often begins by reading code other programmers have written. So, one of the most important skills is the ability to /read/ source code.
To learn to read source code, reading source code might help.
The subject is "learning Java": "Learning Java" can not be interpret only by "Learning to write Java", it also means "Learning to read Java".
Luc The Perverse - 24 Dec 2005 06:18 GMT >>You will never learn to program from reading - it will only >>serve to give you a basis on which you can grow. [quoted text clipped - 10 lines] > interpret only by "Learning to write Java", it also means > "Learning to read Java". Learning to write Java is still an improvement over "learning how to read books about Java".
Yes - modifying existing code is also an important step though - thanks for pointing that out to me.
 Signature LTP
:) David Segall - 24 Dec 2005 06:19 GMT >I do not believe a "do it for me" program is going to help you lean Java - >just as I don't feel Dreamweaver helps people to learn HTML. David Segall - 24 Dec 2005 06:36 GMT >I do not believe a "do it for me" program is going to help you lean Java - >just as I don't feel Dreamweaver helps people to learn HTML. Most people want to produce web pages or write computer programs. They have no desire to learn HTML or Java. Dreamweaver helps to produce attractive, maintainable web pages by exposing the look of the page and the structure of the HTML and CSS. Java IDE's serve a similar purpose. While it is probably not possible to avoid learning the underlying language I don't think that should be the goal. After all, anybody who has been programming for more than a few years has "learned" several languages that they have since abandoned.
john - 24 Dec 2005 07:51 GMT Thank you for all your inputs, they are very helpful. I now have a sense of direction on how to approach in learning to write java program. This news group is great!!! I should have come here a year earlier for advice. Anyway, merry Chistmas to everyone!!! and thank you all.
Luc The Perverse - 24 Dec 2005 19:24 GMT >>I do not believe a "do it for me" program is going to help you lean Java - >>just as I don't feel Dreamweaver helps people to learn HTML. [quoted text clipped - 6 lines] > anybody who has been programming for more than a few years has > "learned" several languages that they have since abandoned. Hmmm.
I do agree that a suprising number of people seem to lack the innate desire to learn the intricacies of the computer. I can relate to a certain extent - when I get into a car, I coudn't really care less how or why it works, I just want it to take me to Taco Bell.
I would never reprimand someone for dabbling in programming - but like many involved fields, typically one receives little enrichment from the type of programming that an complete novice is capable of. Making a webpage is a little different as the effect can typically be completely represented inside a WYSIWYG editor.
What I mean is that we don't have tools which allow dabbling engineers to build bridges - or amateur mathmaticians to publish worthwhile research papers. IMHO, programming is generally the same. Java itself is the crutch that allows people to dabble - people no longer have to learn machine code, interrupts etc just to get data from the user, display results, perform simple calculations. If people are interested in learning nothing at all but still making the computer do what they want I expect them to be disappointed/frustrated/give up. Still though I would recommend them to Visual Basic or Labview (depending on what they are tyring to do.)
-- LTP
:) Roedy Green - 24 Dec 2005 08:53 GMT On Fri, 23 Dec 2005 23:02:32 -0700, "Luc The Perverse" <sll_noSpamlicious_z_XXX_m@cc.usu.edu> wrote, quoted or indirectly quoted someone who said :
>If you do this for about a month, and complete somewhere aroud 20 projects >then you should be ready to start making more complicated programs. On >Roedy's website www.mindprod.com he has a list of student projects. >Ultimately though you are going to need to code something that interests >you. Programming in any language is like playing an instrument - you only >get better with practice. The most important thing is to pick a project that has heart for you. It going to be tough slogging. You must CARE about succeeding in getting it to work or you will be easily discouraged. Picking a project too difficult is not nearly as big as error as picking a project that is only mildly important to you.
My list of projects at http://mindprod.com/projects/projects.html is just to give you some ideas, to spark your imagination. Many of the projects themselves could be taken in many directions.
 Signature Canadian Mind Products, Roedy Green. http://mindprod.com Java custom programming, consulting and coaching.
Roedy Green - 24 Dec 2005 08:59 GMT On Sat, 24 Dec 2005 08:53:08 GMT, Roedy Green <my_email_is_posted_on_my_website@munged.invalid> wrote, quoted or indirectly quoted someone who said :
>The most important thing is to pick a project that has heart for you. >It going to be tough slogging. I was lead counselor at a computer summer camp. I interviewed all the kids and discovered most of them wanted more than anything to write their own video games. There were programming novices. But within a week nearly every kid had written a game or animation. I was utterly blown away how fast they learned. In the breaks they DEMANDED to learn trigonometry, which blew the mind of a math prof who was watching the production.
The other thing was the kids wrote nothing but commented/structured code. They never saw anything else, so it never occurred to them to do other wise.
 Signature Canadian Mind Products, Roedy Green. http://mindprod.com Java custom programming, consulting and coaching.
Luc The Perverse - 24 Dec 2005 19:12 GMT > I was lead counselor at a computer summer camp. I interviewed all the > kids and discovered most of them wanted more than anything to write [quoted text clipped - 7 lines] > code. They never saw anything else, so it never occurred to them to > do other wise. Now this I didn't realize.
I had no idea you had experience in teaching children? I have been looking for ideas to teach and stimulate desire to learn logic and mathmatics in younger children. It is my belief that subjects which are typically reserved for higher education such as trig, calculus, discrete math, deductive logic could all be started before children ever leave elementary. The trick would only be to interest the children, and present the material in a way that it could be absorbed.
Can you offer any insight into this matter? Into teaching children how to make games? What engine did you use (I suppose you were using Java).
 Signature LTP
:) Roedy Green - 25 Dec 2005 03:04 GMT On Sat, 24 Dec 2005 12:12:36 -0700, "Luc The Perverse" <sll_noSpamlicious_z_XXX_m@cc.usu.edu> wrote, quoted or indirectly quoted someone who said :
>Can you offer any insight into this matter? Into teaching children how to >make games? What engine did you use (I suppose you were using Java). In the 90s I wrote a column for the Computer Paper on my theories based on my experiences as head instructor at a computer camp where the kids blew me away with how fast they learned.
The key tricks are these:
1. this is a kid's environment. Lots of noise, chaos, goofy stuff.
2. When I speak I demand absolute silence. In return I speak no more than a couple of carefully planned sentences, dramatic if possible. I don't repeat myself publicly. I want them hanging on my every word. The last kid to stop talking I made run out of the room a block or so away to ring a bell then run back. It was not that much of a punishment, since the kid got the fun of making his classmates laugh when they heard the bell. But I did get rapt attention.
3. Leaking. I teach something to a small group of kids I don't teach to the others. This becomes their secret weapon to use in their programs. The kids see the results, and either wheedle the information out of the "privileged" kids, or chase me around to tell them too. You have never seen kids so motivated to learn trig!
4. example code.. This code does a simple version of what the kids want to. It is commented to death. They can just type it in to try it out. In the process of getting the typos out the have it pretty well understood and are well on their way to theme and variations.
5. Graduated bang for buck. On day one, all the student had to do was his a function key and you would be rewarded with a randomly sized, placed, and coloured helicopter. You got maximal reward for least effort. As time progressed the student had to work ever harder for ever more subtle rewards in fine control.
6. Order of presentation. I taught methods first, iteration and random numbers second, and arithmetic third. It was absolutely natural in drawing for kids to organize methods into hierarchies of reusable components they could share.
7. Learn by experiment. I presented the editor this way. These keys do something. See how many of them you can figure out what they do. The emphasis is that computers are SUPPOSED to be mysterious and undocumented. It is supposed to be puzzle to figure out. You are not supposed to get it on your first try.
8. Let the kids teach each other. They have their own ways of explaining things. They can do it in parallel much faster than I can. All I have to do is give enough of a hint so that a few students figure it out. It then ripples throughout the class by student to student interaction.
9. On opening day I gave a little introductory speech where I said something like. I have interviewed you all and it is clear you want more than anything to learn to write your own computer games. I promise I will not teach you ANYTHING that is not necessary to write computer games. Unfortunately, sometimes it won't be clear why you need to learn something, so you will just have to trust me.
10. Graph paper. One of the very first exercise I did was hand out graph paper and ask each kid to draw a Pac Man or similar simple figure, with polygons, and label all the vertices with the absolute co-ordinates. As each kid (ages 7 to 15) completed the task they brought it to me or one of my assistants for checking. If they had it right they went off to another room where the computers were. There they were shown how to type the polygon vertices into the computer into a simple skeleton drawing program and see their creation realised, usually in hideously garish colours. The unconscious lesson the kids learned was the planning was hard, but the computers were easy. The kids only had a few short sessions a day of computer access. The rest of the time they were doing traditional summer camp things. But the kids would carry about sheafs of graph paper to plot out their masterpieces in ever spare moment.
11. I remember my entire childhood quite vividly. I recall adults being so patronising. I tried hard not to do that.
Caveat. This style of teaching is utterly exhausting. You could not do it full time or without an incredibly good support staff as I had. Some kids are freaked by the pandemonium, or the competitive pressure that develops even when I don't consciously foster it.
At UBC, teaching people slightly older than I was, I used different, but unconventional techniques. There the problem is keeping students awake.
So I banned note taking. I had contests, often with two teams, with points for answering questions, solving problems at the board (done say 5 from a team at a time).
The winning team would get chocolate bars (only a nickel back then), or selections from the local bakery.
The idea here was even if the student did not care about the class he did not want to let down his team.
On opening day I would say, "No student of mine has ever failed. So you can relax. However, you would probably find you will spend more time on this course than any other."
The class was supposed to be an hour, but often student would hang around for 6 hours before the last one went home.
I spent lots of time on theme and variation of the fundamentals, which panicked the students because we were "behind". But my students thoroughly got them so they could write code in their sleep (or under exam pressure). Then it was pretty easy to add the fancy stuff later on that solid foundation.
 Signature Canadian Mind Products, Roedy Green. http://mindprod.com Java custom programming, consulting and coaching.
Luc The Perverse - 25 Dec 2005 06:09 GMT >>Can you offer any insight into this matter? Into teaching children how >>to [quoted text clipped - 3 lines] > based on my experiences as head instructor at a computer camp where > the kids blew me away with how fast they learned. *snip*
I've always known children's potential is mostly untapped.
I too hope to some day teach - though I know not how or when
-- LTP
:) Roedy Green - 25 Dec 2005 06:26 GMT On Sat, 24 Dec 2005 23:09:46 -0700, "Luc The Perverse" <sll_noSpamlicious_z_XXX_m@cc.usu.edu> wrote, quoted or indirectly quoted someone who said :
>I've always known children's potential is mostly untapped. > >I too hope to some day teach - though I know not how or when It was one of the most fun things I ever did. To this day I run into kids I taught then or at UBC who still remember those crazy times fondly.
I am quite a ham and that sort of teaching is a great outlet for that.
The kids just lap it up after the grim regimentation that teachers have to impose in order to teach classes of 40 single handed 5 hours a day, week after week.
The assumption that many educators make is that kids don't want to learn and you have to coerce them. My assumption is that they are naturally curious, and your job is not to squash that wide-ranging curiosity and encourage them to remain curious in the event of frustration.. You are there to facilitate them. They are not there to perform for you.
Whereever a child's curiosity leads, THAT'S the curriculum for now. So much energy for learning is blunted by trying to control what a child should learn when.
I have great hope for Internet based learning where it will be much more feasible for each kid to go off in different directions.
 Signature Canadian Mind Products, Roedy Green. http://mindprod.com Java custom programming, consulting and coaching.
yakovfain@gmail.com - 26 Dec 2005 14:06 GMT I was teaching my son Dave Java and these are some obsercarions:
Most of the programming tasks require minimal knowledge of arithmetic and algebra skills. To start programming, a kid needs to understand what x = y+2 means. Another important concept to understand is an if statement.
Kids develop the abstract reasoning abilities by the fourth-fifth grade, and they also easily perform such tasks as browsing the Web, downloading and installing software. Dave have learned how to type, compile and run Java programs in Eclipse IDE in no time.
Kids learn much faster than adults, but they do not have "previous programming experience", which may actually be a good thing, because they do not have to switch from a procedural to object-oriented way of thinking. After learning about inheritance, Dave called my wife a superclass.
Adults are responsible creatures, and they can keep doing boring operations much longer that kids. Programming lessons with kids have to be short. One or two 45-minute lessons per week is enough. High school kids should be able to study more, but I do not have such experience yet.
Anyway, I wrote an e-book on teaching kids Java. You can find a sample chapter at http://www.smartdataprocessing.com/java4kids.htm
One of the publishers is planning to release the printed version of the book next year. I want it to be in color, but it's lot more expensive for a publisher so we are still negotiating...
Happy New Year,
Yakov Fain
Roedy Green - 26 Dec 2005 17:19 GMT >One or two 45-minute lessons per week is enough. That is important. I is also important to keep things interactive. Don't expect a kid to sit there and listen to you like some college prof droning on an on. I like to keep it down to 2 sentence before the kid either says something or does something.
 Signature Canadian Mind Products, Roedy Green. http://mindprod.com Java custom programming, consulting and coaching.
Luc The Perverse - 26 Dec 2005 18:51 GMT > One or two 45-minute lessons per week is enough. ??
This goes very much against my intuition.
Do you mean only limiting any kind of formal instruction?
As a kid when I became fascinated with something I would spend countless hours on it - that is what I believed made me progress and learn.
The same as an adult. When I want to learn a new foreign language (I have not done so in a few years) I sit down for about eight 45 minute lessons a day, alternating with exercise. Its annoying after I work my a.s off to hear someone who tried for 15 minutes to learn a foreign language to tell me that I just have an aptitude for it.
I intend on teaching my daughter to start programming as soon as she learns to read which should be in a few years.
Be sure and let me know when your book becomes available!
-- LTP
:) Roedy Green - 26 Dec 2005 20:43 GMT On Mon, 26 Dec 2005 11:51:31 -0700, "Luc The Perverse" <sll_noSpamlicious_z_XXX_m@cc.usu.edu> wrote, quoted or indirectly quoted someone who said :
>This goes very much against my intuition. > >Do you mean only limiting any kind of formal instruction? The kids will go nuts on their own time. Ask Yakov about his experience, but what I suggest limiting is formal class time.
I found that at summer camp, some kids would stalk me to pump me for information outside of class hours. That does not count. The kid is in control of when he wants to do that.
Kids around 10 to 12 love to build elaborate models with thousands of parts, miniature cities, aircraft carriers etc. This instinct serves them well to develop large computer programs. They have little trouble keeping track of its many parts. So focus right from day one on how to write LARGE programs -- encapsulation, reuse, naming.
 Signature Canadian Mind Products, Roedy Green. http://mindprod.com Java custom programming, consulting and coaching.
Stefan Ram - 26 Dec 2005 21:03 GMT >I found that at summer camp, some kids would stalk me to pump me for >information outside of class hours. That does not count. The kid is [quoted text clipped - 4 lines] >keeping track of its many parts. So focus right from day one on how >to write LARGE programs -- encapsulation, reuse, naming. Sometimes one believes that it is easy for children to understand technology..
The German researcher Martina Ziefle did an experiment with children and adults and found that this is not true. But there was a difference: The children wanted to learn and thus had much more patience than the adults.
A small report in German about this experiment is here:
http://www.heise.de/newsticker/meldung/print/37449
Alan Kay was teaching five-year old children how to program a circle: They were asked to walk in a circle and to report what they did. The children would answer "walk a little and turn a little." After that cognition they could write a program to draw a circle.
Ten-year old children already knew what a circle is: "The set of all point, having the same distance to a center." So they startet to program individual points starting at a center, which was more complicated; and the result was non a connected circle but only single dots.
Fifteen-year old children already knew the formula »r² = x² + y²«. They tried to draw a circle using that formula, but failed. (This formula is not a good starting point for such a program.) Just because of their additional knowledge, it was actually more difficult or impossible for them to write such a program. At least that is what Alan Kay said in a video.
Luc The Perverse - 27 Dec 2005 04:49 GMT > The kids will go nuts on their own time. Ask Yakov about his > experience, but what I suggest limiting is formal class time. Ok - I was just misunderstanding - in that case then I would agree.
> Kids around 10 to 12 love to build elaborate models with thousands of > parts, miniature cities, aircraft carriers etc. This instinct serves > them well to develop large computer programs. They have little trouble > keeping track of its many parts. So focus right from day one on how > to write LARGE programs -- encapsulation, reuse, naming. Having been a kid of 10 to 12 - I recall quite vividly. I had extensive armies of different pieces. The lego armies and some other construction set I don't know the name of - I had to rebuild them at the end of every war since the battles would cause significant . . . disfigurement.
I wish I could find that construction set. The basic set was "connectors" which were cubical with round pegs that the building pieces (oblong rectangular prisms) could snap into. The basic set was grey pieces with blue connectors, but I had several kits, so there were short pieces, long pieces, some rounded pieces. Eventually they came up with the idea of a much flatter swinging piece would spin instead of being fastened in place (it was long and flat like a popsickle stick with hooks on each end.) My grandma decided one day that I was too old for "toys" and threw away the ship I'd had (although rebuilt many times) for over 12 years. I'm not mad at her anymore, but I feel bad for her - she doesn't believe in sentimental value of posessions.
 Signature LTP
:) yakovfain@gmail.com - 27 Dec 2005 12:21 GMT Roedy, teaching in the summer camps is a great idea!
IMHO, kids should be learning programming not by solving some math problems (booooooring...), but by implementing something they like. Video games is a perfect example. Kids should get the message that you do not have to be a nerd to become a computer programmer. So they will not be afraid of selecting Computer science or Information Systems as their college major in the future
Roedy Green - 27 Dec 2005 13:38 GMT >IMHO, kids should be learning programming not by solving some math >problems (booooooring...), but by implementing something they like. Once they get into it, computer programming itself is interesting. At least in the early days it was a key to let you in anywhere to satisfy curiosity. I could walk into a bank who had hired me to write code, and ask anyone anything and they would answer. Then I might be out at a university learning some advanced math to study movement of pollutants in soils, or I might query engineers on the fine points of high voltage tower construction. It is like passport to let you have a number of mini careers.
 Signature Canadian Mind Products, Roedy Green. http://mindprod.com Java custom programming, consulting and coaching.
zero - 27 Dec 2005 18:18 GMT yakovfain@gmail.com wrote in news:1135686063.972748.62340 @o13g2000cwo.googlegroups.com:
> IMHO, kids should be learning programming not by solving some math > problems (booooooring...), but by implementing something they like. > Video games is a perfect example Great idea in theory, but it has a major drawback. Game programming is one of the hardest subfields of programming. You could argue that there are plenty of simple games that can be made (snake, tetris, ...) but those just don't compare to the kind of games modern kids play on a daily basis. Creating a snake game that is visually sufficiently appealing for a 12 year old is not that easy. So more than anything, I think programming a game may be a disappointment for many children.
I do think that they should be led to create interactive programs instead of the traditional "hello world" or recursive combinations. Examples could be a simple puzzle or a visual representation of the towers of hanoi. Also a good idea is to tie the programs they make to other things they are learning. If for example a kid is learning a second language, have him create a program to store and look up words in a dictionary. If they are learning basic summation, have them create a program that they can use to check their exercises.
 Signature Beware the False Authority Syndrome
Mickey Segal - 27 Dec 2005 18:31 GMT > Creating a snake game that is visually sufficiently appealing for a 12 > year > old is not that easy. So more than anything, I think programming a game > may be a disappointment for many children. Our kids are having a good time with the Game Maker environment (http://gamemaker.nl/), which allows kids to create a visually-appealing result with little fuss. They are not disappointed. The Game Maker environment uses true object-oriented programming, but because the code is in its own "Game Maker language" rather than C++ or Java the programming experience does not allow an easy jump into standard programming. Also, because many basic features of mature programming languages such as double precision calculation are missing the kids get frustrated when they stray away from games.
Luc The Perverse - 27 Dec 2005 21:58 GMT >> Creating a snake game that is visually sufficiently appealing for a 12 >> year >> old is not that easy. So more than anything, I think programming a game >> may be a disappointment for many children. A reply to "zero":
When teaching children to code, anything visual is going to be more appealing than basic text. Children may have aspirations of making Doom III, but it's not going to happen. I got excited about programming without the prospect of making fun interactive games. Pictures, GUIs, sounds, animation etc is what is appealing to the eye, no matter what form it comes in.
> Also, because many basic features of mature programming languages such as > double precision calculation are missing the kids get frustrated when they > stray away from games. You . . . aren't implying that this is a good thing are you?
While programming of any sort is useful, forcing kids to stay with games can also be a problem.
 Signature LTP
:) Mickey Segal - 28 Dec 2005 00:22 GMT > You . . . aren't implying that this is a good thing are you? It is not a good thing to trap kids in programming only games. It is helpful to have them enticed into programming because of games but then they should be able to discover all the useful features of a real language such as double precision calculation and other features of real programming.
zero - 28 Dec 2005 16:42 GMT > When teaching children to code, anything visual is going to be more > appealing than basic text. Children may have aspirations of making > Doom III, but it's not going to happen. I got excited about > programming without the prospect of making fun interactive games. > Pictures, GUIs, sounds, animation etc is what is appealing to the eye, > no matter what form it comes in. Actually I think interaction is a lot more important than visually appealing features. Most visual stuff is, certainly in the early stages, going to be disappointing imo. However, if they can interact with programs they made themselves, they'll find it more interesting. They will want to make changes to the code and see how that affects the interaction. At least that's what I found interesting. I could never see an example or exercise without wanting to "improve" it.
For example I believe a program showing a static picture and playing a sound file less appealing - and a lot harder to make - than a text-only "guess the number" game. So interactivity is the key. And of course games are interactive, but they shouldn't be presented as "computer games", because that brings up visions of Doom and The Sims.
 Signature Beware the False Authority Syndrome
Luc The Perverse - 29 Dec 2005 02:18 GMT >> When teaching children to code, anything visual is going to be more >> appealing than basic text. Children may have aspirations of making [quoted text clipped - 18 lines] > are interactive, but they shouldn't be presented as "computer games", > because that brings up visions of Doom and The Sims. Perhaps you are right.
But there is a stigma attached to programs that run in the console window.
But it doesn't have to be one way or the other. The user interaction could already be coded by the professor, and the students need only write the interactive part. The coding part for the students would be approximately the same difficulty, and may even be easier if the interaction function is Play
But on the other hand - the instructor could provide a "guess the number interface", and only require the students to provide the code which allows them to make it run on the same order of complexity as if they had written a text based game.
 Signature LTP
:) Andrew Thompson - 29 Dec 2005 02:50 GMT >>>When teaching children to code, anything visual is going to be more >>>appealing than basic text. Children may have aspirations of making [quoted text clipped - 22 lines] > > But there is a stigma attached to programs that run in the console window. For good reason. That is *so* last millenium, and to a younger person, appears as if it is 'some old installer'[1].
[1] On the basis that a command line interface is only likely to have been seen by a younger computer user, during the installation of software, and then only old (very old) software.
> But it doesn't have to be one way or the other. The user interaction could > already be coded by the professor, and the students need only write the > interactive part. The coding part for the students would be approximately > the same difficulty, and may even be easier if the interaction function is > Play Was that not the concept of ..'logo'[2] or whatever it was/is?
[2] Quick Googling indicates.. "LOGO computer language created by Seymour Papert in 1967"
Has LOGO come up during this thread? (Sorry, I've only been 'half listenning').
> But on the other hand - the instructor could provide a "guess the number > interface", and only require the students to provide the code which allows > them to make it run on the same order of complexity as if they had written a > text based game. ..of course. I am fond of imploring people around these parts to figure how to 'do it from the command line'. But then, I would not recommend usenet as a suitable forum for children in any case ( mostly because they could observe just how 'child-like' - in the worst possible ways, adults can be ;).
 Signature Andrew Thompson physci, javasaver, 1point1c, lensescapes - athompson.info/andrew
Luc The Perverse - 29 Dec 2005 04:56 GMT >>>>When teaching children to code, anything visual is going to be more >>>>appealing than basic text. Children may have aspirations of making [quoted text clipped - 27 lines] > For good reason. That is *so* last millenium, and > to a younger person, appears as if it is 'some old installer'[1]. LOL. I refused to run apache webserver on a windows machine once because I couldn't close the window and remove it from the taskbar. System tray is ok for something like that, but not an open window! Although I found one worse - my dad's printer uses a driver which always has a window open in the taskbar. To me that would be just cause for returning it. (I'm definitely deviating from the conversation now.)
>> But it doesn't have to be one way or the other. The user interaction >> could already be coded by the professor, and the students need only write [quoted text clipped - 6 lines] > Has LOGO come up during this thread? (Sorry, I've only > been 'half listenning'). No it has not to the best of my knowledge. Perhaps that was the point of LOGO, but computers and languages have evolved greatly since the days of LOGO.
>> But on the other hand - the instructor could provide a "guess the number >> interface", and only require the students to provide the code which [quoted text clipped - 6 lines] > in any case ( mostly because they could observe just how > 'child-like' - in the worst possible ways, adults can be ;). I really don't have any idea what you are talking about in this last sentence.
I think the command line is highly undervalued, but the point is to teach programming however possible. If you teach kids how to program, they will be able to adapt to the command line, but if you lose them because they are not interested, then it will be a pointless endevour.
What any of that has to do with usenet though . . I'm not sure ;)
 Signature LTP
:) Chris Uppal - 31 Dec 2005 13:48 GMT > I do think that they should be led to create interactive programs instead > of the traditional "hello world" or recursive combinations. If such matters interest you then you'd probably find it rewarding to look at Squeak and Croquet (which are technically related, but used in different ways for different things).
-- chris
Mickey Segal - 27 Dec 2005 04:23 GMT > Be sure and let me know when your book becomes available! From the URL: http://www.smartdataprocessing.com/java4kids.htm it looks like it is available already as a $20 download. I will see if I can interest my kids in the book; they are currently focused on Game Maker: http://gamemaker.nl/ I'd prefer for them to learn a general purpose language, perhaps with a special purpose game addition such as: http://goldenstudios.or.id/products/GTGE/index.php When we wrote a calculator program in the Game Maker language we spent a lot of effort on dealing with the missing things in the Game Maker language such as double precision math and arrays of newly defined objects. If the guts of a game environment were Java it would be easier to help them and their knowledge would be more generally useful.
What Roedy Green did in teaching kids about computers is the wave of the future, but it is not likely to happen in many schools in the near future. Camps, clubs, supplemental classes, home schooling and interested parents will get kids to do terrific things before such approaches go mainstream in most schools.
David Segall - 27 Dec 2005 06:07 GMT >> I was lead counselor at a computer summer camp. I interviewed all the >> kids and discovered most of them wanted more than anything to write [quoted text clipped - 20 lines] >Can you offer any insight into this matter? Into teaching children how to >make games? What engine did you use (I suppose you were using Java). I think that the only "insight" is realizing that it all depends on the teacher. Skilled teachers can teach anything using any technique but they need to have similar talents to good actors or court room lawyers. They must love playing to the audience and be sensitive to it. The are thrilled when they have the audience in rapt attention and are able to detect and react when they are losing their attention.
Technical teaching skills and the use of teaching aids can be learned but, as in any other profession, they are no substitute for talent. and there a
Roedy Green - 27 Dec 2005 09:46 GMT >I think that the only "insight" is realizing that it all depends on >the teacher. Skilled teachers can teach anything using any technique >but they need to have similar talents to good actors or court room >lawyers. I am such a ham in front of a big audience. I have spoken in front of audiences thousands of times. There is no substitute for just doing it over and over and learning what works with what sorts of audiences.
Once you get over the stage fright, it is one of the most fun things you can do.
A kid's audience is tougher at first. They won't be polite, but on the other hand, they are a lot easier to get rolling and they get totally carried away. . I am working on an essay at http://mindprod.com/jgloss/teaching.html
 Signature Canadian Mind Products, Roedy Green. http://mindprod.com Java custom programming, consulting and coaching.
writeOnceDebugEverywhere() - 24 Dec 2005 12:50 GMT > Hi, i have read 2 books( thinking java and how to program in java), and > > have general understanding of the programming language. But even > after reading 2 books, i still feel it is hard to apply what i've > learn, is there a program out there that makes learning/programming > Java easier, - you must decide what area of java programming you want to lear. Then, try to find some application written by java proffesionals, with source code; and study careful this code. By my opinion, this is the best method...
Roedy Green - 24 Dec 2005 14:01 GMT On Sat, 24 Dec 2005 13:15:30 -1200, "writeOnceDebugEverywhere()" <cwele_n_spm@evnet.yu> wrote, quoted or indirectly quoted someone who said :
>- you must decide what area of java programming you want to lear. >Then, try to find some application written by java proffesionals, with >source code; and study careful this code. By my opinion, this is the >best method... you need both. If you don't look at good code you will develop all sorts of bad habits and goofy round about ways to solve things.
If you don't actually write code, you will imagine yourself an expert, but you won't actually be able to create anything, like those people who read books with cloud diagrams and imagine they are software architects.
 Signature Canadian Mind Products, Roedy Green. http://mindprod.com Java custom programming, consulting and coaching.
Paulus de Boska - 24 Dec 2005 13:44 GMT John, the best way to learn is by studying examples and adapt them, experiment with them as much as possible, because you can read all you want, but things will more often than not work just a tad different from what you expect. My lessons are all based on examples, so feel free to take a look at them. (Your browser will need Java support, however, because I use applets. A lot .) --- Paul Hamaker, SEMM http://javalessons.com
Free MagazinesGet these publications absolutely FREE for up to 12 months. There are no hidden fees and no obligation. Simply choose a title, complete the application form and submit it. Read more ...
|
|
|