From: Gavin Sinclair Date: 2004-10-05T23:14:32+09:00 Subject: Re: A ruby course On Tuesday, October 5, 2004, 3:17:47 AM, Brian wrote: > Hello List, > again I ask for your help. I'm going to give a 16 hours course on ruby > this week, and I've created some slides to aid me with this. > I have to admit that some examples might not be as bright as I wish, and > also there are missing some exercises. > I created the slides in english, such that they can be used by a bigger > part of the community if need should be. > The slides will not cover all that I hope to say in the course, when the > slides have finished I will start with a free experimentation phase > based on my ants sample implementation > http://ruby.brian-schroeder.de/ants/ > It would be great if some of you could look at the slides and correct > the language and if somebody comes up with a great example or exercise I > would also be glad for comments. > The slides are located at > http://ruby.brian-schroeder.de/course/ p4. Output doesn't fit on page (what I'll call "output overflow"). p7. Output overflow, plu inappropriate full justification of code. BTW: why can I see "this=is=the=result;nil" all over the place? Yuck. p8. s/follow/follows/ s/shure/sure/ p10. s/the class/the class./ p12. s/vi/vim/ :) p13. Prefer a typewriter (monospace) font. *Much* prefer. This goes for most, if not all, code and output. But *especially* on this page :) p14. s/into ri/into irb/ I'll just pause to say that this is a very very very good set of slides, and attractively presented. Well done. p16. s/can be used/can be used.../ s/but beware/...but beware/ p19. "map do ... end" reads badly to me, as a matter of style, because map is not *doing* anything; it's generating a value. So I prefer to read "map { ... }". I realise you're probably trying to keep it simple. p20. You've got room; format line 9 onto three lines for clarity. p21. Oh, I see. You may not have room. Consider it anyway. p22. Boring example. Think of something that generates an interesting result. p23. s/instanciated/instantiated/ s/n times/n times./ s/longest_string ,/longest_string,/ s/shortest_string/shortest_string,/ p24. s/"/""/ p28. Good exercise. With the Fibonacci generator class, give example usage and output so students know what they're aiming for. This will require its own slide. p29. s/A real application/A Real Application/ (suggestion only) p31. s/gui/GUI/ p32. Lines 2 and 3 have inconsistent punctuation. Add a period, or remove one. (Nice example app, by the way.) p33. Is it possible to show us a "screenshot" of the application before launching into improvements? p34. As per p32. p36. s/Re raise/Re-raise/ p36. What about plain old "rescue"? (i.e. what does it rescue by default?) p37. Slight output overflow. s/running./running/ ? p38. s/running./running/ ? p39. Format line 8 on several lines for readability. p42. s/clients socket/client's socket/ s/clients-thread/the client's thread/ p43. Title case? p44. "Accessor functions" repeated. "Modules" and "Modules Exercises": no other outline has this information. p45. s/propertys/properties/ The "Calculated Property" and "Shortcut" boxes would look better if their positions were reversed. p47. s/array like/array-like/g s/, can be used/ can be used/g Slight overflow bottom right. p48. s/christian/Christian/ (I think; I use "given name" anyway.) The fields and descrptions don't match!! s/String::split/String#split/ Perhaps you want Person#name -> Name object, with Name#first and Name#last. Then Person#age and Person#gender to complete the exercise. p49. s/no special/not a special/ s/function,/function/ This slide is confusing. You're not demonstrating the ability to "change classes, functions, modules at runtime". p50. 0! == 1 p51. Good exercise. How about another? p52. It would be good to teach extending objects, because it's core to Ruby, and important when understanding "class methods". But you can emphasise that it's advanced material, so students needn't be worried if they don't get it straight away. (It's not *that* hard to accept, anyway... :) p53. A comment on line 21 would help: "Includes the AntGame namespace to this context", or something. p54. I can't follow this code at a (late night) glance, so I hope you're explaining it well in person :) p55. Missing exercises. p56. Title case? p57. Again, second-level headings in the section overview are inconsistent with the early style. So close, but so tired. I'll review the rest tomorrow. This is a *brilliant* learning/teaching resource. I'm teaching a couple of friends Ruby at the moment, and I'll be giving this to them for self-study. Cheers, Gavin