I would use relevance rather than "complexity" to order primitive introduction.
If nothing else: the concepts involved in addition can be very complex if you do not start with the assumption that your audience already knows what you are talking about. That said, in practical terms "complexity" and "relevance" are approximately the same thing -- irrelevant concepts tend to be perceived as "complex". -- Raul On Fri, Feb 3, 2012 at 9:57 AM, Skip Cave <s...@caveconsulting.com> wrote: > A methodical approach to teaching J might be to group the primitives into > groups of similar functionality. Order these groups by complexity (simple > to complex), as well as perhaps ranking them by familiarity with > already-learned concepts from traditional math classes, most familiar > first. > > With a learning sequence defined, spend a class on each group of > primitives, starting with the simplest and most familiar functions (+-*%, > or perhaps = =. =:), and progress to the most complex and unfamiliar > functions.You should probably start with direct execution, and introduce > verb creation after a few classes on basic primitives. Some class time > should be spent on how to read and understand the vocabulary definitions. > > Homework for each class would focus on usage of that current classes' > primitives, with previously-covered primitives thrown in for good measure. > The homework problems should be constructed to not require primitives that > haven't been covered yet (though nothing would prevent an advanced student > from looking ahead and trying them). > > It would be interesting to create an online J class, much like the Khan > Academy on youtube. In fact, if you really wanted to introduce J to the > masses, create a math tutorial that follows and supports Khan's math > tutorials, using J as the tool. This would be similar to Iverson's > "Concrete Math Companion" which follows 'Concrete Mathematics' (Graham, > Knuth, and Patashnik (GKP)). > > Just a thought.. > > Skip > > > On Fri, Feb 3, 2012 at 2:27 AM, Linda Alvord <lindaalv...@verizon.net>wrote: > >> I agree, Don. I really was using a post from Roger because I find his the >> most difficult to untangle. This thread was a good one to explain my new >> thoughts about @ and [: >> >> My challenges are topics I might use to teach high school seniors studying >> precalculus, probability and statistics. They are similar to old APL >> contests I invented while I was teaching APL - to get better with the >> language myself. However, I'm not sure what would work in classes these >> days. >> >> At least I'm having fun with the readers of the forum. J is even becoming >> fun to use! >> >> Linda >> >> -----Original Message----- >> From: programming-boun...@jsoftware.com >> [mailto:programming-boun...@jsoftware.com] On Behalf Of Don Guinn >> Sent: Friday, February 03, 2012 12:04 AM >> To: Programming forum >> Subject: Re: [Jprogramming] Understanding C. , A. >> >> Might want to get beginners a little comfortable with J before showing them >> C. and A. >> >> On Thu, Feb 2, 2012 at 7:56 PM, Linda Alvord <lindaalv...@verizon.net >> >wrote: >> >> > I am rethinking my concern with @ and [: and am leaning toward using >> > explicit definitions as a way of teaching J to beginners as a natural >> > mathematical language. >> > >> > Some of the programmers responding to the forum think in idioms and use >> @ >> > happily. >> > >> > f >> > <:@-@[ C.&.|. ] >> > i >> > -@#@[ |. C. >> > k >> > <@i.@-@>:@[ C. ] >> > >> > 0thers favor the tacit approach with lots of [: >> > >> > g >> > ] C.&.|.~ [: <: [: - [ >> > h >> > [: |. ([: <: [: - [) C. [: |. ] >> > j >> > C. |.~ [: - [: # [ >> > >> > >> > Both styles are appropriate and I should not suggest one way or the >> other. >> > Many of you have suggested this. >> > >> > >> > We are looking for a simple way to introduce J to beginners. In my >> > opinion >> > we would introduce J as a mathematical language for solving problem. >> > >> > >> > I am suggest starting with expressions that produce desired results. >> > Developing from right to left may come naturally. >> > >> > (<:-3 6)C.&.|.'abc*ef*g' >> > **abcefg >> > >> > The next step is making explicit functions indicating if the intended use >> > is >> > monadic or dyadic. There is no use of @ or [: allowed at this point. >> > >> > g=: 13 :'(<:-x)C.&.|.y' >> > h=: 13 :'|.(<:-x)C.|.y' >> > j=: 13 :'(-#x)|.x C.y' >> > >> > Now exploring the tacit definitions would be appropriate in some >> > environments and can be explored an studied in terms of forks and hooks. >> > At this special code and common idioms can be explored and timing of >> > expressions can be compared. In the end all roads lead to Rome. >> > >> > 3 6 f 'abc*ef*g' >> > **abcefg >> > 3 6 g 'abc*ef*g' >> > **abcefg >> > 3 6 h 'abc*ef*g't >> > **abcefg >> > 3 6 i 'abc*ef*g' >> > **abcefg >> > 3 6 j 'abc*ef*g' >> > **abcefg >> > >> > >> > -----Original Message----- >> > From: programming-boun...@jsoftware.com >> > [mailto:programming-boun...@jsoftware.com] On Behalf Of Linda Alvord >> > Sent: Wednesday, February 01, 2012 6:01 PM >> > To: 'Programming forum' >> > Subject: Re: [Jprogramming] Understanding C. , A. >> > >> > Sorry I missed the version by Arie. Nice! >> > >> > 3 6 (i=:-@#@[ |. C.) 'abc*ef*g' >> > **abcefg >> > i >> > -@#@[ |. C. >> > >> > j=: 13 :'(-#x)|.x C.y' >> > j >> > C. |.~ [: - [: # [ >> > >> > 3 6 j 'abc*ef*g' >> > **abcefg >> > >> > Please let me know if you have concerns or modifications as I plan to use >> > different rules beginning with challenge 6. >> > >> > Henceforth I'll have no opinion concerning the merits of @ and [: I >> > hope >> > to learn to favor them both gracefully. >> > >> > Linda >> > >> > -----Original Message----- >> > From: programming-boun...@jsoftware.com >> > [mailto:programming-boun...@jsoftware.com] On Behalf Of Linda Alvord >> > Sent: Wednesday, February 01, 2012 5:20 PM >> > To: 'Programming forum' >> > Subject: Re: [Jprogramming] Understanding C. , A. >> > >> > I'm happiest with the explicit version. It shows the arguments needed for >> > the application. >> > >> > 3 6 (f=:<:@-@[ C.&.|. ]) 'abc*ef*g' >> > **abcefg >> > 3 6 f a=:'abc*ef*g' >> > **abcefg >> > >> > g=: 13 :'(<:-x)C.&.|.y'! >> > 3 6 g a >> > **abcefg >> > >> > f >> > <:@-@[ C.&.|. ] >> > g >> > ] C.&.|.~ [: <: [: - [ >> > g=: 13 :'(<:-x)C.&.|.y' >> > >> > J provides the ~ which shows up in the tacit version above. >> > >> > Then there is h with no ~ and no &. >> > >> > h=: 13 :'|.(<:-x)C.|.y' >> > h >> > [: |. ([: <: [: - [) C. [: |. ] >> > 3 6 h a >> > **abcefg >> > >> > Linda >> > >> > >> > -----Original Message----- >> > From: programming-boun...@jsoftware.com >> > [mailto:programming-boun...@jsoftware.com] On Behalf Of Roger Hui >> > Sent: Wednesday, February 01, 2012 11:26 AM >> > To: Programming forum >> > Subject: Re: [Jprogramming] Understanding C. , A. >> > >> > Personally, I dislike expressions with multiple uses of ~ as they make my >> > head spin. >> > >> > 3 6 (C.&.|.~ <:@-)~ 'abc*ef*g' >> > **abcefg >> > 3 6 (<:@-@[ C.&.|. ]) 'abc*ef*g' >> > **abcefg >> > >> > I much prefer the second over the first. >> > >> > >> > >> > On Wed, Feb 1, 2012 at 8:05 AM, Aai <agroeneveld...@gmail.com> wrote: >> > >> > > Ah, I see that's a bit like yours David. >> > > >> > > Modifying it for 1< #x >> > > >> > > 3 6 (C. |.~ -@#@[) 'abc*ef*g' >> > > **abcefg >> > > >> > > >> > > (from Essays) >> > > >> > > 3 6 (C.&.|.~ <:@-)~ 'abc*ef*g' >> > > **abcefg >> > >k >> > > >> > > >> > > >> > > On 01-02-12 16:47, Aai wrote: >> > > > Sorry for the noise. You should forget the previous ones I sent: they >> > > > are wrong. >> > > > >> > > > It looks like this one is ok: >> > > > >> > > > mtf=:_1&|.@C. >> > > > >> > > > ]samples=: '*abcef' |."0 1 ~-i.6 >> > > > *abcef >> > > > f*abce >> > > > ef*abc >> > > > cef*ab >> > > > bcef*a >> > > > abcef* >> > > > >> > > > >> > > > ]res=: '*' ([,-.~) "1 samples >> > > > *abcef >> > > > *fabce >> > > > *efabc >> > > > *cefab >> > > > *bcefa >> > > > *abcef >> > > > >> > > > res -: mtf&>/"1 (;~I.@:('*'&=))"1 samples >> > > > 1 >> > > > >> > > > >> > > > >> > > > >> > > >> > > -- >> > > Met vriendelijke groet, >> > > @@i = Arie Groeneveld >> > > >> > > ---------------------------------------------------------------------- >> > > For information about J forums see http://www.jsoftware.com/forums.htm >> > > >> > ---------------------------------------------------------------------- >> > For information about J forums see http://www.jsoftware.com/forums.htm >> > >> > ---------------------------------------------------------------------- >> > For information about J forums see http://www.jsoftware.com/forums.htm >> > >> > ---------------------------------------------------------------------- >> > For information about J forums see http://www.jsoftware.com/forums.htm >> > >> > ---------------------------------------------------------------------- >> > For information about J forums see http://www.jsoftware.com/forums.htm >> > >> ---------------------------------------------------------------------- >> For information about J forums see http://www.jsoftware.com/forums.htm >> >> ---------------------------------------------------------------------- >> For information about J forums see http://www.jsoftware.com/forums.htm >> > > > > -- > Skip Cave > Cave Consulting LLC > Phone: 214-460-4861 > ---------------------------------------------------------------------- > For information about J forums see http://www.jsoftware.com/forums.htm ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm