APL Cultivation: Difference between revisions

From APL Wiki
Jump to navigation Jump to search
m (Text replacement - "<source" to "<syntaxhighlight")
 
(2 intermediate revisions by the same user not shown)
Line 1: Line 1:
'''APL Cultivation''' is the title used for the series of 90-minute live chat lessons given by [[Adám Brudzewsky]] in the [[APL Orchard]] chat room. The name was first used for lesson 15 at the end of January 2018, but was since applied retroactively to all such lessons.
'''APL Cultivation''' was a series of 90-minute live chat lessons given by [[Adám Brudzewsky]] in the [[APL Orchard]] chat room in the period 2017–2020. Over the course of 2021–2022, [[user:xpqz|Stefan Kruger]] edited the content into a book called [[APL Cultivations]].


The first season consisted of 29 weekly sessions running from 18 October 2017 until 16 May 2018, covering most aspects of basic APL programming. Initially, the lessons were not organised, but were given completely impromptu. However, between lessons 2 and 3, Erik Konstantopoulos bookmarked the first two lessons using Stack Exchange's chat conversation bookmarking feature, and thus established the lessons as a numbered series.
The first season consisted of 29 weekly sessions running from 18 October 2017 until 16 May 2018, covering most aspects of basic APL programming. Initially, the lessons were not organised, but were given completely impromptu. However, between lessons 2 and 3, Erik Konstantopoulos bookmarked the first two lessons using Stack Exchange's chat conversation bookmarking feature, and thus established the lessons as a numbered series. The name was first used for lesson 15 at the end of January 2018, but was since applied retroactively to all such lessons.


The series continued on 28 November 2019, with more in-depth lessons every two-three weeks. This was sparked by interest among participants of a presentation by [[Morten Kromberg]] and [[Aaron Hsu]] called ''Pragmatic Array Oriented Functional Programming'', held during Jio talks 2019, after which a series of "APL Hacknights" were to be held in the APL Orchard. However, the audience of the first such eventtypos turned out mostly to be people who had ''not'' been at the Jio talk, and it was decided to fold this new series into a continuation of the previous one. This series ran for 20 sessions until 25 August, 2020.
The series continued on 28 November 2019, with more in-depth lessons every two-three weeks. This was sparked by interest among participants of a presentation by [[Morten Kromberg]] and [[Aaron Hsu]] called ''Pragmatic Array Oriented Functional Programming'', held during Jio talks 2019, after which a series of "APL Hacknights" were to be held in the APL Orchard. However, the audience of the first such eventtypos turned out mostly to be people who had ''not'' been at the Jio talk, and it was decided to fold this new series into a continuation of the previous one. This series ran for 20 sessions until 25 August, 2020.
Line 14: Line 14:
| 2 || [https://chat.stackexchange.com/rooms/52405/conversation/lesson-2-diving-into-functions-in-apl Diving Into Functions in APL] || Oct 25, 2017
| 2 || [https://chat.stackexchange.com/rooms/52405/conversation/lesson-2-diving-into-functions-in-apl Diving Into Functions in APL] || Oct 25, 2017
|-
|-
| 3 || [https://chat.stackexchange.com/rooms/52405/conversation/lesson-3-some-apl-operators----- Some APL Operators: <source lang=apl inline>/ ⌿ \ ⍀ ¨ ⍣ ⍨</source>] || Nov 1, 2017
| 3 || [https://chat.stackexchange.com/rooms/52405/conversation/lesson-3-some-apl-operators----- Some APL Operators: <syntaxhighlight lang=apl inline>/ ⌿ \ ⍀ ¨ ⍣ ⍨</syntaxhighlight>] || Nov 1, 2017
|-
|-
| 4 || [https://chat.stackexchange.com/rooms/52405/conversation/lesson-4-more-apl-operators-- More APL operators: <source lang=apl inline>∘ @ ⌶</source>] || Nov 8, 2017
| 4 || [https://chat.stackexchange.com/rooms/52405/conversation/lesson-4-more-apl-operators-- More APL operators: <syntaxhighlight lang=apl inline>∘ @ ⌶</syntaxhighlight>] || Nov 8, 2017
|-
|-
| 5 || [https://chat.stackexchange.com/rooms/52405/conversation/lesson-5-even-more-apl-operators-- Even more APL operators: <source lang=apl inline>⌺ ⌸</source>] || Nov 15, 2017
| 5 || [https://chat.stackexchange.com/rooms/52405/conversation/lesson-5-even-more-apl-operators-- Even more APL operators: <syntaxhighlight lang=apl inline>⌺ ⌸</syntaxhighlight>] || Nov 15, 2017
|-
|-
| 6 || [https://chat.stackexchange.com/rooms/52405/conversation/lesson-6-apl-functions----- APL functions: <source lang=apl inline>+-×÷*⍟⌹○!? !⌈⌊⊥⊤⊣⊢ =≠≤<>≥≡≢ ∨∧⍲⍱ ↑↓</source>] || Nov 22, 2017
| 6 || [https://chat.stackexchange.com/rooms/52405/conversation/lesson-6-apl-functions----- APL functions: <syntaxhighlight lang=apl inline>+-×÷*⍟⌹○!? !⌈⌊⊥⊤⊣⊢ =≠≤<>≥≡≢ ∨∧⍲⍱ ↑↓</syntaxhighlight>] || Nov 22, 2017
|-
|-
| 7 || [https://chat.stackexchange.com/rooms/52405/conversation/lesson-7-apl-functions- APL functions: <source lang=apl inline>⊂⊃⊆⌷</source>] || Nov 29, 2017
| 7 || [https://chat.stackexchange.com/rooms/52405/conversation/lesson-7-apl-functions- APL functions: <syntaxhighlight lang=apl inline>⊂⊃⊆⌷</syntaxhighlight>] || Nov 29, 2017
|-
|-
| 8 || [https://chat.stackexchange.com/rooms/52405/conversation/lesson-8-apl-functions-- APL functions: <source lang=apl inline>⍋⍒ ⍳</source>] || Dec 6, 2017
| 8 || [https://chat.stackexchange.com/rooms/52405/conversation/lesson-8-apl-functions-- APL functions: <syntaxhighlight lang=apl inline>⍋⍒ ⍳</syntaxhighlight>] || Dec 6, 2017
|-
|-
| 9 || [https://chat.stackexchange.com/rooms/52405/conversation/lesson-9-apl-functions--- APL functions: <source lang=apl inline>⍸∊⍷∪∩~ /\⌿⍀ ,⍪</source>] || Dec 13, 2017
| 9 || [https://chat.stackexchange.com/rooms/52405/conversation/lesson-9-apl-functions--- APL functions: <syntaxhighlight lang=apl inline>⍸∊⍷∪∩~ /\⌿⍀ ,⍪</syntaxhighlight>] || Dec 13, 2017
|-
|-
| 10 || [https://chat.stackexchange.com/rooms/52405/conversation/lesson-10-apl-functions-- APL functions <source lang=apl inline>⍴⌽⊖⍉ ⍎⍕</source>] || Dec 20, 2017
| 10 || [https://chat.stackexchange.com/rooms/52405/conversation/lesson-10-apl-functions-- APL functions <syntaxhighlight lang=apl inline>⍴⌽⊖⍉ ⍎⍕</syntaxhighlight>] || Dec 20, 2017
|-
|-
| 11 || [https://chat.stackexchange.com/rooms/52405/conversation/lesson-11-system-functions-behaviour-session System Functions: behaviour, session] || Jan 3, 2018
| 11 || [https://chat.stackexchange.com/rooms/52405/conversation/lesson-11-system-functions-behaviour-session System Functions: behaviour, session] || Jan 3, 2018
Line 56: Line 56:
| 23 || [https://chat.stackexchange.com/rooms/52405/conversation/lesson-23-transcribing-to-and-reading-trains Transcribing to and reading trains] || Mar 28, 2018
| 23 || [https://chat.stackexchange.com/rooms/52405/conversation/lesson-23-transcribing-to-and-reading-trains Transcribing to and reading trains] || Mar 28, 2018
|-
|-
| 24 || [https://chat.stackexchange.com/rooms/52405/conversation/lesson-24-r-and-s <source lang=apl inline>⎕R</source> and <source lang=apl inline>⎕S</source>] || Apr 3, 2018
| 24 || [https://chat.stackexchange.com/rooms/52405/conversation/lesson-24-r-and-s <syntaxhighlight lang=apl inline>⎕R</syntaxhighlight> and <syntaxhighlight lang=apl inline>⎕S</syntaxhighlight>] || Apr 3, 2018
|-
|-
| 25 || [https://chat.stackexchange.com/rooms/52405/conversation/lesson-25-understanding-function-application Understanding function application] || Apr 11, 2018
| 25 || [https://chat.stackexchange.com/rooms/52405/conversation/lesson-25-understanding-function-application Understanding function application] || Apr 11, 2018
Line 80: Line 80:
| 33 || [https://chat.stackexchange.com/rooms/52405/conversation/lesson-33-advanced-use-of- Advanced use of ⍤] || Jan 16, 2020
| 33 || [https://chat.stackexchange.com/rooms/52405/conversation/lesson-33-advanced-use-of- Advanced use of ⍤] || Jan 16, 2020
|-
|-
| 34 || [https://chat.stackexchange.com/rooms/52405/conversation/lesson-34-fk-in-depth <source lang=apl inline>f⍣k</source> in depth] || Jan 30, 2020
| 34 || [https://chat.stackexchange.com/rooms/52405/conversation/lesson-34-fk-in-depth <syntaxhighlight lang=apl inline>f⍣k</syntaxhighlight> in depth] || Jan 30, 2020
|-
|-
| 35 || [https://chat.stackexchange.com/rooms/52405/conversation/lesson-35-fg-in-depth <source lang=apl inline>f⍣g</source> in depth] || Feb 13, 2020
| 35 || [https://chat.stackexchange.com/rooms/52405/conversation/lesson-35-fg-in-depth <syntaxhighlight lang=apl inline>f⍣g</syntaxhighlight> in depth] || Feb 13, 2020
|-
|-
| 36 || [https://chat.stackexchange.com/rooms/52405/conversation/lesson-36-the-variant-option-operator--opt The variant option operator: <source lang=apl inline>⍠ ⎕OPT</source>] || Feb 27, 2020
| 36 || [https://chat.stackexchange.com/rooms/52405/conversation/lesson-36-the-variant-option-operator--opt The variant option operator: <syntaxhighlight lang=apl inline>⍠ ⎕OPT</syntaxhighlight>] || Feb 27, 2020
|-
|-
| 37 || [https://chat.stackexchange.com/rooms/52405/conversation/lesson-37--in-depth <source lang=apl inline>⊥</source> in depth] || Mar 12, 2020
| 37 || [https://chat.stackexchange.com/rooms/52405/conversation/lesson-37--in-depth <syntaxhighlight lang=apl inline>⊥</syntaxhighlight> in depth] || Mar 12, 2020
|-
|-
| 38 || [https://chat.stackexchange.com/rooms/52405/conversation/lesson-38--in-depth <source lang=apl inline>⊤</source> in depth] || Mar 26, 2020
| 38 || [https://chat.stackexchange.com/rooms/52405/conversation/lesson-38--in-depth <syntaxhighlight lang=apl inline>⊤</syntaxhighlight> in depth] || Mar 26, 2020
|-
|-
| 39 || [https://chat.stackexchange.com/rooms/52405/conversation/lesson-39-array-programming-techniques Array programming techniques] || Apr 7, 2020
| 39 || [https://chat.stackexchange.com/rooms/52405/conversation/lesson-39-array-programming-techniques Array programming techniques] || Apr 7, 2020
Line 94: Line 94:
| 40 || [https://chat.stackexchange.com/rooms/52405/conversation/lesson-40-condition-controlled-loops Condition-controlled loops] || Apr 21, 2020
| 40 || [https://chat.stackexchange.com/rooms/52405/conversation/lesson-40-condition-controlled-loops Condition-controlled loops] || Apr 21, 2020
|-
|-
| 41 || [https://chat.stackexchange.com/rooms/52405/conversation/lesson-41--in-depth <source lang=apl inline>⌹</source> in depth] || May 5, 2020
| 41 || [https://chat.stackexchange.com/rooms/52405/conversation/lesson-41--in-depth <syntaxhighlight lang=apl inline>⌹</syntaxhighlight> in depth] || May 5, 2020
|-
|-
| 42 || [https://chat.stackexchange.com/rooms/52405/conversation/lesson-42-array-coding-style-in-depth Array coding style in depth] || May 12, 2020
| 42 || [https://chat.stackexchange.com/rooms/52405/conversation/lesson-42-array-coding-style-in-depth Array coding style in depth] || May 12, 2020
Line 104: Line 104:
| 45 || [https://chat.stackexchange.com/rooms/52405/conversation/lesson-45-simple-plotting-continued Simple plotting continued] (with Nicolas Delcros) || Jun 30, 2020
| 45 || [https://chat.stackexchange.com/rooms/52405/conversation/lesson-45-simple-plotting-continued Simple plotting continued] (with Nicolas Delcros) || Jun 30, 2020
|-
|-
| 46 || [https://chat.stackexchange.com/rooms/52405/conversation/lesson-46-unique-mask--and-constant- Unique mask <source lang=apl inline>≠</source> and constant <source lang=apl inline>⍨</source>] || Jul 14, 2020
| 46 || [https://chat.stackexchange.com/rooms/52405/conversation/lesson-46-unique-mask--and-constant- Unique mask <syntaxhighlight lang=apl inline>≠</syntaxhighlight> and constant <syntaxhighlight lang=apl inline>⍨</syntaxhighlight>] || Jul 14, 2020
|-
|-
| 47 || [https://chat.stackexchange.com/rooms/52405/conversation/lesson-47-atop--and-over- Atop <source lang=apl inline>⍤</source> and Over <source lang=apl inline>⍥</source>] || Jul 28, 2020
| 47 || [https://chat.stackexchange.com/rooms/52405/conversation/lesson-47-atop--and-over- Atop <syntaxhighlight lang=apl inline>⍤</syntaxhighlight> and Over <syntaxhighlight lang=apl inline>⍥</syntaxhighlight>] || Jul 28, 2020
|-
|-
| 48 || [https://chat.stackexchange.com/rooms/52405/conversation/lesson-48-c-dt-1200 <source lang=apl inline>⎕C</source> <source lang=apl inline>⎕DT</source> <source lang=apl inline>1200⌶</source>] || Aug 11, 2020
| 48 || [https://chat.stackexchange.com/rooms/52405/conversation/lesson-48-c-dt-1200 <syntaxhighlight lang=apl inline>⎕C</syntaxhighlight> <syntaxhighlight lang=apl inline>⎕DT</syntaxhighlight> <syntaxhighlight lang=apl inline>1200⌶</syntaxhighlight>] || Aug 11, 2020
|-
|-
| 49 || [https://chat.stackexchange.com/rooms/52405/conversation/lesson-49-extensions-in-18-0--1-json Extensions in 18.0: <source lang=apl inline>⊂</source> <source lang=apl inline>⍸⍣¯1</source> <source lang=apl inline>⎕JSON</source>] || Aug 25, 2020
| 49 || [https://chat.stackexchange.com/rooms/52405/conversation/lesson-49-extensions-in-18-0--1-json Extensions in 18.0: <syntaxhighlight lang=apl inline>⊂</syntaxhighlight> <syntaxhighlight lang=apl inline>⍸⍣¯1</syntaxhighlight> <syntaxhighlight lang=apl inline>⎕JSON</syntaxhighlight>] || Aug 25, 2020
|}
|}



Latest revision as of 22:23, 10 September 2022

APL Cultivation was a series of 90-minute live chat lessons given by Adám Brudzewsky in the APL Orchard chat room in the period 2017–2020. Over the course of 2021–2022, Stefan Kruger edited the content into a book called APL Cultivations.

The first season consisted of 29 weekly sessions running from 18 October 2017 until 16 May 2018, covering most aspects of basic APL programming. Initially, the lessons were not organised, but were given completely impromptu. However, between lessons 2 and 3, Erik Konstantopoulos bookmarked the first two lessons using Stack Exchange's chat conversation bookmarking feature, and thus established the lessons as a numbered series. The name was first used for lesson 15 at the end of January 2018, but was since applied retroactively to all such lessons.

The series continued on 28 November 2019, with more in-depth lessons every two-three weeks. This was sparked by interest among participants of a presentation by Morten Kromberg and Aaron Hsu called Pragmatic Array Oriented Functional Programming, held during Jio talks 2019, after which a series of "APL Hacknights" were to be held in the APL Orchard. However, the audience of the first such eventtypos turned out mostly to be people who had not been at the Jio talk, and it was decided to fold this new series into a continuation of the previous one. This series ran for 20 sessions until 25 August, 2020.

Lessons

First season

Lesson Title Date
1 Introduction to Arrays in APL Oct 18, 2017
2 Diving Into Functions in APL Oct 25, 2017
3 Some APL Operators: / ⌿ \ ⍀ ¨ ⍣ ⍨ Nov 1, 2017
4 More APL operators: ∘ @ ⌶ Nov 8, 2017
5 Even more APL operators: ⌺ ⌸ Nov 15, 2017
6 APL functions: +-×÷*⍟⌹○!? !⌈⌊⊥⊤⊣⊢ =≠≤<>≥≡≢ ∨∧⍲⍱ ↑↓ Nov 22, 2017
7 APL functions: ⊂⊃⊆⌷ Nov 29, 2017
8 APL functions: ⍋⍒ ⍳ Dec 6, 2017
9 APL functions: ⍸∊⍷∪∩~ /\⌿⍀ ,⍪ Dec 13, 2017
10 APL functions ⍴⌽⊖⍉ ⍎⍕ Dec 20, 2017
11 System Functions: behaviour, session Jan 3, 2018
12 Constants, tools & external utils Jan 10, 2018
13 Code management, I/O, dates, Unicode files, errors Jan 17, 2018
14 Stack & workspace info, misc Jan 24, 2018
15 Control structures Jan 31, 2018
16 APL objects: namespaces Feb 6, 2018
17 APL objects: classes Feb 14, 2018
18 Class constructors & destructors Feb 21, 2018
19 APL objects: class properties Feb 27, 2018
20 APL objects: many-in-one properties, inheritance Mar 7, 2018
21 APL objects: overriding methods, keyed/numbered properties Mar 14, 2018
22 Programming techniques and style Mar 21, 2018
23 Transcribing to and reading trains Mar 28, 2018
24 ⎕R and ⎕S Apr 3, 2018
25 Understanding function application Apr 11, 2018
26 Concurrent APL threads Apr 18, 2018
27 Lookup without replacement Apr 25, 2018
28 User commands May 9, 2018
29 More user commands May 16, 2018

Second season

Lesson Title Date
30 Counting words faster Nov 28, 2019
31 Tradfns Dec 19, 2019
32 Basic use of ⍤ Jan 2, 2020
33 Advanced use of ⍤ Jan 16, 2020
34 f⍣k in depth Jan 30, 2020
35 f⍣g in depth Feb 13, 2020
36 The variant option operator: ⍠ ⎕OPT Feb 27, 2020
37 in depth Mar 12, 2020
38 in depth Mar 26, 2020
39 Array programming techniques Apr 7, 2020
40 Condition-controlled loops Apr 21, 2020
41 in depth May 5, 2020
42 Array coding style in depth May 12, 2020
43 Complex numbers in depth Jun 2, 2020
44 Simple plotting (with Nicolas Delcros) Jun 16, 2020
45 Simple plotting continued (with Nicolas Delcros) Jun 30, 2020
46 Unique mask and constant Jul 14, 2020
47 Atop and Over Jul 28, 2020
48 ⎕C ⎕DT 1200⌶ Aug 11, 2020
49 Extensions in 18.0: ⍸⍣¯1 ⎕JSON Aug 25, 2020

External links


APL community [edit]
Activities ConferencesUser groups and meetupsIverson AwardExercises
Chat rooms and forums APL FarmAPL OrchardAPL Wiki
People Phil AbramsBrian BeckerBob BerneckyLarry BreedCharles BrennerJim BrownAdám BrudzewskyGitte ChristensenPeter DonnellyJohn EarnestAdin FalkoffGarth FosterLib GibsonAaron HsuRoger HuiKen IversonMorten KrombergDick LathwellMarshall LochbaumEugene McDonnellRoger MooreTrenchard MoreAlan PerlisRaghu RanganathanHenry RichAl RoseJohn ScholesIan SharpBob SmithGeoff StreeterJoey TuttleArthur Whitney
Other APL TrustAPL Quote QuadBlogsBooksCase studiesFamous APL usersHumourJobsMerchandisePapersPodcastsTryAPLTry It OnlineVideo channels