diff --git a/README.md b/README.md index c65942c..47bbc93 100644 --- a/README.md +++ b/README.md @@ -38,3 +38,13 @@ Replace `main.adb` with your actual source filename. Use your Forge username and **Bisaya:** Basaha ang code, tag-ana ang resulta, padagana, ug ipasabot ang kausaban. Susihon ang `git diff` sa dili pa mag-commit. The source SDK is in [matt/open_agila_sdk](https://git.agilaos.com/matt/open_agila_sdk). Continue with boundary tests, failure cases, and the automated knowledge checks. + +## Expanded learning paths + +129 additional lessons cover web development; Pascal and Objective-Pascal interoperability; C, C++, C#, Objective-C, V, Swift, Python, Ruby and BASIC; CPU architecture; OS and server engineering; AI runtimes; algorithms; concurrency; secure software; networking; and CPU/GPU core and memory mapping. English, Tagalog, and Bisaya each have their own folders. Existing Ada and Flying V lessons remain available. + +Each module folder contains numbered lesson folders, runnable source where applicable, and a readable lesson file. Analysis and hardware exercises may require an external development environment. Course checks are on University, and track certificates record completed lesson checks and module assessments. + +The browser lab uses C17, C++17, Free Pascal, Rust, GNAT Ada, Mono C#, GNUstep Objective-C, V, the Flying V SDK host adapter, Swift on Linux, Python, Ruby, and Bywater BASIC. Web previews run HTML/CSS/JavaScript in a sandboxed browser frame. Apple UI frameworks and a real GPU are not available on this teaching server. Objective Ada remains a planned Agila language; no invented compiler or syntax is supplied. + +The public `open_kernel` at revision `9af96aa` is a host prototype with initialization stubs, not a bootable OS image. The public `open_agx` at `b14b362` currently uses its CPU reference backend. Lessons distinguish simulations, measured host results, and untested target hardware. diff --git a/ceb/basic-foundations-20261101/README.md b/ceb/basic-foundations-20261101/README.md new file mode 100644 index 0000000..dd4cb9a --- /dev/null +++ b/ceb/basic-foundations-20261101/README.md @@ -0,0 +1,9 @@ +# BASIC — unang mga lakang + +[Agila University track](https://edu.agilaos.com/track.php?track=21&lang=ceb) + +Mga 15 minutos matag leksyon. Tag-ana, padagana, usba, ipasabot, ug tubaga ang pagsusi sa University. + +- [Lesson 1: Imong unang programa nga mapasabot](lesson-1/lesson.html) +- [Lesson 2: Mga value ug desisyon](lesson-2/lesson.html) +- [Lesson 3: Function ug klarong lagda](lesson-3/lesson.html) diff --git a/ceb/basic-foundations-20261101/lesson-1/lesson.html b/ceb/basic-foundations-20261101/lesson-1/lesson.html new file mode 100644 index 0000000..1ec30f2 --- /dev/null +++ b/ceb/basic-foundations-20261101/lesson-1/lesson.html @@ -0,0 +1,4 @@ +Imong unang programa nga mapasabot

Imong unang programa nga mapasabot

15-minutong sesyon: pagbasa sulod sa 3 minutos, pag-trace sa 3, pag-eksperimento sa 7, ug pagtubag sa check sa 2. Paggahin og dugang oras kon gikinahanglan.

Usa ka hugpong sa mga sugo ang programa. Basaha gikan sa entry point ngadto sa output statement. Data ang teksto sulod sa mga kinutlo; sugo ang output operation. Tag-ana ang linya sa dili pa padaganon. Usba lang ang mensahe, padagana pag-usab, ug tangtanga ang usa ka gikinahanglang punctuation aron basahon ang unang error. Ibalik ang nagtrabaho nga source.

Ang line number nagpakita sa han-ay sa programa. Ang GOSUB moadto sa subroutine ug ang RETURN mobalik sa caller. Ang SYSTEM mogawas sa interpreter. Lahi-lahi ang BASIC dialect; dili awtomatikong modagan kining eksaktong dialect sa 6502 o Z80.

10 REM Change the message
+20 PRINT "Andam"
+30 SYSTEM
+

Gipaabot nga resulta: Andam

Praktis ug ebidensiya

Isulat ang tagna, aktuwal nga resulta, ug hinungdan sa pagkapareho o kalainan. Ang completion check mosukod sa pagsabot; ang practice task mopauswag sa kahanas.

Reperensiya sa pinulongan

\ No newline at end of file diff --git a/ceb/basic-foundations-20261101/lesson-1/main.bas b/ceb/basic-foundations-20261101/lesson-1/main.bas new file mode 100644 index 0000000..ee7fe4b --- /dev/null +++ b/ceb/basic-foundations-20261101/lesson-1/main.bas @@ -0,0 +1,3 @@ +10 REM Change the message +20 PRINT "Andam" +30 SYSTEM diff --git a/ceb/basic-foundations-20261101/lesson-2/lesson.html b/ceb/basic-foundations-20261101/lesson-2/lesson.html new file mode 100644 index 0000000..f33c78b --- /dev/null +++ b/ceb/basic-foundations-20261101/lesson-2/lesson.html @@ -0,0 +1,5 @@ +Mga value ug desisyon

Mga value ug desisyon

15-minutong sesyon: pagbasa sulod sa 3 minutos, pag-trace sa 3, pag-eksperimento sa 7, ug pagtubag sa check sa 2. Paggahin og dugang oras kon gikinahanglan.

Ang desisyon mopili kon unsang statement ang modagan. Ang lagda mao ang “andam sa 80 pataas.” Sunda ang 85, 79, 80, ug 81 sa dili pa padaganon. Apil ang 80 sa comparison. Mahimong sakto sa 85 apan sayop sa utlanan. Idugang ang lahi nga check sa pagbalibad sa ubos sa 0 o labaw sa 100; lahi ang invalid ug nagkinahanglan og praktis.

Ang line number nagpakita sa han-ay sa programa. Ang GOSUB moadto sa subroutine ug ang RETURN mobalik sa caller. Ang SYSTEM mogawas sa interpreter. Lahi-lahi ang BASIC dialect; dili awtomatikong modagan kining eksaktong dialect sa 6502 o Z80.

10 LET S = 85
+20 IF S >= 80 THEN PRINT "Andam"
+30 IF S < 80 THEN PRINT "Pagpraktis"
+40 SYSTEM
+

Gipaabot nga resulta: Andam

Praktis ug ebidensiya

Isulat ang tagna, aktuwal nga resulta, ug hinungdan sa pagkapareho o kalainan. Ang completion check mosukod sa pagsabot; ang practice task mopauswag sa kahanas.

Reperensiya sa pinulongan

\ No newline at end of file diff --git a/ceb/basic-foundations-20261101/lesson-2/main.bas b/ceb/basic-foundations-20261101/lesson-2/main.bas new file mode 100644 index 0000000..34da9fe --- /dev/null +++ b/ceb/basic-foundations-20261101/lesson-2/main.bas @@ -0,0 +1,4 @@ +10 LET S = 85 +20 IF S >= 80 THEN PRINT "Andam" +30 IF S < 80 THEN PRINT "Pagpraktis" +40 SYSTEM diff --git a/ceb/basic-foundations-20261101/lesson-3/lesson.html b/ceb/basic-foundations-20261101/lesson-3/lesson.html new file mode 100644 index 0000000..f0cf239 --- /dev/null +++ b/ceb/basic-foundations-20261101/lesson-3/lesson.html @@ -0,0 +1,9 @@ +Function ug klarong lagda

Function ug klarong lagda

15-minutong sesyon: pagbasa sulod sa 3 minutos, pag-trace sa 3, pag-eksperimento sa 7, ug pagtubag sa check sa 2. Paggahin og dugang oras kon gikinahanglan.

Ang function o subroutine nagngalan sa calculation nga magamit pag-usab. Ang lagda modawat og nonnegative total ug completed; zero ang resulta kon nakaabot o milapas ang completed sa total. Kon dili, ibalik ang kalainan. Sunda ang (4,1), (4,4), (4,5), ug (0,0). Ibulag ang pagpatik sa calculation. Ipasabot nganong gawas sa sakop ang negative input ug paghimo og pagbalibad sa dili pa modawat og external input.

Ang line number nagpakita sa han-ay sa programa. Ang GOSUB moadto sa subroutine ug ang RETURN mobalik sa caller. Ang SYSTEM mogawas sa interpreter. Lahi-lahi ang BASIC dialect; dili awtomatikong modagan kining eksaktong dialect sa 6502 o Z80.

30 LET T=4
+40 LET D=1
+50 GOSUB 200
+60 PRINT R
+70 SYSTEM
+200 LET R=T-D
+210 IF R<0 THEN LET R=0
+220 RETURN
+

Gipaabot nga resulta: 3

Praktis ug ebidensiya

Isulat ang tagna, aktuwal nga resulta, ug hinungdan sa pagkapareho o kalainan. Ang completion check mosukod sa pagsabot; ang practice task mopauswag sa kahanas.

Reperensiya sa pinulongan

\ No newline at end of file diff --git a/ceb/basic-foundations-20261101/lesson-3/main.bas b/ceb/basic-foundations-20261101/lesson-3/main.bas new file mode 100644 index 0000000..f690fb2 --- /dev/null +++ b/ceb/basic-foundations-20261101/lesson-3/main.bas @@ -0,0 +1,8 @@ +30 LET T=4 +40 LET D=1 +50 GOSUB 200 +60 PRINT R +70 SYSTEM +200 LET R=T-D +210 IF R<0 THEN LET R=0 +220 RETURN diff --git a/ceb/basic-practice-20261101/README.md b/ceb/basic-practice-20261101/README.md new file mode 100644 index 0000000..18521e8 --- /dev/null +++ b/ceb/basic-practice-20261101/README.md @@ -0,0 +1,9 @@ +# BASIC — paghimo ug pagsulay + +[Agila University track](https://edu.agilaos.com/track.php?track=21&lang=ceb) + +Mga 15 minutos matag leksyon. Tag-ana, padagana, usba, ipasabot, ug tubaga ang pagsusi sa University. + +- [Lesson 1: Collection ug balikbalik nga buluhaton](lesson-1/lesson.html) +- [Lesson 2: Usa ka importante nga kinaiya sa pinulongan](lesson-2/lesson.html) +- [Lesson 3: Paghimo, gub-a, ug sulayi ang study planner](lesson-3/lesson.html) diff --git a/ceb/basic-practice-20261101/lesson-1/lesson.html b/ceb/basic-practice-20261101/lesson-1/lesson.html new file mode 100644 index 0000000..45baa63 --- /dev/null +++ b/ceb/basic-practice-20261101/lesson-1/lesson.html @@ -0,0 +1,11 @@ +Collection ug balikbalik nga buluhaton

Collection ug balikbalik nga buluhaton

15-minutong sesyon: pagbasa sulod sa 3 minutos, pag-trace sa 3, pag-eksperimento sa 7, ug pagtubag sa check sa 2. Paggahin og dugang oras kon gikinahanglan.

Ang collection nagtipig sa may kalabotang value. Bisitahon sa loop ang 1, 2, ug 3; ang total gikan sa 0 mahimong 1, 3, ug 6. Isulat ang trace imbes manag-an. Ilha ang una ug kataposang valid nga posisyon: mahimong 1-based ang Pascal array samtang zero-based ang daghang ubang container. Idugang og value ug taronga ang bounds. Ipasabot ang resulta alang sa empty collection.

Ang line number nagpakita sa han-ay sa programa. Ang GOSUB moadto sa subroutine ug ang RETURN mobalik sa caller. Ang SYSTEM mogawas sa interpreter. Lahi-lahi ang BASIC dialect; dili awtomatikong modagan kining eksaktong dialect sa 6502 o Z80.

10 DIM M(3)
+20 LET M(1)=1
+30 LET M(2)=2
+40 LET M(3)=3
+50 LET T=0
+60 FOR I=1 TO 3
+70 LET T=T+M(I)
+80 NEXT I
+90 PRINT T
+100 SYSTEM
+

Gipaabot nga resulta: 6

Praktis ug ebidensiya

Isulat ang tagna, aktuwal nga resulta, ug hinungdan sa pagkapareho o kalainan. Ang completion check mosukod sa pagsabot; ang practice task mopauswag sa kahanas.

Reperensiya sa pinulongan

\ No newline at end of file diff --git a/ceb/basic-practice-20261101/lesson-1/main.bas b/ceb/basic-practice-20261101/lesson-1/main.bas new file mode 100644 index 0000000..ad76e72 --- /dev/null +++ b/ceb/basic-practice-20261101/lesson-1/main.bas @@ -0,0 +1,10 @@ +10 DIM M(3) +20 LET M(1)=1 +30 LET M(2)=2 +40 LET M(3)=3 +50 LET T=0 +60 FOR I=1 TO 3 +70 LET T=T+M(I) +80 NEXT I +90 PRINT T +100 SYSTEM diff --git a/ceb/basic-practice-20261101/lesson-2/lesson.html b/ceb/basic-practice-20261101/lesson-2/lesson.html new file mode 100644 index 0000000..415a80c --- /dev/null +++ b/ceb/basic-practice-20261101/lesson-2/lesson.html @@ -0,0 +1,6 @@ +Usa ka importante nga kinaiya sa pinulongan

Usa ka importante nga kinaiya sa pinulongan

15-minutong sesyon: pagbasa sulod sa 3 minutos, pag-trace sa 3, pag-eksperimento sa 7, ug pagtubag sa check sa 2. Paggahin og dugang oras kon gikinahanglan.

Gamita ang nota sa pinulongan sa ubos aron ipasabot ang pag-usab sa state. Ilha unsa ang gikopya, gipaambit, mahimong mapakyas, ug gibuhian. Dili tanan nga pangutana magamit niini nga programa: isulti kung hain. Paghimo og usa ka kausaban, tag-ana ang epekto, ug itandi sa aktuwal nga resulta. Mahimong lahi ang lagda sa pamilyar nga operator sa laing pinulongan.

Ang line number nagpakita sa han-ay sa programa. Ang GOSUB moadto sa subroutine ug ang RETURN mobalik sa caller. Ang SYSTEM mogawas sa interpreter. Lahi-lahi ang BASIC dialect; dili awtomatikong modagan kining eksaktong dialect sa 6502 o Z80.

Tinuyong modelo sa unsigned 8-bit wrap ang MOD expression: ang 255 + 1 mahimong 0 modulo 256. Dili niini usbon ang numeric representation sa BASIC interpreter o i-emulate ang 6502 CPU.

10 REM An 8-bit unsigned wrap is modeled explicitly
+20 LET VALUE=255
+30 LET WRAPPED=(VALUE+1) MOD 256
+40 PRINT WRAPPED
+50 SYSTEM
+

Gipaabot nga resulta: 0

Praktis ug ebidensiya

Isulat ang tagna, aktuwal nga resulta, ug hinungdan sa pagkapareho o kalainan. Ang completion check mosukod sa pagsabot; ang practice task mopauswag sa kahanas.

Reperensiya sa pinulongan

\ No newline at end of file diff --git a/ceb/basic-practice-20261101/lesson-2/main.bas b/ceb/basic-practice-20261101/lesson-2/main.bas new file mode 100644 index 0000000..993afdf --- /dev/null +++ b/ceb/basic-practice-20261101/lesson-2/main.bas @@ -0,0 +1,5 @@ +10 REM An 8-bit unsigned wrap is modeled explicitly +20 LET VALUE=255 +30 LET WRAPPED=(VALUE+1) MOD 256 +40 PRINT WRAPPED +50 SYSTEM diff --git a/ceb/basic-practice-20261101/lesson-3/lesson.html b/ceb/basic-practice-20261101/lesson-3/lesson.html new file mode 100644 index 0000000..c64d79a --- /dev/null +++ b/ceb/basic-practice-20261101/lesson-3/lesson.html @@ -0,0 +1,10 @@ +Paghimo, gub-a, ug sulayi ang study planner

Paghimo, gub-a, ug sulayi ang study planner

15-minutong sesyon: pagbasa sulod sa 3 minutos, pag-trace sa 3, pag-eksperimento sa 7, ug pagtubag sa check sa 2. Paggahin og dugang oras kon gikinahanglan.

Ang mapuslanong test motandi sa resulta ug requirement. Dili angay mahimong negative ang nahibiling trabaho sa nonnegative input domain sa planner. Padagana ang starter, tuyoang tangtanga ang proteksiyon kon labaw sa total ang completed, ug siguroa nga adunay check nga mapakyas. Ibalik kini. Idugang ang duha ka study task, summary, ug boundary cases. I-save ang source ug ebidensiya sa Agila Forge. Ipasabot ang matag linya, apil ang gisugyot sa AI.

Ang line number nagpakita sa han-ay sa programa. Ang GOSUB moadto sa subroutine ug ang RETURN mobalik sa caller. Ang SYSTEM mogawas sa interpreter. Lahi-lahi ang BASIC dialect; dili awtomatikong modagan kining eksaktong dialect sa 6502 o Z80.

10 LET T=4
+20 LET D=5
+30 GOSUB 200
+40 IF R<>0 THEN PRINT "Test failed"
+50 IF R=0 THEN PRINT "Nipasar"
+60 SYSTEM
+200 LET R=T-D
+210 IF R<0 THEN LET R=0
+220 RETURN
+

Gipaabot nga resulta: Nipasar

Praktis ug ebidensiya

Isulat ang tagna, aktuwal nga resulta, ug hinungdan sa pagkapareho o kalainan. Ang completion check mosukod sa pagsabot; ang practice task mopauswag sa kahanas.

Reperensiya sa pinulongan

\ No newline at end of file diff --git a/ceb/basic-practice-20261101/lesson-3/main.bas b/ceb/basic-practice-20261101/lesson-3/main.bas new file mode 100644 index 0000000..7b380b7 --- /dev/null +++ b/ceb/basic-practice-20261101/lesson-3/main.bas @@ -0,0 +1,9 @@ +10 LET T=4 +20 LET D=5 +30 GOSUB 200 +40 IF R<>0 THEN PRINT "Test failed" +50 IF R=0 THEN PRINT "Nipasar" +60 SYSTEM +200 LET R=T-D +210 IF R<0 THEN LET R=0 +220 RETURN diff --git a/ceb/c-foundations-20261101/README.md b/ceb/c-foundations-20261101/README.md new file mode 100644 index 0000000..3dae34e --- /dev/null +++ b/ceb/c-foundations-20261101/README.md @@ -0,0 +1,9 @@ +# C — unang mga lakang + +[Agila University track](https://edu.agilaos.com/track.php?track=12&lang=ceb) + +Mga 15 minutos matag leksyon. Tag-ana, padagana, usba, ipasabot, ug tubaga ang pagsusi sa University. + +- [Lesson 1: Imong unang programa nga mapasabot](lesson-1/lesson.html) +- [Lesson 2: Mga value ug desisyon](lesson-2/lesson.html) +- [Lesson 3: Function ug klarong lagda](lesson-3/lesson.html) diff --git a/ceb/c-foundations-20261101/lesson-1/lesson.html b/ceb/c-foundations-20261101/lesson-1/lesson.html new file mode 100644 index 0000000..e4c49e2 --- /dev/null +++ b/ceb/c-foundations-20261101/lesson-1/lesson.html @@ -0,0 +1,8 @@ +Imong unang programa nga mapasabot

Imong unang programa nga mapasabot

15-minutong sesyon: pagbasa sulod sa 3 minutos, pag-trace sa 3, pag-eksperimento sa 7, ug pagtubag sa check sa 2. Paggahin og dugang oras kon gikinahanglan.

Usa ka hugpong sa mga sugo ang programa. Basaha gikan sa entry point ngadto sa output statement. Data ang teksto sulod sa mga kinutlo; sugo ang output operation. Tag-ana ang linya sa dili pa padaganon. Usba lang ang mensahe, padagana pag-usab, ug tangtanga ang usa ka gikinahanglang punctuation aron basahon ang unang error. Ibalik ang nagtrabaho nga source.

Magsugod ang C sa main. Ang stdio.h nagdeklarar sa output functions; ang puts modugang og bag-ong linya. Semicolon ang kataposan sa statement. Lahi ang integer ug pointer.

#include <stdio.h>
+#include <assert.h>
+
+int main(void) {
+    puts("Andam");
+    return 0;
+}
+

Gipaabot nga resulta: Andam

Praktis ug ebidensiya

Isulat ang tagna, aktuwal nga resulta, ug hinungdan sa pagkapareho o kalainan. Ang completion check mosukod sa pagsabot; ang practice task mopauswag sa kahanas.

Reperensiya sa pinulongan

\ No newline at end of file diff --git a/ceb/c-foundations-20261101/lesson-1/main.c b/ceb/c-foundations-20261101/lesson-1/main.c new file mode 100644 index 0000000..2bba3d0 --- /dev/null +++ b/ceb/c-foundations-20261101/lesson-1/main.c @@ -0,0 +1,7 @@ +#include +#include + +int main(void) { + puts("Andam"); + return 0; +} diff --git a/ceb/c-foundations-20261101/lesson-2/lesson.html b/ceb/c-foundations-20261101/lesson-2/lesson.html new file mode 100644 index 0000000..f4336d4 --- /dev/null +++ b/ceb/c-foundations-20261101/lesson-2/lesson.html @@ -0,0 +1,9 @@ +Mga value ug desisyon

Mga value ug desisyon

15-minutong sesyon: pagbasa sulod sa 3 minutos, pag-trace sa 3, pag-eksperimento sa 7, ug pagtubag sa check sa 2. Paggahin og dugang oras kon gikinahanglan.

Ang desisyon mopili kon unsang statement ang modagan. Ang lagda mao ang “andam sa 80 pataas.” Sunda ang 85, 79, 80, ug 81 sa dili pa padaganon. Apil ang 80 sa comparison. Mahimong sakto sa 85 apan sayop sa utlanan. Idugang ang lahi nga check sa pagbalibad sa ubos sa 0 o labaw sa 100; lahi ang invalid ug nagkinahanglan og praktis.

Magsugod ang C sa main. Ang stdio.h nagdeklarar sa output functions; ang puts modugang og bag-ong linya. Semicolon ang kataposan sa statement. Lahi ang integer ug pointer.

#include <stdio.h>
+#include <assert.h>
+
+int main(void) {
+    int score = 85;
+    if (score >= 80) puts("Andam"); else puts("Pagpraktis");
+    return 0;
+}
+

Gipaabot nga resulta: Andam

Praktis ug ebidensiya

Isulat ang tagna, aktuwal nga resulta, ug hinungdan sa pagkapareho o kalainan. Ang completion check mosukod sa pagsabot; ang practice task mopauswag sa kahanas.

Reperensiya sa pinulongan

\ No newline at end of file diff --git a/ceb/c-foundations-20261101/lesson-2/main.c b/ceb/c-foundations-20261101/lesson-2/main.c new file mode 100644 index 0000000..07d410f --- /dev/null +++ b/ceb/c-foundations-20261101/lesson-2/main.c @@ -0,0 +1,8 @@ +#include +#include + +int main(void) { + int score = 85; + if (score >= 80) puts("Andam"); else puts("Pagpraktis"); + return 0; +} diff --git a/ceb/c-foundations-20261101/lesson-3/lesson.html b/ceb/c-foundations-20261101/lesson-3/lesson.html new file mode 100644 index 0000000..9f5193b --- /dev/null +++ b/ceb/c-foundations-20261101/lesson-3/lesson.html @@ -0,0 +1,8 @@ +Function ug klarong lagda

Function ug klarong lagda

15-minutong sesyon: pagbasa sulod sa 3 minutos, pag-trace sa 3, pag-eksperimento sa 7, ug pagtubag sa check sa 2. Paggahin og dugang oras kon gikinahanglan.

Ang function o subroutine nagngalan sa calculation nga magamit pag-usab. Ang lagda modawat og nonnegative total ug completed; zero ang resulta kon nakaabot o milapas ang completed sa total. Kon dili, ibalik ang kalainan. Sunda ang (4,1), (4,4), (4,5), ug (0,0). Ibulag ang pagpatik sa calculation. Ipasabot nganong gawas sa sakop ang negative input ug paghimo og pagbalibad sa dili pa modawat og external input.

Magsugod ang C sa main. Ang stdio.h nagdeklarar sa output functions; ang puts modugang og bag-ong linya. Semicolon ang kataposan sa statement. Lahi ang integer ug pointer.

#include <stdio.h>
+#include <assert.h>
+int remaining(int total, int done) { return done >= total ? 0 : total - done; }
+int main(void) {
+    printf("%d\n", remaining(4, 1));
+    return 0;
+}
+

Gipaabot nga resulta: 3

Praktis ug ebidensiya

Isulat ang tagna, aktuwal nga resulta, ug hinungdan sa pagkapareho o kalainan. Ang completion check mosukod sa pagsabot; ang practice task mopauswag sa kahanas.

Reperensiya sa pinulongan

\ No newline at end of file diff --git a/ceb/c-foundations-20261101/lesson-3/main.c b/ceb/c-foundations-20261101/lesson-3/main.c new file mode 100644 index 0000000..680a002 --- /dev/null +++ b/ceb/c-foundations-20261101/lesson-3/main.c @@ -0,0 +1,7 @@ +#include +#include +int remaining(int total, int done) { return done >= total ? 0 : total - done; } +int main(void) { + printf("%d\n", remaining(4, 1)); + return 0; +} diff --git a/ceb/c-practice-20261101/README.md b/ceb/c-practice-20261101/README.md new file mode 100644 index 0000000..6312c1c --- /dev/null +++ b/ceb/c-practice-20261101/README.md @@ -0,0 +1,9 @@ +# C — paghimo ug pagsulay + +[Agila University track](https://edu.agilaos.com/track.php?track=12&lang=ceb) + +Mga 15 minutos matag leksyon. Tag-ana, padagana, usba, ipasabot, ug tubaga ang pagsusi sa University. + +- [Lesson 1: Collection ug balikbalik nga buluhaton](lesson-1/lesson.html) +- [Lesson 2: Usa ka importante nga kinaiya sa pinulongan](lesson-2/lesson.html) +- [Lesson 3: Paghimo, gub-a, ug sulayi ang study planner](lesson-3/lesson.html) diff --git a/ceb/c-practice-20261101/lesson-1/lesson.html b/ceb/c-practice-20261101/lesson-1/lesson.html new file mode 100644 index 0000000..fdf03de --- /dev/null +++ b/ceb/c-practice-20261101/lesson-1/lesson.html @@ -0,0 +1,11 @@ +Collection ug balikbalik nga buluhaton

Collection ug balikbalik nga buluhaton

15-minutong sesyon: pagbasa sulod sa 3 minutos, pag-trace sa 3, pag-eksperimento sa 7, ug pagtubag sa check sa 2. Paggahin og dugang oras kon gikinahanglan.

Ang collection nagtipig sa may kalabotang value. Bisitahon sa loop ang 1, 2, ug 3; ang total gikan sa 0 mahimong 1, 3, ug 6. Isulat ang trace imbes manag-an. Ilha ang una ug kataposang valid nga posisyon: mahimong 1-based ang Pascal array samtang zero-based ang daghang ubang container. Idugang og value ug taronga ang bounds. Ipasabot ang resulta alang sa empty collection.

Magsugod ang C sa main. Ang stdio.h nagdeklarar sa output functions; ang puts modugang og bag-ong linya. Semicolon ang kataposan sa statement. Lahi ang integer ug pointer.

#include <stdio.h>
+#include <assert.h>
+
+int main(void) {
+    int minutes[] = {1, 2, 3};
+    int total = 0;
+    for (size_t i = 0; i < sizeof minutes / sizeof minutes[0]; ++i) total += minutes[i];
+    printf("%d\n", total);
+    return 0;
+}
+

Gipaabot nga resulta: 6

Praktis ug ebidensiya

Isulat ang tagna, aktuwal nga resulta, ug hinungdan sa pagkapareho o kalainan. Ang completion check mosukod sa pagsabot; ang practice task mopauswag sa kahanas.

Reperensiya sa pinulongan

\ No newline at end of file diff --git a/ceb/c-practice-20261101/lesson-1/main.c b/ceb/c-practice-20261101/lesson-1/main.c new file mode 100644 index 0000000..e3ee381 --- /dev/null +++ b/ceb/c-practice-20261101/lesson-1/main.c @@ -0,0 +1,10 @@ +#include +#include + +int main(void) { + int minutes[] = {1, 2, 3}; + int total = 0; + for (size_t i = 0; i < sizeof minutes / sizeof minutes[0]; ++i) total += minutes[i]; + printf("%d\n", total); + return 0; +} diff --git a/ceb/c-practice-20261101/lesson-2/lesson.html b/ceb/c-practice-20261101/lesson-2/lesson.html new file mode 100644 index 0000000..6cb3d98 --- /dev/null +++ b/ceb/c-practice-20261101/lesson-2/lesson.html @@ -0,0 +1,11 @@ +Usa ka importante nga kinaiya sa pinulongan

Usa ka importante nga kinaiya sa pinulongan

15-minutong sesyon: pagbasa sulod sa 3 minutos, pag-trace sa 3, pag-eksperimento sa 7, ug pagtubag sa check sa 2. Paggahin og dugang oras kon gikinahanglan.

Gamita ang nota sa pinulongan sa ubos aron ipasabot ang pag-usab sa state. Ilha unsa ang gikopya, gipaambit, mahimong mapakyas, ug gibuhian. Dili tanan nga pangutana magamit niini nga programa: isulti kung hain. Paghimo og usa ka kausaban, tag-ana ang epekto, ug itandi sa aktuwal nga resulta. Mahimong lahi ang lagda sa pamilyar nga operator sa laing pinulongan.

Magsugod ang C sa main. Ang stdio.h nagdeklarar sa output functions; ang puts modugang og bag-ong linya. Semicolon ang kataposan sa statement. Lahi ang integer ug pointer.

Ang address nagtudlo sa buhi nga local nga completed; usbon kini sa *address. Ayaw ibalik ang pointer sa expired local o gamita ang arbitraryong numeric address.

#include <stdio.h>
+#include <assert.h>
+
+int main(void) {
+    int completed = 2;
+    int *address = &completed;
+    *address += 1;
+    printf("%d\n", completed);
+    return 0;
+}
+

Gipaabot nga resulta: 3

Praktis ug ebidensiya

Isulat ang tagna, aktuwal nga resulta, ug hinungdan sa pagkapareho o kalainan. Ang completion check mosukod sa pagsabot; ang practice task mopauswag sa kahanas.

Reperensiya sa pinulongan

\ No newline at end of file diff --git a/ceb/c-practice-20261101/lesson-2/main.c b/ceb/c-practice-20261101/lesson-2/main.c new file mode 100644 index 0000000..32f8d66 --- /dev/null +++ b/ceb/c-practice-20261101/lesson-2/main.c @@ -0,0 +1,10 @@ +#include +#include + +int main(void) { + int completed = 2; + int *address = &completed; + *address += 1; + printf("%d\n", completed); + return 0; +} diff --git a/ceb/c-practice-20261101/lesson-3/lesson.html b/ceb/c-practice-20261101/lesson-3/lesson.html new file mode 100644 index 0000000..aac7b36 --- /dev/null +++ b/ceb/c-practice-20261101/lesson-3/lesson.html @@ -0,0 +1,12 @@ +Paghimo, gub-a, ug sulayi ang study planner

Paghimo, gub-a, ug sulayi ang study planner

15-minutong sesyon: pagbasa sulod sa 3 minutos, pag-trace sa 3, pag-eksperimento sa 7, ug pagtubag sa check sa 2. Paggahin og dugang oras kon gikinahanglan.

Ang mapuslanong test motandi sa resulta ug requirement. Dili angay mahimong negative ang nahibiling trabaho sa nonnegative input domain sa planner. Padagana ang starter, tuyoang tangtanga ang proteksiyon kon labaw sa total ang completed, ug siguroa nga adunay check nga mapakyas. Ibalik kini. Idugang ang duha ka study task, summary, ug boundary cases. I-save ang source ug ebidensiya sa Agila Forge. Ipasabot ang matag linya, apil ang gisugyot sa AI.

Magsugod ang C sa main. Ang stdio.h nagdeklarar sa output functions; ang puts modugang og bag-ong linya. Semicolon ang kataposan sa statement. Lahi ang integer ug pointer.

#include <stdio.h>
+#include <assert.h>
+int remaining(int total, int done) { return done >= total ? 0 : total - done; }
+int main(void) {
+    assert(remaining(4,1)==3);
+    assert(remaining(4,4)==0);
+    assert(remaining(4,5)==0);
+    assert(remaining(0,0)==0);
+    puts("Nipasar");
+    return 0;
+}
+

Gipaabot nga resulta: Nipasar

Praktis ug ebidensiya

Isulat ang tagna, aktuwal nga resulta, ug hinungdan sa pagkapareho o kalainan. Ang completion check mosukod sa pagsabot; ang practice task mopauswag sa kahanas.

Reperensiya sa pinulongan

\ No newline at end of file diff --git a/ceb/c-practice-20261101/lesson-3/main.c b/ceb/c-practice-20261101/lesson-3/main.c new file mode 100644 index 0000000..06d1902 --- /dev/null +++ b/ceb/c-practice-20261101/lesson-3/main.c @@ -0,0 +1,11 @@ +#include +#include +int remaining(int total, int done) { return done >= total ? 0 : total - done; } +int main(void) { + assert(remaining(4,1)==3); + assert(remaining(4,4)==0); + assert(remaining(4,5)==0); + assert(remaining(0,0)==0); + puts("Nipasar"); + return 0; +} diff --git a/ceb/cpp-foundations-20261101/README.md b/ceb/cpp-foundations-20261101/README.md new file mode 100644 index 0000000..425cbb1 --- /dev/null +++ b/ceb/cpp-foundations-20261101/README.md @@ -0,0 +1,9 @@ +# C++ — unang mga lakang + +[Agila University track](https://edu.agilaos.com/track.php?track=13&lang=ceb) + +Mga 15 minutos matag leksyon. Tag-ana, padagana, usba, ipasabot, ug tubaga ang pagsusi sa University. + +- [Lesson 1: Imong unang programa nga mapasabot](lesson-1/lesson.html) +- [Lesson 2: Mga value ug desisyon](lesson-2/lesson.html) +- [Lesson 3: Function ug klarong lagda](lesson-3/lesson.html) diff --git a/ceb/cpp-foundations-20261101/lesson-1/lesson.html b/ceb/cpp-foundations-20261101/lesson-1/lesson.html new file mode 100644 index 0000000..aef8f33 --- /dev/null +++ b/ceb/cpp-foundations-20261101/lesson-1/lesson.html @@ -0,0 +1,9 @@ +Imong unang programa nga mapasabot

Imong unang programa nga mapasabot

15-minutong sesyon: pagbasa sulod sa 3 minutos, pag-trace sa 3, pag-eksperimento sa 7, ug pagtubag sa check sa 2. Paggahin og dugang oras kon gikinahanglan.

Usa ka hugpong sa mga sugo ang programa. Basaha gikan sa entry point ngadto sa output statement. Data ang teksto sulod sa mga kinutlo; sugo ang output operation. Tag-ana ang linya sa dili pa padaganon. Usba lang ang mensahe, padagana pag-usab, ug tangtanga ang usa ka gikinahanglang punctuation aron basahon ang unang error. Ibalik ang nagtrabaho nga source.

Ang std::cout mosulat og output. Ang std::vector modumala sa nagtubo nga sequence ug mobuhi sa storage sa kataposan sa lifetime niini. C++17 ang lab; itala kon laing standard ang gikinahanglan.

#include <iostream>
+#include <vector>
+#include <string>
+#include <cassert>
+
+int main() {
+    std::cout << "Andam\n";
+}
+

Gipaabot nga resulta: Andam

Praktis ug ebidensiya

Isulat ang tagna, aktuwal nga resulta, ug hinungdan sa pagkapareho o kalainan. Ang completion check mosukod sa pagsabot; ang practice task mopauswag sa kahanas.

Reperensiya sa pinulongan

\ No newline at end of file diff --git a/ceb/cpp-foundations-20261101/lesson-1/main.cpp b/ceb/cpp-foundations-20261101/lesson-1/main.cpp new file mode 100644 index 0000000..85910f7 --- /dev/null +++ b/ceb/cpp-foundations-20261101/lesson-1/main.cpp @@ -0,0 +1,8 @@ +#include +#include +#include +#include + +int main() { + std::cout << "Andam\n"; +} diff --git a/ceb/cpp-foundations-20261101/lesson-2/lesson.html b/ceb/cpp-foundations-20261101/lesson-2/lesson.html new file mode 100644 index 0000000..93b92a0 --- /dev/null +++ b/ceb/cpp-foundations-20261101/lesson-2/lesson.html @@ -0,0 +1,10 @@ +Mga value ug desisyon

Mga value ug desisyon

15-minutong sesyon: pagbasa sulod sa 3 minutos, pag-trace sa 3, pag-eksperimento sa 7, ug pagtubag sa check sa 2. Paggahin og dugang oras kon gikinahanglan.

Ang desisyon mopili kon unsang statement ang modagan. Ang lagda mao ang “andam sa 80 pataas.” Sunda ang 85, 79, 80, ug 81 sa dili pa padaganon. Apil ang 80 sa comparison. Mahimong sakto sa 85 apan sayop sa utlanan. Idugang ang lahi nga check sa pagbalibad sa ubos sa 0 o labaw sa 100; lahi ang invalid ug nagkinahanglan og praktis.

Ang std::cout mosulat og output. Ang std::vector modumala sa nagtubo nga sequence ug mobuhi sa storage sa kataposan sa lifetime niini. C++17 ang lab; itala kon laing standard ang gikinahanglan.

#include <iostream>
+#include <vector>
+#include <string>
+#include <cassert>
+
+int main() {
+    int score = 85;
+    std::cout << (score >= 80 ? "Andam" : "Pagpraktis") << "\n";
+}
+

Gipaabot nga resulta: Andam

Praktis ug ebidensiya

Isulat ang tagna, aktuwal nga resulta, ug hinungdan sa pagkapareho o kalainan. Ang completion check mosukod sa pagsabot; ang practice task mopauswag sa kahanas.

Reperensiya sa pinulongan

\ No newline at end of file diff --git a/ceb/cpp-foundations-20261101/lesson-2/main.cpp b/ceb/cpp-foundations-20261101/lesson-2/main.cpp new file mode 100644 index 0000000..d0970c8 --- /dev/null +++ b/ceb/cpp-foundations-20261101/lesson-2/main.cpp @@ -0,0 +1,9 @@ +#include +#include +#include +#include + +int main() { + int score = 85; + std::cout << (score >= 80 ? "Andam" : "Pagpraktis") << "\n"; +} diff --git a/ceb/cpp-foundations-20261101/lesson-3/lesson.html b/ceb/cpp-foundations-20261101/lesson-3/lesson.html new file mode 100644 index 0000000..fd25748 --- /dev/null +++ b/ceb/cpp-foundations-20261101/lesson-3/lesson.html @@ -0,0 +1,9 @@ +Function ug klarong lagda

Function ug klarong lagda

15-minutong sesyon: pagbasa sulod sa 3 minutos, pag-trace sa 3, pag-eksperimento sa 7, ug pagtubag sa check sa 2. Paggahin og dugang oras kon gikinahanglan.

Ang function o subroutine nagngalan sa calculation nga magamit pag-usab. Ang lagda modawat og nonnegative total ug completed; zero ang resulta kon nakaabot o milapas ang completed sa total. Kon dili, ibalik ang kalainan. Sunda ang (4,1), (4,4), (4,5), ug (0,0). Ibulag ang pagpatik sa calculation. Ipasabot nganong gawas sa sakop ang negative input ug paghimo og pagbalibad sa dili pa modawat og external input.

Ang std::cout mosulat og output. Ang std::vector modumala sa nagtubo nga sequence ug mobuhi sa storage sa kataposan sa lifetime niini. C++17 ang lab; itala kon laing standard ang gikinahanglan.

#include <iostream>
+#include <vector>
+#include <string>
+#include <cassert>
+int remaining(int total, int done) { return done >= total ? 0 : total - done; }
+int main() {
+    std::cout << remaining(4, 1) << "\n";
+}
+

Gipaabot nga resulta: 3

Praktis ug ebidensiya

Isulat ang tagna, aktuwal nga resulta, ug hinungdan sa pagkapareho o kalainan. Ang completion check mosukod sa pagsabot; ang practice task mopauswag sa kahanas.

Reperensiya sa pinulongan

\ No newline at end of file diff --git a/ceb/cpp-foundations-20261101/lesson-3/main.cpp b/ceb/cpp-foundations-20261101/lesson-3/main.cpp new file mode 100644 index 0000000..10f44d4 --- /dev/null +++ b/ceb/cpp-foundations-20261101/lesson-3/main.cpp @@ -0,0 +1,8 @@ +#include +#include +#include +#include +int remaining(int total, int done) { return done >= total ? 0 : total - done; } +int main() { + std::cout << remaining(4, 1) << "\n"; +} diff --git a/ceb/cpp-practice-20261101/README.md b/ceb/cpp-practice-20261101/README.md new file mode 100644 index 0000000..4f304c4 --- /dev/null +++ b/ceb/cpp-practice-20261101/README.md @@ -0,0 +1,9 @@ +# C++ — paghimo ug pagsulay + +[Agila University track](https://edu.agilaos.com/track.php?track=13&lang=ceb) + +Mga 15 minutos matag leksyon. Tag-ana, padagana, usba, ipasabot, ug tubaga ang pagsusi sa University. + +- [Lesson 1: Collection ug balikbalik nga buluhaton](lesson-1/lesson.html) +- [Lesson 2: Usa ka importante nga kinaiya sa pinulongan](lesson-2/lesson.html) +- [Lesson 3: Paghimo, gub-a, ug sulayi ang study planner](lesson-3/lesson.html) diff --git a/ceb/cpp-practice-20261101/lesson-1/lesson.html b/ceb/cpp-practice-20261101/lesson-1/lesson.html new file mode 100644 index 0000000..6a816c6 --- /dev/null +++ b/ceb/cpp-practice-20261101/lesson-1/lesson.html @@ -0,0 +1,12 @@ +Collection ug balikbalik nga buluhaton

Collection ug balikbalik nga buluhaton

15-minutong sesyon: pagbasa sulod sa 3 minutos, pag-trace sa 3, pag-eksperimento sa 7, ug pagtubag sa check sa 2. Paggahin og dugang oras kon gikinahanglan.

Ang collection nagtipig sa may kalabotang value. Bisitahon sa loop ang 1, 2, ug 3; ang total gikan sa 0 mahimong 1, 3, ug 6. Isulat ang trace imbes manag-an. Ilha ang una ug kataposang valid nga posisyon: mahimong 1-based ang Pascal array samtang zero-based ang daghang ubang container. Idugang og value ug taronga ang bounds. Ipasabot ang resulta alang sa empty collection.

Ang std::cout mosulat og output. Ang std::vector modumala sa nagtubo nga sequence ug mobuhi sa storage sa kataposan sa lifetime niini. C++17 ang lab; itala kon laing standard ang gikinahanglan.

#include <iostream>
+#include <vector>
+#include <string>
+#include <cassert>
+
+int main() {
+    std::vector<int> minutes{1, 2, 3};
+    int total = 0;
+    for (int value : minutes) total += value;
+    std::cout << total << "\n";
+}
+

Gipaabot nga resulta: 6

Praktis ug ebidensiya

Isulat ang tagna, aktuwal nga resulta, ug hinungdan sa pagkapareho o kalainan. Ang completion check mosukod sa pagsabot; ang practice task mopauswag sa kahanas.

Reperensiya sa pinulongan

\ No newline at end of file diff --git a/ceb/cpp-practice-20261101/lesson-1/main.cpp b/ceb/cpp-practice-20261101/lesson-1/main.cpp new file mode 100644 index 0000000..2e336b8 --- /dev/null +++ b/ceb/cpp-practice-20261101/lesson-1/main.cpp @@ -0,0 +1,11 @@ +#include +#include +#include +#include + +int main() { + std::vector minutes{1, 2, 3}; + int total = 0; + for (int value : minutes) total += value; + std::cout << total << "\n"; +} diff --git a/ceb/cpp-practice-20261101/lesson-2/lesson.html b/ceb/cpp-practice-20261101/lesson-2/lesson.html new file mode 100644 index 0000000..2f9341d --- /dev/null +++ b/ceb/cpp-practice-20261101/lesson-2/lesson.html @@ -0,0 +1,12 @@ +Usa ka importante nga kinaiya sa pinulongan

Usa ka importante nga kinaiya sa pinulongan

15-minutong sesyon: pagbasa sulod sa 3 minutos, pag-trace sa 3, pag-eksperimento sa 7, ug pagtubag sa check sa 2. Paggahin og dugang oras kon gikinahanglan.

Gamita ang nota sa pinulongan sa ubos aron ipasabot ang pag-usab sa state. Ilha unsa ang gikopya, gipaambit, mahimong mapakyas, ug gibuhian. Dili tanan nga pangutana magamit niini nga programa: isulti kung hain. Paghimo og usa ka kausaban, tag-ana ang epekto, ug itandi sa aktuwal nga resulta. Mahimong lahi ang lagda sa pamilyar nga operator sa laing pinulongan.

Ang std::cout mosulat og output. Ang std::vector modumala sa nagtubo nga sequence ug mobuhi sa storage sa kataposan sa lifetime niini. C++17 ang lab; itala kon laing standard ang gikinahanglan.

Adunay kaugalingong sequence ang vector copy. Magpabiling 2 ang gitas-on sa orihinal samtang 3 ang copy. Lahi kini sa pagkopya og reference sa shared object.

#include <iostream>
+#include <vector>
+#include <string>
+#include <cassert>
+
+int main() {
+    std::vector<std::string> plan{"Read", "Test"};
+    auto copy = plan;
+    copy.push_back("Explain");
+    std::cout << plan.size() << " " << copy.size() << "\n";
+}
+

Gipaabot nga resulta: 2 3

Praktis ug ebidensiya

Isulat ang tagna, aktuwal nga resulta, ug hinungdan sa pagkapareho o kalainan. Ang completion check mosukod sa pagsabot; ang practice task mopauswag sa kahanas.

Reperensiya sa pinulongan

\ No newline at end of file diff --git a/ceb/cpp-practice-20261101/lesson-2/main.cpp b/ceb/cpp-practice-20261101/lesson-2/main.cpp new file mode 100644 index 0000000..75b4235 --- /dev/null +++ b/ceb/cpp-practice-20261101/lesson-2/main.cpp @@ -0,0 +1,11 @@ +#include +#include +#include +#include + +int main() { + std::vector plan{"Read", "Test"}; + auto copy = plan; + copy.push_back("Explain"); + std::cout << plan.size() << " " << copy.size() << "\n"; +} diff --git a/ceb/cpp-practice-20261101/lesson-3/lesson.html b/ceb/cpp-practice-20261101/lesson-3/lesson.html new file mode 100644 index 0000000..649ff69 --- /dev/null +++ b/ceb/cpp-practice-20261101/lesson-3/lesson.html @@ -0,0 +1,13 @@ +Paghimo, gub-a, ug sulayi ang study planner

Paghimo, gub-a, ug sulayi ang study planner

15-minutong sesyon: pagbasa sulod sa 3 minutos, pag-trace sa 3, pag-eksperimento sa 7, ug pagtubag sa check sa 2. Paggahin og dugang oras kon gikinahanglan.

Ang mapuslanong test motandi sa resulta ug requirement. Dili angay mahimong negative ang nahibiling trabaho sa nonnegative input domain sa planner. Padagana ang starter, tuyoang tangtanga ang proteksiyon kon labaw sa total ang completed, ug siguroa nga adunay check nga mapakyas. Ibalik kini. Idugang ang duha ka study task, summary, ug boundary cases. I-save ang source ug ebidensiya sa Agila Forge. Ipasabot ang matag linya, apil ang gisugyot sa AI.

Ang std::cout mosulat og output. Ang std::vector modumala sa nagtubo nga sequence ug mobuhi sa storage sa kataposan sa lifetime niini. C++17 ang lab; itala kon laing standard ang gikinahanglan.

#include <iostream>
+#include <vector>
+#include <string>
+#include <cassert>
+int remaining(int total, int done) { return done >= total ? 0 : total - done; }
+int main() {
+    assert(remaining(4,1)==3);
+    assert(remaining(4,4)==0);
+    assert(remaining(4,5)==0);
+    assert(remaining(0,0)==0);
+    std::cout << "Nipasar\n";
+}
+

Gipaabot nga resulta: Nipasar

Praktis ug ebidensiya

Isulat ang tagna, aktuwal nga resulta, ug hinungdan sa pagkapareho o kalainan. Ang completion check mosukod sa pagsabot; ang practice task mopauswag sa kahanas.

Reperensiya sa pinulongan

\ No newline at end of file diff --git a/ceb/cpp-practice-20261101/lesson-3/main.cpp b/ceb/cpp-practice-20261101/lesson-3/main.cpp new file mode 100644 index 0000000..c2fac33 --- /dev/null +++ b/ceb/cpp-practice-20261101/lesson-3/main.cpp @@ -0,0 +1,12 @@ +#include +#include +#include +#include +int remaining(int total, int done) { return done >= total ? 0 : total - done; } +int main() { + assert(remaining(4,1)==3); + assert(remaining(4,4)==0); + assert(remaining(4,5)==0); + assert(remaining(0,0)==0); + std::cout << "Nipasar\n"; +} diff --git a/ceb/csharp-foundations-20261101/README.md b/ceb/csharp-foundations-20261101/README.md new file mode 100644 index 0000000..d2af268 --- /dev/null +++ b/ceb/csharp-foundations-20261101/README.md @@ -0,0 +1,9 @@ +# C# — unang mga lakang + +[Agila University track](https://edu.agilaos.com/track.php?track=14&lang=ceb) + +Mga 15 minutos matag leksyon. Tag-ana, padagana, usba, ipasabot, ug tubaga ang pagsusi sa University. + +- [Lesson 1: Imong unang programa nga mapasabot](lesson-1/lesson.html) +- [Lesson 2: Mga value ug desisyon](lesson-2/lesson.html) +- [Lesson 3: Function ug klarong lagda](lesson-3/lesson.html) diff --git a/ceb/csharp-foundations-20261101/lesson-1/lesson.html b/ceb/csharp-foundations-20261101/lesson-1/lesson.html new file mode 100644 index 0000000..2d15f49 --- /dev/null +++ b/ceb/csharp-foundations-20261101/lesson-1/lesson.html @@ -0,0 +1,9 @@ +Imong unang programa nga mapasabot

Imong unang programa nga mapasabot

15-minutong sesyon: pagbasa sulod sa 3 minutos, pag-trace sa 3, pag-eksperimento sa 7, ug pagtubag sa check sa 2. Paggahin og dugang oras kon gikinahanglan.

Usa ka hugpong sa mga sugo ang programa. Basaha gikan sa entry point ngadto sa output statement. Data ang teksto sulod sa mga kinutlo; sugo ang output operation. Tag-ana ang linya sa dili pa padaganon. Usba lang ang mensahe, padagana pag-usab, ug tangtanga ang usa ka gikinahanglang punctuation aron basahon ang unang error. Ibalik ang nagtrabaho nga source.

Ang Main mao ang entry method sulod sa Program. Ang Console.WriteLine mopatik og linya. Mahimong daghan og reference ang usa ka class instance; dili cloning ang pag-assign og reference.

using System;
+using System.Collections.Generic;
+class Program {
+
+    static void Main() {
+        Console.WriteLine("Andam");
+    }
+}
+

Gipaabot nga resulta: Andam

Praktis ug ebidensiya

Isulat ang tagna, aktuwal nga resulta, ug hinungdan sa pagkapareho o kalainan. Ang completion check mosukod sa pagsabot; ang practice task mopauswag sa kahanas.

Reperensiya sa pinulongan

\ No newline at end of file diff --git a/ceb/csharp-foundations-20261101/lesson-1/main.cs b/ceb/csharp-foundations-20261101/lesson-1/main.cs new file mode 100644 index 0000000..9fd7de7 --- /dev/null +++ b/ceb/csharp-foundations-20261101/lesson-1/main.cs @@ -0,0 +1,8 @@ +using System; +using System.Collections.Generic; +class Program { + + static void Main() { + Console.WriteLine("Andam"); + } +} diff --git a/ceb/csharp-foundations-20261101/lesson-2/lesson.html b/ceb/csharp-foundations-20261101/lesson-2/lesson.html new file mode 100644 index 0000000..f51476e --- /dev/null +++ b/ceb/csharp-foundations-20261101/lesson-2/lesson.html @@ -0,0 +1,10 @@ +Mga value ug desisyon

Mga value ug desisyon

15-minutong sesyon: pagbasa sulod sa 3 minutos, pag-trace sa 3, pag-eksperimento sa 7, ug pagtubag sa check sa 2. Paggahin og dugang oras kon gikinahanglan.

Ang desisyon mopili kon unsang statement ang modagan. Ang lagda mao ang “andam sa 80 pataas.” Sunda ang 85, 79, 80, ug 81 sa dili pa padaganon. Apil ang 80 sa comparison. Mahimong sakto sa 85 apan sayop sa utlanan. Idugang ang lahi nga check sa pagbalibad sa ubos sa 0 o labaw sa 100; lahi ang invalid ug nagkinahanglan og praktis.

Ang Main mao ang entry method sulod sa Program. Ang Console.WriteLine mopatik og linya. Mahimong daghan og reference ang usa ka class instance; dili cloning ang pag-assign og reference.

using System;
+using System.Collections.Generic;
+class Program {
+
+    static void Main() {
+        int score = 85;
+        Console.WriteLine(score >= 80 ? "Andam" : "Pagpraktis");
+    }
+}
+

Gipaabot nga resulta: Andam

Praktis ug ebidensiya

Isulat ang tagna, aktuwal nga resulta, ug hinungdan sa pagkapareho o kalainan. Ang completion check mosukod sa pagsabot; ang practice task mopauswag sa kahanas.

Reperensiya sa pinulongan

\ No newline at end of file diff --git a/ceb/csharp-foundations-20261101/lesson-2/main.cs b/ceb/csharp-foundations-20261101/lesson-2/main.cs new file mode 100644 index 0000000..a454a1b --- /dev/null +++ b/ceb/csharp-foundations-20261101/lesson-2/main.cs @@ -0,0 +1,9 @@ +using System; +using System.Collections.Generic; +class Program { + + static void Main() { + int score = 85; + Console.WriteLine(score >= 80 ? "Andam" : "Pagpraktis"); + } +} diff --git a/ceb/csharp-foundations-20261101/lesson-3/lesson.html b/ceb/csharp-foundations-20261101/lesson-3/lesson.html new file mode 100644 index 0000000..c25432b --- /dev/null +++ b/ceb/csharp-foundations-20261101/lesson-3/lesson.html @@ -0,0 +1,9 @@ +Function ug klarong lagda

Function ug klarong lagda

15-minutong sesyon: pagbasa sulod sa 3 minutos, pag-trace sa 3, pag-eksperimento sa 7, ug pagtubag sa check sa 2. Paggahin og dugang oras kon gikinahanglan.

Ang function o subroutine nagngalan sa calculation nga magamit pag-usab. Ang lagda modawat og nonnegative total ug completed; zero ang resulta kon nakaabot o milapas ang completed sa total. Kon dili, ibalik ang kalainan. Sunda ang (4,1), (4,4), (4,5), ug (0,0). Ibulag ang pagpatik sa calculation. Ipasabot nganong gawas sa sakop ang negative input ug paghimo og pagbalibad sa dili pa modawat og external input.

Ang Main mao ang entry method sulod sa Program. Ang Console.WriteLine mopatik og linya. Mahimong daghan og reference ang usa ka class instance; dili cloning ang pag-assign og reference.

using System;
+using System.Collections.Generic;
+class Program {
+    static int Remaining(int total, int done) { return done >= total ? 0 : total - done; }
+    static void Main() {
+        Console.WriteLine(Remaining(4, 1));
+    }
+}
+

Gipaabot nga resulta: 3

Praktis ug ebidensiya

Isulat ang tagna, aktuwal nga resulta, ug hinungdan sa pagkapareho o kalainan. Ang completion check mosukod sa pagsabot; ang practice task mopauswag sa kahanas.

Reperensiya sa pinulongan

\ No newline at end of file diff --git a/ceb/csharp-foundations-20261101/lesson-3/main.cs b/ceb/csharp-foundations-20261101/lesson-3/main.cs new file mode 100644 index 0000000..4229f78 --- /dev/null +++ b/ceb/csharp-foundations-20261101/lesson-3/main.cs @@ -0,0 +1,8 @@ +using System; +using System.Collections.Generic; +class Program { + static int Remaining(int total, int done) { return done >= total ? 0 : total - done; } + static void Main() { + Console.WriteLine(Remaining(4, 1)); + } +} diff --git a/ceb/csharp-practice-20261101/README.md b/ceb/csharp-practice-20261101/README.md new file mode 100644 index 0000000..340d427 --- /dev/null +++ b/ceb/csharp-practice-20261101/README.md @@ -0,0 +1,9 @@ +# C# — paghimo ug pagsulay + +[Agila University track](https://edu.agilaos.com/track.php?track=14&lang=ceb) + +Mga 15 minutos matag leksyon. Tag-ana, padagana, usba, ipasabot, ug tubaga ang pagsusi sa University. + +- [Lesson 1: Collection ug balikbalik nga buluhaton](lesson-1/lesson.html) +- [Lesson 2: Usa ka importante nga kinaiya sa pinulongan](lesson-2/lesson.html) +- [Lesson 3: Paghimo, gub-a, ug sulayi ang study planner](lesson-3/lesson.html) diff --git a/ceb/csharp-practice-20261101/lesson-1/lesson.html b/ceb/csharp-practice-20261101/lesson-1/lesson.html new file mode 100644 index 0000000..09680b9 --- /dev/null +++ b/ceb/csharp-practice-20261101/lesson-1/lesson.html @@ -0,0 +1,12 @@ +Collection ug balikbalik nga buluhaton

Collection ug balikbalik nga buluhaton

15-minutong sesyon: pagbasa sulod sa 3 minutos, pag-trace sa 3, pag-eksperimento sa 7, ug pagtubag sa check sa 2. Paggahin og dugang oras kon gikinahanglan.

Ang collection nagtipig sa may kalabotang value. Bisitahon sa loop ang 1, 2, ug 3; ang total gikan sa 0 mahimong 1, 3, ug 6. Isulat ang trace imbes manag-an. Ilha ang una ug kataposang valid nga posisyon: mahimong 1-based ang Pascal array samtang zero-based ang daghang ubang container. Idugang og value ug taronga ang bounds. Ipasabot ang resulta alang sa empty collection.

Ang Main mao ang entry method sulod sa Program. Ang Console.WriteLine mopatik og linya. Mahimong daghan og reference ang usa ka class instance; dili cloning ang pag-assign og reference.

using System;
+using System.Collections.Generic;
+class Program {
+
+    static void Main() {
+        int[] minutes = {1, 2, 3};
+        int total = 0;
+        foreach (int value in minutes) total += value;
+        Console.WriteLine(total);
+    }
+}
+

Gipaabot nga resulta: 6

Praktis ug ebidensiya

Isulat ang tagna, aktuwal nga resulta, ug hinungdan sa pagkapareho o kalainan. Ang completion check mosukod sa pagsabot; ang practice task mopauswag sa kahanas.

Reperensiya sa pinulongan

\ No newline at end of file diff --git a/ceb/csharp-practice-20261101/lesson-1/main.cs b/ceb/csharp-practice-20261101/lesson-1/main.cs new file mode 100644 index 0000000..9f7e352 --- /dev/null +++ b/ceb/csharp-practice-20261101/lesson-1/main.cs @@ -0,0 +1,11 @@ +using System; +using System.Collections.Generic; +class Program { + + static void Main() { + int[] minutes = {1, 2, 3}; + int total = 0; + foreach (int value in minutes) total += value; + Console.WriteLine(total); + } +} diff --git a/ceb/csharp-practice-20261101/lesson-2/lesson.html b/ceb/csharp-practice-20261101/lesson-2/lesson.html new file mode 100644 index 0000000..0e1b467 --- /dev/null +++ b/ceb/csharp-practice-20261101/lesson-2/lesson.html @@ -0,0 +1,12 @@ +Usa ka importante nga kinaiya sa pinulongan

Usa ka importante nga kinaiya sa pinulongan

15-minutong sesyon: pagbasa sulod sa 3 minutos, pag-trace sa 3, pag-eksperimento sa 7, ug pagtubag sa check sa 2. Paggahin og dugang oras kon gikinahanglan.

Gamita ang nota sa pinulongan sa ubos aron ipasabot ang pag-usab sa state. Ilha unsa ang gikopya, gipaambit, mahimong mapakyas, ug gibuhian. Dili tanan nga pangutana magamit niini nga programa: isulti kung hain. Paghimo og usa ka kausaban, tag-ana ang epekto, ug itandi sa aktuwal nga resulta. Mahimong lahi ang lagda sa pamilyar nga operator sa laing pinulongan.

Ang Main mao ang entry method sulod sa Program. Ang Console.WriteLine mopatik og linya. Mahimong daghan og reference ang usa ka class instance; dili cloning ang pag-assign og reference.

using System;
+using System.Collections.Generic;
+class Program {
+    class Plan { public int Done = 2; }
+    static void Main() {
+        var plan = new Plan();
+        var alias = plan;
+        alias.Done = 3;
+        Console.WriteLine(plan.Done);
+    }
+}
+

Gipaabot nga resulta: 3

Praktis ug ebidensiya

Isulat ang tagna, aktuwal nga resulta, ug hinungdan sa pagkapareho o kalainan. Ang completion check mosukod sa pagsabot; ang practice task mopauswag sa kahanas.

Reperensiya sa pinulongan

\ No newline at end of file diff --git a/ceb/csharp-practice-20261101/lesson-2/main.cs b/ceb/csharp-practice-20261101/lesson-2/main.cs new file mode 100644 index 0000000..721eb00 --- /dev/null +++ b/ceb/csharp-practice-20261101/lesson-2/main.cs @@ -0,0 +1,11 @@ +using System; +using System.Collections.Generic; +class Program { + class Plan { public int Done = 2; } + static void Main() { + var plan = new Plan(); + var alias = plan; + alias.Done = 3; + Console.WriteLine(plan.Done); + } +} diff --git a/ceb/csharp-practice-20261101/lesson-3/lesson.html b/ceb/csharp-practice-20261101/lesson-3/lesson.html new file mode 100644 index 0000000..cc403bc --- /dev/null +++ b/ceb/csharp-practice-20261101/lesson-3/lesson.html @@ -0,0 +1,11 @@ +Paghimo, gub-a, ug sulayi ang study planner

Paghimo, gub-a, ug sulayi ang study planner

15-minutong sesyon: pagbasa sulod sa 3 minutos, pag-trace sa 3, pag-eksperimento sa 7, ug pagtubag sa check sa 2. Paggahin og dugang oras kon gikinahanglan.

Ang mapuslanong test motandi sa resulta ug requirement. Dili angay mahimong negative ang nahibiling trabaho sa nonnegative input domain sa planner. Padagana ang starter, tuyoang tangtanga ang proteksiyon kon labaw sa total ang completed, ug siguroa nga adunay check nga mapakyas. Ibalik kini. Idugang ang duha ka study task, summary, ug boundary cases. I-save ang source ug ebidensiya sa Agila Forge. Ipasabot ang matag linya, apil ang gisugyot sa AI.

Ang Main mao ang entry method sulod sa Program. Ang Console.WriteLine mopatik og linya. Mahimong daghan og reference ang usa ka class instance; dili cloning ang pag-assign og reference.

using System;
+using System.Collections.Generic;
+class Program {
+    static int Remaining(int total, int done) { return done >= total ? 0 : total - done; }
+    static void Main() {
+        if (Remaining(4,1)!=3 || Remaining(4,4)!=0 || Remaining(4,5)!=0 || Remaining(0,0)!=0)
+            throw new Exception("Test failed");
+        Console.WriteLine("Nipasar");
+    }
+}
+

Gipaabot nga resulta: Nipasar

Praktis ug ebidensiya

Isulat ang tagna, aktuwal nga resulta, ug hinungdan sa pagkapareho o kalainan. Ang completion check mosukod sa pagsabot; ang practice task mopauswag sa kahanas.

Reperensiya sa pinulongan

\ No newline at end of file diff --git a/ceb/csharp-practice-20261101/lesson-3/main.cs b/ceb/csharp-practice-20261101/lesson-3/main.cs new file mode 100644 index 0000000..08263a5 --- /dev/null +++ b/ceb/csharp-practice-20261101/lesson-3/main.cs @@ -0,0 +1,10 @@ +using System; +using System.Collections.Generic; +class Program { + static int Remaining(int total, int done) { return done >= total ? 0 : total - done; } + static void Main() { + if (Remaining(4,1)!=3 || Remaining(4,4)!=0 || Remaining(4,5)!=0 || Remaining(0,0)!=0) + throw new Exception("Test failed"); + Console.WriteLine("Nipasar"); + } +} diff --git a/ceb/expanded-22-1/README.md b/ceb/expanded-22-1/README.md new file mode 100644 index 0000000..b1587f3 --- /dev/null +++ b/ceb/expanded-22-1/README.md @@ -0,0 +1,9 @@ +# CPU Architecture ug Portability · 1 + +[Agila University track](https://edu.agilaos.com/track.php?track=22&lang=ceb) + +Mga 15 minutos matag leksyon. Tag-ana, padagana, usba, ipasabot, ug tubaga ang pagsusi sa University. + +- [Lesson 1: Source, machine code, ug ISA](lesson-1/lesson.html) +- [Lesson 2: Bit, byte, ug gilapdon sa integer](lesson-2/lesson.html) +- [Lesson 3: Lagda sa byte order ang endianness](lesson-3/lesson.html) diff --git a/ceb/expanded-22-1/lesson-1/lesson.html b/ceb/expanded-22-1/lesson-1/lesson.html new file mode 100644 index 0000000..7d6e3c0 --- /dev/null +++ b/ceb/expanded-22-1/lesson-1/lesson.html @@ -0,0 +1,3 @@ +Source, machine code, ug ISA

Source, machine code, ug ISA

15-minutong sesyon: pagbasa sulod sa 3 minutos, pag-trace sa 3, pag-eksperimento sa 7, ug pagtubag sa check sa 2. Paggahin og dugang oras kon gikinahanglan.

Ang CPU mo-execute og instruction gikan sa iyang ISA. Ang source nagkinahanglan og compiler o interpreter. Mahimong modagan ang samang Python source sa x86-64 ug Arm64 kon adunay compatible interpreter; lahi nga artifact ang compiled x86-64 executable. I-print ang architecture sa lab ug paghimo og table sa source language, ISA, OS, ug runtime. Lahi ang emulator ug recompilation.

import platform
+print(platform.machine())
+

Praktis ug ebidensiya

Isulat ang tagna, aktuwal nga resulta, ug hinungdan sa pagkapareho o kalainan. Ang completion check mosukod sa pagsabot; ang practice task mopauswag sa kahanas.

Reperensiya sa pinulongan: www.intel.com

Reperensiya sa pinulongan: developer.arm.com

Reperensiya sa pinulongan: docs.riscv.org

\ No newline at end of file diff --git a/ceb/expanded-22-1/lesson-1/main.py b/ceb/expanded-22-1/lesson-1/main.py new file mode 100644 index 0000000..e8b7ae6 --- /dev/null +++ b/ceb/expanded-22-1/lesson-1/main.py @@ -0,0 +1,2 @@ +import platform +print(platform.machine()) diff --git a/ceb/expanded-22-1/lesson-2/lesson.html b/ceb/expanded-22-1/lesson-2/lesson.html new file mode 100644 index 0000000..fb9249e --- /dev/null +++ b/ceb/expanded-22-1/lesson-2/lesson.html @@ -0,0 +1,5 @@ +Bit, byte, ug gilapdon sa integer

Bit, byte, ug gilapdon sa integer

15-minutong sesyon: pagbasa sulod sa 3 minutos, pag-trace sa 3, pag-eksperimento sa 7, ug pagtubag sa check sa 2. Paggahin og dugang oras kon gikinahanglan.

Adunay 256 pattern ang walo ka bit. Gikan sa 0 ngadto sa 255 ang unsigned 8-bit value. Ang modelo naggamit og modulo aron mahimong zero ang 256; dili ingon niini ang natural nga Python integer. Itandi ang signed ug unsigned nga interpretasyon sa 255. Tag-ana ang range sa 16 bits. Ayaw ibase ang pointer o integer size sa ngalan lamang sa CPU.

bits=8
+print(2**bits)
+print((255+1) % (2**bits))
+

Gipaabot nga resulta: 256 +0

Praktis ug ebidensiya

Isulat ang tagna, aktuwal nga resulta, ug hinungdan sa pagkapareho o kalainan. Ang completion check mosukod sa pagsabot; ang practice task mopauswag sa kahanas.

Reperensiya sa pinulongan: www.intel.com

Reperensiya sa pinulongan: developer.arm.com

Reperensiya sa pinulongan: docs.riscv.org

\ No newline at end of file diff --git a/ceb/expanded-22-1/lesson-2/main.py b/ceb/expanded-22-1/lesson-2/main.py new file mode 100644 index 0000000..cea60d9 --- /dev/null +++ b/ceb/expanded-22-1/lesson-2/main.py @@ -0,0 +1,3 @@ +bits=8 +print(2**bits) +print((255+1) % (2**bits)) diff --git a/ceb/expanded-22-1/lesson-3/lesson.html b/ceb/expanded-22-1/lesson-3/lesson.html new file mode 100644 index 0000000..02c9f18 --- /dev/null +++ b/ceb/expanded-22-1/lesson-3/lesson.html @@ -0,0 +1,5 @@ +Lagda sa byte order ang endianness

Lagda sa byte order ang endianness

15-minutong sesyon: pagbasa sulod sa 3 minutos, pag-trace sa 3, pag-eksperimento sa 7, ug pagtubag sa check sa 2. Paggahin og dugang oras kon gikinahanglan.

Mahimong tipigan ang 0x1234 isip 34 12 sa little-endian o 12 34 sa big-endian. Pareho ang numero; representasyon ang nausab. Padagana ang conversion ug i-decode balik. Ang file o network protocol kinahanglan mosulti sa byte order imbes mokopya lang og host struct. Lahi nga butang ang padding ug alignment.

value=0x1234
+print(value.to_bytes(2,"little").hex())
+print(value.to_bytes(2,"big").hex())
+

Gipaabot nga resulta: 3412 +1234

Praktis ug ebidensiya

Isulat ang tagna, aktuwal nga resulta, ug hinungdan sa pagkapareho o kalainan. Ang completion check mosukod sa pagsabot; ang practice task mopauswag sa kahanas.

Reperensiya sa pinulongan: www.intel.com

Reperensiya sa pinulongan: developer.arm.com

Reperensiya sa pinulongan: docs.riscv.org

\ No newline at end of file diff --git a/ceb/expanded-22-1/lesson-3/main.py b/ceb/expanded-22-1/lesson-3/main.py new file mode 100644 index 0000000..ef772c3 --- /dev/null +++ b/ceb/expanded-22-1/lesson-3/main.py @@ -0,0 +1,3 @@ +value=0x1234 +print(value.to_bytes(2,"little").hex()) +print(value.to_bytes(2,"big").hex()) diff --git a/ceb/expanded-22-2/README.md b/ceb/expanded-22-2/README.md new file mode 100644 index 0000000..a22b4f4 --- /dev/null +++ b/ceb/expanded-22-2/README.md @@ -0,0 +1,9 @@ +# CPU Architecture ug Portability · 2 + +[Agila University track](https://edu.agilaos.com/track.php?track=22&lang=ceb) + +Mga 15 minutos matag leksyon. Tag-ana, padagana, usba, ipasabot, ug tubaga ang pagsusi sa University. + +- [Lesson 1: Itandi ang x86-64, Arm64, ug RISC-V](lesson-1/lesson.html) +- [Lesson 2: BASIC sa 6502, Z80, ug modernong host](lesson-2/lesson.html) +- [Lesson 3: Masubli nga portability report](lesson-3/lesson.html) diff --git a/ceb/expanded-22-2/lesson-1/lesson.html b/ceb/expanded-22-2/lesson-1/lesson.html new file mode 100644 index 0000000..e3eae00 --- /dev/null +++ b/ceb/expanded-22-2/lesson-1/lesson.html @@ -0,0 +1 @@ +Itandi ang x86-64, Arm64, ug RISC-V

Itandi ang x86-64, Arm64, ug RISC-V

15-minutong sesyon: pagbasa sulod sa 3 minutos, pag-trace sa 3, pag-eksperimento sa 7, ug pagtubag sa check sa 2. Paggahin og dugang oras kon gikinahanglan.

Lahi ang instruction encoding ug register convention sa x86-64, AArch64, ug RV64. X0–X30 ang 64-bit general register sa AArch64; x0–x31 sa RV64I ug kanunay zero ang x0. Ang ABI modugang og calling convention, stack rule, ug binary interface. Itandi ang function call sa opisyal nga manual ug ilista ang usbon sa compiler backend. Dili interchangeable ang binary tungod lang kay 64-bit.

Praktis ug ebidensiya

Isulat ang tagna, aktuwal nga resulta, ug hinungdan sa pagkapareho o kalainan. Ang completion check mosukod sa pagsabot; ang practice task mopauswag sa kahanas.

Reperensiya sa pinulongan: www.intel.com

Reperensiya sa pinulongan: developer.arm.com

Reperensiya sa pinulongan: docs.riscv.org

\ No newline at end of file diff --git a/ceb/expanded-22-2/lesson-2/lesson.html b/ceb/expanded-22-2/lesson-2/lesson.html new file mode 100644 index 0000000..2785326 --- /dev/null +++ b/ceb/expanded-22-2/lesson-2/lesson.html @@ -0,0 +1 @@ +BASIC sa 6502, Z80, ug modernong host

BASIC sa 6502, Z80, ug modernong host

15-minutong sesyon: pagbasa sulod sa 3 minutos, pag-trace sa 3, pag-eksperimento sa 7, ug pagtubag sa check sa 2. Paggahin og dugang oras kon gikinahanglan.

Ang BASIC dialect iya sa interpreter o compiler, dili direkta sa CPU. Kasagaran lahi ang BASIC ug device command sa klasiko nga 6502 ug Z80 system. Ibulag ang portable arithmetic sa machine-specific graphics, PEEK/POKE address, ug file command. I-port ang tulo ka linyang greeting gamit ang target manual. Sa lab, Bywater sa Linux ang modagan; dili kini emulator sa duha ka karaang machine.

Praktis ug ebidensiya

Isulat ang tagna, aktuwal nga resulta, ug hinungdan sa pagkapareho o kalainan. Ang completion check mosukod sa pagsabot; ang practice task mopauswag sa kahanas.

Reperensiya sa pinulongan: www.intel.com

Reperensiya sa pinulongan: developer.arm.com

Reperensiya sa pinulongan: docs.riscv.org

\ No newline at end of file diff --git a/ceb/expanded-22-2/lesson-3/lesson.html b/ceb/expanded-22-2/lesson-3/lesson.html new file mode 100644 index 0000000..2733952 --- /dev/null +++ b/ceb/expanded-22-2/lesson-3/lesson.html @@ -0,0 +1 @@ +Masubli nga portability report

Masubli nga portability report

15-minutong sesyon: pagbasa sulod sa 3 minutos, pag-trace sa 3, pag-eksperimento sa 7, ug pagtubag sa check sa 2. Paggahin og dugang oras kon gikinahanglan.

Pili og gamay nga program ug duha ka target environment. Itala ang compiler/interpreter version, ISA, OS, input, expected ug actual result, ug limitasyon. Lahi ang compile success ug malampusong pagdagan sa target. Kon usa lang ang available, markahi ang lain nga untested. Gamita ang opisyal nga Intel, Arm, ug RISC-V reference sa resources. Sunod ang core ug memory mapping track.

Praktis ug ebidensiya

Isulat ang tagna, aktuwal nga resulta, ug hinungdan sa pagkapareho o kalainan. Ang completion check mosukod sa pagsabot; ang practice task mopauswag sa kahanas.

Reperensiya sa pinulongan: www.intel.com

Reperensiya sa pinulongan: developer.arm.com

Reperensiya sa pinulongan: docs.riscv.org

\ No newline at end of file diff --git a/ceb/expanded-23-1/README.md b/ceb/expanded-23-1/README.md new file mode 100644 index 0000000..82c2c9d --- /dev/null +++ b/ceb/expanded-23-1/README.md @@ -0,0 +1,9 @@ +# Paghimo og Open Agila OS · 1 + +[Agila University track](https://edu.agilaos.com/track.php?track=23&lang=ceb) + +Mga 15 minutos matag leksyon. Tag-ana, padagana, usba, ipasabot, ug tubaga ang pagsusi sa University. + +- [Lesson 1: I-build ang public kernel prototype](lesson-1/lesson.html) +- [Lesson 2: Sunda sa hustong paagi ang initialization](lesson-2/lesson.html) +- [Lesson 3: Imodelo ang page translation](lesson-3/lesson.html) diff --git a/ceb/expanded-23-1/lesson-1/lesson.html b/ceb/expanded-23-1/lesson-1/lesson.html new file mode 100644 index 0000000..c017454 --- /dev/null +++ b/ceb/expanded-23-1/lesson-1/lesson.html @@ -0,0 +1 @@ +I-build ang public kernel prototype

I-build ang public kernel prototype

15-minutong sesyon: pagbasa sulod sa 3 minutos, pag-trace sa 3, pag-eksperimento sa 7, ug pagtubag sa check sa 2. Paggahin og dugang oras kon gikinahanglan.

Ang public open_kernel naggamit og Ada, kernel.gpr, ug Makefile. Host program ang gi-build ug gipadagan sa make run. Dili kini bootable bare-metal image. Gitawag sa Main ang Kernel.Start. Susiha una ang source; 9af96aa ang reference revision.

Praktis ug ebidensiya: I-clone gikan sa Forge sa development environment, i-install ang GNAT ug gprbuild, padagana ang make ug make run, ug itala ang commit ug output. Single-file ang browser lab; gamita ang kaugalingong development environment sa multi-file build.

Praktis ug ebidensiya

Isulat ang tagna, aktuwal nga resulta, ug hinungdan sa pagkapareho o kalainan. Ang completion check mosukod sa pagsabot; ang practice task mopauswag sa kahanas.

Reperensiya sa pinulongan: git.agilaos.com

Reperensiya sa pinulongan: git.agilaos.com

\ No newline at end of file diff --git a/ceb/expanded-23-1/lesson-2/lesson.html b/ceb/expanded-23-1/lesson-2/lesson.html new file mode 100644 index 0000000..622bb2d --- /dev/null +++ b/ceb/expanded-23-1/lesson-2/lesson.html @@ -0,0 +1 @@ +Sunda sa hustong paagi ang initialization

Sunda sa hustong paagi ang initialization

15-minutong sesyon: pagbasa sulod sa 3 minutos, pag-trace sa 3, pag-eksperimento sa 7, ug pagtubag sa check sa 2. Paggahin og dugang oras kon gikinahanglan.

Gitawag sa Kernel.Start ang initialization sa CPU, Memory, Console, Interrupt, Timer, ug Scheduler. Null pa ang sulod sa uban. Dili pamatuod sa subsystem ang initialized message. Sunda ang matag call ug ilahi ang implemented, host-backed, ug stub.

Praktis ug ebidensiya: Paghimo og evidence table: file, procedure, makita nga kinaiya, ug test nga gikinahanglan pa. Ang Console naggamit og Ada.Text_IO ug nagsalig sa host runtime.

Praktis ug ebidensiya

Isulat ang tagna, aktuwal nga resulta, ug hinungdan sa pagkapareho o kalainan. Ang completion check mosukod sa pagsabot; ang practice task mopauswag sa kahanas.

Reperensiya sa pinulongan: git.agilaos.com

Reperensiya sa pinulongan: git.agilaos.com

\ No newline at end of file diff --git a/ceb/expanded-23-1/lesson-3/lesson.html b/ceb/expanded-23-1/lesson-3/lesson.html new file mode 100644 index 0000000..0abe691 --- /dev/null +++ b/ceb/expanded-23-1/lesson-3/lesson.html @@ -0,0 +1,6 @@ +Imodelo ang page translation

Imodelo ang page translation

15-minutong sesyon: pagbasa sulod sa 3 minutos, pag-trace sa 3, pag-eksperimento sa 7, ug pagtubag sa check sa 2. Paggahin og dugang oras kon gikinahanglan.

Mahimong bahinon ang virtual address ngadto sa page number ug offset. Ang modelo naggamit og 4096-byte page ug dictionary gikan sa virtual page ngadto sa physical frame. Adunay permission ang tinuod nga page table ug gidumala kini sa architecture-specific hardware ug kernel. Modelo kini, dili access sa physical memory.

Praktis ug ebidensiya: Tag-ana ang output, tangtanga ang mapping 2, ug dumalaa ang nawala nga page. Idugang ang read/write permission ug test nga mobalibad sa write.

page_size=4096
+table={2:7}
+address=2*page_size+13
+page,offset=divmod(address,page_size)
+print(table[page]*page_size+offset)
+

Gipaabot nga resulta: 28685

Praktis ug ebidensiya

Isulat ang tagna, aktuwal nga resulta, ug hinungdan sa pagkapareho o kalainan. Ang completion check mosukod sa pagsabot; ang practice task mopauswag sa kahanas.

Reperensiya sa pinulongan: git.agilaos.com

Reperensiya sa pinulongan: git.agilaos.com

\ No newline at end of file diff --git a/ceb/expanded-23-1/lesson-3/main.py b/ceb/expanded-23-1/lesson-3/main.py new file mode 100644 index 0000000..935c7a2 --- /dev/null +++ b/ceb/expanded-23-1/lesson-3/main.py @@ -0,0 +1,5 @@ +page_size=4096 +table={2:7} +address=2*page_size+13 +page,offset=divmod(address,page_size) +print(table[page]*page_size+offset) diff --git a/ceb/expanded-23-2/README.md b/ceb/expanded-23-2/README.md new file mode 100644 index 0000000..7287f4c --- /dev/null +++ b/ceb/expanded-23-2/README.md @@ -0,0 +1,9 @@ +# Paghimo og Open Agila OS · 2 + +[Agila University track](https://edu.agilaos.com/track.php?track=23&lang=ceb) + +Mga 15 minutos matag leksyon. Tag-ana, padagana, usba, ipasabot, ug tubaga ang pagsusi sa University. + +- [Lesson 1: Scheduler nga adunay masukod nga han-ay](lesson-1/lesson.html) +- [Lesson 2: Interrupt ug utlanan sa driver](lesson-2/lesson.html) +- [Lesson 3: Gikan sa host prototype ngadto sa bootable system](lesson-3/lesson.html) diff --git a/ceb/expanded-23-2/lesson-1/lesson.html b/ceb/expanded-23-2/lesson-1/lesson.html new file mode 100644 index 0000000..ecfdb86 --- /dev/null +++ b/ceb/expanded-23-2/lesson-1/lesson.html @@ -0,0 +1,9 @@ +Scheduler nga adunay masukod nga han-ay

Scheduler nga adunay masukod nga han-ay

15-minutong sesyon: pagbasa sulod sa 3 minutos, pag-trace sa 3, pag-eksperimento sa 7, ug pagtubag sa check sa 2. Paggahin og dugang oras kon gikinahanglan.

Ang scheduler mopili sa runnable task nga hatagan og turno. Imodelo ang round-robin gamit ang queue. Matag task mokonsumo og usa ka unit ug mobalik kon adunay nahibilin. Walay interrupt, context switch, o tinuod nga parallel execution niini nga modelo.

Praktis ug ebidensiya: Sunda ang A=2 ug B=1, idugang ang empty task, ug itakda kon mosulod ba kini sa runnable queue. Sulayi ang fairness pinaagi sa execution order.

from collections import deque
+ready=deque([("A",2),("B",1)])
+order=[]
+while ready:
+    name,left=ready.popleft()
+    order.append(name)
+    if left>1: ready.append((name,left-1))
+print(" ".join(order))
+

Gipaabot nga resulta: A B A

Praktis ug ebidensiya

Isulat ang tagna, aktuwal nga resulta, ug hinungdan sa pagkapareho o kalainan. Ang completion check mosukod sa pagsabot; ang practice task mopauswag sa kahanas.

Reperensiya sa pinulongan: git.agilaos.com

Reperensiya sa pinulongan: git.agilaos.com

\ No newline at end of file diff --git a/ceb/expanded-23-2/lesson-1/main.py b/ceb/expanded-23-2/lesson-1/main.py new file mode 100644 index 0000000..b66a647 --- /dev/null +++ b/ceb/expanded-23-2/lesson-1/main.py @@ -0,0 +1,8 @@ +from collections import deque +ready=deque([("A",2),("B",1)]) +order=[] +while ready: + name,left=ready.popleft() + order.append(name) + if left>1: ready.append((name,left-1)) +print(" ".join(order)) diff --git a/ceb/expanded-23-2/lesson-2/lesson.html b/ceb/expanded-23-2/lesson-2/lesson.html new file mode 100644 index 0000000..3f08da7 --- /dev/null +++ b/ceb/expanded-23-2/lesson-2/lesson.html @@ -0,0 +1 @@ +Interrupt ug utlanan sa driver

Interrupt ug utlanan sa driver

15-minutong sesyon: pagbasa sulod sa 3 minutos, pag-trace sa 3, pag-eksperimento sa 7, ug pagtubag sa check sa 2. Paggahin og dugang oras kon gikinahanglan.

Moagi sa architecture-specific entry code ang hardware interrupt. Dili hardware interrupt ang host callback. Ang driver mo-validate sa device state, modumala sa buffer, ug mosunod sa ordering rule. Sugdi sa fake device aron sulayan ang invalid length ug timeout nga walay arbitraryong hardware write.

Praktis ug ebidensiya: Pagdisenyo og read(buffer,length) contract nga adunay success, invalid argument, ug timeout. Pagsulat og test sa matag resulta sa dili pa mopili og emulator ug documented device.

Praktis ug ebidensiya

Isulat ang tagna, aktuwal nga resulta, ug hinungdan sa pagkapareho o kalainan. Ang completion check mosukod sa pagsabot; ang practice task mopauswag sa kahanas.

Reperensiya sa pinulongan: git.agilaos.com

Reperensiya sa pinulongan: git.agilaos.com

\ No newline at end of file diff --git a/ceb/expanded-23-2/lesson-3/lesson.html b/ceb/expanded-23-2/lesson-3/lesson.html new file mode 100644 index 0000000..6fe8608 --- /dev/null +++ b/ceb/expanded-23-2/lesson-3/lesson.html @@ -0,0 +1 @@ +Gikan sa host prototype ngadto sa bootable system

Gikan sa host prototype ngadto sa bootable system

15-minutong sesyon: pagbasa sulod sa 3 minutos, pag-trace sa 3, pag-eksperimento sa 7, ug pagtubag sa check sa 2. Paggahin og dugang oras kon gikinahanglan.

Ang bootable kernel nagkinahanglan og target, boot protocol, linker layout, freestanding runtime, exception entry, memory management, ug driver. Dili pa kompleto kini sa repository. Pili og gamay nga kontribusyon: ilisi ang stub og tested host model, idugang ang boundary test, o idokumento ang interface. Kinahanglang mo-boot sa emulator ang sunod nga milestone ug pamatud-an ang subsystem pinaagi sa obserbasyon.

Praktis ug ebidensiya: Paghimo og Forge branch, i-commit ang kausaban ug test evidence, ug ablihi ang pull request. Ilahi sa report ang host test ug boot test. Ang certificate nagrekord sa lesson checks; dili kini pamatuod nga nahuman na ang production OS.

Praktis ug ebidensiya

Isulat ang tagna, aktuwal nga resulta, ug hinungdan sa pagkapareho o kalainan. Ang completion check mosukod sa pagsabot; ang practice task mopauswag sa kahanas.

Reperensiya sa pinulongan: git.agilaos.com

Reperensiya sa pinulongan: git.agilaos.com

\ No newline at end of file diff --git a/ceb/expanded-24-1/README.md b/ceb/expanded-24-1/README.md new file mode 100644 index 0000000..6525541 --- /dev/null +++ b/ceb/expanded-24-1/README.md @@ -0,0 +1,9 @@ +# Server OS Engineering · 1 + +[Agila University track](https://edu.agilaos.com/track.php?track=24&lang=ceb) + +Mga 15 minutos matag leksyon. Tag-ana, padagana, usba, ipasabot, ug tubaga ang pagsusi sa University. + +- [Lesson 1: Unsa ang naghimo sa server OS?](lesson-1/lesson.html) +- [Lesson 2: State ug recovery sa service](lesson-2/lesson.html) +- [Lesson 3: Account ug least privilege](lesson-3/lesson.html) diff --git a/ceb/expanded-24-1/lesson-1/lesson.html b/ceb/expanded-24-1/lesson-1/lesson.html new file mode 100644 index 0000000..4986566 --- /dev/null +++ b/ceb/expanded-24-1/lesson-1/lesson.html @@ -0,0 +1 @@ +Unsa ang naghimo sa server OS?

Unsa ang naghimo sa server OS?

15-minutong sesyon: pagbasa sulod sa 3 minutos, pag-trace sa 3, pag-eksperimento sa 7, ug pagtubag sa check sa 2. Paggahin og dugang oras kon gikinahanglan.

Ang server OS naghiusa sa kernel, boot ug service management, storage, networking, account, update, ug recovery. Lahi ang paghimo og server distribution ug pagsulat og bag-ong kernel. Pilia ang tumong. Idrowing ang request gikan sa network interface ngadto sa service ug storage; markahi ang trust boundary.

Praktis ug ebidensiya: Tag-ana ang pananglitan o idrowing ang pag-usab sa state. Usba ang usa ka pagtuo, sulayi ang utlanan, ug itala ang aktuwal nga resulta. Ipasabot unsa ang wala mapamatud-i sa gamay nga modelo bahin sa production system.

Praktis ug ebidensiya

Isulat ang tagna, aktuwal nga resulta, ug hinungdan sa pagkapareho o kalainan. Ang completion check mosukod sa pagsabot; ang practice task mopauswag sa kahanas.

\ No newline at end of file diff --git a/ceb/expanded-24-1/lesson-2/lesson.html b/ceb/expanded-24-1/lesson-2/lesson.html new file mode 100644 index 0000000..06d019d --- /dev/null +++ b/ceb/expanded-24-1/lesson-2/lesson.html @@ -0,0 +1,3 @@ +State ug recovery sa service

State ug recovery sa service

15-minutong sesyon: pagbasa sulod sa 3 minutos, pag-trace sa 3, pag-eksperimento sa 7, ug pagtubag sa check sa 2. Paggahin og dugang oras kon gikinahanglan.

Mahimong stopped, starting, ready, failed, o restarting ang service. Ang readiness mao ang katakos sa trabaho, dili lang ang pagkaanaa sa PID. Kinahanglan og backoff ug limit ang restart aron malikayan ang walay hunong nga crash loop. Imodelo ang startup failure ug pagkaandam sa dependency.

Praktis ug ebidensiya: Tag-ana ang pananglitan o idrowing ang pag-usab sa state. Usba ang usa ka pagtuo, sulayi ang utlanan, ug itala ang aktuwal nga resulta. Ipasabot unsa ang wala mapamatud-i sa gamay nga modelo bahin sa production system.

delays=[min(2**attempt,30) for attempt in range(6)]
+print(delays)
+

Gipaabot nga resulta: [1, 2, 4, 8, 16, 30]

Praktis ug ebidensiya

Isulat ang tagna, aktuwal nga resulta, ug hinungdan sa pagkapareho o kalainan. Ang completion check mosukod sa pagsabot; ang practice task mopauswag sa kahanas.

\ No newline at end of file diff --git a/ceb/expanded-24-1/lesson-2/main.py b/ceb/expanded-24-1/lesson-2/main.py new file mode 100644 index 0000000..42bd164 --- /dev/null +++ b/ceb/expanded-24-1/lesson-2/main.py @@ -0,0 +1,2 @@ +delays=[min(2**attempt,30) for attempt in range(6)] +print(delays) diff --git a/ceb/expanded-24-1/lesson-3/lesson.html b/ceb/expanded-24-1/lesson-3/lesson.html new file mode 100644 index 0000000..d01649d --- /dev/null +++ b/ceb/expanded-24-1/lesson-3/lesson.html @@ -0,0 +1,6 @@ +Account ug least privilege

Account ug least privilege

15-minutong sesyon: pagbasa sulod sa 3 minutos, pag-trace sa 3, pag-eksperimento sa 7, ug pagtubag sa check sa 2. Paggahin og dugang oras kon gikinahanglan.

Ihatag lamang sa service ang file ug capability nga gikinahanglan. Ibulag ang admin ug application identity. Ang authentication mangutana kinsa ang caller; ang authorization mangutana unsa ang gitugotan. Sulayi ang estudyante nga mobasa sa record sa lain. Dili access-control check ang gitagong button.

Praktis ug ebidensiya: Tag-ana ang pananglitan o idrowing ang pag-usab sa state. Usba ang usa ka pagtuo, sulayi ang utlanan, ug itala ang aktuwal nga resulta. Ipasabot unsa ang wala mapamatud-i sa gamay nga modelo bahin sa production system.

def can_read(caller,owner):
+    return caller==owner
+assert can_read(7,7)
+assert not can_read(7,8)
+print("Passed")
+

Gipaabot nga resulta: Passed

Praktis ug ebidensiya

Isulat ang tagna, aktuwal nga resulta, ug hinungdan sa pagkapareho o kalainan. Ang completion check mosukod sa pagsabot; ang practice task mopauswag sa kahanas.

\ No newline at end of file diff --git a/ceb/expanded-24-1/lesson-3/main.py b/ceb/expanded-24-1/lesson-3/main.py new file mode 100644 index 0000000..d9cd1f0 --- /dev/null +++ b/ceb/expanded-24-1/lesson-3/main.py @@ -0,0 +1,5 @@ +def can_read(caller,owner): + return caller==owner +assert can_read(7,7) +assert not can_read(7,8) +print("Passed") diff --git a/ceb/expanded-24-2/README.md b/ceb/expanded-24-2/README.md new file mode 100644 index 0000000..df3d867 --- /dev/null +++ b/ceb/expanded-24-2/README.md @@ -0,0 +1,9 @@ +# Server OS Engineering · 2 + +[Agila University track](https://edu.agilaos.com/track.php?track=24&lang=ceb) + +Mga 15 minutos matag leksyon. Tag-ana, padagana, usba, ipasabot, ug tubaga ang pagsusi sa University. + +- [Lesson 1: Durable storage ug restore test](lesson-1/lesson.html) +- [Lesson 2: Obserbahi ang latency, error, ug capacity](lesson-2/lesson.html) +- [Lesson 3: Capstone alang sa server system](lesson-3/lesson.html) diff --git a/ceb/expanded-24-2/lesson-1/lesson.html b/ceb/expanded-24-2/lesson-1/lesson.html new file mode 100644 index 0000000..4fc04a5 --- /dev/null +++ b/ceb/expanded-24-2/lesson-1/lesson.html @@ -0,0 +1,6 @@ +Durable storage ug restore test

Durable storage ug restore test

15-minutong sesyon: pagbasa sulod sa 3 minutos, pag-trace sa 3, pag-eksperimento sa 7, ug pagtubag sa check sa 2. Paggahin og dugang oras kon gikinahanglan.

Mapuslanon lamang ang backup kon mauli ang data ug metadata. Planuhon ang consistent nga database ug repository snapshot. Ang checksum makakita og giusab nga byte apan dili pamatuod sa logical validity. Itakda ang recovery-point ug recovery-time target. Praktisa ang isolated restore sa dili pa ang outage.

Praktis ug ebidensiya: Tag-ana ang pananglitan o idrowing ang pag-usab sa state. Usba ang usa ka pagtuo, sulayi ang utlanan, ug itala ang aktuwal nga resulta. Ipasabot unsa ang wala mapamatud-i sa gamay nga modelo bahin sa production system.

import hashlib
+original=b"study record v1"
+restored=bytes(original)
+assert hashlib.sha256(original).digest()==hashlib.sha256(restored).digest()
+print("Bytes match; application checks still needed")
+

Gipaabot nga resulta: Bytes match; application checks still needed

Praktis ug ebidensiya

Isulat ang tagna, aktuwal nga resulta, ug hinungdan sa pagkapareho o kalainan. Ang completion check mosukod sa pagsabot; ang practice task mopauswag sa kahanas.

\ No newline at end of file diff --git a/ceb/expanded-24-2/lesson-1/main.py b/ceb/expanded-24-2/lesson-1/main.py new file mode 100644 index 0000000..b13abc7 --- /dev/null +++ b/ceb/expanded-24-2/lesson-1/main.py @@ -0,0 +1,5 @@ +import hashlib +original=b"study record v1" +restored=bytes(original) +assert hashlib.sha256(original).digest()==hashlib.sha256(restored).digest() +print("Bytes match; application checks still needed") diff --git a/ceb/expanded-24-2/lesson-2/lesson.html b/ceb/expanded-24-2/lesson-2/lesson.html new file mode 100644 index 0000000..3d26d4d --- /dev/null +++ b/ceb/expanded-24-2/lesson-2/lesson.html @@ -0,0 +1,6 @@ +Obserbahi ang latency, error, ug capacity

Obserbahi ang latency, error, ug capacity

15-minutong sesyon: pagbasa sulod sa 3 minutos, pag-trace sa 3, pag-eksperimento sa 7, ug pagtubag sa check sa 2. Paggahin og dugang oras kon gikinahanglan.

Matago sa average ang hinay nga request. Itala ang latency distribution, error count, resource use, ug measurement window. Ayaw i-log ang password o private payload. Median sa fixed demonstration data ang sample, dili sukod sa server. Ilisi og bounded local experiment ug butangi og environment label.

Praktis ug ebidensiya: Tag-ana ang pananglitan o idrowing ang pag-usab sa state. Usba ang usa ka pagtuo, sulayi ang utlanan, ug itala ang aktuwal nga resulta. Ipasabot unsa ang wala mapamatud-i sa gamay nga modelo bahin sa production system.

from statistics import median
+samples_ms=[2,3,3,4,40]
+print(median(samples_ms))
+print(max(samples_ms))
+

Gipaabot nga resulta: 3 +40

Praktis ug ebidensiya

Isulat ang tagna, aktuwal nga resulta, ug hinungdan sa pagkapareho o kalainan. Ang completion check mosukod sa pagsabot; ang practice task mopauswag sa kahanas.

\ No newline at end of file diff --git a/ceb/expanded-24-2/lesson-2/main.py b/ceb/expanded-24-2/lesson-2/main.py new file mode 100644 index 0000000..d7d32f9 --- /dev/null +++ b/ceb/expanded-24-2/lesson-2/main.py @@ -0,0 +1,4 @@ +from statistics import median +samples_ms=[2,3,3,4,40] +print(median(samples_ms)) +print(max(samples_ms)) diff --git a/ceb/expanded-24-2/lesson-3/lesson.html b/ceb/expanded-24-2/lesson-3/lesson.html new file mode 100644 index 0000000..623ef76 --- /dev/null +++ b/ceb/expanded-24-2/lesson-3/lesson.html @@ -0,0 +1 @@ +Capstone alang sa server system

Capstone alang sa server system

15-minutong sesyon: pagbasa sulod sa 3 minutos, pag-trace sa 3, pag-eksperimento sa 7, ug pagtubag sa check sa 2. Paggahin og dugang oras kon gikinahanglan.

Pagdisenyo og reproducible server image sa disposable VM: base, service user, firewall, HTTPS, update policy, backup, health check, ug restore drill. Itala ang clean install ug controlled failure. Alang sa Agila-native server, ilista ang kulang nga kernel ug driver imbes tawgon nga bag-ong OS ang host app. I-publish ang source ug redacted evidence sa Forge.

Praktis ug ebidensiya: Tag-ana ang pananglitan o idrowing ang pag-usab sa state. Usba ang usa ka pagtuo, sulayi ang utlanan, ug itala ang aktuwal nga resulta. Ipasabot unsa ang wala mapamatud-i sa gamay nga modelo bahin sa production system.

Praktis ug ebidensiya

Isulat ang tagna, aktuwal nga resulta, ug hinungdan sa pagkapareho o kalainan. Ang completion check mosukod sa pagsabot; ang practice task mopauswag sa kahanas.

\ No newline at end of file diff --git a/ceb/expanded-25-1/README.md b/ceb/expanded-25-1/README.md new file mode 100644 index 0000000..ff03a04 --- /dev/null +++ b/ceb/expanded-25-1/README.md @@ -0,0 +1,9 @@ +# AI Runtime Engineering · 1 + +[Agila University track](https://edu.agilaos.com/track.php?track=25&lang=ceb) + +Mga 15 minutos matag leksyon. Tag-ana, padagana, usba, ipasabot, ug tubaga ang pagsusi sa University. + +- [Lesson 1: Unsa ang buhat sa AI runtime](lesson-1/lesson.html) +- [Lesson 2: Shape sa dili pa matrix multiplication](lesson-2/lesson.html) +- [Lesson 3: Numerical tolerance ug reference](lesson-3/lesson.html) diff --git a/ceb/expanded-25-1/lesson-1/lesson.html b/ceb/expanded-25-1/lesson-1/lesson.html new file mode 100644 index 0000000..90c5772 --- /dev/null +++ b/ceb/expanded-25-1/lesson-1/lesson.html @@ -0,0 +1,6 @@ +Unsa ang buhat sa AI runtime

Unsa ang buhat sa AI runtime

15-minutong sesyon: pagbasa sulod sa 3 minutos, pag-trace sa 3, pag-eksperimento sa 7, ug pagtubag sa check sa 2. Paggahin og dugang oras kon gikinahanglan.

Ang model naghulagway sa parameter ug operation. Ang runtime mo-load ug mo-validate sa shape ug type, mo-allocate og memory, mo-schedule, ug mo-execute og kernel. Lahi ang training ug inference. Sugdi sa gamay nga deterministic calculation nga masusi sa kamot sa dili pa acceleration.

Praktis ug ebidensiya: Tag-ana ang pananglitan o idrowing ang pag-usab sa state. Usba ang usa ka pagtuo, sulayi ang utlanan, ug itala ang aktuwal nga resulta. Ipasabot unsa ang wala mapamatud-i sa gamay nga modelo bahin sa production system.

x=[2.0,3.0]
+w=[0.5,2.0]
+bias=1.0
+y=sum(a*b for a,b in zip(x,w))+bias
+print(y)
+

Gipaabot nga resulta: 8.0

Praktis ug ebidensiya

Isulat ang tagna, aktuwal nga resulta, ug hinungdan sa pagkapareho o kalainan. Ang completion check mosukod sa pagsabot; ang practice task mopauswag sa kahanas.

Reperensiya sa pinulongan: git.agilaos.com

Reperensiya sa pinulongan: onnx.ai

\ No newline at end of file diff --git a/ceb/expanded-25-1/lesson-1/main.py b/ceb/expanded-25-1/lesson-1/main.py new file mode 100644 index 0000000..0a5b911 --- /dev/null +++ b/ceb/expanded-25-1/lesson-1/main.py @@ -0,0 +1,5 @@ +x=[2.0,3.0] +w=[0.5,2.0] +bias=1.0 +y=sum(a*b for a,b in zip(x,w))+bias +print(y) diff --git a/ceb/expanded-25-1/lesson-2/lesson.html b/ceb/expanded-25-1/lesson-2/lesson.html new file mode 100644 index 0000000..bf2a9a4 --- /dev/null +++ b/ceb/expanded-25-1/lesson-2/lesson.html @@ -0,0 +1,6 @@ +Shape sa dili pa matrix multiplication

Shape sa dili pa matrix multiplication

15-minutong sesyon: pagbasa sulod sa 3 minutos, pag-trace sa 3, pag-eksperimento sa 7, ug pagtubag sa check sa 2. Paggahin og dugang oras kon gikinahanglan.

Kon m×k ang A ug k×n ang B, m×n ang resulta. Kinahanglang magkatakdo ang inner dimension. Susiha ang empty ug ragged input sa dili pa indexing. Makapugong ang shape check sa ubang error apan dili kini pamatuod sa kahulogan sa weight. CPU reference kini, dili trained language model.

Praktis ug ebidensiya: Tag-ana ang pananglitan o idrowing ang pag-usab sa state. Usba ang usa ka pagtuo, sulayi ang utlanan, ug itala ang aktuwal nga resulta. Ipasabot unsa ang wala mapamatud-i sa gamay nga modelo bahin sa production system.

a=[[1,2],[3,4]]
+b=[[5],[6]]
+assert all(len(row)==len(b) for row in a)
+out=[[sum(a[i][k]*b[k][j] for k in range(len(b))) for j in range(len(b[0]))] for i in range(len(a))]
+print(out)
+

Gipaabot nga resulta: [[17], [39]]

Praktis ug ebidensiya

Isulat ang tagna, aktuwal nga resulta, ug hinungdan sa pagkapareho o kalainan. Ang completion check mosukod sa pagsabot; ang practice task mopauswag sa kahanas.

Reperensiya sa pinulongan: git.agilaos.com

Reperensiya sa pinulongan: onnx.ai

\ No newline at end of file diff --git a/ceb/expanded-25-1/lesson-2/main.py b/ceb/expanded-25-1/lesson-2/main.py new file mode 100644 index 0000000..f550200 --- /dev/null +++ b/ceb/expanded-25-1/lesson-2/main.py @@ -0,0 +1,5 @@ +a=[[1,2],[3,4]] +b=[[5],[6]] +assert all(len(row)==len(b) for row in a) +out=[[sum(a[i][k]*b[k][j] for k in range(len(b))) for j in range(len(b[0]))] for i in range(len(a))] +print(out) diff --git a/ceb/expanded-25-1/lesson-3/lesson.html b/ceb/expanded-25-1/lesson-3/lesson.html new file mode 100644 index 0000000..c42cc7b --- /dev/null +++ b/ceb/expanded-25-1/lesson-3/lesson.html @@ -0,0 +1,4 @@ +Numerical tolerance ug reference

Numerical tolerance ug reference

15-minutong sesyon: pagbasa sulod sa 3 minutos, pag-trace sa 3, pag-eksperimento sa 7, ug pagtubag sa check sa 2. Paggahin og dugang oras kon gikinahanglan.

Mahimong magkalahi og gamay ang floating-point result kon mausab ang han-ay. Itandi sa trusted reference gamit ang documented absolute ug relative tolerance; balibari ang wala damhang NaN. Ayaw padak-a lang ang tolerance aron mopasar. Sulayi ang zero, negative, dakong magnitude, ug normal range.

Praktis ug ebidensiya: Tag-ana ang pananglitan o idrowing ang pag-usab sa state. Usba ang usa ka pagtuo, sulayi ang utlanan, ug itala ang aktuwal nga resulta. Ipasabot unsa ang wala mapamatud-i sa gamay nga modelo bahin sa production system.

import math
+actual=0.1+0.2
+print(math.isclose(actual,0.3,rel_tol=1e-9,abs_tol=1e-12))
+

Gipaabot nga resulta: True

Praktis ug ebidensiya

Isulat ang tagna, aktuwal nga resulta, ug hinungdan sa pagkapareho o kalainan. Ang completion check mosukod sa pagsabot; ang practice task mopauswag sa kahanas.

Reperensiya sa pinulongan: git.agilaos.com

Reperensiya sa pinulongan: onnx.ai

\ No newline at end of file diff --git a/ceb/expanded-25-1/lesson-3/main.py b/ceb/expanded-25-1/lesson-3/main.py new file mode 100644 index 0000000..2476d49 --- /dev/null +++ b/ceb/expanded-25-1/lesson-3/main.py @@ -0,0 +1,3 @@ +import math +actual=0.1+0.2 +print(math.isclose(actual,0.3,rel_tol=1e-9,abs_tol=1e-12)) diff --git a/ceb/expanded-25-2/README.md b/ceb/expanded-25-2/README.md new file mode 100644 index 0000000..0bb70cd --- /dev/null +++ b/ceb/expanded-25-2/README.md @@ -0,0 +1,9 @@ +# AI Runtime Engineering · 2 + +[Agila University track](https://edu.agilaos.com/track.php?track=25&lang=ceb) + +Mga 15 minutos matag leksyon. Tag-ana, padagana, usba, ipasabot, ug tubaga ang pagsusi sa University. + +- [Lesson 1: Planuhon ang memory lifetime](lesson-1/lesson.html) +- [Lesson 2: Adunay error budget ang quantization](lesson-2/lesson.html) +- [Lesson 3: Runtime capstone nga mapasabot](lesson-3/lesson.html) diff --git a/ceb/expanded-25-2/lesson-1/lesson.html b/ceb/expanded-25-2/lesson-1/lesson.html new file mode 100644 index 0000000..57717ac --- /dev/null +++ b/ceb/expanded-25-2/lesson-1/lesson.html @@ -0,0 +1,4 @@ +Planuhon ang memory lifetime

Planuhon ang memory lifetime

15-minutong sesyon: pagbasa sulod sa 3 minutos, pag-trace sa 3, pag-eksperimento sa 7, ug pagtubag sa check sa 2. Paggahin og dugang oras kon gikinahanglan.

Adunay creation ug last-use point ang value sa execution graph. Gamita pag-usab ang buffer kon dili na gikinahanglan ang daang value ug walay asynchronous operation nga naggamit niini. Ilahi ang accounting sa weight, activation, workspace, ug cache. Kwentaha ang element count times bytes per element; idugang ang alignment ug overhead sa tinuod nga implementation.

Praktis ug ebidensiya: Tag-ana ang pananglitan o idrowing ang pag-usab sa state. Usba ang usa ka pagtuo, sulayi ang utlanan, ug itala ang aktuwal nga resulta. Ipasabot unsa ang wala mapamatud-i sa gamay nga modelo bahin sa production system.

shape=(4,8)
+bytes_per_element=4
+print(shape[0]*shape[1]*bytes_per_element)
+

Gipaabot nga resulta: 128

Praktis ug ebidensiya

Isulat ang tagna, aktuwal nga resulta, ug hinungdan sa pagkapareho o kalainan. Ang completion check mosukod sa pagsabot; ang practice task mopauswag sa kahanas.

Reperensiya sa pinulongan: git.agilaos.com

Reperensiya sa pinulongan: onnx.ai

\ No newline at end of file diff --git a/ceb/expanded-25-2/lesson-1/main.py b/ceb/expanded-25-2/lesson-1/main.py new file mode 100644 index 0000000..31684b3 --- /dev/null +++ b/ceb/expanded-25-2/lesson-1/main.py @@ -0,0 +1,3 @@ +shape=(4,8) +bytes_per_element=4 +print(shape[0]*shape[1]*bytes_per_element) diff --git a/ceb/expanded-25-2/lesson-2/lesson.html b/ceb/expanded-25-2/lesson-2/lesson.html new file mode 100644 index 0000000..1e42c5c --- /dev/null +++ b/ceb/expanded-25-2/lesson-2/lesson.html @@ -0,0 +1,8 @@ +Adunay error budget ang quantization

Adunay error budget ang quantization

15-minutong sesyon: pagbasa sulod sa 3 minutos, pag-trace sa 3, pag-eksperimento sa 7, ug pagtubag sa check sa 2. Paggahin og dugang oras kon gikinahanglan.

Ang yano nga symmetric quantizer mobahin sa scale, mo-round, ug molimit sa integer range. Ang dequantization mo-multiply sa scale. Mawad-an og impormasyon ang clipping ug rounding. Sukda ang numerical error ug task accuracy sa dili pa dawaton ang mas gamay nga representation. Dili tanan nga production format ang implemented niini nga scalar exercise.

Praktis ug ebidensiya: Tag-ana ang pananglitan o idrowing ang pag-usab sa state. Usba ang usa ka pagtuo, sulayi ang utlanan, ug itala ang aktuwal nga resulta. Ipasabot unsa ang wala mapamatud-i sa gamay nga modelo bahin sa production system.

value=0.36
+scale=0.1
+q=max(-127,min(127,round(value/scale)))
+restored=q*scale
+print(q)
+print(round(abs(value-restored),3))
+

Gipaabot nga resulta: 4 +0.04

Praktis ug ebidensiya

Isulat ang tagna, aktuwal nga resulta, ug hinungdan sa pagkapareho o kalainan. Ang completion check mosukod sa pagsabot; ang practice task mopauswag sa kahanas.

Reperensiya sa pinulongan: git.agilaos.com

Reperensiya sa pinulongan: onnx.ai

\ No newline at end of file diff --git a/ceb/expanded-25-2/lesson-2/main.py b/ceb/expanded-25-2/lesson-2/main.py new file mode 100644 index 0000000..6800f3e --- /dev/null +++ b/ceb/expanded-25-2/lesson-2/main.py @@ -0,0 +1,6 @@ +value=0.36 +scale=0.1 +q=max(-127,min(127,round(value/scale))) +restored=q*scale +print(q) +print(round(abs(value-restored),3)) diff --git a/ceb/expanded-25-2/lesson-3/lesson.html b/ceb/expanded-25-2/lesson-3/lesson.html new file mode 100644 index 0000000..c2c0fb3 --- /dev/null +++ b/ceb/expanded-25-2/lesson-3/lesson.html @@ -0,0 +1 @@ +Runtime capstone nga mapasabot

Runtime capstone nga mapasabot

15-minutong sesyon: pagbasa sulod sa 3 minutos, pag-trace sa 3, pag-eksperimento sa 7, ug pagtubag sa check sa 2. Paggahin og dugang oras kon gikinahanglan.

Paghimo og gamay nga graph executor nga adunay input, matrix multiplication, bias, ug activation. I-validate ang shape, ipadayon ang CPU reference, planuhon ang buffer lifetime, ug i-benchmark nga bulag ang warm ug cold run. CPU reference backend pa ang AGX Open; dili pamatuod sa GPU execution ang pag-request og GPU. Idugang lamang ang backend kon napamatud-an sa detection ug correctness check nga gigamit kini.

Praktis ug ebidensiya: Tag-ana ang pananglitan o idrowing ang pag-usab sa state. Usba ang usa ka pagtuo, sulayi ang utlanan, ug itala ang aktuwal nga resulta. Ipasabot unsa ang wala mapamatud-i sa gamay nga modelo bahin sa production system.

Praktis ug ebidensiya

Isulat ang tagna, aktuwal nga resulta, ug hinungdan sa pagkapareho o kalainan. Ang completion check mosukod sa pagsabot; ang practice task mopauswag sa kahanas.

Reperensiya sa pinulongan: git.agilaos.com

Reperensiya sa pinulongan: onnx.ai

\ No newline at end of file diff --git a/ceb/expanded-26-1/README.md b/ceb/expanded-26-1/README.md new file mode 100644 index 0000000..16d17d1 --- /dev/null +++ b/ceb/expanded-26-1/README.md @@ -0,0 +1,9 @@ +# Algorithm ug Data Structure · 1 + +[Agila University track](https://edu.agilaos.com/track.php?track=26&lang=ceb) + +Mga 15 minutos matag leksyon. Tag-ana, padagana, usba, ipasabot, ug tubaga ang pagsusi sa University. + +- [Lesson 1: Ihap sa trabaho sa pagpangita](lesson-1/lesson.html) +- [Lesson 2: Gamit og queue kon importante ang han-ay](lesson-2/lesson.html) +- [Lesson 3: Nagkinahanglan og invariant ang binary search](lesson-3/lesson.html) diff --git a/ceb/expanded-26-1/lesson-1/lesson.html b/ceb/expanded-26-1/lesson-1/lesson.html new file mode 100644 index 0000000..a22c9dd --- /dev/null +++ b/ceb/expanded-26-1/lesson-1/lesson.html @@ -0,0 +1,7 @@ +Ihap sa trabaho sa pagpangita

Ihap sa trabaho sa pagpangita

15-minutong sesyon: pagbasa sulod sa 3 minutos, pag-trace sa 3, pag-eksperimento sa 7, ug pagtubag sa check sa 2. Paggahin og dugang oras kon gikinahanglan.

Mahimong susihon sa linear search ang matag element. Ihapa ang comparison sa una, kataposang match, ug missing value. Growth ang Big-O, dili aktuwal nga oras sa machine. Itandi ang size 10, 100, ug 1000 sa dili pa mopili og structure.

Praktis ug ebidensiya: Tag-ana ang pananglitan o idrowing ang pag-usab sa state. Usba ang usa ka pagtuo, sulayi ang utlanan, ug itala ang aktuwal nga resulta. Ipasabot unsa ang wala mapamatud-i sa gamay nga modelo bahin sa production system.

items=list(range(10))
+checks=0
+for value in items:
+    checks+=1
+    if value==9:break
+print(checks)
+

Gipaabot nga resulta: 10

Praktis ug ebidensiya

Isulat ang tagna, aktuwal nga resulta, ug hinungdan sa pagkapareho o kalainan. Ang completion check mosukod sa pagsabot; ang practice task mopauswag sa kahanas.

\ No newline at end of file diff --git a/ceb/expanded-26-1/lesson-1/main.py b/ceb/expanded-26-1/lesson-1/main.py new file mode 100644 index 0000000..01cbdd4 --- /dev/null +++ b/ceb/expanded-26-1/lesson-1/main.py @@ -0,0 +1,6 @@ +items=list(range(10)) +checks=0 +for value in items: + checks+=1 + if value==9:break +print(checks) diff --git a/ceb/expanded-26-1/lesson-2/lesson.html b/ceb/expanded-26-1/lesson-2/lesson.html new file mode 100644 index 0000000..48f3b39 --- /dev/null +++ b/ceb/expanded-26-1/lesson-2/lesson.html @@ -0,0 +1,7 @@ +Gamit og queue kon importante ang han-ay

Gamit og queue kon importante ang han-ay

15-minutong sesyon: pagbasa sulod sa 3 minutos, pag-trace sa 3, pag-eksperimento sa 7, ug pagtubag sa check sa 2. Paggahin og dugang oras kon gikinahanglan.

Ang FIFO mokuha sa pinakaunang item. Gamita ang deque sa work queue imbes kanunay kuhaon ang index zero sa taas nga list. Itakda ang capacity ug buhaton kon puno. Sulayi ang empty, one-item, ug full; kinahanglan gihapon og saktong policy ang efficient structure.

Praktis ug ebidensiya: Tag-ana ang pananglitan o idrowing ang pag-usab sa state. Usba ang usa ka pagtuo, sulayi ang utlanan, ug itala ang aktuwal nga resulta. Ipasabot unsa ang wala mapamatud-i sa gamay nga modelo bahin sa production system.

from collections import deque
+queue=deque(["A","B"])
+print(queue.popleft())
+queue.append("C")
+print(list(queue))
+

Gipaabot nga resulta: A +['B', 'C']

Praktis ug ebidensiya

Isulat ang tagna, aktuwal nga resulta, ug hinungdan sa pagkapareho o kalainan. Ang completion check mosukod sa pagsabot; ang practice task mopauswag sa kahanas.

\ No newline at end of file diff --git a/ceb/expanded-26-1/lesson-2/main.py b/ceb/expanded-26-1/lesson-2/main.py new file mode 100644 index 0000000..5a90bd2 --- /dev/null +++ b/ceb/expanded-26-1/lesson-2/main.py @@ -0,0 +1,5 @@ +from collections import deque +queue=deque(["A","B"]) +print(queue.popleft()) +queue.append("C") +print(list(queue)) diff --git a/ceb/expanded-26-1/lesson-3/lesson.html b/ceb/expanded-26-1/lesson-3/lesson.html new file mode 100644 index 0000000..84fbb94 --- /dev/null +++ b/ceb/expanded-26-1/lesson-3/lesson.html @@ -0,0 +1,8 @@ +Nagkinahanglan og invariant ang binary search

Nagkinahanglan og invariant ang binary search

15-minutong sesyon: pagbasa sulod sa 3 minutos, pag-trace sa 3, pag-eksperimento sa 7, ug pagtubag sa check sa 2. Paggahin og dugang oras kon gikinahanglan.

Ang binary search nagsalig sa sorted data ug nagkagamay nga interval. Mahimong sayop ang paspas nga loop sa unsorted data. Gamita ang library, sulayi ang insertion sa duha ka tumoy ug existing value, ug ipasabot ang invariant sa dili pa maghimo og kaugalingon.

Praktis ug ebidensiya: Tag-ana ang pananglitan o idrowing ang pag-usab sa state. Usba ang usa ka pagtuo, sulayi ang utlanan, ug itala ang aktuwal nga resulta. Ipasabot unsa ang wala mapamatud-i sa gamay nga modelo bahin sa production system.

from bisect import bisect_left
+values=[2,4,6]
+print(bisect_left(values,1))
+print(bisect_left(values,4))
+print(bisect_left(values,8))
+

Gipaabot nga resulta: 0 +1 +3

Praktis ug ebidensiya

Isulat ang tagna, aktuwal nga resulta, ug hinungdan sa pagkapareho o kalainan. Ang completion check mosukod sa pagsabot; ang practice task mopauswag sa kahanas.

\ No newline at end of file diff --git a/ceb/expanded-26-1/lesson-3/main.py b/ceb/expanded-26-1/lesson-3/main.py new file mode 100644 index 0000000..fac026e --- /dev/null +++ b/ceb/expanded-26-1/lesson-3/main.py @@ -0,0 +1,5 @@ +from bisect import bisect_left +values=[2,4,6] +print(bisect_left(values,1)) +print(bisect_left(values,4)) +print(bisect_left(values,8)) diff --git a/ceb/expanded-27-1/README.md b/ceb/expanded-27-1/README.md new file mode 100644 index 0000000..6e0dcf5 --- /dev/null +++ b/ceb/expanded-27-1/README.md @@ -0,0 +1,9 @@ +# Concurrency ug Scheduling · 1 + +[Agila University track](https://edu.agilaos.com/track.php?track=27&lang=ceb) + +Mga 15 minutos matag leksyon. Tag-ana, padagana, usba, ipasabot, ug tubaga ang pagsusi sa University. + +- [Lesson 1: Mahimong mawala ang update sa interleaving](lesson-1/lesson.html) +- [Lesson 2: Sakop ug ownership sa lock](lesson-2/lesson.html) +- [Lesson 3: Bounded queue ug backpressure](lesson-3/lesson.html) diff --git a/ceb/expanded-27-1/lesson-1/lesson.html b/ceb/expanded-27-1/lesson-1/lesson.html new file mode 100644 index 0000000..afdbda2 --- /dev/null +++ b/ceb/expanded-27-1/lesson-1/lesson.html @@ -0,0 +1,7 @@ +Mahimong mawala ang update sa interleaving

Mahimong mawala ang update sa interleaving

15-minutong sesyon: pagbasa sulod sa 3 minutos, pag-trace sa 3, pag-eksperimento sa 7, ug pagtubag sa check sa 2. Paggahin og dugang oras kon gikinahanglan.

Mahimong mabasa sa duha ka worker ang samang counter sa dili pa mosulat. Parehong one ang kalkulasyon ug one ang final imbes two. Deterministic nga modelo ang pananglitan aron dili magsalig sa tsansa sa race. Ilha ang shared state ug operation nga angay atomic o protected.

Praktis ug ebidensiya: Tag-ana ang pananglitan o idrowing ang pag-usab sa state. Usba ang usa ka pagtuo, sulayi ang utlanan, ug itala ang aktuwal nga resulta. Ipasabot unsa ang wala mapamatud-i sa gamay nga modelo bahin sa production system.

counter=0
+a=counter
+b=counter
+counter=a+1
+counter=b+1
+print(counter)
+

Gipaabot nga resulta: 1

Praktis ug ebidensiya

Isulat ang tagna, aktuwal nga resulta, ug hinungdan sa pagkapareho o kalainan. Ang completion check mosukod sa pagsabot; ang practice task mopauswag sa kahanas.

\ No newline at end of file diff --git a/ceb/expanded-27-1/lesson-1/main.py b/ceb/expanded-27-1/lesson-1/main.py new file mode 100644 index 0000000..5118802 --- /dev/null +++ b/ceb/expanded-27-1/lesson-1/main.py @@ -0,0 +1,6 @@ +counter=0 +a=counter +b=counter +counter=a+1 +counter=b+1 +print(counter) diff --git a/ceb/expanded-27-1/lesson-2/lesson.html b/ceb/expanded-27-1/lesson-2/lesson.html new file mode 100644 index 0000000..86c6c20 --- /dev/null +++ b/ceb/expanded-27-1/lesson-2/lesson.html @@ -0,0 +1 @@ +Sakop ug ownership sa lock

Sakop ug ownership sa lock

15-minutong sesyon: pagbasa sulod sa 3 minutos, pag-trace sa 3, pag-eksperimento sa 7, ug pagtubag sa check sa 2. Paggahin og dugang oras kon gikinahanglan.

Mapanalipdan sa lock ang invariant kon pareho ang lagda sa tanang access. Panalipdi ang tibuok read-modify-write, dili final assignment lamang. Pagtakda og consistent lock order kon daghan. Mahimong sakto apan hinay ang global lock; sukda sa dili pa bahinon.

Praktis ug ebidensiya: Tag-ana ang pananglitan o idrowing ang pag-usab sa state. Usba ang usa ka pagtuo, sulayi ang utlanan, ug itala ang aktuwal nga resulta. Ipasabot unsa ang wala mapamatud-i sa gamay nga modelo bahin sa production system.

Praktis ug ebidensiya

Isulat ang tagna, aktuwal nga resulta, ug hinungdan sa pagkapareho o kalainan. Ang completion check mosukod sa pagsabot; ang practice task mopauswag sa kahanas.

\ No newline at end of file diff --git a/ceb/expanded-27-1/lesson-3/lesson.html b/ceb/expanded-27-1/lesson-3/lesson.html new file mode 100644 index 0000000..4742283 --- /dev/null +++ b/ceb/expanded-27-1/lesson-3/lesson.html @@ -0,0 +1,8 @@ +Bounded queue ug backpressure

Bounded queue ug backpressure

15-minutong sesyon: pagbasa sulod sa 3 minutos, pag-trace sa 3, pag-eksperimento sa 7, ug pagtubag sa check sa 2. Paggahin og dugang oras kon gikinahanglan.

Mahurot ang memory sa unbounded producer kon hinay ang consumer. Pili og bounded queue ug policy: wait, reject, o shed. Kinahanglang mapukaw ang blocked participant sa cancellation ug shutdown. Imodelo ang capacity two ug ipasabot ang ikatulong job ug pahibalo sa caller.

Praktis ug ebidensiya: Tag-ana ang pananglitan o idrowing ang pag-usab sa state. Usba ang usa ka pagtuo, sulayi ang utlanan, ug itala ang aktuwal nga resulta. Ipasabot unsa ang wala mapamatud-i sa gamay nga modelo bahin sa production system.

queue=[]
+capacity=2
+for job in ["A","B","C"]:
+    if len(queue)<capacity:queue.append(job)
+    else:print("Rejected",job)
+print(queue)
+

Gipaabot nga resulta: Rejected C +['A', 'B']

Praktis ug ebidensiya

Isulat ang tagna, aktuwal nga resulta, ug hinungdan sa pagkapareho o kalainan. Ang completion check mosukod sa pagsabot; ang practice task mopauswag sa kahanas.

\ No newline at end of file diff --git a/ceb/expanded-27-1/lesson-3/main.py b/ceb/expanded-27-1/lesson-3/main.py new file mode 100644 index 0000000..bd2e6b4 --- /dev/null +++ b/ceb/expanded-27-1/lesson-3/main.py @@ -0,0 +1,6 @@ +queue=[] +capacity=2 +for job in ["A","B","C"]: + if len(queue)Mag-validate sa dili pa molabang sa boundary

Mag-validate sa dili pa molabang sa boundary

15-minutong sesyon: pagbasa sulod sa 3 minutos, pag-trace sa 3, pag-eksperimento sa 7, ug pagtubag sa check sa 2. Paggahin og dugang oras kon gikinahanglan.

Tagda nga untrusted ang external value. Itakda ang valid type, size, range, ug structure sa dili pa gamiton. Klarong balibari ang invalid imbes himoon nga laing request. Sulayi ang endpoints ug tapad nga outside value. Kinahanglan gihapon og authorization bisan valid ang value.

Praktis ug ebidensiya: Tag-ana ang pananglitan o idrowing ang pag-usab sa state. Usba ang usa ka pagtuo, sulayi ang utlanan, ug itala ang aktuwal nga resulta. Ipasabot unsa ang wala mapamatud-i sa gamay nga modelo bahin sa production system.

def valid_score(value):
+    return type(value) is int and 0<=value<=100
+print([valid_score(x) for x in [-1,0,100,101,True]])
+

Gipaabot nga resulta: [False, True, True, False, False]

Praktis ug ebidensiya

Isulat ang tagna, aktuwal nga resulta, ug hinungdan sa pagkapareho o kalainan. Ang completion check mosukod sa pagsabot; ang practice task mopauswag sa kahanas.

\ No newline at end of file diff --git a/ceb/expanded-28-1/lesson-1/main.py b/ceb/expanded-28-1/lesson-1/main.py new file mode 100644 index 0000000..d68c399 --- /dev/null +++ b/ceb/expanded-28-1/lesson-1/main.py @@ -0,0 +1,3 @@ +def valid_score(value): + return type(value) is int and 0<=value<=100 +print([valid_score(x) for x in [-1,0,100,101,True]]) diff --git a/ceb/expanded-28-1/lesson-2/lesson.html b/ceb/expanded-28-1/lesson-2/lesson.html new file mode 100644 index 0000000..f6017c3 --- /dev/null +++ b/ceb/expanded-28-1/lesson-2/lesson.html @@ -0,0 +1,7 @@ +Ibulag ang data ug instruction

Ibulag ang data ug instruction

15-minutong sesyon: pagbasa sulod sa 3 minutos, pag-trace sa 3, pag-eksperimento sa 7, ug pagtubag sa check sa 2. Paggahin og dugang oras kon gikinahanglan.

Gamita ang parameterized query sa database value ug argument array sa process. Dili mahimong luwas alang sa SQL o shell ang string pinaagi sa HTML escaping. Ilha ang interpreter sa matag boundary ug gamita ang data interface. Dili kinahanglan mopadagan og attack payload sa laing service.

Praktis ug ebidensiya: Tag-ana ang pananglitan o idrowing ang pag-usab sa state. Usba ang usa ka pagtuo, sulayi ang utlanan, ug itala ang aktuwal nga resulta. Ipasabot unsa ang wala mapamatud-i sa gamay nga modelo bahin sa production system.

import sqlite3
+db=sqlite3.connect(":memory:")
+db.execute("create table notes(value text)")
+value="A student's note"
+db.execute("insert into notes values (?)",(value,))
+print(db.execute("select value from notes").fetchone()[0])
+

Gipaabot nga resulta: A student's note

Praktis ug ebidensiya

Isulat ang tagna, aktuwal nga resulta, ug hinungdan sa pagkapareho o kalainan. Ang completion check mosukod sa pagsabot; ang practice task mopauswag sa kahanas.

\ No newline at end of file diff --git a/ceb/expanded-28-1/lesson-2/main.py b/ceb/expanded-28-1/lesson-2/main.py new file mode 100644 index 0000000..350944e --- /dev/null +++ b/ceb/expanded-28-1/lesson-2/main.py @@ -0,0 +1,6 @@ +import sqlite3 +db=sqlite3.connect(":memory:") +db.execute("create table notes(value text)") +value="A student's note" +db.execute("insert into notes values (?)",(value,)) +print(db.execute("select value from notes").fetchone()[0]) diff --git a/ceb/expanded-28-1/lesson-3/lesson.html b/ceb/expanded-28-1/lesson-3/lesson.html new file mode 100644 index 0000000..b033472 --- /dev/null +++ b/ceb/expanded-28-1/lesson-3/lesson.html @@ -0,0 +1 @@ +Ang regression test angay mosulay sa fix

Ang regression test angay mosulay sa fix

15-minutong sesyon: pagbasa sulod sa 3 minutos, pag-trace sa 3, pag-eksperimento sa 7, ug pagtubag sa check sa 2. Paggahin og dugang oras kon gikinahanglan.

Pagsulat og test nga mapakyas sa dili pa ang fix ug mopasar human niini. Iapil ang pinakagamay nga reproducer ug tapad nga valid case. Ipadayon ang authorization, boundary, ug error-path test; dili igo ang happy-path screenshot. Itala ang wala mapamatud-i ug ayaw moingon nga wala nay bisan unsang vulnerability.

Praktis ug ebidensiya: Tag-ana ang pananglitan o idrowing ang pag-usab sa state. Usba ang usa ka pagtuo, sulayi ang utlanan, ug itala ang aktuwal nga resulta. Ipasabot unsa ang wala mapamatud-i sa gamay nga modelo bahin sa production system.

Praktis ug ebidensiya

Isulat ang tagna, aktuwal nga resulta, ug hinungdan sa pagkapareho o kalainan. Ang completion check mosukod sa pagsabot; ang practice task mopauswag sa kahanas.

\ No newline at end of file diff --git a/ceb/expanded-29-1/README.md b/ceb/expanded-29-1/README.md new file mode 100644 index 0000000..31416be --- /dev/null +++ b/ceb/expanded-29-1/README.md @@ -0,0 +1,9 @@ +# Networking ug Protocol · 1 + +[Agila University track](https://edu.agilaos.com/track.php?track=29&lang=ceb) + +Mga 15 minutos matag leksyon. Tag-ana, padagana, usba, ipasabot, ug tubaga ang pagsusi sa University. + +- [Lesson 1: Ngalan, address, connection, request](lesson-1/lesson.html) +- [Lesson 2: Ang byte stream nagkinahanglan og framing](lesson-2/lesson.html) +- [Lesson 3: Timeout, retry, ug idempotency](lesson-3/lesson.html) diff --git a/ceb/expanded-29-1/lesson-1/lesson.html b/ceb/expanded-29-1/lesson-1/lesson.html new file mode 100644 index 0000000..f7e882e --- /dev/null +++ b/ceb/expanded-29-1/lesson-1/lesson.html @@ -0,0 +1 @@ +Ngalan, address, connection, request

Ngalan, address, connection, request

15-minutong sesyon: pagbasa sulod sa 3 minutos, pag-trace sa 3, pag-eksperimento sa 7, ug pagtubag sa check sa 2. Paggahin og dugang oras kon gikinahanglan.

Ang DNS mo-resolve sa ngalan; communication ang transport; authentication ug encryption ang TLS; request ug response ang HTTP. Ayaw isagol ang layer sa failure. Pananglitan ang DNS incident sa University: dili makatabang ang healthy server sa client nga adunay cached failed lookup. Idrowing ang layers ug test sa matag usa.

Praktis ug ebidensiya: Tag-ana ang pananglitan o idrowing ang pag-usab sa state. Usba ang usa ka pagtuo, sulayi ang utlanan, ug itala ang aktuwal nga resulta. Ipasabot unsa ang wala mapamatud-i sa gamay nga modelo bahin sa production system.

Praktis ug ebidensiya

Isulat ang tagna, aktuwal nga resulta, ug hinungdan sa pagkapareho o kalainan. Ang completion check mosukod sa pagsabot; ang practice task mopauswag sa kahanas.

\ No newline at end of file diff --git a/ceb/expanded-29-1/lesson-2/lesson.html b/ceb/expanded-29-1/lesson-2/lesson.html new file mode 100644 index 0000000..1453af4 --- /dev/null +++ b/ceb/expanded-29-1/lesson-2/lesson.html @@ -0,0 +1,5 @@ +Ang byte stream nagkinahanglan og framing

Ang byte stream nagkinahanglan og framing

15-minutong sesyon: pagbasa sulod sa 3 minutos, pag-trace sa 3, pag-eksperimento sa 7, ug pagtubag sa check sa 2. Paggahin og dugang oras kon gikinahanglan.

Mahimong bahin o daghang message ang ibalik sa TCP read. Pagtakda og framing gamit ang length, delimiter, o format. I-validate ang maximum length sa dili pa allocation ug dumalaa ang truncated input. Ang modelo mo-parse sa two-byte length prefix sa fixed bytes; walay network connection sa sandbox.

Praktis ug ebidensiya: Tag-ana ang pananglitan o idrowing ang pag-usab sa state. Usba ang usa ka pagtuo, sulayi ang utlanan, ug itala ang aktuwal nga resulta. Ipasabot unsa ang wala mapamatud-i sa gamay nga modelo bahin sa production system.

packet=bytes([0,3])+b"cat"
+length=int.from_bytes(packet[:2],"big")
+assert length<=100 and len(packet)-2==length
+print(packet[2:].decode())
+

Gipaabot nga resulta: cat

Praktis ug ebidensiya

Isulat ang tagna, aktuwal nga resulta, ug hinungdan sa pagkapareho o kalainan. Ang completion check mosukod sa pagsabot; ang practice task mopauswag sa kahanas.

\ No newline at end of file diff --git a/ceb/expanded-29-1/lesson-2/main.py b/ceb/expanded-29-1/lesson-2/main.py new file mode 100644 index 0000000..065589a --- /dev/null +++ b/ceb/expanded-29-1/lesson-2/main.py @@ -0,0 +1,4 @@ +packet=bytes([0,3])+b"cat" +length=int.from_bytes(packet[:2],"big") +assert length<=100 and len(packet)-2==length +print(packet[2:].decode()) diff --git a/ceb/expanded-29-1/lesson-3/lesson.html b/ceb/expanded-29-1/lesson-3/lesson.html new file mode 100644 index 0000000..001b9d8 --- /dev/null +++ b/ceb/expanded-29-1/lesson-3/lesson.html @@ -0,0 +1,8 @@ +Timeout, retry, ug idempotency

Timeout, retry, ug idempotency

15-minutong sesyon: pagbasa sulod sa 3 minutos, pag-trace sa 3, pag-eksperimento sa 7, ug pagtubag sa check sa 2. Paggahin og dugang oras kon gikinahanglan.

Dili pamatuod nga walay nahimo ang timeout: mahimong nahuman sa dili pa nawala ang response. Gamita ang idempotency key sa operation nga dili angay mausab. Limitahi ang retry ug pag-backoff. Ang modelo mobalik sa samang stored result sa repeated key imbes balikon ang side effect.

Praktis ug ebidensiya: Tag-ana ang pananglitan o idrowing ang pag-usab sa state. Usba ang usa ka pagtuo, sulayi ang utlanan, ug itala ang aktuwal nga resulta. Ipasabot unsa ang wala mapamatud-i sa gamay nga modelo bahin sa production system.

results={}
+def complete(key):
+    if key not in results:results[key]=len(results)+1
+    return results[key]
+print(complete("lesson-1"),complete("lesson-1"))
+print(len(results))
+

Gipaabot nga resulta: 1 1 +1

Praktis ug ebidensiya

Isulat ang tagna, aktuwal nga resulta, ug hinungdan sa pagkapareho o kalainan. Ang completion check mosukod sa pagsabot; ang practice task mopauswag sa kahanas.

\ No newline at end of file diff --git a/ceb/expanded-29-1/lesson-3/main.py b/ceb/expanded-29-1/lesson-3/main.py new file mode 100644 index 0000000..ffb99f8 --- /dev/null +++ b/ceb/expanded-29-1/lesson-3/main.py @@ -0,0 +1,6 @@ +results={} +def complete(key): + if key not in results:results[key]=len(results)+1 + return results[key] +print(complete("lesson-1"),complete("lesson-1")) +print(len(results)) diff --git a/ceb/expanded-30-1/README.md b/ceb/expanded-30-1/README.md new file mode 100644 index 0000000..5929e41 --- /dev/null +++ b/ceb/expanded-30-1/README.md @@ -0,0 +1,9 @@ +# CPU/GPU Core ug Memory Mapping · 1 + +[Agila University track](https://edu.agilaos.com/track.php?track=30&lang=ceb) + +Mga 15 minutos matag leksyon. Tag-ana, padagana, usba, ipasabot, ug tubaga ang pagsusi sa University. + +- [Lesson 1: Imapa ang machine sa dili pa mag-schedule](lesson-1/lesson.html) +- [Lesson 2: Itakdo ang trabaho sa execution model](lesson-2/lesson.html) +- [Lesson 3: Affinity ug migration](lesson-3/lesson.html) diff --git a/ceb/expanded-30-1/lesson-1/lesson.html b/ceb/expanded-30-1/lesson-1/lesson.html new file mode 100644 index 0000000..0ff15c4 --- /dev/null +++ b/ceb/expanded-30-1/lesson-1/lesson.html @@ -0,0 +1,5 @@ +Imapa ang machine sa dili pa mag-schedule

Imapa ang machine sa dili pa mag-schedule

15-minutong sesyon: pagbasa sulod sa 3 minutos, pag-trace sa 3, pag-eksperimento sa 7, ug pagtubag sa check sa 2. Paggahin og dugang oras kon gikinahanglan.

Ilahi ang socket, physical core, logical CPU, ug virtual CPU. Dili pamatuod sa eksklusibong physical core ang cloud vCPU. Lahi ang execution model sa GPU compute unit ug lane. Itala ang makita sa environment ug ang wala mahibaloi. Usa ka vCPU ug walay GPU ang droplet; kinahanglan og laing hardware alang sa multi-core o GPU comparison.

Praktis ug ebidensiya: Tag-ana ang pananglitan o idrowing ang pag-usab sa state. Usba ang usa ka pagtuo, sulayi ang utlanan, ug itala ang aktuwal nga resulta. Ipasabot unsa ang wala mapamatud-i sa gamay nga modelo bahin sa production system.

import os,platform
+print("ISA:",platform.machine())
+print("Visible logical CPUs:",os.cpu_count())
+print("GPU: not measured by this program")
+

Praktis ug ebidensiya

Isulat ang tagna, aktuwal nga resulta, ug hinungdan sa pagkapareho o kalainan. Ang completion check mosukod sa pagsabot; ang practice task mopauswag sa kahanas.

Reperensiya sa pinulongan: git.agilaos.com

Reperensiya sa pinulongan: docs.nvidia.com

\ No newline at end of file diff --git a/ceb/expanded-30-1/lesson-1/main.py b/ceb/expanded-30-1/lesson-1/main.py new file mode 100644 index 0000000..d11b19e --- /dev/null +++ b/ceb/expanded-30-1/lesson-1/main.py @@ -0,0 +1,4 @@ +import os,platform +print("ISA:",platform.machine()) +print("Visible logical CPUs:",os.cpu_count()) +print("GPU: not measured by this program") diff --git a/ceb/expanded-30-1/lesson-2/lesson.html b/ceb/expanded-30-1/lesson-2/lesson.html new file mode 100644 index 0000000..b14a10d --- /dev/null +++ b/ceb/expanded-30-1/lesson-2/lesson.html @@ -0,0 +1 @@ +Itakdo ang trabaho sa execution model

Itakdo ang trabaho sa execution model

15-minutong sesyon: pagbasa sulod sa 3 minutos, pag-trace sa 3, pag-eksperimento sa 7, ug pagtubag sa check sa 2. Paggahin og dugang oras kon gikinahanglan.

Adunay parallelism ang independent operation sa dakong array. Dili mabahin ang serial dependency tungod lang sa dugang nga core. Mahimong mas angay ang CPU sa branch-heavy o gamay nga job kon apil ang launch ug transfer overhead. Hypothesis kini, dili universal rule. Ilahi ang parser, dakong matrix multiply, ug gamay nga request handler; isulti ang sukdon.

Praktis ug ebidensiya: Tag-ana ang pananglitan o idrowing ang pag-usab sa state. Usba ang usa ka pagtuo, sulayi ang utlanan, ug itala ang aktuwal nga resulta. Ipasabot unsa ang wala mapamatud-i sa gamay nga modelo bahin sa production system.

Praktis ug ebidensiya

Isulat ang tagna, aktuwal nga resulta, ug hinungdan sa pagkapareho o kalainan. Ang completion check mosukod sa pagsabot; ang practice task mopauswag sa kahanas.

Reperensiya sa pinulongan: git.agilaos.com

Reperensiya sa pinulongan: docs.nvidia.com

\ No newline at end of file diff --git a/ceb/expanded-30-1/lesson-3/lesson.html b/ceb/expanded-30-1/lesson-3/lesson.html new file mode 100644 index 0000000..2be559e --- /dev/null +++ b/ceb/expanded-30-1/lesson-3/lesson.html @@ -0,0 +1,3 @@ +Affinity ug migration

Affinity ug migration

15-minutong sesyon: pagbasa sulod sa 3 minutos, pag-trace sa 3, pag-eksperimento sa 7, ug pagtubag sa check sa 2. Paggahin og dugang oras kon gikinahanglan.

Ang CPU affinity molimit kon asa modagan ang thread. Mahimong mokunhod ang migration o modaghan ang contention. Dili moreserba og core ang pinning. Itandi ang pinned ug unpinned kon nahibaloan ang topology ug policy. Itala ang affinity, load, frequency behavior, ug sample count. Ayaw usba ang scheduling sa production server alang sa leksyon.

Praktis ug ebidensiya: Tag-ana ang pananglitan o idrowing ang pag-usab sa state. Usba ang usa ka pagtuo, sulayi ang utlanan, ug itala ang aktuwal nga resulta. Ipasabot unsa ang wala mapamatud-i sa gamay nga modelo bahin sa production system.

import os
+print(sorted(os.sched_getaffinity(0)))
+

Praktis ug ebidensiya

Isulat ang tagna, aktuwal nga resulta, ug hinungdan sa pagkapareho o kalainan. Ang completion check mosukod sa pagsabot; ang practice task mopauswag sa kahanas.

Reperensiya sa pinulongan: git.agilaos.com

Reperensiya sa pinulongan: docs.nvidia.com

\ No newline at end of file diff --git a/ceb/expanded-30-1/lesson-3/main.py b/ceb/expanded-30-1/lesson-3/main.py new file mode 100644 index 0000000..95814c3 --- /dev/null +++ b/ceb/expanded-30-1/lesson-3/main.py @@ -0,0 +1,2 @@ +import os +print(sorted(os.sched_getaffinity(0))) diff --git a/ceb/expanded-30-2/README.md b/ceb/expanded-30-2/README.md new file mode 100644 index 0000000..0b33400 --- /dev/null +++ b/ceb/expanded-30-2/README.md @@ -0,0 +1,9 @@ +# CPU/GPU Core ug Memory Mapping · 2 + +[Agila University track](https://edu.agilaos.com/track.php?track=30&lang=ceb) + +Mga 15 minutos matag leksyon. Tag-ana, padagana, usba, ipasabot, ug tubaga ang pagsusi sa University. + +- [Lesson 1: Virtual, physical, ug device address](lesson-1/lesson.html) +- [Lesson 2: Cache, locality, ug working set](lesson-2/lesson.html) +- [Lesson 3: NUMA placement ug first touch](lesson-3/lesson.html) diff --git a/ceb/expanded-30-2/lesson-1/lesson.html b/ceb/expanded-30-2/lesson-1/lesson.html new file mode 100644 index 0000000..9a73f9a --- /dev/null +++ b/ceb/expanded-30-2/lesson-1/lesson.html @@ -0,0 +1 @@ +Virtual, physical, ug device address

Virtual, physical, ug device address

15-minutong sesyon: pagbasa sulod sa 3 minutos, pag-trace sa 3, pag-eksperimento sa 7, ug pagtubag sa check sa 2. Paggahin og dugang oras kon gikinahanglan.

Virtual address ang gigamit sa process. Ang page table mohubad niini uban sa permission. Mahimong DMA/IOMMU mapping ang gamiton sa device, dili ang samang address. Ayaw himoa dayon nga device address ang process pointer. Idrowing ang mapping, owner, permission, ug lifetime sa buffer sa dili pa magdisenyo og API.

Praktis ug ebidensiya: Tag-ana ang pananglitan o idrowing ang pag-usab sa state. Usba ang usa ka pagtuo, sulayi ang utlanan, ug itala ang aktuwal nga resulta. Ipasabot unsa ang wala mapamatud-i sa gamay nga modelo bahin sa production system.

Praktis ug ebidensiya

Isulat ang tagna, aktuwal nga resulta, ug hinungdan sa pagkapareho o kalainan. Ang completion check mosukod sa pagsabot; ang practice task mopauswag sa kahanas.

Reperensiya sa pinulongan: git.agilaos.com

Reperensiya sa pinulongan: docs.nvidia.com

\ No newline at end of file diff --git a/ceb/expanded-30-2/lesson-2/lesson.html b/ceb/expanded-30-2/lesson-2/lesson.html new file mode 100644 index 0000000..56a6aa9 --- /dev/null +++ b/ceb/expanded-30-2/lesson-2/lesson.html @@ -0,0 +1,5 @@ +Cache, locality, ug working set

Cache, locality, ug working set

15-minutong sesyon: pagbasa sulod sa 3 minutos, pag-trace sa 3, pag-eksperimento sa 7, ug pagtubag sa check sa 2. Paggahin og dugang oras kon gikinahanglan.

Ang locality mao ang paggamit pag-usab sa duol o bag-o lang gigamit nga data. Lahi ang working set nga masulod sa cache ug ang mo-stream sa RAM. Makaapekto ang stride, element size, prefetching, compiler optimization, ug useful work. Adunay interpreter overhead ang Python loop busa dili niini ma-isolate ang cache latency.

Praktis ug ebidensiya: Tag-ana ang pananglitan o idrowing ang pag-usab sa state. Usba ang usa ka pagtuo, sulayi ang utlanan, ug itala ang aktuwal nga resulta. Ipasabot unsa ang wala mapamatud-i sa gamay nga modelo bahin sa production system.

data=list(range(16))
+print(sum(data))
+print(sum(data[::4]))
+

Gipaabot nga resulta: 120 +24

Praktis ug ebidensiya

Isulat ang tagna, aktuwal nga resulta, ug hinungdan sa pagkapareho o kalainan. Ang completion check mosukod sa pagsabot; ang practice task mopauswag sa kahanas.

Reperensiya sa pinulongan: git.agilaos.com

Reperensiya sa pinulongan: docs.nvidia.com

\ No newline at end of file diff --git a/ceb/expanded-30-2/lesson-2/main.py b/ceb/expanded-30-2/lesson-2/main.py new file mode 100644 index 0000000..b9841e0 --- /dev/null +++ b/ceb/expanded-30-2/lesson-2/main.py @@ -0,0 +1,3 @@ +data=list(range(16)) +print(sum(data)) +print(sum(data[::4])) diff --git a/ceb/expanded-30-2/lesson-3/lesson.html b/ceb/expanded-30-2/lesson-3/lesson.html new file mode 100644 index 0000000..f1fcb24 --- /dev/null +++ b/ceb/expanded-30-2/lesson-3/lesson.html @@ -0,0 +1 @@ +NUMA placement ug first touch

NUMA placement ug first touch

15-minutong sesyon: pagbasa sulod sa 3 minutos, pag-trace sa 3, pag-eksperimento sa 7, ug pagtubag sa check sa 2. Paggahin og dugang oras kon gikinahanglan.

Sa NUMA, mahimong magdepende ang memory cost sa node sa page ug lokasyon sa thread. Makaapekto ang allocation policy ug first touch. Sukda ang local ug remote access sa tinuod nga multi-node system; dili mapakita sa single-node VM ang NUMA speedup. Itala ug pamatud-i ang placement imbes hunahunaon gikan sa code.

Praktis ug ebidensiya: Tag-ana ang pananglitan o idrowing ang pag-usab sa state. Usba ang usa ka pagtuo, sulayi ang utlanan, ug itala ang aktuwal nga resulta. Ipasabot unsa ang wala mapamatud-i sa gamay nga modelo bahin sa production system.

Praktis ug ebidensiya

Isulat ang tagna, aktuwal nga resulta, ug hinungdan sa pagkapareho o kalainan. Ang completion check mosukod sa pagsabot; ang practice task mopauswag sa kahanas.

Reperensiya sa pinulongan: git.agilaos.com

Reperensiya sa pinulongan: docs.nvidia.com

\ No newline at end of file diff --git a/ceb/expanded-30-3/README.md b/ceb/expanded-30-3/README.md new file mode 100644 index 0000000..05eef1f --- /dev/null +++ b/ceb/expanded-30-3/README.md @@ -0,0 +1,9 @@ +# CPU/GPU Core ug Memory Mapping · 3 + +[Agila University track](https://edu.agilaos.com/track.php?track=30&lang=ceb) + +Mga 15 minutos matag leksyon. Tag-ana, padagana, usba, ipasabot, ug tubaga ang pagsusi sa University. + +- [Lesson 1: GPU buffer ug transfer cost](lesson-1/lesson.html) +- [Lesson 2: Coalescing ug shared workgroup memory](lesson-2/lesson.html) +- [Lesson 3: Synchronization ug buffer ownership](lesson-3/lesson.html) diff --git a/ceb/expanded-30-3/lesson-1/lesson.html b/ceb/expanded-30-3/lesson-1/lesson.html new file mode 100644 index 0000000..93842e7 --- /dev/null +++ b/ceb/expanded-30-3/lesson-1/lesson.html @@ -0,0 +1,6 @@ +GPU buffer ug transfer cost

GPU buffer ug transfer cost

15-minutong sesyon: pagbasa sulod sa 3 minutos, pag-trace sa 3, pag-eksperimento sa 7, ug pagtubag sa check sa 2. Paggahin og dugang oras kon gikinahanglan.

Kasagaran lahi ang device memory sa discrete GPU ug host RAM. Mahimong mas dako ang upload, download, launch, ug synchronization kaysa gamay nga kernel. Lahi ang API sa unified memory apan dili libre ang movement. Limitado nga resource ang pinned host memory. Hypothetical ang timing sa sample; accounting kini, dili hardware measurement.

Praktis ug ebidensiya: Tag-ana ang pananglitan o idrowing ang pag-usab sa state. Usba ang usa ka pagtuo, sulayi ang utlanan, ug itala ang aktuwal nga resulta. Ipasabot unsa ang wala mapamatud-i sa gamay nga modelo bahin sa production system.

cpu_ms=8
+upload_ms,kernel_ms,download_ms=5,2,4
+print("Hypothetical GPU total:",upload_ms+kernel_ms+download_ms)
+print("Hypothetical CPU total:",cpu_ms)
+

Gipaabot nga resulta: Hypothetical GPU total: 11 +Hypothetical CPU total: 8

Praktis ug ebidensiya

Isulat ang tagna, aktuwal nga resulta, ug hinungdan sa pagkapareho o kalainan. Ang completion check mosukod sa pagsabot; ang practice task mopauswag sa kahanas.

Reperensiya sa pinulongan: git.agilaos.com

Reperensiya sa pinulongan: docs.nvidia.com

\ No newline at end of file diff --git a/ceb/expanded-30-3/lesson-1/main.py b/ceb/expanded-30-3/lesson-1/main.py new file mode 100644 index 0000000..89f5b3b --- /dev/null +++ b/ceb/expanded-30-3/lesson-1/main.py @@ -0,0 +1,4 @@ +cpu_ms=8 +upload_ms,kernel_ms,download_ms=5,2,4 +print("Hypothetical GPU total:",upload_ms+kernel_ms+download_ms) +print("Hypothetical CPU total:",cpu_ms) diff --git a/ceb/expanded-30-3/lesson-2/lesson.html b/ceb/expanded-30-3/lesson-2/lesson.html new file mode 100644 index 0000000..3c4227c --- /dev/null +++ b/ceb/expanded-30-3/lesson-2/lesson.html @@ -0,0 +1,7 @@ +Coalescing ug shared workgroup memory

Coalescing ug shared workgroup memory

15-minutong sesyon: pagbasa sulod sa 3 minutos, pag-trace sa 3, pag-eksperimento sa 7, ug pagtubag sa check sa 2. Paggahin og dugang oras kon gikinahanglan.

Mahimong episyente ang memory transaction kon kasikbit nga element ang gi-access sa GPU lane. Makapakunhod sa global read ang shared workgroup memory apan limitado kini ug nagkinahanglan og synchronization. Lahi ang detalye sa CUDA, Metal, Vulkan, ug uban pa. Idrowing ang lane-to-element mapping ug i-validate ang output human sa matag layout change.

Praktis ug ebidensiya: Tag-ana ang pananglitan o idrowing ang pag-usab sa state. Usba ang usa ka pagtuo, sulayi ang utlanan, ug itala ang aktuwal nga resulta. Ipasabot unsa ang wala mapamatud-i sa gamay nga modelo bahin sa production system.

lanes=4
+contiguous=[lane for lane in range(lanes)]
+strided=[lane*16 for lane in range(lanes)]
+print(contiguous)
+print(strided)
+

Gipaabot nga resulta: [0, 1, 2, 3] +[0, 16, 32, 48]

Praktis ug ebidensiya

Isulat ang tagna, aktuwal nga resulta, ug hinungdan sa pagkapareho o kalainan. Ang completion check mosukod sa pagsabot; ang practice task mopauswag sa kahanas.

Reperensiya sa pinulongan: git.agilaos.com

Reperensiya sa pinulongan: docs.nvidia.com

\ No newline at end of file diff --git a/ceb/expanded-30-3/lesson-2/main.py b/ceb/expanded-30-3/lesson-2/main.py new file mode 100644 index 0000000..4075806 --- /dev/null +++ b/ceb/expanded-30-3/lesson-2/main.py @@ -0,0 +1,5 @@ +lanes=4 +contiguous=[lane for lane in range(lanes)] +strided=[lane*16 for lane in range(lanes)] +print(contiguous) +print(strided) diff --git a/ceb/expanded-30-3/lesson-3/lesson.html b/ceb/expanded-30-3/lesson-3/lesson.html new file mode 100644 index 0000000..f810532 --- /dev/null +++ b/ceb/expanded-30-3/lesson-3/lesson.html @@ -0,0 +1,7 @@ +Synchronization ug buffer ownership

Synchronization ug buffer ownership

15-minutong sesyon: pagbasa sulod sa 3 minutos, pag-trace sa 3, pag-eksperimento sa 7, ug pagtubag sa check sa 2. Paggahin og dugang oras kon gikinahanglan.

Mahimong mobalik ang GPU submission sa dili pa mahuman ang execution. Makaguba sa resulta ang sayong reuse o free sa buffer. Imodelo ang allocated, uploaded, submitted, completed, ug released. Kinahanglan ang completion sa dili pa reuse. Adunay scope ang barrier; dili awtomatikong global o host synchronization ang workgroup barrier.

Praktis ug ebidensiya: Tag-ana ang pananglitan o idrowing ang pag-usab sa state. Usba ang usa ka pagtuo, sulayi ang utlanan, ug itala ang aktuwal nga resulta. Ipasabot unsa ang wala mapamatud-i sa gamay nga modelo bahin sa production system.

state="submitted"
+def can_release(state): return state=="completed"
+assert not can_release(state)
+state="completed"
+assert can_release(state)
+print("Passed")
+

Gipaabot nga resulta: Passed

Praktis ug ebidensiya

Isulat ang tagna, aktuwal nga resulta, ug hinungdan sa pagkapareho o kalainan. Ang completion check mosukod sa pagsabot; ang practice task mopauswag sa kahanas.

Reperensiya sa pinulongan: git.agilaos.com

Reperensiya sa pinulongan: docs.nvidia.com

\ No newline at end of file diff --git a/ceb/expanded-30-3/lesson-3/main.py b/ceb/expanded-30-3/lesson-3/main.py new file mode 100644 index 0000000..944f0fa --- /dev/null +++ b/ceb/expanded-30-3/lesson-3/main.py @@ -0,0 +1,6 @@ +state="submitted" +def can_release(state): return state=="completed" +assert not can_release(state) +state="completed" +assert can_release(state) +print("Passed") diff --git a/ceb/expanded-30-4/README.md b/ceb/expanded-30-4/README.md new file mode 100644 index 0000000..5b854af --- /dev/null +++ b/ceb/expanded-30-4/README.md @@ -0,0 +1,9 @@ +# CPU/GPU Core ug Memory Mapping · 4 + +[Agila University track](https://edu.agilaos.com/track.php?track=30&lang=ceb) + +Mga 15 minutos matag leksyon. Tag-ana, padagana, usba, ipasabot, ug tubaga ang pagsusi sa University. + +- [Lesson 1: Sukda ang balikbalik nga run gamit ang clock](lesson-1/lesson.html) +- [Lesson 2: Pili og backend pinaagi sa ebidensiya](lesson-2/lesson.html) +- [Lesson 3: I-publish ang placement study nga masubli](lesson-3/lesson.html) diff --git a/ceb/expanded-30-4/lesson-1/lesson.html b/ceb/expanded-30-4/lesson-1/lesson.html new file mode 100644 index 0000000..021f4d1 --- /dev/null +++ b/ceb/expanded-30-4/lesson-1/lesson.html @@ -0,0 +1,14 @@ +Sukda ang balikbalik nga run gamit ang clock

Sukda ang balikbalik nga run gamit ang clock

15-minutong sesyon: pagbasa sulod sa 3 minutos, pag-trace sa 3, pag-eksperimento sa 7, ug pagtubag sa check sa 2. Paggahin og dugang oras kon gikinahanglan.

Paggamit og monotonic high-resolution clock. Ibulag ang warmup, balika ang fixed workload, pamatud-i ang checksum, ug ireport ang median ug spread. Itala ang unit, data size, environment, ug runtime version. Python sum sa CPU ang gisukod niini apil ang runtime cost; dili kini GPU o raw memory-bandwidth benchmark.

Praktis ug ebidensiya: Tag-ana ang pananglitan o idrowing ang pag-usab sa state. Usba ang usa ka pagtuo, sulayi ang utlanan, ug itala ang aktuwal nga resulta. Ipasabot unsa ang wala mapamatud-i sa gamay nga modelo bahin sa production system.

import time,statistics,platform
+data=list(range(100000))
+expected=4999950000
+assert sum(data)==expected
+samples=[]
+for _ in range(7):
+    start=time.perf_counter_ns()
+    result=sum(data)
+    samples.append((time.perf_counter_ns()-start)/1e6)
+    assert result==expected
+print("CPU Python",platform.python_version(),platform.machine())
+print("median_ms",round(statistics.median(samples),4))
+print("min_ms",round(min(samples),4),"max_ms",round(max(samples),4))
+

Praktis ug ebidensiya

Isulat ang tagna, aktuwal nga resulta, ug hinungdan sa pagkapareho o kalainan. Ang completion check mosukod sa pagsabot; ang practice task mopauswag sa kahanas.

Reperensiya sa pinulongan: git.agilaos.com

Reperensiya sa pinulongan: docs.nvidia.com

\ No newline at end of file diff --git a/ceb/expanded-30-4/lesson-1/main.py b/ceb/expanded-30-4/lesson-1/main.py new file mode 100644 index 0000000..ff9edc3 --- /dev/null +++ b/ceb/expanded-30-4/lesson-1/main.py @@ -0,0 +1,13 @@ +import time,statistics,platform +data=list(range(100000)) +expected=4999950000 +assert sum(data)==expected +samples=[] +for _ in range(7): + start=time.perf_counter_ns() + result=sum(data) + samples.append((time.perf_counter_ns()-start)/1e6) + assert result==expected +print("CPU Python",platform.python_version(),platform.machine()) +print("median_ms",round(statistics.median(samples),4)) +print("min_ms",round(min(samples),4),"max_ms",round(max(samples),4)) diff --git a/ceb/expanded-30-4/lesson-2/lesson.html b/ceb/expanded-30-4/lesson-2/lesson.html new file mode 100644 index 0000000..d72b981 --- /dev/null +++ b/ceb/expanded-30-4/lesson-2/lesson.html @@ -0,0 +1,4 @@ +Pili og backend pinaagi sa ebidensiya

Pili og backend pinaagi sa ebidensiya

15-minutong sesyon: pagbasa sulod sa 3 minutos, pag-trace sa 3, pag-eksperimento sa 7, ug pagtubag sa check sa 2. Paggahin og dugang oras kon gikinahanglan.

Salain ang candidate pinaagi sa capability, correctness, memory capacity, ug constraint sa dili pa speed. Gamita ang representative size ug iapil ang transfer. Ipadayon ang fallback kon walay device. Hinimo nga demonstration result ang table; ilisi lamang sa validated real measurement. Ayaw ibase ang policy sa usa ka swerte nga run.

Praktis ug ebidensiya: Tag-ana ang pananglitan o idrowing ang pag-usab sa state. Usba ang usa ka pagtuo, sulayi ang utlanan, ug itala ang aktuwal nga resulta. Ipasabot unsa ang wala mapamatud-i sa gamay nga modelo bahin sa production system.

candidates=[{"name":"CPU demo","correct":True,"ms":8},{"name":"GPU demo","correct":True,"ms":11},{"name":"Broken demo","correct":False,"ms":1}]
+valid=[c for c in candidates if c["correct"]]
+print("Hypothetical winner:",min(valid,key=lambda c:c["ms"])["name"])
+

Gipaabot nga resulta: Hypothetical winner: CPU demo

Praktis ug ebidensiya

Isulat ang tagna, aktuwal nga resulta, ug hinungdan sa pagkapareho o kalainan. Ang completion check mosukod sa pagsabot; ang practice task mopauswag sa kahanas.

Reperensiya sa pinulongan: git.agilaos.com

Reperensiya sa pinulongan: docs.nvidia.com

\ No newline at end of file diff --git a/ceb/expanded-30-4/lesson-2/main.py b/ceb/expanded-30-4/lesson-2/main.py new file mode 100644 index 0000000..1c313a7 --- /dev/null +++ b/ceb/expanded-30-4/lesson-2/main.py @@ -0,0 +1,3 @@ +candidates=[{"name":"CPU demo","correct":True,"ms":8},{"name":"GPU demo","correct":True,"ms":11},{"name":"Broken demo","correct":False,"ms":1}] +valid=[c for c in candidates if c["correct"]] +print("Hypothetical winner:",min(valid,key=lambda c:c["ms"])["name"]) diff --git a/ceb/expanded-30-4/lesson-3/lesson.html b/ceb/expanded-30-4/lesson-3/lesson.html new file mode 100644 index 0000000..e790dfb --- /dev/null +++ b/ceb/expanded-30-4/lesson-3/lesson.html @@ -0,0 +1 @@ +I-publish ang placement study nga masubli

I-publish ang placement study nga masubli

15-minutong sesyon: pagbasa sulod sa 3 minutos, pag-trace sa 3, pag-eksperimento sa 7, ug pagtubag sa check sa 2. Paggahin og dugang oras kon gikinahanglan.

Paghimo og report alang sa duha ka workload size. Iapil ang source revision, topology, memory type ug placement, affinity, seed, tolerance, repetitions, raw sample, ug end-to-end cost. Ilahi ang measured, simulated, ug untested. Ipasabot nganong mahimong mausab ang winner sa laing machine. Isumite ang code ug raw evidence sa Forge, dili confidential credential.

Praktis ug ebidensiya: Tag-ana ang pananglitan o idrowing ang pag-usab sa state. Usba ang usa ka pagtuo, sulayi ang utlanan, ug itala ang aktuwal nga resulta. Ipasabot unsa ang wala mapamatud-i sa gamay nga modelo bahin sa production system.

Praktis ug ebidensiya

Isulat ang tagna, aktuwal nga resulta, ug hinungdan sa pagkapareho o kalainan. Ang completion check mosukod sa pagsabot; ang practice task mopauswag sa kahanas.

Reperensiya sa pinulongan: git.agilaos.com

Reperensiya sa pinulongan: docs.nvidia.com

\ No newline at end of file diff --git a/ceb/expanded-8-1/README.md b/ceb/expanded-8-1/README.md new file mode 100644 index 0000000..dcf7437 --- /dev/null +++ b/ceb/expanded-8-1/README.md @@ -0,0 +1,9 @@ +# Web Development · 1 + +[Agila University track](https://edu.agilaos.com/track.php?track=8&lang=ceb) + +Mga 15 minutos matag leksyon. Tag-ana, padagana, usba, ipasabot, ug tubaga ang pagsusi sa University. + +- [Lesson 1: Hatagi og kahulogan ang pahina gamit ang HTML](lesson-1/lesson.html) +- [Lesson 2: Pag-style nga mabasa gihapon](lesson-2/lesson.html) +- [Lesson 3: Pagtubag sa event](lesson-3/lesson.html) diff --git a/ceb/expanded-8-1/lesson-1/lesson.html b/ceb/expanded-8-1/lesson-1/lesson.html new file mode 100644 index 0000000..d5de2fd --- /dev/null +++ b/ceb/expanded-8-1/lesson-1/lesson.html @@ -0,0 +1,5 @@ +Hatagi og kahulogan ang pahina gamit ang HTML

Hatagi og kahulogan ang pahina gamit ang HTML

15-minutong sesyon: pagbasa sulod sa 3 minutos, pag-trace sa 3, pag-eksperimento sa 7, ug pagtubag sa check sa 2. Paggahin og dugang oras kon gikinahanglan.

Ang HTML naghulagway sa content. Ang heading nagngalan sa section; ang list maggrupo sa may kalabotang item. Ablihi ang preview, ilisi ang titulo, ug idugang ang ikatulong task. Ipasabot nganong mas makahuluganon ang heading kaysa dako nga bold paragraph. Paggamit og klarong main heading ug hustong document language.

<!doctype html>
+<html lang="en"><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1">
+<title>Agila study</title>
+<main><h1>My study plan</h1><p>I will explain what I build.</p><ul><li>Read</li><li>Test</li></ul></main>
+</html>

Praktis ug ebidensiya

Isulat ang tagna, aktuwal nga resulta, ug hinungdan sa pagkapareho o kalainan. Ang completion check mosukod sa pagsabot; ang practice task mopauswag sa kahanas.

\ No newline at end of file diff --git a/ceb/expanded-8-1/lesson-1/main.html b/ceb/expanded-8-1/lesson-1/main.html new file mode 100644 index 0000000..b8b2f86 --- /dev/null +++ b/ceb/expanded-8-1/lesson-1/main.html @@ -0,0 +1,5 @@ + + +Agila study +

My study plan

I will explain what I build.

  • Read
  • Test
+ \ No newline at end of file diff --git a/ceb/expanded-8-1/lesson-2/lesson.html b/ceb/expanded-8-1/lesson-2/lesson.html new file mode 100644 index 0000000..172d73e --- /dev/null +++ b/ceb/expanded-8-1/lesson-2/lesson.html @@ -0,0 +1,5 @@ +Pag-style nga mabasa gihapon

Pag-style nga mabasa gihapon

15-minutong sesyon: pagbasa sulod sa 3 minutos, pag-trace sa 3, pag-eksperimento sa 7, ug pagtubag sa check sa 2. Paggahin og dugang oras kon gikinahanglan.

Ang CSS selector mopili og element ug ang declaration mousab sa hitsura. Tag-ana ang epekto sa padding sulod sa card; itandi sa margin gawas sa border. Usba ang gidak-on sa preview ug ipadayon ang pagkabasa nga walay horizontal scroll. Sulayi ang keyboard focus. Ayaw pagsalig sa kolor lamang alang sa pass o fail.

<!doctype html>
+<html lang="en"><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1">
+<title>Agila study</title>
+<style>body{font:1.1rem system-ui;margin:2rem;background:#f4f2fb;color:#21143e} main{max-width:40rem;margin:auto;padding:1.5rem;background:white;border:2px solid #56329a;border-radius:12px}button{padding:1rem}</style>
+<main><h1>My study plan</h1><p>Resize the preview. Keep this text readable.</p><button>Start</button></main></html>

Praktis ug ebidensiya

Isulat ang tagna, aktuwal nga resulta, ug hinungdan sa pagkapareho o kalainan. Ang completion check mosukod sa pagsabot; ang practice task mopauswag sa kahanas.

\ No newline at end of file diff --git a/ceb/expanded-8-1/lesson-2/main.html b/ceb/expanded-8-1/lesson-2/main.html new file mode 100644 index 0000000..de7c19f --- /dev/null +++ b/ceb/expanded-8-1/lesson-2/main.html @@ -0,0 +1,5 @@ + + +Agila study + +

My study plan

Resize the preview. Keep this text readable.

\ No newline at end of file diff --git a/ceb/expanded-8-1/lesson-3/lesson.html b/ceb/expanded-8-1/lesson-3/lesson.html new file mode 100644 index 0000000..8c3ec3a --- /dev/null +++ b/ceb/expanded-8-1/lesson-3/lesson.html @@ -0,0 +1,5 @@ +Pagtubag sa event

Pagtubag sa event

15-minutong sesyon: pagbasa sulod sa 3 minutos, pag-trace sa 3, pag-eksperimento sa 7, ug pagtubag sa check sa 2. Paggahin og dugang oras kon gikinahanglan.

Ang JavaScript mousab sa kinaiya. Maghulat ang listener sa click, i-update ang done, ug ipakita ang bag-ong teksto. Tag-ana ang display human sa tulo ka click. Idugang ang reset nga mo-update sa state ug count. I-reload: memory sa pahina kini, dili saved account record.

<!doctype html>
+<html lang="en"><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1">
+<title>Agila study</title>
+<main><h1>Study counter</h1><button id="add">Complete one</button><p id="count" aria-live="polite">0</p></main>
+<script>let done=0;document.getElementById("add").addEventListener("click",()=>{done+=1;document.getElementById("count").textContent=String(done);});</script></html>

Praktis ug ebidensiya

Isulat ang tagna, aktuwal nga resulta, ug hinungdan sa pagkapareho o kalainan. Ang completion check mosukod sa pagsabot; ang practice task mopauswag sa kahanas.

\ No newline at end of file diff --git a/ceb/expanded-8-1/lesson-3/main.html b/ceb/expanded-8-1/lesson-3/main.html new file mode 100644 index 0000000..68b7607 --- /dev/null +++ b/ceb/expanded-8-1/lesson-3/main.html @@ -0,0 +1,5 @@ + + +Agila study +

Study counter

0

+ \ No newline at end of file diff --git a/ceb/expanded-8-2/README.md b/ceb/expanded-8-2/README.md new file mode 100644 index 0000000..0f42ec6 --- /dev/null +++ b/ceb/expanded-8-2/README.md @@ -0,0 +1,9 @@ +# Web Development · 2 + +[Agila University track](https://edu.agilaos.com/track.php?track=8&lang=ceb) + +Mga 15 minutos matag leksyon. Tag-ana, padagana, usba, ipasabot, ug tubaga ang pagsusi sa University. + +- [Lesson 1: I-validate ang input ug butangi og label ang control](lesson-1/lesson.html) +- [Lesson 2: I-render ang data isip teksto](lesson-2/lesson.html) +- [Lesson 3: Paghimo og gamay nga website nga nasulayan](lesson-3/lesson.html) diff --git a/ceb/expanded-8-2/lesson-1/lesson.html b/ceb/expanded-8-2/lesson-1/lesson.html new file mode 100644 index 0000000..35914a8 --- /dev/null +++ b/ceb/expanded-8-2/lesson-1/lesson.html @@ -0,0 +1,5 @@ +I-validate ang input ug butangi og label ang control

I-validate ang input ug butangi og label ang control

15-minutong sesyon: pagbasa sulod sa 3 minutos, pag-trace sa 3, pag-eksperimento sa 7, ug pagtubag sa check sa 2. Paggahin og dugang oras kon gikinahanglan.

Ang makita nga label nagpasabot sa input. Ang for attribute nagdugtong niini sa id. Sulayi ang empty, 0, 1, 60, 61, ug 1.5. Makatabang ang HTML constraint apan kinahanglan mag-validate pag-usab ang server kay mahimong usbon ang browser request. Walay data nga isumite sa server kining preview.

<!doctype html>
+<html lang="en"><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1">
+<title>Agila study</title>
+<main><h1>Study time</h1><label for="minutes">Minutes (1–60)</label><input id="minutes" type="number" min="1" max="60"><button id="check">Check</button><p id="result" role="status"></p></main>
+<script>document.getElementById("check").onclick=()=>{const raw=document.getElementById("minutes").value;const n=Number(raw);document.getElementById("result").textContent=raw.trim()!==""&&Number.isInteger(n)&&n>=1&&n<=60?"Ready":"Use a whole number from 1 to 60";};</script></html>

Praktis ug ebidensiya

Isulat ang tagna, aktuwal nga resulta, ug hinungdan sa pagkapareho o kalainan. Ang completion check mosukod sa pagsabot; ang practice task mopauswag sa kahanas.

\ No newline at end of file diff --git a/ceb/expanded-8-2/lesson-1/main.html b/ceb/expanded-8-2/lesson-1/main.html new file mode 100644 index 0000000..279f995 --- /dev/null +++ b/ceb/expanded-8-2/lesson-1/main.html @@ -0,0 +1,5 @@ + + +Agila study +

Study time

+ \ No newline at end of file diff --git a/ceb/expanded-8-2/lesson-2/lesson.html b/ceb/expanded-8-2/lesson-2/lesson.html new file mode 100644 index 0000000..5ddb572 --- /dev/null +++ b/ceb/expanded-8-2/lesson-2/lesson.html @@ -0,0 +1,5 @@ +I-render ang data isip teksto

I-render ang data isip teksto

15-minutong sesyon: pagbasa sulod sa 3 minutos, pag-trace sa 3, pag-eksperimento sa 7, ug pagtubag sa check sa 2. Paggahin og dugang oras kon gikinahanglan.

Murag HTML ang ubang character sa ikatulong task. Ang textContent mopakita sa literal nga teksto. Ang innerHTML mo-interpret sa markup ug mahimong hinungdan sa injection sa untrusted data. Idugang ang ampersand ug angle brackets. Siguroa nga literal ang gipakita.

<!doctype html>
+<html lang="en"><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1">
+<title>Agila study</title>
+<main><h1>Tasks</h1><ul id="tasks"></ul></main>
+<script>const tasks=["Read","Test","<strong>Explain</strong>"];for(const text of tasks){const li=document.createElement("li");li.textContent=text;document.getElementById("tasks").append(li);}</script></html>

Praktis ug ebidensiya

Isulat ang tagna, aktuwal nga resulta, ug hinungdan sa pagkapareho o kalainan. Ang completion check mosukod sa pagsabot; ang practice task mopauswag sa kahanas.

\ No newline at end of file diff --git a/ceb/expanded-8-2/lesson-2/main.html b/ceb/expanded-8-2/lesson-2/main.html new file mode 100644 index 0000000..106dc16 --- /dev/null +++ b/ceb/expanded-8-2/lesson-2/main.html @@ -0,0 +1,5 @@ + + +Agila study +

Tasks

    + \ No newline at end of file diff --git a/ceb/expanded-8-2/lesson-3/lesson.html b/ceb/expanded-8-2/lesson-3/lesson.html new file mode 100644 index 0000000..86205af --- /dev/null +++ b/ceb/expanded-8-2/lesson-3/lesson.html @@ -0,0 +1,5 @@ +Paghimo og gamay nga website nga nasulayan

    Paghimo og gamay nga website nga nasulayan

    15-minutong sesyon: pagbasa sulod sa 3 minutos, pag-trace sa 3, pag-eksperimento sa 7, ug pagtubag sa check sa 2. Paggahin og dugang oras kon gikinahanglan.

    Iusa ang semantic page, responsive card, validated input, ug counter isip study planner. Function lamang sa nahibiling trabaho ang gisulayan sa sample. Idugang ang test sa empty input ug keyboard; tuyoang gub-a ang usa ka condition aron adunay mapakyas nga test. I-save sa Forge. Ang pag-publish nagkinahanglan og host, domain, HTTPS, ug rollback plan; workshop kining isolated preview.

    <!doctype html>
    +<html lang="en"><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1">
    +<title>Agila study</title>
    +<main><h1>Planner checks</h1><pre id="result"></pre></main>
    +<script>function remaining(total,done){return Math.max(0,total-done)}const cases=[[4,1,3],[4,4,0],[4,5,0],[0,0,0]];document.getElementById("result").textContent=cases.map(([t,d,want])=>`${t},${d}: ${remaining(t,d)===want?"PASS":"FAIL"}`).join("\n");</script></html>

    Praktis ug ebidensiya

    Isulat ang tagna, aktuwal nga resulta, ug hinungdan sa pagkapareho o kalainan. Ang completion check mosukod sa pagsabot; ang practice task mopauswag sa kahanas.

    \ No newline at end of file diff --git a/ceb/expanded-8-2/lesson-3/main.html b/ceb/expanded-8-2/lesson-3/main.html new file mode 100644 index 0000000..92c6980 --- /dev/null +++ b/ceb/expanded-8-2/lesson-3/main.html @@ -0,0 +1,5 @@ + + +Agila study +

    Planner checks

    + \ No newline at end of file diff --git a/ceb/objective-pascal-bridge-20261101/README.md b/ceb/objective-pascal-bridge-20261101/README.md new file mode 100644 index 0000000..1c19e5c --- /dev/null +++ b/ceb/objective-pascal-bridge-20261101/README.md @@ -0,0 +1,9 @@ +# Objective-Pascal interoperability + +[Agila University track](https://edu.agilaos.com/track.php?track=10&lang=ceb) + +Mga 15 minutos matag leksyon. Tag-ana, padagana, usba, ipasabot, ug tubaga ang pagsusi sa University. + +- [Lesson 1: Tuyoang i-enable ang Objective-Pascal](lesson-1/lesson.html) +- [Lesson 2: Message, selector, ug runtime contract](lesson-2/lesson.html) +- [Lesson 3: Sulayi sa matinud-anong paagi ang platform bridge](lesson-3/lesson.html) diff --git a/ceb/objective-pascal-bridge-20261101/lesson-1/lesson.html b/ceb/objective-pascal-bridge-20261101/lesson-1/lesson.html new file mode 100644 index 0000000..c78d4f6 --- /dev/null +++ b/ceb/objective-pascal-bridge-20261101/lesson-1/lesson.html @@ -0,0 +1 @@ +Tuyoang i-enable ang Objective-Pascal

    Tuyoang i-enable ang Objective-Pascal

    15-minutong sesyon: pagbasa sulod sa 3 minutos, pag-trace sa 3, pag-eksperimento sa 7, ug pagtubag sa check sa 2. Paggahin og dugang oras kon gikinahanglan.

    Suporta sa Free Pascal alang sa Objective-C constructs ang Objective-Pascal, dili laing ngalan lamang sa Object Pascal class. Ang {$modeswitch objectivec1} ug {$modeswitch objectivec2} mo-enable sa feature. Ang ulahi nga {$mode ...} mo-reset sa mode switches busa importante ang han-ay. Basaha ang Free Pascal reference ug ipasabot ang source header. Object Pascal exercises ang modagan sa Linux lab; wala dinhi ang Objective-Pascal Apple-framework runtime.

    Praktis ug ebidensiya

    Isulat ang tagna, aktuwal nga resulta, ug hinungdan sa pagkapareho o kalainan. Ang completion check mosukod sa pagsabot; ang practice task mopauswag sa kahanas.

    Reperensiya sa pinulongan

    \ No newline at end of file diff --git a/ceb/objective-pascal-bridge-20261101/lesson-2/lesson.html b/ceb/objective-pascal-bridge-20261101/lesson-2/lesson.html new file mode 100644 index 0000000..6a323e0 --- /dev/null +++ b/ceb/objective-pascal-bridge-20261101/lesson-2/lesson.html @@ -0,0 +1 @@ +Message, selector, ug runtime contract

    Message, selector, ug runtime contract

    15-minutong sesyon: pagbasa sulod sa 3 minutos, pag-trace sa 3, pag-eksperimento sa 7, ug pagtubag sa check sa 2. Paggahin og dugang oras kon gikinahanglan.

    Kinahanglan og kasabotan sa class, selector, argument type, object lifetime, ug runtime ABI alang sa Objective-C interoperability. Dili igo ang susamang syntax. Itandi ang method sa Objective-C header ug Pascal binding sa documented framework unit. Paghimo og table sa receiver, selector, parameter, resulta, ug ownership. Ayaw paghimo og binding gikan lamang sa ngalan. Giya kini sa future Objective Ada design, dili specification niini.

    Praktis ug ebidensiya

    Isulat ang tagna, aktuwal nga resulta, ug hinungdan sa pagkapareho o kalainan. Ang completion check mosukod sa pagsabot; ang practice task mopauswag sa kahanas.

    Reperensiya sa pinulongan

    \ No newline at end of file diff --git a/ceb/objective-pascal-bridge-20261101/lesson-3/lesson.html b/ceb/objective-pascal-bridge-20261101/lesson-3/lesson.html new file mode 100644 index 0000000..a6b0161 --- /dev/null +++ b/ceb/objective-pascal-bridge-20261101/lesson-3/lesson.html @@ -0,0 +1 @@ +Sulayi sa matinud-anong paagi ang platform bridge

    Sulayi sa matinud-anong paagi ang platform bridge

    15-minutong sesyon: pagbasa sulod sa 3 minutos, pag-trace sa 3, pag-eksperimento sa 7, ug pagtubag sa check sa 2. Paggahin og dugang oras kon gikinahanglan.

    Gamita ang supported target compiler, framework header, ug runtime; itala ang version. I-compile ang minimal binding, padagana sa target, ug susiha ang resulta ug ownership. Dili pamatuod sa Apple bridge ang Linux Object Pascal class test. Kon walay target, buhata ang design analysis ug markahi nga untested ang execution. Ibulag ang portable core aron masulayan gihapon ang ubang bahin.

    Praktis ug ebidensiya

    Isulat ang tagna, aktuwal nga resulta, ug hinungdan sa pagkapareho o kalainan. Ang completion check mosukod sa pagsabot; ang practice task mopauswag sa kahanas.

    Reperensiya sa pinulongan

    \ No newline at end of file diff --git a/ceb/objectivec-foundations-20261101/README.md b/ceb/objectivec-foundations-20261101/README.md new file mode 100644 index 0000000..98d9ee2 --- /dev/null +++ b/ceb/objectivec-foundations-20261101/README.md @@ -0,0 +1,9 @@ +# Objective-C — unang mga lakang + +[Agila University track](https://edu.agilaos.com/track.php?track=15&lang=ceb) + +Mga 15 minutos matag leksyon. Tag-ana, padagana, usba, ipasabot, ug tubaga ang pagsusi sa University. + +- [Lesson 1: Imong unang programa nga mapasabot](lesson-1/lesson.html) +- [Lesson 2: Mga value ug desisyon](lesson-2/lesson.html) +- [Lesson 3: Function ug klarong lagda](lesson-3/lesson.html) diff --git a/ceb/objectivec-foundations-20261101/lesson-1/lesson.html b/ceb/objectivec-foundations-20261101/lesson-1/lesson.html new file mode 100644 index 0000000..5a8eb99 --- /dev/null +++ b/ceb/objectivec-foundations-20261101/lesson-1/lesson.html @@ -0,0 +1,12 @@ +Imong unang programa nga mapasabot

    Imong unang programa nga mapasabot

    15-minutong sesyon: pagbasa sulod sa 3 minutos, pag-trace sa 3, pag-eksperimento sa 7, ug pagtubag sa check sa 2. Paggahin og dugang oras kon gikinahanglan.

    Usa ka hugpong sa mga sugo ang programa. Basaha gikan sa entry point ngadto sa output statement. Data ang teksto sulod sa mga kinutlo; sugo ang output operation. Tag-ana ang linya sa dili pa padaganon. Usba lang ang mensahe, padagana pag-usab, ug tangtanga ang usa ka gikinahanglang punctuation aron basahon ang unang error. Ibalik ang nagtrabaho nga source.

    Ang square brackets mopadala og message sa receiver: [plan completed]. Ang @interface nagdeklarar og method ug ang @implementation naghatag sa lawas niini. Explicit memory management ang gigamit niini nga GNUstep exercises, dili Apple ARC.

    #import <Foundation/Foundation.h>
    +#include <stdio.h>
    +#include <assert.h>
    +
    +int main(void) {
    +    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
    +    NSString *message = @"Andam";
    +    puts([message UTF8String]);
    +    [pool drain];
    +    return 0;
    +}
    +

    Gipaabot nga resulta: Andam

    Praktis ug ebidensiya

    Isulat ang tagna, aktuwal nga resulta, ug hinungdan sa pagkapareho o kalainan. Ang completion check mosukod sa pagsabot; ang practice task mopauswag sa kahanas.

    Reperensiya sa pinulongan

    \ No newline at end of file diff --git a/ceb/objectivec-foundations-20261101/lesson-1/main.m b/ceb/objectivec-foundations-20261101/lesson-1/main.m new file mode 100644 index 0000000..6001561 --- /dev/null +++ b/ceb/objectivec-foundations-20261101/lesson-1/main.m @@ -0,0 +1,11 @@ +#import +#include +#include + +int main(void) { + NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; + NSString *message = @"Andam"; + puts([message UTF8String]); + [pool drain]; + return 0; +} diff --git a/ceb/objectivec-foundations-20261101/lesson-2/lesson.html b/ceb/objectivec-foundations-20261101/lesson-2/lesson.html new file mode 100644 index 0000000..10a4471 --- /dev/null +++ b/ceb/objectivec-foundations-20261101/lesson-2/lesson.html @@ -0,0 +1,12 @@ +Mga value ug desisyon

    Mga value ug desisyon

    15-minutong sesyon: pagbasa sulod sa 3 minutos, pag-trace sa 3, pag-eksperimento sa 7, ug pagtubag sa check sa 2. Paggahin og dugang oras kon gikinahanglan.

    Ang desisyon mopili kon unsang statement ang modagan. Ang lagda mao ang “andam sa 80 pataas.” Sunda ang 85, 79, 80, ug 81 sa dili pa padaganon. Apil ang 80 sa comparison. Mahimong sakto sa 85 apan sayop sa utlanan. Idugang ang lahi nga check sa pagbalibad sa ubos sa 0 o labaw sa 100; lahi ang invalid ug nagkinahanglan og praktis.

    Ang square brackets mopadala og message sa receiver: [plan completed]. Ang @interface nagdeklarar og method ug ang @implementation naghatag sa lawas niini. Explicit memory management ang gigamit niini nga GNUstep exercises, dili Apple ARC.

    #import <Foundation/Foundation.h>
    +#include <stdio.h>
    +#include <assert.h>
    +
    +int main(void) {
    +    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
    +    NSInteger score = 85;
    +    puts(score >= 80 ? "Andam" : "Pagpraktis");
    +    [pool drain];
    +    return 0;
    +}
    +

    Gipaabot nga resulta: Andam

    Praktis ug ebidensiya

    Isulat ang tagna, aktuwal nga resulta, ug hinungdan sa pagkapareho o kalainan. Ang completion check mosukod sa pagsabot; ang practice task mopauswag sa kahanas.

    Reperensiya sa pinulongan

    \ No newline at end of file diff --git a/ceb/objectivec-foundations-20261101/lesson-2/main.m b/ceb/objectivec-foundations-20261101/lesson-2/main.m new file mode 100644 index 0000000..f487aef --- /dev/null +++ b/ceb/objectivec-foundations-20261101/lesson-2/main.m @@ -0,0 +1,11 @@ +#import +#include +#include + +int main(void) { + NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; + NSInteger score = 85; + puts(score >= 80 ? "Andam" : "Pagpraktis"); + [pool drain]; + return 0; +} diff --git a/ceb/objectivec-foundations-20261101/lesson-3/lesson.html b/ceb/objectivec-foundations-20261101/lesson-3/lesson.html new file mode 100644 index 0000000..39605c1 --- /dev/null +++ b/ceb/objectivec-foundations-20261101/lesson-3/lesson.html @@ -0,0 +1,11 @@ +Function ug klarong lagda

    Function ug klarong lagda

    15-minutong sesyon: pagbasa sulod sa 3 minutos, pag-trace sa 3, pag-eksperimento sa 7, ug pagtubag sa check sa 2. Paggahin og dugang oras kon gikinahanglan.

    Ang function o subroutine nagngalan sa calculation nga magamit pag-usab. Ang lagda modawat og nonnegative total ug completed; zero ang resulta kon nakaabot o milapas ang completed sa total. Kon dili, ibalik ang kalainan. Sunda ang (4,1), (4,4), (4,5), ug (0,0). Ibulag ang pagpatik sa calculation. Ipasabot nganong gawas sa sakop ang negative input ug paghimo og pagbalibad sa dili pa modawat og external input.

    Ang square brackets mopadala og message sa receiver: [plan completed]. Ang @interface nagdeklarar og method ug ang @implementation naghatag sa lawas niini. Explicit memory management ang gigamit niini nga GNUstep exercises, dili Apple ARC.

    #import <Foundation/Foundation.h>
    +#include <stdio.h>
    +#include <assert.h>
    +int remaining(int total, int done) { return done >= total ? 0 : total - done; }
    +int main(void) {
    +    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
    +    printf("%d\n", remaining(4,1));
    +    [pool drain];
    +    return 0;
    +}
    +

    Gipaabot nga resulta: 3

    Praktis ug ebidensiya

    Isulat ang tagna, aktuwal nga resulta, ug hinungdan sa pagkapareho o kalainan. Ang completion check mosukod sa pagsabot; ang practice task mopauswag sa kahanas.

    Reperensiya sa pinulongan

    \ No newline at end of file diff --git a/ceb/objectivec-foundations-20261101/lesson-3/main.m b/ceb/objectivec-foundations-20261101/lesson-3/main.m new file mode 100644 index 0000000..980493c --- /dev/null +++ b/ceb/objectivec-foundations-20261101/lesson-3/main.m @@ -0,0 +1,10 @@ +#import +#include +#include +int remaining(int total, int done) { return done >= total ? 0 : total - done; } +int main(void) { + NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; + printf("%d\n", remaining(4,1)); + [pool drain]; + return 0; +} diff --git a/ceb/objectivec-practice-20261101/README.md b/ceb/objectivec-practice-20261101/README.md new file mode 100644 index 0000000..8802dcc --- /dev/null +++ b/ceb/objectivec-practice-20261101/README.md @@ -0,0 +1,9 @@ +# Objective-C — paghimo ug pagsulay + +[Agila University track](https://edu.agilaos.com/track.php?track=15&lang=ceb) + +Mga 15 minutos matag leksyon. Tag-ana, padagana, usba, ipasabot, ug tubaga ang pagsusi sa University. + +- [Lesson 1: Collection ug balikbalik nga buluhaton](lesson-1/lesson.html) +- [Lesson 2: Usa ka importante nga kinaiya sa pinulongan](lesson-2/lesson.html) +- [Lesson 3: Paghimo, gub-a, ug sulayi ang study planner](lesson-3/lesson.html) diff --git a/ceb/objectivec-practice-20261101/lesson-1/lesson.html b/ceb/objectivec-practice-20261101/lesson-1/lesson.html new file mode 100644 index 0000000..a7bb637 --- /dev/null +++ b/ceb/objectivec-practice-20261101/lesson-1/lesson.html @@ -0,0 +1,15 @@ +Collection ug balikbalik nga buluhaton

    Collection ug balikbalik nga buluhaton

    15-minutong sesyon: pagbasa sulod sa 3 minutos, pag-trace sa 3, pag-eksperimento sa 7, ug pagtubag sa check sa 2. Paggahin og dugang oras kon gikinahanglan.

    Ang collection nagtipig sa may kalabotang value. Bisitahon sa loop ang 1, 2, ug 3; ang total gikan sa 0 mahimong 1, 3, ug 6. Isulat ang trace imbes manag-an. Ilha ang una ug kataposang valid nga posisyon: mahimong 1-based ang Pascal array samtang zero-based ang daghang ubang container. Idugang og value ug taronga ang bounds. Ipasabot ang resulta alang sa empty collection.

    Ang square brackets mopadala og message sa receiver: [plan completed]. Ang @interface nagdeklarar og method ug ang @implementation naghatag sa lawas niini. Explicit memory management ang gigamit niini nga GNUstep exercises, dili Apple ARC.

    #import <Foundation/Foundation.h>
    +#include <stdio.h>
    +#include <assert.h>
    +
    +int main(void) {
    +    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
    +    NSArray *minutes = [NSArray arrayWithObjects:
    +        [NSNumber numberWithInt:1], [NSNumber numberWithInt:2], [NSNumber numberWithInt:3], nil];
    +    int total = 0;
    +    for (NSNumber *value in minutes) total += [value intValue];
    +    printf("%d\n", total);
    +    [pool drain];
    +    return 0;
    +}
    +

    Gipaabot nga resulta: 6

    Praktis ug ebidensiya

    Isulat ang tagna, aktuwal nga resulta, ug hinungdan sa pagkapareho o kalainan. Ang completion check mosukod sa pagsabot; ang practice task mopauswag sa kahanas.

    Reperensiya sa pinulongan

    \ No newline at end of file diff --git a/ceb/objectivec-practice-20261101/lesson-1/main.m b/ceb/objectivec-practice-20261101/lesson-1/main.m new file mode 100644 index 0000000..8d5b43c --- /dev/null +++ b/ceb/objectivec-practice-20261101/lesson-1/main.m @@ -0,0 +1,14 @@ +#import +#include +#include + +int main(void) { + NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; + NSArray *minutes = [NSArray arrayWithObjects: + [NSNumber numberWithInt:1], [NSNumber numberWithInt:2], [NSNumber numberWithInt:3], nil]; + int total = 0; + for (NSNumber *value in minutes) total += [value intValue]; + printf("%d\n", total); + [pool drain]; + return 0; +} diff --git a/ceb/objectivec-practice-20261101/lesson-2/lesson.html b/ceb/objectivec-practice-20261101/lesson-2/lesson.html new file mode 100644 index 0000000..4c4eab6 --- /dev/null +++ b/ceb/objectivec-practice-20261101/lesson-2/lesson.html @@ -0,0 +1,18 @@ +Usa ka importante nga kinaiya sa pinulongan

    Usa ka importante nga kinaiya sa pinulongan

    15-minutong sesyon: pagbasa sulod sa 3 minutos, pag-trace sa 3, pag-eksperimento sa 7, ug pagtubag sa check sa 2. Paggahin og dugang oras kon gikinahanglan.

    Gamita ang nota sa pinulongan sa ubos aron ipasabot ang pag-usab sa state. Ilha unsa ang gikopya, gipaambit, mahimong mapakyas, ug gibuhian. Dili tanan nga pangutana magamit niini nga programa: isulti kung hain. Paghimo og usa ka kausaban, tag-ana ang epekto, ug itandi sa aktuwal nga resulta. Mahimong lahi ang lagda sa pamilyar nga operator sa laing pinulongan.

    Ang square brackets mopadala og message sa receiver: [plan completed]. Ang @interface nagdeklarar og method ug ang @implementation naghatag sa lawas niini. Explicit memory management ang gigamit niini nga GNUstep exercises, dili Apple ARC.

    #import <Foundation/Foundation.h>
    +#include <stdio.h>
    +#include <assert.h>
    +@interface StudyPlan : NSObject
    +- (int)completed;
    +@end
    +@implementation StudyPlan
    +- (int)completed { return 3; }
    +@end
    +int main(void) {
    +    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
    +    StudyPlan *plan = [[StudyPlan alloc] init];
    +    printf("%d\n", [plan completed]);
    +    [plan release];
    +    [pool drain];
    +    return 0;
    +}
    +

    Gipaabot nga resulta: 3

    Praktis ug ebidensiya

    Isulat ang tagna, aktuwal nga resulta, ug hinungdan sa pagkapareho o kalainan. Ang completion check mosukod sa pagsabot; ang practice task mopauswag sa kahanas.

    Reperensiya sa pinulongan

    \ No newline at end of file diff --git a/ceb/objectivec-practice-20261101/lesson-2/main.m b/ceb/objectivec-practice-20261101/lesson-2/main.m new file mode 100644 index 0000000..0dde997 --- /dev/null +++ b/ceb/objectivec-practice-20261101/lesson-2/main.m @@ -0,0 +1,17 @@ +#import +#include +#include +@interface StudyPlan : NSObject +- (int)completed; +@end +@implementation StudyPlan +- (int)completed { return 3; } +@end +int main(void) { + NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; + StudyPlan *plan = [[StudyPlan alloc] init]; + printf("%d\n", [plan completed]); + [plan release]; + [pool drain]; + return 0; +} diff --git a/ceb/objectivec-practice-20261101/lesson-3/lesson.html b/ceb/objectivec-practice-20261101/lesson-3/lesson.html new file mode 100644 index 0000000..e97e2f8 --- /dev/null +++ b/ceb/objectivec-practice-20261101/lesson-3/lesson.html @@ -0,0 +1,15 @@ +Paghimo, gub-a, ug sulayi ang study planner

    Paghimo, gub-a, ug sulayi ang study planner

    15-minutong sesyon: pagbasa sulod sa 3 minutos, pag-trace sa 3, pag-eksperimento sa 7, ug pagtubag sa check sa 2. Paggahin og dugang oras kon gikinahanglan.

    Ang mapuslanong test motandi sa resulta ug requirement. Dili angay mahimong negative ang nahibiling trabaho sa nonnegative input domain sa planner. Padagana ang starter, tuyoang tangtanga ang proteksiyon kon labaw sa total ang completed, ug siguroa nga adunay check nga mapakyas. Ibalik kini. Idugang ang duha ka study task, summary, ug boundary cases. I-save ang source ug ebidensiya sa Agila Forge. Ipasabot ang matag linya, apil ang gisugyot sa AI.

    Ang square brackets mopadala og message sa receiver: [plan completed]. Ang @interface nagdeklarar og method ug ang @implementation naghatag sa lawas niini. Explicit memory management ang gigamit niini nga GNUstep exercises, dili Apple ARC.

    #import <Foundation/Foundation.h>
    +#include <stdio.h>
    +#include <assert.h>
    +int remaining(int total, int done) { return done >= total ? 0 : total - done; }
    +int main(void) {
    +    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
    +    assert(remaining(4,1)==3);
    +    assert(remaining(4,4)==0);
    +    assert(remaining(4,5)==0);
    +    assert(remaining(0,0)==0);
    +    puts("Nipasar");
    +    [pool drain];
    +    return 0;
    +}
    +

    Gipaabot nga resulta: Nipasar

    Praktis ug ebidensiya

    Isulat ang tagna, aktuwal nga resulta, ug hinungdan sa pagkapareho o kalainan. Ang completion check mosukod sa pagsabot; ang practice task mopauswag sa kahanas.

    Reperensiya sa pinulongan

    \ No newline at end of file diff --git a/ceb/objectivec-practice-20261101/lesson-3/main.m b/ceb/objectivec-practice-20261101/lesson-3/main.m new file mode 100644 index 0000000..c57ebbd --- /dev/null +++ b/ceb/objectivec-practice-20261101/lesson-3/main.m @@ -0,0 +1,14 @@ +#import +#include +#include +int remaining(int total, int done) { return done >= total ? 0 : total - done; } +int main(void) { + NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; + assert(remaining(4,1)==3); + assert(remaining(4,4)==0); + assert(remaining(4,5)==0); + assert(remaining(0,0)==0); + puts("Nipasar"); + [pool drain]; + return 0; +} diff --git a/ceb/objectpascal-foundations-20261101/README.md b/ceb/objectpascal-foundations-20261101/README.md new file mode 100644 index 0000000..22b275f --- /dev/null +++ b/ceb/objectpascal-foundations-20261101/README.md @@ -0,0 +1,9 @@ +# Object Pascal & Objective-Pascal — unang mga lakang + +[Agila University track](https://edu.agilaos.com/track.php?track=10&lang=ceb) + +Mga 15 minutos matag leksyon. Tag-ana, padagana, usba, ipasabot, ug tubaga ang pagsusi sa University. + +- [Lesson 1: Imong unang programa nga mapasabot](lesson-1/lesson.html) +- [Lesson 2: Mga value ug desisyon](lesson-2/lesson.html) +- [Lesson 3: Function ug klarong lagda](lesson-3/lesson.html) diff --git a/ceb/objectpascal-foundations-20261101/lesson-1/lesson.html b/ceb/objectpascal-foundations-20261101/lesson-1/lesson.html new file mode 100644 index 0000000..eb85378 --- /dev/null +++ b/ceb/objectpascal-foundations-20261101/lesson-1/lesson.html @@ -0,0 +1,8 @@ +Imong unang programa nga mapasabot

    Imong unang programa nga mapasabot

    15-minutong sesyon: pagbasa sulod sa 3 minutos, pag-trace sa 3, pag-eksperimento sa 7, ug pagtubag sa check sa 2. Paggahin og dugang oras kon gikinahanglan.

    Usa ka hugpong sa mga sugo ang programa. Basaha gikan sa entry point ngadto sa output statement. Data ang teksto sulod sa mga kinutlo; sugo ang output operation. Tag-ana ang linya sa dili pa padaganon. Usba lang ang mensahe, padagana pag-usab, ug tangtanga ang usa ka gikinahanglang punctuation aron basahon ang unang error. Ibalik ang nagtrabaho nga source.

    Lahi ang Object Pascal classes ug Objective-Pascal. Unaha ang class, construction, ug Free sa Linux lab. Ang Objective-Pascal modugang og Objective-C interoperability pinaagi sa mode switches; wala sa lab ang maong Apple runtime.

    program AgilaStudy;
    +{$mode objfpc}{$H+}{$assertions on}
    +
    +
    +begin
    +  writeln('Andam');
    +end.
    +

    Gipaabot nga resulta: Andam

    Praktis ug ebidensiya

    Isulat ang tagna, aktuwal nga resulta, ug hinungdan sa pagkapareho o kalainan. Ang completion check mosukod sa pagsabot; ang practice task mopauswag sa kahanas.

    Reperensiya sa pinulongan

    \ No newline at end of file diff --git a/ceb/objectpascal-foundations-20261101/lesson-1/main.pas b/ceb/objectpascal-foundations-20261101/lesson-1/main.pas new file mode 100644 index 0000000..3e6043b --- /dev/null +++ b/ceb/objectpascal-foundations-20261101/lesson-1/main.pas @@ -0,0 +1,7 @@ +program AgilaStudy; +{$mode objfpc}{$H+}{$assertions on} + + +begin + writeln('Andam'); +end. diff --git a/ceb/objectpascal-foundations-20261101/lesson-2/lesson.html b/ceb/objectpascal-foundations-20261101/lesson-2/lesson.html new file mode 100644 index 0000000..327c96b --- /dev/null +++ b/ceb/objectpascal-foundations-20261101/lesson-2/lesson.html @@ -0,0 +1,9 @@ +Mga value ug desisyon

    Mga value ug desisyon

    15-minutong sesyon: pagbasa sulod sa 3 minutos, pag-trace sa 3, pag-eksperimento sa 7, ug pagtubag sa check sa 2. Paggahin og dugang oras kon gikinahanglan.

    Ang desisyon mopili kon unsang statement ang modagan. Ang lagda mao ang “andam sa 80 pataas.” Sunda ang 85, 79, 80, ug 81 sa dili pa padaganon. Apil ang 80 sa comparison. Mahimong sakto sa 85 apan sayop sa utlanan. Idugang ang lahi nga check sa pagbalibad sa ubos sa 0 o labaw sa 100; lahi ang invalid ug nagkinahanglan og praktis.

    Lahi ang Object Pascal classes ug Objective-Pascal. Unaha ang class, construction, ug Free sa Linux lab. Ang Objective-Pascal modugang og Objective-C interoperability pinaagi sa mode switches; wala sa lab ang maong Apple runtime.

    program AgilaStudy;
    +{$mode objfpc}{$H+}{$assertions on}
    +
    +var Score: Integer;
    +begin
    +  Score := 85;
    +  if Score >= 80 then writeln('Andam') else writeln('Pagpraktis');
    +end.
    +

    Gipaabot nga resulta: Andam

    Praktis ug ebidensiya

    Isulat ang tagna, aktuwal nga resulta, ug hinungdan sa pagkapareho o kalainan. Ang completion check mosukod sa pagsabot; ang practice task mopauswag sa kahanas.

    Reperensiya sa pinulongan

    \ No newline at end of file diff --git a/ceb/objectpascal-foundations-20261101/lesson-2/main.pas b/ceb/objectpascal-foundations-20261101/lesson-2/main.pas new file mode 100644 index 0000000..97ce943 --- /dev/null +++ b/ceb/objectpascal-foundations-20261101/lesson-2/main.pas @@ -0,0 +1,8 @@ +program AgilaStudy; +{$mode objfpc}{$H+}{$assertions on} + +var Score: Integer; +begin + Score := 85; + if Score >= 80 then writeln('Andam') else writeln('Pagpraktis'); +end. diff --git a/ceb/objectpascal-foundations-20261101/lesson-3/lesson.html b/ceb/objectpascal-foundations-20261101/lesson-3/lesson.html new file mode 100644 index 0000000..b5d746f --- /dev/null +++ b/ceb/objectpascal-foundations-20261101/lesson-3/lesson.html @@ -0,0 +1,11 @@ +Function ug klarong lagda

    Function ug klarong lagda

    15-minutong sesyon: pagbasa sulod sa 3 minutos, pag-trace sa 3, pag-eksperimento sa 7, ug pagtubag sa check sa 2. Paggahin og dugang oras kon gikinahanglan.

    Ang function o subroutine nagngalan sa calculation nga magamit pag-usab. Ang lagda modawat og nonnegative total ug completed; zero ang resulta kon nakaabot o milapas ang completed sa total. Kon dili, ibalik ang kalainan. Sunda ang (4,1), (4,4), (4,5), ug (0,0). Ibulag ang pagpatik sa calculation. Ipasabot nganong gawas sa sakop ang negative input ug paghimo og pagbalibad sa dili pa modawat og external input.

    Lahi ang Object Pascal classes ug Objective-Pascal. Unaha ang class, construction, ug Free sa Linux lab. Ang Objective-Pascal modugang og Objective-C interoperability pinaagi sa mode switches; wala sa lab ang maong Apple runtime.

    program AgilaStudy;
    +{$mode objfpc}{$H+}{$assertions on}
    +function Remaining(Total, Done: Integer): Integer;
    +begin
    +  if Done >= Total then Result := 0 else Result := Total - Done;
    +end;
    +
    +begin
    +  writeln(Remaining(4, 1));
    +end.
    +

    Gipaabot nga resulta: 3

    Praktis ug ebidensiya

    Isulat ang tagna, aktuwal nga resulta, ug hinungdan sa pagkapareho o kalainan. Ang completion check mosukod sa pagsabot; ang practice task mopauswag sa kahanas.

    Reperensiya sa pinulongan

    \ No newline at end of file diff --git a/ceb/objectpascal-foundations-20261101/lesson-3/main.pas b/ceb/objectpascal-foundations-20261101/lesson-3/main.pas new file mode 100644 index 0000000..ae28c77 --- /dev/null +++ b/ceb/objectpascal-foundations-20261101/lesson-3/main.pas @@ -0,0 +1,10 @@ +program AgilaStudy; +{$mode objfpc}{$H+}{$assertions on} +function Remaining(Total, Done: Integer): Integer; +begin + if Done >= Total then Result := 0 else Result := Total - Done; +end; + +begin + writeln(Remaining(4, 1)); +end. diff --git a/ceb/objectpascal-practice-20261101/README.md b/ceb/objectpascal-practice-20261101/README.md new file mode 100644 index 0000000..b954ffb --- /dev/null +++ b/ceb/objectpascal-practice-20261101/README.md @@ -0,0 +1,9 @@ +# Object Pascal & Objective-Pascal — paghimo ug pagsulay + +[Agila University track](https://edu.agilaos.com/track.php?track=10&lang=ceb) + +Mga 15 minutos matag leksyon. Tag-ana, padagana, usba, ipasabot, ug tubaga ang pagsusi sa University. + +- [Lesson 1: Collection ug balikbalik nga buluhaton](lesson-1/lesson.html) +- [Lesson 2: Usa ka importante nga kinaiya sa pinulongan](lesson-2/lesson.html) +- [Lesson 3: Paghimo, gub-a, ug sulayi ang study planner](lesson-3/lesson.html) diff --git a/ceb/objectpascal-practice-20261101/lesson-1/lesson.html b/ceb/objectpascal-practice-20261101/lesson-1/lesson.html new file mode 100644 index 0000000..68c00fc --- /dev/null +++ b/ceb/objectpascal-practice-20261101/lesson-1/lesson.html @@ -0,0 +1,11 @@ +Collection ug balikbalik nga buluhaton

    Collection ug balikbalik nga buluhaton

    15-minutong sesyon: pagbasa sulod sa 3 minutos, pag-trace sa 3, pag-eksperimento sa 7, ug pagtubag sa check sa 2. Paggahin og dugang oras kon gikinahanglan.

    Ang collection nagtipig sa may kalabotang value. Bisitahon sa loop ang 1, 2, ug 3; ang total gikan sa 0 mahimong 1, 3, ug 6. Isulat ang trace imbes manag-an. Ilha ang una ug kataposang valid nga posisyon: mahimong 1-based ang Pascal array samtang zero-based ang daghang ubang container. Idugang og value ug taronga ang bounds. Ipasabot ang resulta alang sa empty collection.

    Lahi ang Object Pascal classes ug Objective-Pascal. Unaha ang class, construction, ug Free sa Linux lab. Ang Objective-Pascal modugang og Objective-C interoperability pinaagi sa mode switches; wala sa lab ang maong Apple runtime.

    program AgilaStudy;
    +{$mode objfpc}{$H+}{$assertions on}
    +
    +var Minutes: array[1..3] of Integer; I, Total: Integer;
    +begin
    +  Minutes[1] := 1; Minutes[2] := 2; Minutes[3] := 3;
    +  Total := 0;
    +  for I := Low(Minutes) to High(Minutes) do Total := Total + Minutes[I];
    +  writeln(Total);
    +end.
    +

    Gipaabot nga resulta: 6

    Praktis ug ebidensiya

    Isulat ang tagna, aktuwal nga resulta, ug hinungdan sa pagkapareho o kalainan. Ang completion check mosukod sa pagsabot; ang practice task mopauswag sa kahanas.

    Reperensiya sa pinulongan

    \ No newline at end of file diff --git a/ceb/objectpascal-practice-20261101/lesson-1/main.pas b/ceb/objectpascal-practice-20261101/lesson-1/main.pas new file mode 100644 index 0000000..f1c7b61 --- /dev/null +++ b/ceb/objectpascal-practice-20261101/lesson-1/main.pas @@ -0,0 +1,10 @@ +program AgilaStudy; +{$mode objfpc}{$H+}{$assertions on} + +var Minutes: array[1..3] of Integer; I, Total: Integer; +begin + Minutes[1] := 1; Minutes[2] := 2; Minutes[3] := 3; + Total := 0; + for I := Low(Minutes) to High(Minutes) do Total := Total + Minutes[I]; + writeln(Total); +end. diff --git a/ceb/objectpascal-practice-20261101/lesson-2/lesson.html b/ceb/objectpascal-practice-20261101/lesson-2/lesson.html new file mode 100644 index 0000000..3049bee --- /dev/null +++ b/ceb/objectpascal-practice-20261101/lesson-2/lesson.html @@ -0,0 +1,17 @@ +Usa ka importante nga kinaiya sa pinulongan

    Usa ka importante nga kinaiya sa pinulongan

    15-minutong sesyon: pagbasa sulod sa 3 minutos, pag-trace sa 3, pag-eksperimento sa 7, ug pagtubag sa check sa 2. Paggahin og dugang oras kon gikinahanglan.

    Gamita ang nota sa pinulongan sa ubos aron ipasabot ang pag-usab sa state. Ilha unsa ang gikopya, gipaambit, mahimong mapakyas, ug gibuhian. Dili tanan nga pangutana magamit niini nga programa: isulti kung hain. Paghimo og usa ka kausaban, tag-ana ang epekto, ug itandi sa aktuwal nga resulta. Mahimong lahi ang lagda sa pamilyar nga operator sa laing pinulongan.

    Lahi ang Object Pascal classes ug Objective-Pascal. Unaha ang class, construction, ug Free sa Linux lab. Ang Objective-Pascal modugang og Objective-C interoperability pinaagi sa mode switches; wala sa lab ang maong Apple runtime.

    program AgilaStudy;
    +{$mode objfpc}{$H+}{$assertions on}
    +
    +type TPlan = class
    +  public Done: Integer;
    +end;
    +var Plan: TPlan;
    +begin
    +  Plan := TPlan.Create;
    +  try
    +    Plan.Done := 3;
    +    writeln(Plan.Done);
    +  finally
    +    Plan.Free;
    +  end;
    +end.
    +

    Gipaabot nga resulta: 3

    Praktis ug ebidensiya

    Isulat ang tagna, aktuwal nga resulta, ug hinungdan sa pagkapareho o kalainan. Ang completion check mosukod sa pagsabot; ang practice task mopauswag sa kahanas.

    Reperensiya sa pinulongan

    \ No newline at end of file diff --git a/ceb/objectpascal-practice-20261101/lesson-2/main.pas b/ceb/objectpascal-practice-20261101/lesson-2/main.pas new file mode 100644 index 0000000..f6eab3b --- /dev/null +++ b/ceb/objectpascal-practice-20261101/lesson-2/main.pas @@ -0,0 +1,16 @@ +program AgilaStudy; +{$mode objfpc}{$H+}{$assertions on} + +type TPlan = class + public Done: Integer; +end; +var Plan: TPlan; +begin + Plan := TPlan.Create; + try + Plan.Done := 3; + writeln(Plan.Done); + finally + Plan.Free; + end; +end. diff --git a/ceb/objectpascal-practice-20261101/lesson-3/lesson.html b/ceb/objectpascal-practice-20261101/lesson-3/lesson.html new file mode 100644 index 0000000..459a8ea --- /dev/null +++ b/ceb/objectpascal-practice-20261101/lesson-3/lesson.html @@ -0,0 +1,15 @@ +Paghimo, gub-a, ug sulayi ang study planner

    Paghimo, gub-a, ug sulayi ang study planner

    15-minutong sesyon: pagbasa sulod sa 3 minutos, pag-trace sa 3, pag-eksperimento sa 7, ug pagtubag sa check sa 2. Paggahin og dugang oras kon gikinahanglan.

    Ang mapuslanong test motandi sa resulta ug requirement. Dili angay mahimong negative ang nahibiling trabaho sa nonnegative input domain sa planner. Padagana ang starter, tuyoang tangtanga ang proteksiyon kon labaw sa total ang completed, ug siguroa nga adunay check nga mapakyas. Ibalik kini. Idugang ang duha ka study task, summary, ug boundary cases. I-save ang source ug ebidensiya sa Agila Forge. Ipasabot ang matag linya, apil ang gisugyot sa AI.

    Lahi ang Object Pascal classes ug Objective-Pascal. Unaha ang class, construction, ug Free sa Linux lab. Ang Objective-Pascal modugang og Objective-C interoperability pinaagi sa mode switches; wala sa lab ang maong Apple runtime.

    program AgilaStudy;
    +{$mode objfpc}{$H+}{$assertions on}
    +function Remaining(Total, Done: Integer): Integer;
    +begin
    +  if Done >= Total then Result := 0 else Result := Total - Done;
    +end;
    +
    +begin
    +  Assert(Remaining(4,1)=3);
    +  Assert(Remaining(4,4)=0);
    +  Assert(Remaining(4,5)=0);
    +  Assert(Remaining(0,0)=0);
    +  writeln('Nipasar');
    +end.
    +

    Gipaabot nga resulta: Nipasar

    Praktis ug ebidensiya

    Isulat ang tagna, aktuwal nga resulta, ug hinungdan sa pagkapareho o kalainan. Ang completion check mosukod sa pagsabot; ang practice task mopauswag sa kahanas.

    Reperensiya sa pinulongan

    \ No newline at end of file diff --git a/ceb/objectpascal-practice-20261101/lesson-3/main.pas b/ceb/objectpascal-practice-20261101/lesson-3/main.pas new file mode 100644 index 0000000..804d075 --- /dev/null +++ b/ceb/objectpascal-practice-20261101/lesson-3/main.pas @@ -0,0 +1,14 @@ +program AgilaStudy; +{$mode objfpc}{$H+}{$assertions on} +function Remaining(Total, Done: Integer): Integer; +begin + if Done >= Total then Result := 0 else Result := Total - Done; +end; + +begin + Assert(Remaining(4,1)=3); + Assert(Remaining(4,4)=0); + Assert(Remaining(4,5)=0); + Assert(Remaining(0,0)=0); + writeln('Nipasar'); +end. diff --git a/ceb/pascal-foundations-20261101/README.md b/ceb/pascal-foundations-20261101/README.md new file mode 100644 index 0000000..516c9d0 --- /dev/null +++ b/ceb/pascal-foundations-20261101/README.md @@ -0,0 +1,9 @@ +# Pascal — unang mga lakang + +[Agila University track](https://edu.agilaos.com/track.php?track=9&lang=ceb) + +Mga 15 minutos matag leksyon. Tag-ana, padagana, usba, ipasabot, ug tubaga ang pagsusi sa University. + +- [Lesson 1: Imong unang programa nga mapasabot](lesson-1/lesson.html) +- [Lesson 2: Mga value ug desisyon](lesson-2/lesson.html) +- [Lesson 3: Function ug klarong lagda](lesson-3/lesson.html) diff --git a/ceb/pascal-foundations-20261101/lesson-1/lesson.html b/ceb/pascal-foundations-20261101/lesson-1/lesson.html new file mode 100644 index 0000000..166d387 --- /dev/null +++ b/ceb/pascal-foundations-20261101/lesson-1/lesson.html @@ -0,0 +1,8 @@ +Imong unang programa nga mapasabot

    Imong unang programa nga mapasabot

    15-minutong sesyon: pagbasa sulod sa 3 minutos, pag-trace sa 3, pag-eksperimento sa 7, ug pagtubag sa check sa 2. Paggahin og dugang oras kon gikinahanglan.

    Usa ka hugpong sa mga sugo ang programa. Basaha gikan sa entry point ngadto sa output statement. Data ang teksto sulod sa mga kinutlo; sugo ang output operation. Tag-ana ang linya sa dili pa padaganon. Usba lang ang mensahe, padagana pag-usab, ug tangtanga ang usa ka gikinahanglang punctuation aron basahon ang unang error. Ibalik ang nagtrabaho nga source.

    Ang begin ug end moputos sa mga statement. Assignment ang :=; comparison ang =. Ang programa matapos sa end.. Free Pascal sa Object Pascal mode ang gigamit, sugod sa procedural constructs.

    program AgilaStudy;
    +{$mode objfpc}{$H+}{$assertions on}
    +
    +
    +begin
    +  writeln('Andam');
    +end.
    +

    Gipaabot nga resulta: Andam

    Praktis ug ebidensiya

    Isulat ang tagna, aktuwal nga resulta, ug hinungdan sa pagkapareho o kalainan. Ang completion check mosukod sa pagsabot; ang practice task mopauswag sa kahanas.

    Reperensiya sa pinulongan

    \ No newline at end of file diff --git a/ceb/pascal-foundations-20261101/lesson-1/main.pas b/ceb/pascal-foundations-20261101/lesson-1/main.pas new file mode 100644 index 0000000..3e6043b --- /dev/null +++ b/ceb/pascal-foundations-20261101/lesson-1/main.pas @@ -0,0 +1,7 @@ +program AgilaStudy; +{$mode objfpc}{$H+}{$assertions on} + + +begin + writeln('Andam'); +end. diff --git a/ceb/pascal-foundations-20261101/lesson-2/lesson.html b/ceb/pascal-foundations-20261101/lesson-2/lesson.html new file mode 100644 index 0000000..2e392e2 --- /dev/null +++ b/ceb/pascal-foundations-20261101/lesson-2/lesson.html @@ -0,0 +1,9 @@ +Mga value ug desisyon

    Mga value ug desisyon

    15-minutong sesyon: pagbasa sulod sa 3 minutos, pag-trace sa 3, pag-eksperimento sa 7, ug pagtubag sa check sa 2. Paggahin og dugang oras kon gikinahanglan.

    Ang desisyon mopili kon unsang statement ang modagan. Ang lagda mao ang “andam sa 80 pataas.” Sunda ang 85, 79, 80, ug 81 sa dili pa padaganon. Apil ang 80 sa comparison. Mahimong sakto sa 85 apan sayop sa utlanan. Idugang ang lahi nga check sa pagbalibad sa ubos sa 0 o labaw sa 100; lahi ang invalid ug nagkinahanglan og praktis.

    Ang begin ug end moputos sa mga statement. Assignment ang :=; comparison ang =. Ang programa matapos sa end.. Free Pascal sa Object Pascal mode ang gigamit, sugod sa procedural constructs.

    program AgilaStudy;
    +{$mode objfpc}{$H+}{$assertions on}
    +
    +var Score: Integer;
    +begin
    +  Score := 85;
    +  if Score >= 80 then writeln('Andam') else writeln('Pagpraktis');
    +end.
    +

    Gipaabot nga resulta: Andam

    Praktis ug ebidensiya

    Isulat ang tagna, aktuwal nga resulta, ug hinungdan sa pagkapareho o kalainan. Ang completion check mosukod sa pagsabot; ang practice task mopauswag sa kahanas.

    Reperensiya sa pinulongan

    \ No newline at end of file diff --git a/ceb/pascal-foundations-20261101/lesson-2/main.pas b/ceb/pascal-foundations-20261101/lesson-2/main.pas new file mode 100644 index 0000000..97ce943 --- /dev/null +++ b/ceb/pascal-foundations-20261101/lesson-2/main.pas @@ -0,0 +1,8 @@ +program AgilaStudy; +{$mode objfpc}{$H+}{$assertions on} + +var Score: Integer; +begin + Score := 85; + if Score >= 80 then writeln('Andam') else writeln('Pagpraktis'); +end. diff --git a/ceb/pascal-foundations-20261101/lesson-3/lesson.html b/ceb/pascal-foundations-20261101/lesson-3/lesson.html new file mode 100644 index 0000000..ac71c89 --- /dev/null +++ b/ceb/pascal-foundations-20261101/lesson-3/lesson.html @@ -0,0 +1,11 @@ +Function ug klarong lagda

    Function ug klarong lagda

    15-minutong sesyon: pagbasa sulod sa 3 minutos, pag-trace sa 3, pag-eksperimento sa 7, ug pagtubag sa check sa 2. Paggahin og dugang oras kon gikinahanglan.

    Ang function o subroutine nagngalan sa calculation nga magamit pag-usab. Ang lagda modawat og nonnegative total ug completed; zero ang resulta kon nakaabot o milapas ang completed sa total. Kon dili, ibalik ang kalainan. Sunda ang (4,1), (4,4), (4,5), ug (0,0). Ibulag ang pagpatik sa calculation. Ipasabot nganong gawas sa sakop ang negative input ug paghimo og pagbalibad sa dili pa modawat og external input.

    Ang begin ug end moputos sa mga statement. Assignment ang :=; comparison ang =. Ang programa matapos sa end.. Free Pascal sa Object Pascal mode ang gigamit, sugod sa procedural constructs.

    program AgilaStudy;
    +{$mode objfpc}{$H+}{$assertions on}
    +function Remaining(Total, Done: Integer): Integer;
    +begin
    +  if Done >= Total then Result := 0 else Result := Total - Done;
    +end;
    +
    +begin
    +  writeln(Remaining(4, 1));
    +end.
    +

    Gipaabot nga resulta: 3

    Praktis ug ebidensiya

    Isulat ang tagna, aktuwal nga resulta, ug hinungdan sa pagkapareho o kalainan. Ang completion check mosukod sa pagsabot; ang practice task mopauswag sa kahanas.

    Reperensiya sa pinulongan

    \ No newline at end of file diff --git a/ceb/pascal-foundations-20261101/lesson-3/main.pas b/ceb/pascal-foundations-20261101/lesson-3/main.pas new file mode 100644 index 0000000..ae28c77 --- /dev/null +++ b/ceb/pascal-foundations-20261101/lesson-3/main.pas @@ -0,0 +1,10 @@ +program AgilaStudy; +{$mode objfpc}{$H+}{$assertions on} +function Remaining(Total, Done: Integer): Integer; +begin + if Done >= Total then Result := 0 else Result := Total - Done; +end; + +begin + writeln(Remaining(4, 1)); +end. diff --git a/ceb/pascal-practice-20261101/README.md b/ceb/pascal-practice-20261101/README.md new file mode 100644 index 0000000..07015dd --- /dev/null +++ b/ceb/pascal-practice-20261101/README.md @@ -0,0 +1,9 @@ +# Pascal — paghimo ug pagsulay + +[Agila University track](https://edu.agilaos.com/track.php?track=9&lang=ceb) + +Mga 15 minutos matag leksyon. Tag-ana, padagana, usba, ipasabot, ug tubaga ang pagsusi sa University. + +- [Lesson 1: Collection ug balikbalik nga buluhaton](lesson-1/lesson.html) +- [Lesson 2: Usa ka importante nga kinaiya sa pinulongan](lesson-2/lesson.html) +- [Lesson 3: Paghimo, gub-a, ug sulayi ang study planner](lesson-3/lesson.html) diff --git a/ceb/pascal-practice-20261101/lesson-1/lesson.html b/ceb/pascal-practice-20261101/lesson-1/lesson.html new file mode 100644 index 0000000..257c0b1 --- /dev/null +++ b/ceb/pascal-practice-20261101/lesson-1/lesson.html @@ -0,0 +1,11 @@ +Collection ug balikbalik nga buluhaton

    Collection ug balikbalik nga buluhaton

    15-minutong sesyon: pagbasa sulod sa 3 minutos, pag-trace sa 3, pag-eksperimento sa 7, ug pagtubag sa check sa 2. Paggahin og dugang oras kon gikinahanglan.

    Ang collection nagtipig sa may kalabotang value. Bisitahon sa loop ang 1, 2, ug 3; ang total gikan sa 0 mahimong 1, 3, ug 6. Isulat ang trace imbes manag-an. Ilha ang una ug kataposang valid nga posisyon: mahimong 1-based ang Pascal array samtang zero-based ang daghang ubang container. Idugang og value ug taronga ang bounds. Ipasabot ang resulta alang sa empty collection.

    Ang begin ug end moputos sa mga statement. Assignment ang :=; comparison ang =. Ang programa matapos sa end.. Free Pascal sa Object Pascal mode ang gigamit, sugod sa procedural constructs.

    program AgilaStudy;
    +{$mode objfpc}{$H+}{$assertions on}
    +
    +var Minutes: array[1..3] of Integer; I, Total: Integer;
    +begin
    +  Minutes[1] := 1; Minutes[2] := 2; Minutes[3] := 3;
    +  Total := 0;
    +  for I := Low(Minutes) to High(Minutes) do Total := Total + Minutes[I];
    +  writeln(Total);
    +end.
    +

    Gipaabot nga resulta: 6

    Praktis ug ebidensiya

    Isulat ang tagna, aktuwal nga resulta, ug hinungdan sa pagkapareho o kalainan. Ang completion check mosukod sa pagsabot; ang practice task mopauswag sa kahanas.

    Reperensiya sa pinulongan

    \ No newline at end of file diff --git a/ceb/pascal-practice-20261101/lesson-1/main.pas b/ceb/pascal-practice-20261101/lesson-1/main.pas new file mode 100644 index 0000000..f1c7b61 --- /dev/null +++ b/ceb/pascal-practice-20261101/lesson-1/main.pas @@ -0,0 +1,10 @@ +program AgilaStudy; +{$mode objfpc}{$H+}{$assertions on} + +var Minutes: array[1..3] of Integer; I, Total: Integer; +begin + Minutes[1] := 1; Minutes[2] := 2; Minutes[3] := 3; + Total := 0; + for I := Low(Minutes) to High(Minutes) do Total := Total + Minutes[I]; + writeln(Total); +end. diff --git a/ceb/pascal-practice-20261101/lesson-2/lesson.html b/ceb/pascal-practice-20261101/lesson-2/lesson.html new file mode 100644 index 0000000..517ac4c --- /dev/null +++ b/ceb/pascal-practice-20261101/lesson-2/lesson.html @@ -0,0 +1,10 @@ +Usa ka importante nga kinaiya sa pinulongan

    Usa ka importante nga kinaiya sa pinulongan

    15-minutong sesyon: pagbasa sulod sa 3 minutos, pag-trace sa 3, pag-eksperimento sa 7, ug pagtubag sa check sa 2. Paggahin og dugang oras kon gikinahanglan.

    Gamita ang nota sa pinulongan sa ubos aron ipasabot ang pag-usab sa state. Ilha unsa ang gikopya, gipaambit, mahimong mapakyas, ug gibuhian. Dili tanan nga pangutana magamit niini nga programa: isulti kung hain. Paghimo og usa ka kausaban, tag-ana ang epekto, ug itandi sa aktuwal nga resulta. Mahimong lahi ang lagda sa pamilyar nga operator sa laing pinulongan.

    Ang begin ug end moputos sa mga statement. Assignment ang :=; comparison ang =. Ang programa matapos sa end.. Free Pascal sa Object Pascal mode ang gigamit, sugod sa procedural constructs.

    program AgilaStudy;
    +{$mode objfpc}{$H+}{$assertions on}
    +
    +type StudyPlan = record Total, Done: Integer; end;
    +var Plan: StudyPlan;
    +begin
    +  Plan.Total := 4; Plan.Done := 1;
    +  writeln(Plan.Total - Plan.Done);
    +end.
    +

    Gipaabot nga resulta: 3

    Praktis ug ebidensiya

    Isulat ang tagna, aktuwal nga resulta, ug hinungdan sa pagkapareho o kalainan. Ang completion check mosukod sa pagsabot; ang practice task mopauswag sa kahanas.

    Reperensiya sa pinulongan

    \ No newline at end of file diff --git a/ceb/pascal-practice-20261101/lesson-2/main.pas b/ceb/pascal-practice-20261101/lesson-2/main.pas new file mode 100644 index 0000000..9f80b6c --- /dev/null +++ b/ceb/pascal-practice-20261101/lesson-2/main.pas @@ -0,0 +1,9 @@ +program AgilaStudy; +{$mode objfpc}{$H+}{$assertions on} + +type StudyPlan = record Total, Done: Integer; end; +var Plan: StudyPlan; +begin + Plan.Total := 4; Plan.Done := 1; + writeln(Plan.Total - Plan.Done); +end. diff --git a/ceb/pascal-practice-20261101/lesson-3/lesson.html b/ceb/pascal-practice-20261101/lesson-3/lesson.html new file mode 100644 index 0000000..b5720b4 --- /dev/null +++ b/ceb/pascal-practice-20261101/lesson-3/lesson.html @@ -0,0 +1,15 @@ +Paghimo, gub-a, ug sulayi ang study planner

    Paghimo, gub-a, ug sulayi ang study planner

    15-minutong sesyon: pagbasa sulod sa 3 minutos, pag-trace sa 3, pag-eksperimento sa 7, ug pagtubag sa check sa 2. Paggahin og dugang oras kon gikinahanglan.

    Ang mapuslanong test motandi sa resulta ug requirement. Dili angay mahimong negative ang nahibiling trabaho sa nonnegative input domain sa planner. Padagana ang starter, tuyoang tangtanga ang proteksiyon kon labaw sa total ang completed, ug siguroa nga adunay check nga mapakyas. Ibalik kini. Idugang ang duha ka study task, summary, ug boundary cases. I-save ang source ug ebidensiya sa Agila Forge. Ipasabot ang matag linya, apil ang gisugyot sa AI.

    Ang begin ug end moputos sa mga statement. Assignment ang :=; comparison ang =. Ang programa matapos sa end.. Free Pascal sa Object Pascal mode ang gigamit, sugod sa procedural constructs.

    program AgilaStudy;
    +{$mode objfpc}{$H+}{$assertions on}
    +function Remaining(Total, Done: Integer): Integer;
    +begin
    +  if Done >= Total then Result := 0 else Result := Total - Done;
    +end;
    +
    +begin
    +  Assert(Remaining(4,1)=3);
    +  Assert(Remaining(4,4)=0);
    +  Assert(Remaining(4,5)=0);
    +  Assert(Remaining(0,0)=0);
    +  writeln('Nipasar');
    +end.
    +

    Gipaabot nga resulta: Nipasar

    Praktis ug ebidensiya

    Isulat ang tagna, aktuwal nga resulta, ug hinungdan sa pagkapareho o kalainan. Ang completion check mosukod sa pagsabot; ang practice task mopauswag sa kahanas.

    Reperensiya sa pinulongan

    \ No newline at end of file diff --git a/ceb/pascal-practice-20261101/lesson-3/main.pas b/ceb/pascal-practice-20261101/lesson-3/main.pas new file mode 100644 index 0000000..804d075 --- /dev/null +++ b/ceb/pascal-practice-20261101/lesson-3/main.pas @@ -0,0 +1,14 @@ +program AgilaStudy; +{$mode objfpc}{$H+}{$assertions on} +function Remaining(Total, Done: Integer): Integer; +begin + if Done >= Total then Result := 0 else Result := Total - Done; +end; + +begin + Assert(Remaining(4,1)=3); + Assert(Remaining(4,4)=0); + Assert(Remaining(4,5)=0); + Assert(Remaining(0,0)=0); + writeln('Nipasar'); +end. diff --git a/ceb/python-foundations-20261101/README.md b/ceb/python-foundations-20261101/README.md new file mode 100644 index 0000000..d695fa9 --- /dev/null +++ b/ceb/python-foundations-20261101/README.md @@ -0,0 +1,9 @@ +# Python — unang mga lakang + +[Agila University track](https://edu.agilaos.com/track.php?track=18&lang=ceb) + +Mga 15 minutos matag leksyon. Tag-ana, padagana, usba, ipasabot, ug tubaga ang pagsusi sa University. + +- [Lesson 1: Imong unang programa nga mapasabot](lesson-1/lesson.html) +- [Lesson 2: Mga value ug desisyon](lesson-2/lesson.html) +- [Lesson 3: Function ug klarong lagda](lesson-3/lesson.html) diff --git a/ceb/python-foundations-20261101/lesson-1/lesson.html b/ceb/python-foundations-20261101/lesson-1/lesson.html new file mode 100644 index 0000000..e66e07d --- /dev/null +++ b/ceb/python-foundations-20261101/lesson-1/lesson.html @@ -0,0 +1,2 @@ +Imong unang programa nga mapasabot

    Imong unang programa nga mapasabot

    15-minutong sesyon: pagbasa sulod sa 3 minutos, pag-trace sa 3, pag-eksperimento sa 7, ug pagtubag sa check sa 2. Paggahin og dugang oras kon gikinahanglan.

    Usa ka hugpong sa mga sugo ang programa. Basaha gikan sa entry point ngadto sa output statement. Data ang teksto sulod sa mga kinutlo; sugo ang output operation. Tag-ana ang linya sa dili pa padaganon. Usba lang ang mensahe, padagana pag-usab, ug tangtanga ang usa ka gikinahanglang punctuation aron basahon ang unang error. Ibalik ang nagtrabaho nga source.

    Ang indentation maggrupo sa mga statement. Ang def naghimo og function ug ang return mohatag sa resulta. Ang dictionary mopares sa key ug value. Standard library ang anaa sa isolated Python 3 lab; dili maka-install og package ang student code.

    print("Andam")
    +

    Gipaabot nga resulta: Andam

    Praktis ug ebidensiya

    Isulat ang tagna, aktuwal nga resulta, ug hinungdan sa pagkapareho o kalainan. Ang completion check mosukod sa pagsabot; ang practice task mopauswag sa kahanas.

    Reperensiya sa pinulongan

    \ No newline at end of file diff --git a/ceb/python-foundations-20261101/lesson-1/main.py b/ceb/python-foundations-20261101/lesson-1/main.py new file mode 100644 index 0000000..9f5b69c --- /dev/null +++ b/ceb/python-foundations-20261101/lesson-1/main.py @@ -0,0 +1 @@ +print("Andam") diff --git a/ceb/python-foundations-20261101/lesson-2/lesson.html b/ceb/python-foundations-20261101/lesson-2/lesson.html new file mode 100644 index 0000000..360a612 --- /dev/null +++ b/ceb/python-foundations-20261101/lesson-2/lesson.html @@ -0,0 +1,6 @@ +Mga value ug desisyon

    Mga value ug desisyon

    15-minutong sesyon: pagbasa sulod sa 3 minutos, pag-trace sa 3, pag-eksperimento sa 7, ug pagtubag sa check sa 2. Paggahin og dugang oras kon gikinahanglan.

    Ang desisyon mopili kon unsang statement ang modagan. Ang lagda mao ang “andam sa 80 pataas.” Sunda ang 85, 79, 80, ug 81 sa dili pa padaganon. Apil ang 80 sa comparison. Mahimong sakto sa 85 apan sayop sa utlanan. Idugang ang lahi nga check sa pagbalibad sa ubos sa 0 o labaw sa 100; lahi ang invalid ug nagkinahanglan og praktis.

    Ang indentation maggrupo sa mga statement. Ang def naghimo og function ug ang return mohatag sa resulta. Ang dictionary mopares sa key ug value. Standard library ang anaa sa isolated Python 3 lab; dili maka-install og package ang student code.

    score = 85
    +if score >= 80:
    +    print("Andam")
    +else:
    +    print("Pagpraktis")
    +

    Gipaabot nga resulta: Andam

    Praktis ug ebidensiya

    Isulat ang tagna, aktuwal nga resulta, ug hinungdan sa pagkapareho o kalainan. Ang completion check mosukod sa pagsabot; ang practice task mopauswag sa kahanas.

    Reperensiya sa pinulongan

    \ No newline at end of file diff --git a/ceb/python-foundations-20261101/lesson-2/main.py b/ceb/python-foundations-20261101/lesson-2/main.py new file mode 100644 index 0000000..3afafa3 --- /dev/null +++ b/ceb/python-foundations-20261101/lesson-2/main.py @@ -0,0 +1,5 @@ +score = 85 +if score >= 80: + print("Andam") +else: + print("Pagpraktis") diff --git a/ceb/python-foundations-20261101/lesson-3/lesson.html b/ceb/python-foundations-20261101/lesson-3/lesson.html new file mode 100644 index 0000000..4765e24 --- /dev/null +++ b/ceb/python-foundations-20261101/lesson-3/lesson.html @@ -0,0 +1,5 @@ +Function ug klarong lagda

    Function ug klarong lagda

    15-minutong sesyon: pagbasa sulod sa 3 minutos, pag-trace sa 3, pag-eksperimento sa 7, ug pagtubag sa check sa 2. Paggahin og dugang oras kon gikinahanglan.

    Ang function o subroutine nagngalan sa calculation nga magamit pag-usab. Ang lagda modawat og nonnegative total ug completed; zero ang resulta kon nakaabot o milapas ang completed sa total. Kon dili, ibalik ang kalainan. Sunda ang (4,1), (4,4), (4,5), ug (0,0). Ibulag ang pagpatik sa calculation. Ipasabot nganong gawas sa sakop ang negative input ug paghimo og pagbalibad sa dili pa modawat og external input.

    Ang indentation maggrupo sa mga statement. Ang def naghimo og function ug ang return mohatag sa resulta. Ang dictionary mopares sa key ug value. Standard library ang anaa sa isolated Python 3 lab; dili maka-install og package ang student code.

    def remaining(total, done):
    +    return max(0, total - done)
    +
    +print(remaining(4, 1))
    +

    Gipaabot nga resulta: 3

    Praktis ug ebidensiya

    Isulat ang tagna, aktuwal nga resulta, ug hinungdan sa pagkapareho o kalainan. Ang completion check mosukod sa pagsabot; ang practice task mopauswag sa kahanas.

    Reperensiya sa pinulongan

    \ No newline at end of file diff --git a/ceb/python-foundations-20261101/lesson-3/main.py b/ceb/python-foundations-20261101/lesson-3/main.py new file mode 100644 index 0000000..54abaa7 --- /dev/null +++ b/ceb/python-foundations-20261101/lesson-3/main.py @@ -0,0 +1,4 @@ +def remaining(total, done): + return max(0, total - done) + +print(remaining(4, 1)) diff --git a/ceb/python-practice-20261101/README.md b/ceb/python-practice-20261101/README.md new file mode 100644 index 0000000..b6a3149 --- /dev/null +++ b/ceb/python-practice-20261101/README.md @@ -0,0 +1,9 @@ +# Python — paghimo ug pagsulay + +[Agila University track](https://edu.agilaos.com/track.php?track=18&lang=ceb) + +Mga 15 minutos matag leksyon. Tag-ana, padagana, usba, ipasabot, ug tubaga ang pagsusi sa University. + +- [Lesson 1: Collection ug balikbalik nga buluhaton](lesson-1/lesson.html) +- [Lesson 2: Usa ka importante nga kinaiya sa pinulongan](lesson-2/lesson.html) +- [Lesson 3: Paghimo, gub-a, ug sulayi ang study planner](lesson-3/lesson.html) diff --git a/ceb/python-practice-20261101/lesson-1/lesson.html b/ceb/python-practice-20261101/lesson-1/lesson.html new file mode 100644 index 0000000..9f8b0d7 --- /dev/null +++ b/ceb/python-practice-20261101/lesson-1/lesson.html @@ -0,0 +1,6 @@ +Collection ug balikbalik nga buluhaton

    Collection ug balikbalik nga buluhaton

    15-minutong sesyon: pagbasa sulod sa 3 minutos, pag-trace sa 3, pag-eksperimento sa 7, ug pagtubag sa check sa 2. Paggahin og dugang oras kon gikinahanglan.

    Ang collection nagtipig sa may kalabotang value. Bisitahon sa loop ang 1, 2, ug 3; ang total gikan sa 0 mahimong 1, 3, ug 6. Isulat ang trace imbes manag-an. Ilha ang una ug kataposang valid nga posisyon: mahimong 1-based ang Pascal array samtang zero-based ang daghang ubang container. Idugang og value ug taronga ang bounds. Ipasabot ang resulta alang sa empty collection.

    Ang indentation maggrupo sa mga statement. Ang def naghimo og function ug ang return mohatag sa resulta. Ang dictionary mopares sa key ug value. Standard library ang anaa sa isolated Python 3 lab; dili maka-install og package ang student code.

    minutes = [1, 2, 3]
    +total = 0
    +for value in minutes:
    +    total += value
    +print(total)
    +

    Gipaabot nga resulta: 6

    Praktis ug ebidensiya

    Isulat ang tagna, aktuwal nga resulta, ug hinungdan sa pagkapareho o kalainan. Ang completion check mosukod sa pagsabot; ang practice task mopauswag sa kahanas.

    Reperensiya sa pinulongan

    \ No newline at end of file diff --git a/ceb/python-practice-20261101/lesson-1/main.py b/ceb/python-practice-20261101/lesson-1/main.py new file mode 100644 index 0000000..d801278 --- /dev/null +++ b/ceb/python-practice-20261101/lesson-1/main.py @@ -0,0 +1,5 @@ +minutes = [1, 2, 3] +total = 0 +for value in minutes: + total += value +print(total) diff --git a/ceb/python-practice-20261101/lesson-2/lesson.html b/ceb/python-practice-20261101/lesson-2/lesson.html new file mode 100644 index 0000000..4aabff6 --- /dev/null +++ b/ceb/python-practice-20261101/lesson-2/lesson.html @@ -0,0 +1,3 @@ +Usa ka importante nga kinaiya sa pinulongan

    Usa ka importante nga kinaiya sa pinulongan

    15-minutong sesyon: pagbasa sulod sa 3 minutos, pag-trace sa 3, pag-eksperimento sa 7, ug pagtubag sa check sa 2. Paggahin og dugang oras kon gikinahanglan.

    Gamita ang nota sa pinulongan sa ubos aron ipasabot ang pag-usab sa state. Ilha unsa ang gikopya, gipaambit, mahimong mapakyas, ug gibuhian. Dili tanan nga pangutana magamit niini nga programa: isulti kung hain. Paghimo og usa ka kausaban, tag-ana ang epekto, ug itandi sa aktuwal nga resulta. Mahimong lahi ang lagda sa pamilyar nga operator sa laing pinulongan.

    Ang indentation maggrupo sa mga statement. Ang def naghimo og function ug ang return mohatag sa resulta. Ang dictionary mopares sa key ug value. Standard library ang anaa sa isolated Python 3 lab; dili maka-install og package ang student code.

    plan = {"total": 4, "done": 1}
    +print(plan["total"] - plan["done"])
    +

    Gipaabot nga resulta: 3

    Praktis ug ebidensiya

    Isulat ang tagna, aktuwal nga resulta, ug hinungdan sa pagkapareho o kalainan. Ang completion check mosukod sa pagsabot; ang practice task mopauswag sa kahanas.

    Reperensiya sa pinulongan

    \ No newline at end of file diff --git a/ceb/python-practice-20261101/lesson-2/main.py b/ceb/python-practice-20261101/lesson-2/main.py new file mode 100644 index 0000000..f1ef02c --- /dev/null +++ b/ceb/python-practice-20261101/lesson-2/main.py @@ -0,0 +1,2 @@ +plan = {"total": 4, "done": 1} +print(plan["total"] - plan["done"]) diff --git a/ceb/python-practice-20261101/lesson-3/lesson.html b/ceb/python-practice-20261101/lesson-3/lesson.html new file mode 100644 index 0000000..a77bc89 --- /dev/null +++ b/ceb/python-practice-20261101/lesson-3/lesson.html @@ -0,0 +1,9 @@ +Paghimo, gub-a, ug sulayi ang study planner

    Paghimo, gub-a, ug sulayi ang study planner

    15-minutong sesyon: pagbasa sulod sa 3 minutos, pag-trace sa 3, pag-eksperimento sa 7, ug pagtubag sa check sa 2. Paggahin og dugang oras kon gikinahanglan.

    Ang mapuslanong test motandi sa resulta ug requirement. Dili angay mahimong negative ang nahibiling trabaho sa nonnegative input domain sa planner. Padagana ang starter, tuyoang tangtanga ang proteksiyon kon labaw sa total ang completed, ug siguroa nga adunay check nga mapakyas. Ibalik kini. Idugang ang duha ka study task, summary, ug boundary cases. I-save ang source ug ebidensiya sa Agila Forge. Ipasabot ang matag linya, apil ang gisugyot sa AI.

    Ang indentation maggrupo sa mga statement. Ang def naghimo og function ug ang return mohatag sa resulta. Ang dictionary mopares sa key ug value. Standard library ang anaa sa isolated Python 3 lab; dili maka-install og package ang student code.

    def remaining(total, done):
    +    return max(0, total - done)
    +
    +assert remaining(4,1) == 3
    +assert remaining(4,4) == 0
    +assert remaining(4,5) == 0
    +assert remaining(0,0) == 0
    +print("Nipasar")
    +

    Gipaabot nga resulta: Nipasar

    Praktis ug ebidensiya

    Isulat ang tagna, aktuwal nga resulta, ug hinungdan sa pagkapareho o kalainan. Ang completion check mosukod sa pagsabot; ang practice task mopauswag sa kahanas.

    Reperensiya sa pinulongan

    \ No newline at end of file diff --git a/ceb/python-practice-20261101/lesson-3/main.py b/ceb/python-practice-20261101/lesson-3/main.py new file mode 100644 index 0000000..6951bc9 --- /dev/null +++ b/ceb/python-practice-20261101/lesson-3/main.py @@ -0,0 +1,8 @@ +def remaining(total, done): + return max(0, total - done) + +assert remaining(4,1) == 3 +assert remaining(4,4) == 0 +assert remaining(4,5) == 0 +assert remaining(0,0) == 0 +print("Nipasar") diff --git a/ceb/ruby-foundations-20261101/README.md b/ceb/ruby-foundations-20261101/README.md new file mode 100644 index 0000000..b12b98a --- /dev/null +++ b/ceb/ruby-foundations-20261101/README.md @@ -0,0 +1,9 @@ +# Ruby — unang mga lakang + +[Agila University track](https://edu.agilaos.com/track.php?track=19&lang=ceb) + +Mga 15 minutos matag leksyon. Tag-ana, padagana, usba, ipasabot, ug tubaga ang pagsusi sa University. + +- [Lesson 1: Imong unang programa nga mapasabot](lesson-1/lesson.html) +- [Lesson 2: Mga value ug desisyon](lesson-2/lesson.html) +- [Lesson 3: Function ug klarong lagda](lesson-3/lesson.html) diff --git a/ceb/ruby-foundations-20261101/lesson-1/lesson.html b/ceb/ruby-foundations-20261101/lesson-1/lesson.html new file mode 100644 index 0000000..ef8e364 --- /dev/null +++ b/ceb/ruby-foundations-20261101/lesson-1/lesson.html @@ -0,0 +1,2 @@ +Imong unang programa nga mapasabot

    Imong unang programa nga mapasabot

    15-minutong sesyon: pagbasa sulod sa 3 minutos, pag-trace sa 3, pag-eksperimento sa 7, ug pagtubag sa check sa 2. Paggahin og dugang oras kon gikinahanglan.

    Usa ka hugpong sa mga sugo ang programa. Basaha gikan sa entry point ngadto sa output statement. Data ang teksto sulod sa mga kinutlo; sugo ang output operation. Tag-ana ang linya sa dili pa padaganon. Usba lang ang mensahe, padagana pag-usab, ug tangtanga ang usa ka gikinahanglang punctuation aron basahon ang unang error. Ibalik ang nagtrabaho nga source.

    Ang puts mopatik og linya. Ang def ug end moputos sa method. Ang each mohatag og value ngadto sa block. Ang variable nga nagsugod sa @ iya sa object; mahimong lahi ang value sa duha ka object.

    puts "Andam"
    +

    Gipaabot nga resulta: Andam

    Praktis ug ebidensiya

    Isulat ang tagna, aktuwal nga resulta, ug hinungdan sa pagkapareho o kalainan. Ang completion check mosukod sa pagsabot; ang practice task mopauswag sa kahanas.

    Reperensiya sa pinulongan

    \ No newline at end of file diff --git a/ceb/ruby-foundations-20261101/lesson-1/main.rb b/ceb/ruby-foundations-20261101/lesson-1/main.rb new file mode 100644 index 0000000..6f694f8 --- /dev/null +++ b/ceb/ruby-foundations-20261101/lesson-1/main.rb @@ -0,0 +1 @@ +puts "Andam" diff --git a/ceb/ruby-foundations-20261101/lesson-2/lesson.html b/ceb/ruby-foundations-20261101/lesson-2/lesson.html new file mode 100644 index 0000000..cdfac6a --- /dev/null +++ b/ceb/ruby-foundations-20261101/lesson-2/lesson.html @@ -0,0 +1,7 @@ +Mga value ug desisyon

    Mga value ug desisyon

    15-minutong sesyon: pagbasa sulod sa 3 minutos, pag-trace sa 3, pag-eksperimento sa 7, ug pagtubag sa check sa 2. Paggahin og dugang oras kon gikinahanglan.

    Ang desisyon mopili kon unsang statement ang modagan. Ang lagda mao ang “andam sa 80 pataas.” Sunda ang 85, 79, 80, ug 81 sa dili pa padaganon. Apil ang 80 sa comparison. Mahimong sakto sa 85 apan sayop sa utlanan. Idugang ang lahi nga check sa pagbalibad sa ubos sa 0 o labaw sa 100; lahi ang invalid ug nagkinahanglan og praktis.

    Ang puts mopatik og linya. Ang def ug end moputos sa method. Ang each mohatag og value ngadto sa block. Ang variable nga nagsugod sa @ iya sa object; mahimong lahi ang value sa duha ka object.

    score = 85
    +if score >= 80
    +  puts "Andam"
    +else
    +  puts "Pagpraktis"
    +end
    +

    Gipaabot nga resulta: Andam

    Praktis ug ebidensiya

    Isulat ang tagna, aktuwal nga resulta, ug hinungdan sa pagkapareho o kalainan. Ang completion check mosukod sa pagsabot; ang practice task mopauswag sa kahanas.

    Reperensiya sa pinulongan

    \ No newline at end of file diff --git a/ceb/ruby-foundations-20261101/lesson-2/main.rb b/ceb/ruby-foundations-20261101/lesson-2/main.rb new file mode 100644 index 0000000..dc604f7 --- /dev/null +++ b/ceb/ruby-foundations-20261101/lesson-2/main.rb @@ -0,0 +1,6 @@ +score = 85 +if score >= 80 + puts "Andam" +else + puts "Pagpraktis" +end diff --git a/ceb/ruby-foundations-20261101/lesson-3/lesson.html b/ceb/ruby-foundations-20261101/lesson-3/lesson.html new file mode 100644 index 0000000..d65ed8e --- /dev/null +++ b/ceb/ruby-foundations-20261101/lesson-3/lesson.html @@ -0,0 +1,6 @@ +Function ug klarong lagda

    Function ug klarong lagda

    15-minutong sesyon: pagbasa sulod sa 3 minutos, pag-trace sa 3, pag-eksperimento sa 7, ug pagtubag sa check sa 2. Paggahin og dugang oras kon gikinahanglan.

    Ang function o subroutine nagngalan sa calculation nga magamit pag-usab. Ang lagda modawat og nonnegative total ug completed; zero ang resulta kon nakaabot o milapas ang completed sa total. Kon dili, ibalik ang kalainan. Sunda ang (4,1), (4,4), (4,5), ug (0,0). Ibulag ang pagpatik sa calculation. Ipasabot nganong gawas sa sakop ang negative input ug paghimo og pagbalibad sa dili pa modawat og external input.

    Ang puts mopatik og linya. Ang def ug end moputos sa method. Ang each mohatag og value ngadto sa block. Ang variable nga nagsugod sa @ iya sa object; mahimong lahi ang value sa duha ka object.

    def remaining(total, done)
    +  [0, total - done].max
    +end
    +
    +puts remaining(4, 1)
    +

    Gipaabot nga resulta: 3

    Praktis ug ebidensiya

    Isulat ang tagna, aktuwal nga resulta, ug hinungdan sa pagkapareho o kalainan. Ang completion check mosukod sa pagsabot; ang practice task mopauswag sa kahanas.

    Reperensiya sa pinulongan

    \ No newline at end of file diff --git a/ceb/ruby-foundations-20261101/lesson-3/main.rb b/ceb/ruby-foundations-20261101/lesson-3/main.rb new file mode 100644 index 0000000..75643fd --- /dev/null +++ b/ceb/ruby-foundations-20261101/lesson-3/main.rb @@ -0,0 +1,5 @@ +def remaining(total, done) + [0, total - done].max +end + +puts remaining(4, 1) diff --git a/ceb/ruby-practice-20261101/README.md b/ceb/ruby-practice-20261101/README.md new file mode 100644 index 0000000..85f392d --- /dev/null +++ b/ceb/ruby-practice-20261101/README.md @@ -0,0 +1,9 @@ +# Ruby — paghimo ug pagsulay + +[Agila University track](https://edu.agilaos.com/track.php?track=19&lang=ceb) + +Mga 15 minutos matag leksyon. Tag-ana, padagana, usba, ipasabot, ug tubaga ang pagsusi sa University. + +- [Lesson 1: Collection ug balikbalik nga buluhaton](lesson-1/lesson.html) +- [Lesson 2: Usa ka importante nga kinaiya sa pinulongan](lesson-2/lesson.html) +- [Lesson 3: Paghimo, gub-a, ug sulayi ang study planner](lesson-3/lesson.html) diff --git a/ceb/ruby-practice-20261101/lesson-1/lesson.html b/ceb/ruby-practice-20261101/lesson-1/lesson.html new file mode 100644 index 0000000..05b11df --- /dev/null +++ b/ceb/ruby-practice-20261101/lesson-1/lesson.html @@ -0,0 +1,5 @@ +Collection ug balikbalik nga buluhaton

    Collection ug balikbalik nga buluhaton

    15-minutong sesyon: pagbasa sulod sa 3 minutos, pag-trace sa 3, pag-eksperimento sa 7, ug pagtubag sa check sa 2. Paggahin og dugang oras kon gikinahanglan.

    Ang collection nagtipig sa may kalabotang value. Bisitahon sa loop ang 1, 2, ug 3; ang total gikan sa 0 mahimong 1, 3, ug 6. Isulat ang trace imbes manag-an. Ilha ang una ug kataposang valid nga posisyon: mahimong 1-based ang Pascal array samtang zero-based ang daghang ubang container. Idugang og value ug taronga ang bounds. Ipasabot ang resulta alang sa empty collection.

    Ang puts mopatik og linya. Ang def ug end moputos sa method. Ang each mohatag og value ngadto sa block. Ang variable nga nagsugod sa @ iya sa object; mahimong lahi ang value sa duha ka object.

    minutes = [1, 2, 3]
    +total = 0
    +minutes.each { |value| total += value }
    +puts total
    +

    Gipaabot nga resulta: 6

    Praktis ug ebidensiya

    Isulat ang tagna, aktuwal nga resulta, ug hinungdan sa pagkapareho o kalainan. Ang completion check mosukod sa pagsabot; ang practice task mopauswag sa kahanas.

    Reperensiya sa pinulongan

    \ No newline at end of file diff --git a/ceb/ruby-practice-20261101/lesson-1/main.rb b/ceb/ruby-practice-20261101/lesson-1/main.rb new file mode 100644 index 0000000..b0cfae2 --- /dev/null +++ b/ceb/ruby-practice-20261101/lesson-1/main.rb @@ -0,0 +1,4 @@ +minutes = [1, 2, 3] +total = 0 +minutes.each { |value| total += value } +puts total diff --git a/ceb/ruby-practice-20261101/lesson-2/lesson.html b/ceb/ruby-practice-20261101/lesson-2/lesson.html new file mode 100644 index 0000000..543ee45 --- /dev/null +++ b/ceb/ruby-practice-20261101/lesson-2/lesson.html @@ -0,0 +1,10 @@ +Usa ka importante nga kinaiya sa pinulongan

    Usa ka importante nga kinaiya sa pinulongan

    15-minutong sesyon: pagbasa sulod sa 3 minutos, pag-trace sa 3, pag-eksperimento sa 7, ug pagtubag sa check sa 2. Paggahin og dugang oras kon gikinahanglan.

    Gamita ang nota sa pinulongan sa ubos aron ipasabot ang pag-usab sa state. Ilha unsa ang gikopya, gipaambit, mahimong mapakyas, ug gibuhian. Dili tanan nga pangutana magamit niini nga programa: isulti kung hain. Paghimo og usa ka kausaban, tag-ana ang epekto, ug itandi sa aktuwal nga resulta. Mahimong lahi ang lagda sa pamilyar nga operator sa laing pinulongan.

    Ang puts mopatik og linya. Ang def ug end moputos sa method. Ang each mohatag og value ngadto sa block. Ang variable nga nagsugod sa @ iya sa object; mahimong lahi ang value sa duha ka object.

    class StudyPlan
    +  def initialize(done)
    +    @done = done
    +  end
    +  def completed
    +    @done
    +  end
    +end
    +puts StudyPlan.new(3).completed
    +

    Gipaabot nga resulta: 3

    Praktis ug ebidensiya

    Isulat ang tagna, aktuwal nga resulta, ug hinungdan sa pagkapareho o kalainan. Ang completion check mosukod sa pagsabot; ang practice task mopauswag sa kahanas.

    Reperensiya sa pinulongan

    \ No newline at end of file diff --git a/ceb/ruby-practice-20261101/lesson-2/main.rb b/ceb/ruby-practice-20261101/lesson-2/main.rb new file mode 100644 index 0000000..2bdb21d --- /dev/null +++ b/ceb/ruby-practice-20261101/lesson-2/main.rb @@ -0,0 +1,9 @@ +class StudyPlan + def initialize(done) + @done = done + end + def completed + @done + end +end +puts StudyPlan.new(3).completed diff --git a/ceb/ruby-practice-20261101/lesson-3/lesson.html b/ceb/ruby-practice-20261101/lesson-3/lesson.html new file mode 100644 index 0000000..793e088 --- /dev/null +++ b/ceb/ruby-practice-20261101/lesson-3/lesson.html @@ -0,0 +1,7 @@ +Paghimo, gub-a, ug sulayi ang study planner

    Paghimo, gub-a, ug sulayi ang study planner

    15-minutong sesyon: pagbasa sulod sa 3 minutos, pag-trace sa 3, pag-eksperimento sa 7, ug pagtubag sa check sa 2. Paggahin og dugang oras kon gikinahanglan.

    Ang mapuslanong test motandi sa resulta ug requirement. Dili angay mahimong negative ang nahibiling trabaho sa nonnegative input domain sa planner. Padagana ang starter, tuyoang tangtanga ang proteksiyon kon labaw sa total ang completed, ug siguroa nga adunay check nga mapakyas. Ibalik kini. Idugang ang duha ka study task, summary, ug boundary cases. I-save ang source ug ebidensiya sa Agila Forge. Ipasabot ang matag linya, apil ang gisugyot sa AI.

    Ang puts mopatik og linya. Ang def ug end moputos sa method. Ang each mohatag og value ngadto sa block. Ang variable nga nagsugod sa @ iya sa object; mahimong lahi ang value sa duha ka object.

    def remaining(total, done)
    +  [0, total - done].max
    +end
    +
    +raise "Test failed" unless remaining(4,1) == 3 && remaining(4,4) == 0 && remaining(4,5) == 0 && remaining(0,0) == 0
    +puts "Nipasar"
    +

    Gipaabot nga resulta: Nipasar

    Praktis ug ebidensiya

    Isulat ang tagna, aktuwal nga resulta, ug hinungdan sa pagkapareho o kalainan. Ang completion check mosukod sa pagsabot; ang practice task mopauswag sa kahanas.

    Reperensiya sa pinulongan

    \ No newline at end of file diff --git a/ceb/ruby-practice-20261101/lesson-3/main.rb b/ceb/ruby-practice-20261101/lesson-3/main.rb new file mode 100644 index 0000000..5f90d27 --- /dev/null +++ b/ceb/ruby-practice-20261101/lesson-3/main.rb @@ -0,0 +1,6 @@ +def remaining(total, done) + [0, total - done].max +end + +raise "Test failed" unless remaining(4,1) == 3 && remaining(4,4) == 0 && remaining(4,5) == 0 && remaining(0,0) == 0 +puts "Nipasar" diff --git a/ceb/rust-foundations-20261101/README.md b/ceb/rust-foundations-20261101/README.md new file mode 100644 index 0000000..7952aa0 --- /dev/null +++ b/ceb/rust-foundations-20261101/README.md @@ -0,0 +1,9 @@ +# Rust — unang mga lakang + +[Agila University track](https://edu.agilaos.com/track.php?track=11&lang=ceb) + +Mga 15 minutos matag leksyon. Tag-ana, padagana, usba, ipasabot, ug tubaga ang pagsusi sa University. + +- [Lesson 1: Imong unang programa nga mapasabot](lesson-1/lesson.html) +- [Lesson 2: Mga value ug desisyon](lesson-2/lesson.html) +- [Lesson 3: Function ug klarong lagda](lesson-3/lesson.html) diff --git a/ceb/rust-foundations-20261101/lesson-1/lesson.html b/ceb/rust-foundations-20261101/lesson-1/lesson.html new file mode 100644 index 0000000..b4cf5f4 --- /dev/null +++ b/ceb/rust-foundations-20261101/lesson-1/lesson.html @@ -0,0 +1,5 @@ +Imong unang programa nga mapasabot

    Imong unang programa nga mapasabot

    15-minutong sesyon: pagbasa sulod sa 3 minutos, pag-trace sa 3, pag-eksperimento sa 7, ug pagtubag sa check sa 2. Paggahin og dugang oras kon gikinahanglan.

    Usa ka hugpong sa mga sugo ang programa. Basaha gikan sa entry point ngadto sa output statement. Data ang teksto sulod sa mga kinutlo; sugo ang output operation. Tag-ana ang linya sa dili pa padaganon. Usba lang ang mensahe, padagana pag-usab, ug tangtanga ang usa ka gikinahanglang punctuation aron basahon ang unang error. Ibalik ang nagtrabaho nga source.

    Ang fn main mao ang entry point. Ang let naghimo og binding; ang mut motugot sa reassignment. Macro ang println!. Ang reference nga &plan manghulam imbes mobalhin sa ownership.

    
    +fn main() {
    +    println!("Andam");
    +}
    +

    Gipaabot nga resulta: Andam

    Praktis ug ebidensiya

    Isulat ang tagna, aktuwal nga resulta, ug hinungdan sa pagkapareho o kalainan. Ang completion check mosukod sa pagsabot; ang practice task mopauswag sa kahanas.

    Reperensiya sa pinulongan

    \ No newline at end of file diff --git a/ceb/rust-foundations-20261101/lesson-1/main.rs b/ceb/rust-foundations-20261101/lesson-1/main.rs new file mode 100644 index 0000000..301d2c9 --- /dev/null +++ b/ceb/rust-foundations-20261101/lesson-1/main.rs @@ -0,0 +1,4 @@ + +fn main() { + println!("Andam"); +} diff --git a/ceb/rust-foundations-20261101/lesson-2/lesson.html b/ceb/rust-foundations-20261101/lesson-2/lesson.html new file mode 100644 index 0000000..b8c6c08 --- /dev/null +++ b/ceb/rust-foundations-20261101/lesson-2/lesson.html @@ -0,0 +1,6 @@ +Mga value ug desisyon

    Mga value ug desisyon

    15-minutong sesyon: pagbasa sulod sa 3 minutos, pag-trace sa 3, pag-eksperimento sa 7, ug pagtubag sa check sa 2. Paggahin og dugang oras kon gikinahanglan.

    Ang desisyon mopili kon unsang statement ang modagan. Ang lagda mao ang “andam sa 80 pataas.” Sunda ang 85, 79, 80, ug 81 sa dili pa padaganon. Apil ang 80 sa comparison. Mahimong sakto sa 85 apan sayop sa utlanan. Idugang ang lahi nga check sa pagbalibad sa ubos sa 0 o labaw sa 100; lahi ang invalid ug nagkinahanglan og praktis.

    Ang fn main mao ang entry point. Ang let naghimo og binding; ang mut motugot sa reassignment. Macro ang println!. Ang reference nga &plan manghulam imbes mobalhin sa ownership.

    
    +fn main() {
    +    let score = 85;
    +    if score >= 80 { println!("Andam"); } else { println!("Pagpraktis"); }
    +}
    +

    Gipaabot nga resulta: Andam

    Praktis ug ebidensiya

    Isulat ang tagna, aktuwal nga resulta, ug hinungdan sa pagkapareho o kalainan. Ang completion check mosukod sa pagsabot; ang practice task mopauswag sa kahanas.

    Reperensiya sa pinulongan

    \ No newline at end of file diff --git a/ceb/rust-foundations-20261101/lesson-2/main.rs b/ceb/rust-foundations-20261101/lesson-2/main.rs new file mode 100644 index 0000000..2ef9214 --- /dev/null +++ b/ceb/rust-foundations-20261101/lesson-2/main.rs @@ -0,0 +1,5 @@ + +fn main() { + let score = 85; + if score >= 80 { println!("Andam"); } else { println!("Pagpraktis"); } +} diff --git a/ceb/rust-foundations-20261101/lesson-3/lesson.html b/ceb/rust-foundations-20261101/lesson-3/lesson.html new file mode 100644 index 0000000..0f3eae7 --- /dev/null +++ b/ceb/rust-foundations-20261101/lesson-3/lesson.html @@ -0,0 +1,5 @@ +Function ug klarong lagda

    Function ug klarong lagda

    15-minutong sesyon: pagbasa sulod sa 3 minutos, pag-trace sa 3, pag-eksperimento sa 7, ug pagtubag sa check sa 2. Paggahin og dugang oras kon gikinahanglan.

    Ang function o subroutine nagngalan sa calculation nga magamit pag-usab. Ang lagda modawat og nonnegative total ug completed; zero ang resulta kon nakaabot o milapas ang completed sa total. Kon dili, ibalik ang kalainan. Sunda ang (4,1), (4,4), (4,5), ug (0,0). Ibulag ang pagpatik sa calculation. Ipasabot nganong gawas sa sakop ang negative input ug paghimo og pagbalibad sa dili pa modawat og external input.

    Ang fn main mao ang entry point. Ang let naghimo og binding; ang mut motugot sa reassignment. Macro ang println!. Ang reference nga &plan manghulam imbes mobalhin sa ownership.

    fn remaining(total: u32, done: u32) -> u32 { total.saturating_sub(done) }
    +fn main() {
    +    println!("{}", remaining(4, 1));
    +}
    +

    Gipaabot nga resulta: 3

    Praktis ug ebidensiya

    Isulat ang tagna, aktuwal nga resulta, ug hinungdan sa pagkapareho o kalainan. Ang completion check mosukod sa pagsabot; ang practice task mopauswag sa kahanas.

    Reperensiya sa pinulongan

    \ No newline at end of file diff --git a/ceb/rust-foundations-20261101/lesson-3/main.rs b/ceb/rust-foundations-20261101/lesson-3/main.rs new file mode 100644 index 0000000..87fa80b --- /dev/null +++ b/ceb/rust-foundations-20261101/lesson-3/main.rs @@ -0,0 +1,4 @@ +fn remaining(total: u32, done: u32) -> u32 { total.saturating_sub(done) } +fn main() { + println!("{}", remaining(4, 1)); +} diff --git a/ceb/rust-practice-20261101/README.md b/ceb/rust-practice-20261101/README.md new file mode 100644 index 0000000..23a06f7 --- /dev/null +++ b/ceb/rust-practice-20261101/README.md @@ -0,0 +1,9 @@ +# Rust — paghimo ug pagsulay + +[Agila University track](https://edu.agilaos.com/track.php?track=11&lang=ceb) + +Mga 15 minutos matag leksyon. Tag-ana, padagana, usba, ipasabot, ug tubaga ang pagsusi sa University. + +- [Lesson 1: Collection ug balikbalik nga buluhaton](lesson-1/lesson.html) +- [Lesson 2: Usa ka importante nga kinaiya sa pinulongan](lesson-2/lesson.html) +- [Lesson 3: Paghimo, gub-a, ug sulayi ang study planner](lesson-3/lesson.html) diff --git a/ceb/rust-practice-20261101/lesson-1/lesson.html b/ceb/rust-practice-20261101/lesson-1/lesson.html new file mode 100644 index 0000000..9c82f26 --- /dev/null +++ b/ceb/rust-practice-20261101/lesson-1/lesson.html @@ -0,0 +1,8 @@ +Collection ug balikbalik nga buluhaton

    Collection ug balikbalik nga buluhaton

    15-minutong sesyon: pagbasa sulod sa 3 minutos, pag-trace sa 3, pag-eksperimento sa 7, ug pagtubag sa check sa 2. Paggahin og dugang oras kon gikinahanglan.

    Ang collection nagtipig sa may kalabotang value. Bisitahon sa loop ang 1, 2, ug 3; ang total gikan sa 0 mahimong 1, 3, ug 6. Isulat ang trace imbes manag-an. Ilha ang una ug kataposang valid nga posisyon: mahimong 1-based ang Pascal array samtang zero-based ang daghang ubang container. Idugang og value ug taronga ang bounds. Ipasabot ang resulta alang sa empty collection.

    Ang fn main mao ang entry point. Ang let naghimo og binding; ang mut motugot sa reassignment. Macro ang println!. Ang reference nga &plan manghulam imbes mobalhin sa ownership.

    
    +fn main() {
    +    let minutes = [1, 2, 3];
    +    let mut total = 0;
    +    for value in minutes { total += value; }
    +    println!("{}", total);
    +}
    +

    Gipaabot nga resulta: 6

    Praktis ug ebidensiya

    Isulat ang tagna, aktuwal nga resulta, ug hinungdan sa pagkapareho o kalainan. Ang completion check mosukod sa pagsabot; ang practice task mopauswag sa kahanas.

    Reperensiya sa pinulongan

    \ No newline at end of file diff --git a/ceb/rust-practice-20261101/lesson-1/main.rs b/ceb/rust-practice-20261101/lesson-1/main.rs new file mode 100644 index 0000000..1a422ab --- /dev/null +++ b/ceb/rust-practice-20261101/lesson-1/main.rs @@ -0,0 +1,7 @@ + +fn main() { + let minutes = [1, 2, 3]; + let mut total = 0; + for value in minutes { total += value; } + println!("{}", total); +} diff --git a/ceb/rust-practice-20261101/lesson-2/lesson.html b/ceb/rust-practice-20261101/lesson-2/lesson.html new file mode 100644 index 0000000..c8d2671 --- /dev/null +++ b/ceb/rust-practice-20261101/lesson-2/lesson.html @@ -0,0 +1,9 @@ +Usa ka importante nga kinaiya sa pinulongan

    Usa ka importante nga kinaiya sa pinulongan

    15-minutong sesyon: pagbasa sulod sa 3 minutos, pag-trace sa 3, pag-eksperimento sa 7, ug pagtubag sa check sa 2. Paggahin og dugang oras kon gikinahanglan.

    Gamita ang nota sa pinulongan sa ubos aron ipasabot ang pag-usab sa state. Ilha unsa ang gikopya, gipaambit, mahimong mapakyas, ug gibuhian. Dili tanan nga pangutana magamit niini nga programa: isulti kung hain. Paghimo og usa ka kausaban, tag-ana ang epekto, ug itandi sa aktuwal nga resulta. Mahimong lahi ang lagda sa pamilyar nga operator sa laing pinulongan.

    Ang fn main mao ang entry point. Ang let naghimo og binding; ang mut motugot sa reassignment. Macro ang println!. Ang reference nga &plan manghulam imbes mobalhin sa ownership.

    
    +fn main() {
    +    let plan = String::from("Read");
    +    let view = &plan;
    +    println!("{}", view);
    +    println!("{}", plan);
    +}
    +

    Gipaabot nga resulta: Read +Read

    Praktis ug ebidensiya

    Isulat ang tagna, aktuwal nga resulta, ug hinungdan sa pagkapareho o kalainan. Ang completion check mosukod sa pagsabot; ang practice task mopauswag sa kahanas.

    Reperensiya sa pinulongan

    \ No newline at end of file diff --git a/ceb/rust-practice-20261101/lesson-2/main.rs b/ceb/rust-practice-20261101/lesson-2/main.rs new file mode 100644 index 0000000..de73df2 --- /dev/null +++ b/ceb/rust-practice-20261101/lesson-2/main.rs @@ -0,0 +1,7 @@ + +fn main() { + let plan = String::from("Read"); + let view = &plan; + println!("{}", view); + println!("{}", plan); +} diff --git a/ceb/rust-practice-20261101/lesson-3/lesson.html b/ceb/rust-practice-20261101/lesson-3/lesson.html new file mode 100644 index 0000000..4fd7d37 --- /dev/null +++ b/ceb/rust-practice-20261101/lesson-3/lesson.html @@ -0,0 +1,9 @@ +Paghimo, gub-a, ug sulayi ang study planner

    Paghimo, gub-a, ug sulayi ang study planner

    15-minutong sesyon: pagbasa sulod sa 3 minutos, pag-trace sa 3, pag-eksperimento sa 7, ug pagtubag sa check sa 2. Paggahin og dugang oras kon gikinahanglan.

    Ang mapuslanong test motandi sa resulta ug requirement. Dili angay mahimong negative ang nahibiling trabaho sa nonnegative input domain sa planner. Padagana ang starter, tuyoang tangtanga ang proteksiyon kon labaw sa total ang completed, ug siguroa nga adunay check nga mapakyas. Ibalik kini. Idugang ang duha ka study task, summary, ug boundary cases. I-save ang source ug ebidensiya sa Agila Forge. Ipasabot ang matag linya, apil ang gisugyot sa AI.

    Ang fn main mao ang entry point. Ang let naghimo og binding; ang mut motugot sa reassignment. Macro ang println!. Ang reference nga &plan manghulam imbes mobalhin sa ownership.

    fn remaining(total: u32, done: u32) -> u32 { total.saturating_sub(done) }
    +fn main() {
    +    assert_eq!(remaining(4,1),3);
    +    assert_eq!(remaining(4,4),0);
    +    assert_eq!(remaining(4,5),0);
    +    assert_eq!(remaining(0,0),0);
    +    println!("Nipasar");
    +}
    +

    Gipaabot nga resulta: Nipasar

    Praktis ug ebidensiya

    Isulat ang tagna, aktuwal nga resulta, ug hinungdan sa pagkapareho o kalainan. Ang completion check mosukod sa pagsabot; ang practice task mopauswag sa kahanas.

    Reperensiya sa pinulongan

    \ No newline at end of file diff --git a/ceb/rust-practice-20261101/lesson-3/main.rs b/ceb/rust-practice-20261101/lesson-3/main.rs new file mode 100644 index 0000000..49143f0 --- /dev/null +++ b/ceb/rust-practice-20261101/lesson-3/main.rs @@ -0,0 +1,8 @@ +fn remaining(total: u32, done: u32) -> u32 { total.saturating_sub(done) } +fn main() { + assert_eq!(remaining(4,1),3); + assert_eq!(remaining(4,4),0); + assert_eq!(remaining(4,5),0); + assert_eq!(remaining(0,0),0); + println!("Nipasar"); +} diff --git a/ceb/swift-foundations-20261101/README.md b/ceb/swift-foundations-20261101/README.md new file mode 100644 index 0000000..b3bc662 --- /dev/null +++ b/ceb/swift-foundations-20261101/README.md @@ -0,0 +1,9 @@ +# Swift — unang mga lakang + +[Agila University track](https://edu.agilaos.com/track.php?track=17&lang=ceb) + +Mga 15 minutos matag leksyon. Tag-ana, padagana, usba, ipasabot, ug tubaga ang pagsusi sa University. + +- [Lesson 1: Imong unang programa nga mapasabot](lesson-1/lesson.html) +- [Lesson 2: Mga value ug desisyon](lesson-2/lesson.html) +- [Lesson 3: Function ug klarong lagda](lesson-3/lesson.html) diff --git a/ceb/swift-foundations-20261101/lesson-1/lesson.html b/ceb/swift-foundations-20261101/lesson-1/lesson.html new file mode 100644 index 0000000..5d84278 --- /dev/null +++ b/ceb/swift-foundations-20261101/lesson-1/lesson.html @@ -0,0 +1,2 @@ +Imong unang programa nga mapasabot

    Imong unang programa nga mapasabot

    15-minutong sesyon: pagbasa sulod sa 3 minutos, pag-trace sa 3, pag-eksperimento sa 7, ug pagtubag sa check sa 2. Paggahin og dugang oras kon gikinahanglan.

    Usa ka hugpong sa mga sugo ang programa. Basaha gikan sa entry point ngadto sa output statement. Data ang teksto sulod sa mga kinutlo; sugo ang output operation. Tag-ana ang linya sa dili pa padaganon. Usba lang ang mensahe, padagana pag-usab, ug tangtanga ang usa ka gikinahanglang punctuation aron basahon ang unang error. Ibalik ang nagtrabaho nga source.

    Immutable binding ang let ug mutable ang var. Mahimong nil ang Int(raw). Ang if let mokuha sa anaa nga value nga dili pugson ang nawala nga data.

    print("Andam")
    +

    Gipaabot nga resulta: Andam

    Praktis ug ebidensiya

    Isulat ang tagna, aktuwal nga resulta, ug hinungdan sa pagkapareho o kalainan. Ang completion check mosukod sa pagsabot; ang practice task mopauswag sa kahanas.

    Reperensiya sa pinulongan

    \ No newline at end of file diff --git a/ceb/swift-foundations-20261101/lesson-1/main.swift b/ceb/swift-foundations-20261101/lesson-1/main.swift new file mode 100644 index 0000000..9f5b69c --- /dev/null +++ b/ceb/swift-foundations-20261101/lesson-1/main.swift @@ -0,0 +1 @@ +print("Andam") diff --git a/ceb/swift-foundations-20261101/lesson-2/lesson.html b/ceb/swift-foundations-20261101/lesson-2/lesson.html new file mode 100644 index 0000000..dfe7c16 --- /dev/null +++ b/ceb/swift-foundations-20261101/lesson-2/lesson.html @@ -0,0 +1,3 @@ +Mga value ug desisyon

    Mga value ug desisyon

    15-minutong sesyon: pagbasa sulod sa 3 minutos, pag-trace sa 3, pag-eksperimento sa 7, ug pagtubag sa check sa 2. Paggahin og dugang oras kon gikinahanglan.

    Ang desisyon mopili kon unsang statement ang modagan. Ang lagda mao ang “andam sa 80 pataas.” Sunda ang 85, 79, 80, ug 81 sa dili pa padaganon. Apil ang 80 sa comparison. Mahimong sakto sa 85 apan sayop sa utlanan. Idugang ang lahi nga check sa pagbalibad sa ubos sa 0 o labaw sa 100; lahi ang invalid ug nagkinahanglan og praktis.

    Immutable binding ang let ug mutable ang var. Mahimong nil ang Int(raw). Ang if let mokuha sa anaa nga value nga dili pugson ang nawala nga data.

    let score = 85
    +if score >= 80 { print("Andam") } else { print("Pagpraktis") }
    +

    Gipaabot nga resulta: Andam

    Praktis ug ebidensiya

    Isulat ang tagna, aktuwal nga resulta, ug hinungdan sa pagkapareho o kalainan. Ang completion check mosukod sa pagsabot; ang practice task mopauswag sa kahanas.

    Reperensiya sa pinulongan

    \ No newline at end of file diff --git a/ceb/swift-foundations-20261101/lesson-2/main.swift b/ceb/swift-foundations-20261101/lesson-2/main.swift new file mode 100644 index 0000000..beac233 --- /dev/null +++ b/ceb/swift-foundations-20261101/lesson-2/main.swift @@ -0,0 +1,2 @@ +let score = 85 +if score >= 80 { print("Andam") } else { print("Pagpraktis") } diff --git a/ceb/swift-foundations-20261101/lesson-3/lesson.html b/ceb/swift-foundations-20261101/lesson-3/lesson.html new file mode 100644 index 0000000..d06ed52 --- /dev/null +++ b/ceb/swift-foundations-20261101/lesson-3/lesson.html @@ -0,0 +1,6 @@ +Function ug klarong lagda

    Function ug klarong lagda

    15-minutong sesyon: pagbasa sulod sa 3 minutos, pag-trace sa 3, pag-eksperimento sa 7, ug pagtubag sa check sa 2. Paggahin og dugang oras kon gikinahanglan.

    Ang function o subroutine nagngalan sa calculation nga magamit pag-usab. Ang lagda modawat og nonnegative total ug completed; zero ang resulta kon nakaabot o milapas ang completed sa total. Kon dili, ibalik ang kalainan. Sunda ang (4,1), (4,4), (4,5), ug (0,0). Ibulag ang pagpatik sa calculation. Ipasabot nganong gawas sa sakop ang negative input ug paghimo og pagbalibad sa dili pa modawat og external input.

    Immutable binding ang let ug mutable ang var. Mahimong nil ang Int(raw). Ang if let mokuha sa anaa nga value nga dili pugson ang nawala nga data.

    func remaining(_ total: Int, _ done: Int) -> Int {
    +    return max(0, total - done)
    +}
    +
    +print(remaining(4, 1))
    +

    Gipaabot nga resulta: 3

    Praktis ug ebidensiya

    Isulat ang tagna, aktuwal nga resulta, ug hinungdan sa pagkapareho o kalainan. Ang completion check mosukod sa pagsabot; ang practice task mopauswag sa kahanas.

    Reperensiya sa pinulongan

    \ No newline at end of file diff --git a/ceb/swift-foundations-20261101/lesson-3/main.swift b/ceb/swift-foundations-20261101/lesson-3/main.swift new file mode 100644 index 0000000..d06d8dd --- /dev/null +++ b/ceb/swift-foundations-20261101/lesson-3/main.swift @@ -0,0 +1,5 @@ +func remaining(_ total: Int, _ done: Int) -> Int { + return max(0, total - done) +} + +print(remaining(4, 1)) diff --git a/ceb/swift-practice-20261101/README.md b/ceb/swift-practice-20261101/README.md new file mode 100644 index 0000000..e3f2ca3 --- /dev/null +++ b/ceb/swift-practice-20261101/README.md @@ -0,0 +1,9 @@ +# Swift — paghimo ug pagsulay + +[Agila University track](https://edu.agilaos.com/track.php?track=17&lang=ceb) + +Mga 15 minutos matag leksyon. Tag-ana, padagana, usba, ipasabot, ug tubaga ang pagsusi sa University. + +- [Lesson 1: Collection ug balikbalik nga buluhaton](lesson-1/lesson.html) +- [Lesson 2: Usa ka importante nga kinaiya sa pinulongan](lesson-2/lesson.html) +- [Lesson 3: Paghimo, gub-a, ug sulayi ang study planner](lesson-3/lesson.html) diff --git a/ceb/swift-practice-20261101/lesson-1/lesson.html b/ceb/swift-practice-20261101/lesson-1/lesson.html new file mode 100644 index 0000000..f3cf93e --- /dev/null +++ b/ceb/swift-practice-20261101/lesson-1/lesson.html @@ -0,0 +1,5 @@ +Collection ug balikbalik nga buluhaton

    Collection ug balikbalik nga buluhaton

    15-minutong sesyon: pagbasa sulod sa 3 minutos, pag-trace sa 3, pag-eksperimento sa 7, ug pagtubag sa check sa 2. Paggahin og dugang oras kon gikinahanglan.

    Ang collection nagtipig sa may kalabotang value. Bisitahon sa loop ang 1, 2, ug 3; ang total gikan sa 0 mahimong 1, 3, ug 6. Isulat ang trace imbes manag-an. Ilha ang una ug kataposang valid nga posisyon: mahimong 1-based ang Pascal array samtang zero-based ang daghang ubang container. Idugang og value ug taronga ang bounds. Ipasabot ang resulta alang sa empty collection.

    Immutable binding ang let ug mutable ang var. Mahimong nil ang Int(raw). Ang if let mokuha sa anaa nga value nga dili pugson ang nawala nga data.

    let minutes = [1, 2, 3]
    +var total = 0
    +for value in minutes { total += value }
    +print(total)
    +

    Gipaabot nga resulta: 6

    Praktis ug ebidensiya

    Isulat ang tagna, aktuwal nga resulta, ug hinungdan sa pagkapareho o kalainan. Ang completion check mosukod sa pagsabot; ang practice task mopauswag sa kahanas.

    Reperensiya sa pinulongan

    \ No newline at end of file diff --git a/ceb/swift-practice-20261101/lesson-1/main.swift b/ceb/swift-practice-20261101/lesson-1/main.swift new file mode 100644 index 0000000..c64a1f8 --- /dev/null +++ b/ceb/swift-practice-20261101/lesson-1/main.swift @@ -0,0 +1,4 @@ +let minutes = [1, 2, 3] +var total = 0 +for value in minutes { total += value } +print(total) diff --git a/ceb/swift-practice-20261101/lesson-2/lesson.html b/ceb/swift-practice-20261101/lesson-2/lesson.html new file mode 100644 index 0000000..76c4ed5 --- /dev/null +++ b/ceb/swift-practice-20261101/lesson-2/lesson.html @@ -0,0 +1,7 @@ +Usa ka importante nga kinaiya sa pinulongan

    Usa ka importante nga kinaiya sa pinulongan

    15-minutong sesyon: pagbasa sulod sa 3 minutos, pag-trace sa 3, pag-eksperimento sa 7, ug pagtubag sa check sa 2. Paggahin og dugang oras kon gikinahanglan.

    Gamita ang nota sa pinulongan sa ubos aron ipasabot ang pag-usab sa state. Ilha unsa ang gikopya, gipaambit, mahimong mapakyas, ug gibuhian. Dili tanan nga pangutana magamit niini nga programa: isulti kung hain. Paghimo og usa ka kausaban, tag-ana ang epekto, ug itandi sa aktuwal nga resulta. Mahimong lahi ang lagda sa pamilyar nga operator sa laing pinulongan.

    Immutable binding ang let ug mutable ang var. Mahimong nil ang Int(raw). Ang if let mokuha sa anaa nga value nga dili pugson ang nawala nga data.

    let raw = "three"
    +if let count = Int(raw) {
    +    print(count)
    +} else {
    +    print("Pagpraktis")
    +}
    +

    Gipaabot nga resulta: Pagpraktis

    Praktis ug ebidensiya

    Isulat ang tagna, aktuwal nga resulta, ug hinungdan sa pagkapareho o kalainan. Ang completion check mosukod sa pagsabot; ang practice task mopauswag sa kahanas.

    Reperensiya sa pinulongan

    \ No newline at end of file diff --git a/ceb/swift-practice-20261101/lesson-2/main.swift b/ceb/swift-practice-20261101/lesson-2/main.swift new file mode 100644 index 0000000..3db7e9f --- /dev/null +++ b/ceb/swift-practice-20261101/lesson-2/main.swift @@ -0,0 +1,6 @@ +let raw = "three" +if let count = Int(raw) { + print(count) +} else { + print("Pagpraktis") +} diff --git a/ceb/swift-practice-20261101/lesson-3/lesson.html b/ceb/swift-practice-20261101/lesson-3/lesson.html new file mode 100644 index 0000000..a709c8f --- /dev/null +++ b/ceb/swift-practice-20261101/lesson-3/lesson.html @@ -0,0 +1,10 @@ +Paghimo, gub-a, ug sulayi ang study planner

    Paghimo, gub-a, ug sulayi ang study planner

    15-minutong sesyon: pagbasa sulod sa 3 minutos, pag-trace sa 3, pag-eksperimento sa 7, ug pagtubag sa check sa 2. Paggahin og dugang oras kon gikinahanglan.

    Ang mapuslanong test motandi sa resulta ug requirement. Dili angay mahimong negative ang nahibiling trabaho sa nonnegative input domain sa planner. Padagana ang starter, tuyoang tangtanga ang proteksiyon kon labaw sa total ang completed, ug siguroa nga adunay check nga mapakyas. Ibalik kini. Idugang ang duha ka study task, summary, ug boundary cases. I-save ang source ug ebidensiya sa Agila Forge. Ipasabot ang matag linya, apil ang gisugyot sa AI.

    Immutable binding ang let ug mutable ang var. Mahimong nil ang Int(raw). Ang if let mokuha sa anaa nga value nga dili pugson ang nawala nga data.

    func remaining(_ total: Int, _ done: Int) -> Int {
    +    return max(0, total - done)
    +}
    +
    +precondition(remaining(4,1) == 3)
    +precondition(remaining(4,4) == 0)
    +precondition(remaining(4,5) == 0)
    +precondition(remaining(0,0) == 0)
    +print("Nipasar")
    +

    Gipaabot nga resulta: Nipasar

    Praktis ug ebidensiya

    Isulat ang tagna, aktuwal nga resulta, ug hinungdan sa pagkapareho o kalainan. Ang completion check mosukod sa pagsabot; ang practice task mopauswag sa kahanas.

    Reperensiya sa pinulongan

    \ No newline at end of file diff --git a/ceb/swift-practice-20261101/lesson-3/main.swift b/ceb/swift-practice-20261101/lesson-3/main.swift new file mode 100644 index 0000000..9549eab --- /dev/null +++ b/ceb/swift-practice-20261101/lesson-3/main.swift @@ -0,0 +1,9 @@ +func remaining(_ total: Int, _ done: Int) -> Int { + return max(0, total - done) +} + +precondition(remaining(4,1) == 3) +precondition(remaining(4,4) == 0) +precondition(remaining(4,5) == 0) +precondition(remaining(0,0) == 0) +print("Nipasar") diff --git a/ceb/vlang-foundations-20261101/README.md b/ceb/vlang-foundations-20261101/README.md new file mode 100644 index 0000000..67ab830 --- /dev/null +++ b/ceb/vlang-foundations-20261101/README.md @@ -0,0 +1,9 @@ +# V (Vlang) — unang mga lakang + +[Agila University track](https://edu.agilaos.com/track.php?track=16&lang=ceb) + +Mga 15 minutos matag leksyon. Tag-ana, padagana, usba, ipasabot, ug tubaga ang pagsusi sa University. + +- [Lesson 1: Imong unang programa nga mapasabot](lesson-1/lesson.html) +- [Lesson 2: Mga value ug desisyon](lesson-2/lesson.html) +- [Lesson 3: Function ug klarong lagda](lesson-3/lesson.html) diff --git a/ceb/vlang-foundations-20261101/lesson-1/lesson.html b/ceb/vlang-foundations-20261101/lesson-1/lesson.html new file mode 100644 index 0000000..d54c935 --- /dev/null +++ b/ceb/vlang-foundations-20261101/lesson-1/lesson.html @@ -0,0 +1,5 @@ +Imong unang programa nga mapasabot

    Imong unang programa nga mapasabot

    15-minutong sesyon: pagbasa sulod sa 3 minutos, pag-trace sa 3, pag-eksperimento sa 7, ug pagtubag sa check sa 2. Paggahin og dugang oras kon gikinahanglan.

    Usa ka hugpong sa mga sugo ang programa. Basaha gikan sa entry point ngadto sa output statement. Data ang teksto sulod sa mga kinutlo; sugo ang output operation. Tag-ana ang linya sa dili pa padaganon. Usba lang ang mensahe, padagana pag-usab, ug tangtanga ang usa ka gikinahanglang punctuation aron basahon ang unang error. Ibalik ang nagtrabaho nga source.

    Ang := nagdeklarar og value. Gamita lang ang mut kon usbon kini. Ang !int usa ka result nga mahimong mapakyas; ang caller modumala sa error pinaagi sa or block. Ang standard V examples dili mo-import sa Agila SDK.

    
    +fn main() {
    +    println('Andam')
    +}
    +

    Gipaabot nga resulta: Andam

    Praktis ug ebidensiya

    Isulat ang tagna, aktuwal nga resulta, ug hinungdan sa pagkapareho o kalainan. Ang completion check mosukod sa pagsabot; ang practice task mopauswag sa kahanas.

    Reperensiya sa pinulongan

    \ No newline at end of file diff --git a/ceb/vlang-foundations-20261101/lesson-1/main.v b/ceb/vlang-foundations-20261101/lesson-1/main.v new file mode 100644 index 0000000..fac17a9 --- /dev/null +++ b/ceb/vlang-foundations-20261101/lesson-1/main.v @@ -0,0 +1,4 @@ + +fn main() { + println('Andam') +} diff --git a/ceb/vlang-foundations-20261101/lesson-2/lesson.html b/ceb/vlang-foundations-20261101/lesson-2/lesson.html new file mode 100644 index 0000000..589094b --- /dev/null +++ b/ceb/vlang-foundations-20261101/lesson-2/lesson.html @@ -0,0 +1,6 @@ +Mga value ug desisyon

    Mga value ug desisyon

    15-minutong sesyon: pagbasa sulod sa 3 minutos, pag-trace sa 3, pag-eksperimento sa 7, ug pagtubag sa check sa 2. Paggahin og dugang oras kon gikinahanglan.

    Ang desisyon mopili kon unsang statement ang modagan. Ang lagda mao ang “andam sa 80 pataas.” Sunda ang 85, 79, 80, ug 81 sa dili pa padaganon. Apil ang 80 sa comparison. Mahimong sakto sa 85 apan sayop sa utlanan. Idugang ang lahi nga check sa pagbalibad sa ubos sa 0 o labaw sa 100; lahi ang invalid ug nagkinahanglan og praktis.

    Ang := nagdeklarar og value. Gamita lang ang mut kon usbon kini. Ang !int usa ka result nga mahimong mapakyas; ang caller modumala sa error pinaagi sa or block. Ang standard V examples dili mo-import sa Agila SDK.

    
    +fn main() {
    +    score := 85
    +    if score >= 80 { println('Andam') } else { println('Pagpraktis') }
    +}
    +

    Gipaabot nga resulta: Andam

    Praktis ug ebidensiya

    Isulat ang tagna, aktuwal nga resulta, ug hinungdan sa pagkapareho o kalainan. Ang completion check mosukod sa pagsabot; ang practice task mopauswag sa kahanas.

    Reperensiya sa pinulongan

    \ No newline at end of file diff --git a/ceb/vlang-foundations-20261101/lesson-2/main.v b/ceb/vlang-foundations-20261101/lesson-2/main.v new file mode 100644 index 0000000..c87ae8b --- /dev/null +++ b/ceb/vlang-foundations-20261101/lesson-2/main.v @@ -0,0 +1,5 @@ + +fn main() { + score := 85 + if score >= 80 { println('Andam') } else { println('Pagpraktis') } +} diff --git a/ceb/vlang-foundations-20261101/lesson-3/lesson.html b/ceb/vlang-foundations-20261101/lesson-3/lesson.html new file mode 100644 index 0000000..474cb09 --- /dev/null +++ b/ceb/vlang-foundations-20261101/lesson-3/lesson.html @@ -0,0 +1,8 @@ +Function ug klarong lagda

    Function ug klarong lagda

    15-minutong sesyon: pagbasa sulod sa 3 minutos, pag-trace sa 3, pag-eksperimento sa 7, ug pagtubag sa check sa 2. Paggahin og dugang oras kon gikinahanglan.

    Ang function o subroutine nagngalan sa calculation nga magamit pag-usab. Ang lagda modawat og nonnegative total ug completed; zero ang resulta kon nakaabot o milapas ang completed sa total. Kon dili, ibalik ang kalainan. Sunda ang (4,1), (4,4), (4,5), ug (0,0). Ibulag ang pagpatik sa calculation. Ipasabot nganong gawas sa sakop ang negative input ug paghimo og pagbalibad sa dili pa modawat og external input.

    Ang := nagdeklarar og value. Gamita lang ang mut kon usbon kini. Ang !int usa ka result nga mahimong mapakyas; ang caller modumala sa error pinaagi sa or block. Ang standard V examples dili mo-import sa Agila SDK.

    fn remaining(total int, done int) int {
    +    if done >= total { return 0 }
    +    return total - done
    +}
    +fn main() {
    +    println(remaining(4, 1))
    +}
    +

    Gipaabot nga resulta: 3

    Praktis ug ebidensiya

    Isulat ang tagna, aktuwal nga resulta, ug hinungdan sa pagkapareho o kalainan. Ang completion check mosukod sa pagsabot; ang practice task mopauswag sa kahanas.

    Reperensiya sa pinulongan

    \ No newline at end of file diff --git a/ceb/vlang-foundations-20261101/lesson-3/main.v b/ceb/vlang-foundations-20261101/lesson-3/main.v new file mode 100644 index 0000000..d429bf6 --- /dev/null +++ b/ceb/vlang-foundations-20261101/lesson-3/main.v @@ -0,0 +1,7 @@ +fn remaining(total int, done int) int { + if done >= total { return 0 } + return total - done +} +fn main() { + println(remaining(4, 1)) +} diff --git a/ceb/vlang-practice-20261101/README.md b/ceb/vlang-practice-20261101/README.md new file mode 100644 index 0000000..5319488 --- /dev/null +++ b/ceb/vlang-practice-20261101/README.md @@ -0,0 +1,9 @@ +# V (Vlang) — paghimo ug pagsulay + +[Agila University track](https://edu.agilaos.com/track.php?track=16&lang=ceb) + +Mga 15 minutos matag leksyon. Tag-ana, padagana, usba, ipasabot, ug tubaga ang pagsusi sa University. + +- [Lesson 1: Collection ug balikbalik nga buluhaton](lesson-1/lesson.html) +- [Lesson 2: Usa ka importante nga kinaiya sa pinulongan](lesson-2/lesson.html) +- [Lesson 3: Paghimo, gub-a, ug sulayi ang study planner](lesson-3/lesson.html) diff --git a/ceb/vlang-practice-20261101/lesson-1/lesson.html b/ceb/vlang-practice-20261101/lesson-1/lesson.html new file mode 100644 index 0000000..a1233a9 --- /dev/null +++ b/ceb/vlang-practice-20261101/lesson-1/lesson.html @@ -0,0 +1,8 @@ +Collection ug balikbalik nga buluhaton

    Collection ug balikbalik nga buluhaton

    15-minutong sesyon: pagbasa sulod sa 3 minutos, pag-trace sa 3, pag-eksperimento sa 7, ug pagtubag sa check sa 2. Paggahin og dugang oras kon gikinahanglan.

    Ang collection nagtipig sa may kalabotang value. Bisitahon sa loop ang 1, 2, ug 3; ang total gikan sa 0 mahimong 1, 3, ug 6. Isulat ang trace imbes manag-an. Ilha ang una ug kataposang valid nga posisyon: mahimong 1-based ang Pascal array samtang zero-based ang daghang ubang container. Idugang og value ug taronga ang bounds. Ipasabot ang resulta alang sa empty collection.

    Ang := nagdeklarar og value. Gamita lang ang mut kon usbon kini. Ang !int usa ka result nga mahimong mapakyas; ang caller modumala sa error pinaagi sa or block. Ang standard V examples dili mo-import sa Agila SDK.

    
    +fn main() {
    +    minutes := [1, 2, 3]
    +    mut total := 0
    +    for value in minutes { total += value }
    +    println(total)
    +}
    +

    Gipaabot nga resulta: 6

    Praktis ug ebidensiya

    Isulat ang tagna, aktuwal nga resulta, ug hinungdan sa pagkapareho o kalainan. Ang completion check mosukod sa pagsabot; ang practice task mopauswag sa kahanas.

    Reperensiya sa pinulongan

    \ No newline at end of file diff --git a/ceb/vlang-practice-20261101/lesson-1/main.v b/ceb/vlang-practice-20261101/lesson-1/main.v new file mode 100644 index 0000000..6f31717 --- /dev/null +++ b/ceb/vlang-practice-20261101/lesson-1/main.v @@ -0,0 +1,7 @@ + +fn main() { + minutes := [1, 2, 3] + mut total := 0 + for value in minutes { total += value } + println(total) +} diff --git a/ceb/vlang-practice-20261101/lesson-2/lesson.html b/ceb/vlang-practice-20261101/lesson-2/lesson.html new file mode 100644 index 0000000..9144d00 --- /dev/null +++ b/ceb/vlang-practice-20261101/lesson-2/lesson.html @@ -0,0 +1,12 @@ +Usa ka importante nga kinaiya sa pinulongan

    Usa ka importante nga kinaiya sa pinulongan

    15-minutong sesyon: pagbasa sulod sa 3 minutos, pag-trace sa 3, pag-eksperimento sa 7, ug pagtubag sa check sa 2. Paggahin og dugang oras kon gikinahanglan.

    Gamita ang nota sa pinulongan sa ubos aron ipasabot ang pag-usab sa state. Ilha unsa ang gikopya, gipaambit, mahimong mapakyas, ug gibuhian. Dili tanan nga pangutana magamit niini nga programa: isulti kung hain. Paghimo og usa ka kausaban, tag-ana ang epekto, ug itandi sa aktuwal nga resulta. Mahimong lahi ang lagda sa pamilyar nga operator sa laing pinulongan.

    Ang := nagdeklarar og value. Gamita lang ang mut kon usbon kini. Ang !int usa ka result nga mahimong mapakyas; ang caller modumala sa error pinaagi sa or block. Ang standard V examples dili mo-import sa Agila SDK.

    fn checked_score(value int) !int {
    +    if value < 0 || value > 100 { return error('Invalid score') }
    +    return value
    +}
    +fn main() {
    +    result := checked_score(101) or {
    +        println('Pagpraktis')
    +        return
    +    }
    +    println(result)
    +}
    +

    Gipaabot nga resulta: Pagpraktis

    Praktis ug ebidensiya

    Isulat ang tagna, aktuwal nga resulta, ug hinungdan sa pagkapareho o kalainan. Ang completion check mosukod sa pagsabot; ang practice task mopauswag sa kahanas.

    Reperensiya sa pinulongan

    \ No newline at end of file diff --git a/ceb/vlang-practice-20261101/lesson-2/main.v b/ceb/vlang-practice-20261101/lesson-2/main.v new file mode 100644 index 0000000..03a06cd --- /dev/null +++ b/ceb/vlang-practice-20261101/lesson-2/main.v @@ -0,0 +1,11 @@ +fn checked_score(value int) !int { + if value < 0 || value > 100 { return error('Invalid score') } + return value +} +fn main() { + result := checked_score(101) or { + println('Pagpraktis') + return + } + println(result) +} diff --git a/ceb/vlang-practice-20261101/lesson-3/lesson.html b/ceb/vlang-practice-20261101/lesson-3/lesson.html new file mode 100644 index 0000000..d612a32 --- /dev/null +++ b/ceb/vlang-practice-20261101/lesson-3/lesson.html @@ -0,0 +1,12 @@ +Paghimo, gub-a, ug sulayi ang study planner

    Paghimo, gub-a, ug sulayi ang study planner

    15-minutong sesyon: pagbasa sulod sa 3 minutos, pag-trace sa 3, pag-eksperimento sa 7, ug pagtubag sa check sa 2. Paggahin og dugang oras kon gikinahanglan.

    Ang mapuslanong test motandi sa resulta ug requirement. Dili angay mahimong negative ang nahibiling trabaho sa nonnegative input domain sa planner. Padagana ang starter, tuyoang tangtanga ang proteksiyon kon labaw sa total ang completed, ug siguroa nga adunay check nga mapakyas. Ibalik kini. Idugang ang duha ka study task, summary, ug boundary cases. I-save ang source ug ebidensiya sa Agila Forge. Ipasabot ang matag linya, apil ang gisugyot sa AI.

    Ang := nagdeklarar og value. Gamita lang ang mut kon usbon kini. Ang !int usa ka result nga mahimong mapakyas; ang caller modumala sa error pinaagi sa or block. Ang standard V examples dili mo-import sa Agila SDK.

    fn remaining(total int, done int) int {
    +    if done >= total { return 0 }
    +    return total - done
    +}
    +fn main() {
    +    assert remaining(4,1)==3
    +    assert remaining(4,4)==0
    +    assert remaining(4,5)==0
    +    assert remaining(0,0)==0
    +    println('Nipasar')
    +}
    +

    Gipaabot nga resulta: Nipasar

    Praktis ug ebidensiya

    Isulat ang tagna, aktuwal nga resulta, ug hinungdan sa pagkapareho o kalainan. Ang completion check mosukod sa pagsabot; ang practice task mopauswag sa kahanas.

    Reperensiya sa pinulongan

    \ No newline at end of file diff --git a/ceb/vlang-practice-20261101/lesson-3/main.v b/ceb/vlang-practice-20261101/lesson-3/main.v new file mode 100644 index 0000000..d91fae5 --- /dev/null +++ b/ceb/vlang-practice-20261101/lesson-3/main.v @@ -0,0 +1,11 @@ +fn remaining(total int, done int) int { + if done >= total { return 0 } + return total - done +} +fn main() { + assert remaining(4,1)==3 + assert remaining(4,4)==0 + assert remaining(4,5)==0 + assert remaining(0,0)==0 + println('Nipasar') +} diff --git a/en/basic-foundations-20261101/README.md b/en/basic-foundations-20261101/README.md new file mode 100644 index 0000000..20e7569 --- /dev/null +++ b/en/basic-foundations-20261101/README.md @@ -0,0 +1,9 @@ +# BASIC — first steps + +[Agila University track](https://edu.agilaos.com/track.php?track=21&lang=en) + +About 15 minutes per lesson. Predict, run, change, explain, then complete the check in University. + +- [Lesson 1: Your first explainable program](lesson-1/lesson.html) +- [Lesson 2: Values and decisions](lesson-2/lesson.html) +- [Lesson 3: Functions and a clear policy](lesson-3/lesson.html) diff --git a/en/basic-foundations-20261101/lesson-1/lesson.html b/en/basic-foundations-20261101/lesson-1/lesson.html new file mode 100644 index 0000000..de325c3 --- /dev/null +++ b/en/basic-foundations-20261101/lesson-1/lesson.html @@ -0,0 +1,4 @@ +Your first explainable program

    Your first explainable program

    15-minute session: read for 3 minutes, trace for 3, experiment for 7, and complete the check for 2. Spend longer whenever you need.

    A program is a set of instructions. Read the example from its entry point to the output statement. Text in quotes is data; the output operation is an instruction. Predict the printed line before running. Change only the message, run again, then remove one required punctuation mark and read the first error. Restore the working source.

    Line numbers describe program order. GOSUB visits a subroutine and RETURN resumes the caller. SYSTEM exits this interpreter. BASIC dialects differ: a 6502 or Z80 computer does not automatically run this exact dialect.

    10 REM Change the message
    +20 PRINT "Ready"
    +30 SYSTEM
    +

    Expected result: Ready

    Practice and evidence

    Keep three notes: your prediction, the actual result, and why they match or differ. The completion check grades understanding; the practice task builds skill.

    Language reference

    \ No newline at end of file diff --git a/en/basic-foundations-20261101/lesson-1/main.bas b/en/basic-foundations-20261101/lesson-1/main.bas new file mode 100644 index 0000000..3b09580 --- /dev/null +++ b/en/basic-foundations-20261101/lesson-1/main.bas @@ -0,0 +1,3 @@ +10 REM Change the message +20 PRINT "Ready" +30 SYSTEM diff --git a/en/basic-foundations-20261101/lesson-2/lesson.html b/en/basic-foundations-20261101/lesson-2/lesson.html new file mode 100644 index 0000000..e360681 --- /dev/null +++ b/en/basic-foundations-20261101/lesson-2/lesson.html @@ -0,0 +1,5 @@ +Values and decisions

    Values and decisions

    15-minute session: read for 3 minutes, trace for 3, experiment for 7, and complete the check for 2. Spend longer whenever you need.

    A decision chooses which statements run. The policy here is “ready at 80 or higher.” Trace 85, 79, 80, and 81 before running each case. The comparison includes 80. A program that prints the right answer for 85 may still be wrong at the boundary. Add a separate check rejecting scores below 0 or above 100; rejection and needing practice mean different things.

    Line numbers describe program order. GOSUB visits a subroutine and RETURN resumes the caller. SYSTEM exits this interpreter. BASIC dialects differ: a 6502 or Z80 computer does not automatically run this exact dialect.

    10 LET S = 85
    +20 IF S >= 80 THEN PRINT "Ready"
    +30 IF S < 80 THEN PRINT "Practice"
    +40 SYSTEM
    +

    Expected result: Ready

    Practice and evidence

    Keep three notes: your prediction, the actual result, and why they match or differ. The completion check grades understanding; the practice task builds skill.

    Language reference

    \ No newline at end of file diff --git a/en/basic-foundations-20261101/lesson-2/main.bas b/en/basic-foundations-20261101/lesson-2/main.bas new file mode 100644 index 0000000..cd10260 --- /dev/null +++ b/en/basic-foundations-20261101/lesson-2/main.bas @@ -0,0 +1,4 @@ +10 LET S = 85 +20 IF S >= 80 THEN PRINT "Ready" +30 IF S < 80 THEN PRINT "Practice" +40 SYSTEM diff --git a/en/basic-foundations-20261101/lesson-3/lesson.html b/en/basic-foundations-20261101/lesson-3/lesson.html new file mode 100644 index 0000000..6daf7d0 --- /dev/null +++ b/en/basic-foundations-20261101/lesson-3/lesson.html @@ -0,0 +1,9 @@ +Functions and a clear policy

    Functions and a clear policy

    15-minute session: read for 3 minutes, trace for 3, experiment for 7, and complete the check for 2. Spend longer whenever you need.

    A function or subroutine names a reusable calculation. Our policy accepts nonnegative total and completed counts and returns zero when completed reaches or exceeds total. Otherwise it returns their difference. Trace (4,1), (4,4), (4,5), and (0,0). Keep printing separate from calculation. Write down why negative inputs are outside this exercise’s domain, then design an explicit rejection policy before accepting external input.

    Line numbers describe program order. GOSUB visits a subroutine and RETURN resumes the caller. SYSTEM exits this interpreter. BASIC dialects differ: a 6502 or Z80 computer does not automatically run this exact dialect.

    30 LET T=4
    +40 LET D=1
    +50 GOSUB 200
    +60 PRINT R
    +70 SYSTEM
    +200 LET R=T-D
    +210 IF R<0 THEN LET R=0
    +220 RETURN
    +

    Expected result: 3

    Practice and evidence

    Keep three notes: your prediction, the actual result, and why they match or differ. The completion check grades understanding; the practice task builds skill.

    Language reference

    \ No newline at end of file diff --git a/en/basic-foundations-20261101/lesson-3/main.bas b/en/basic-foundations-20261101/lesson-3/main.bas new file mode 100644 index 0000000..f690fb2 --- /dev/null +++ b/en/basic-foundations-20261101/lesson-3/main.bas @@ -0,0 +1,8 @@ +30 LET T=4 +40 LET D=1 +50 GOSUB 200 +60 PRINT R +70 SYSTEM +200 LET R=T-D +210 IF R<0 THEN LET R=0 +220 RETURN diff --git a/en/basic-practice-20261101/README.md b/en/basic-practice-20261101/README.md new file mode 100644 index 0000000..5afbf7a --- /dev/null +++ b/en/basic-practice-20261101/README.md @@ -0,0 +1,9 @@ +# BASIC — build and test + +[Agila University track](https://edu.agilaos.com/track.php?track=21&lang=en) + +About 15 minutes per lesson. Predict, run, change, explain, then complete the check in University. + +- [Lesson 1: Collections and repeated work](lesson-1/lesson.html) +- [Lesson 2: A language feature worth understanding](lesson-2/lesson.html) +- [Lesson 3: Build, break, and test a study planner](lesson-3/lesson.html) diff --git a/en/basic-practice-20261101/lesson-1/lesson.html b/en/basic-practice-20261101/lesson-1/lesson.html new file mode 100644 index 0000000..34db2bf --- /dev/null +++ b/en/basic-practice-20261101/lesson-1/lesson.html @@ -0,0 +1,11 @@ +Collections and repeated work

    Collections and repeated work

    15-minute session: read for 3 minutes, trace for 3, experiment for 7, and complete the check for 2. Spend longer whenever you need.

    A collection stores related values. The loop visits 1, 2, and 3, updating the total from 0 to 1, then 3, then 6. Record this trace rather than guessing. Identify the first and last valid positions in this language: Pascal can declare a 1-based array, while many other examples use zero-based containers. Add another value and update the bounds correctly. Explain what an empty collection should produce.

    Line numbers describe program order. GOSUB visits a subroutine and RETURN resumes the caller. SYSTEM exits this interpreter. BASIC dialects differ: a 6502 or Z80 computer does not automatically run this exact dialect.

    10 DIM M(3)
    +20 LET M(1)=1
    +30 LET M(2)=2
    +40 LET M(3)=3
    +50 LET T=0
    +60 FOR I=1 TO 3
    +70 LET T=T+M(I)
    +80 NEXT I
    +90 PRINT T
    +100 SYSTEM
    +

    Expected result: 6

    Practice and evidence

    Keep three notes: your prediction, the actual result, and why they match or differ. The completion check grades understanding; the practice task builds skill.

    Language reference

    \ No newline at end of file diff --git a/en/basic-practice-20261101/lesson-1/main.bas b/en/basic-practice-20261101/lesson-1/main.bas new file mode 100644 index 0000000..ad76e72 --- /dev/null +++ b/en/basic-practice-20261101/lesson-1/main.bas @@ -0,0 +1,10 @@ +10 DIM M(3) +20 LET M(1)=1 +30 LET M(2)=2 +40 LET M(3)=3 +50 LET T=0 +60 FOR I=1 TO 3 +70 LET T=T+M(I) +80 NEXT I +90 PRINT T +100 SYSTEM diff --git a/en/basic-practice-20261101/lesson-2/lesson.html b/en/basic-practice-20261101/lesson-2/lesson.html new file mode 100644 index 0000000..6b14816 --- /dev/null +++ b/en/basic-practice-20261101/lesson-2/lesson.html @@ -0,0 +1,6 @@ +A language feature worth understanding

    A language feature worth understanding

    15-minute session: read for 3 minutes, trace for 3, experiment for 7, and complete the check for 2. Spend longer whenever you need.

    Use the language note below to explain this example’s state changes. Identify what is copied, what is shared, what can fail, and what is released. Only some of those questions apply to this particular program: say which ones. Make one deliberate change, predict the effect, and compare it with the actual result. A familiar-looking operator in another language may obey a different rule.

    Line numbers describe program order. GOSUB visits a subroutine and RETURN resumes the caller. SYSTEM exits this interpreter. BASIC dialects differ: a 6502 or Z80 computer does not automatically run this exact dialect.

    The MOD expression deliberately models an unsigned 8-bit wrap: 255 + 1 becomes 0 modulo 256. It does not change the BASIC interpreter’s numeric representation or emulate a 6502 CPU.

    10 REM An 8-bit unsigned wrap is modeled explicitly
    +20 LET VALUE=255
    +30 LET WRAPPED=(VALUE+1) MOD 256
    +40 PRINT WRAPPED
    +50 SYSTEM
    +

    Expected result: 0

    Practice and evidence

    Keep three notes: your prediction, the actual result, and why they match or differ. The completion check grades understanding; the practice task builds skill.

    Language reference

    \ No newline at end of file diff --git a/en/basic-practice-20261101/lesson-2/main.bas b/en/basic-practice-20261101/lesson-2/main.bas new file mode 100644 index 0000000..993afdf --- /dev/null +++ b/en/basic-practice-20261101/lesson-2/main.bas @@ -0,0 +1,5 @@ +10 REM An 8-bit unsigned wrap is modeled explicitly +20 LET VALUE=255 +30 LET WRAPPED=(VALUE+1) MOD 256 +40 PRINT WRAPPED +50 SYSTEM diff --git a/en/basic-practice-20261101/lesson-3/lesson.html b/en/basic-practice-20261101/lesson-3/lesson.html new file mode 100644 index 0000000..f9dc747 --- /dev/null +++ b/en/basic-practice-20261101/lesson-3/lesson.html @@ -0,0 +1,10 @@ +Build, break, and test a study planner

    Build, break, and test a study planner

    15-minute session: read for 3 minutes, trace for 3, experiment for 7, and complete the check for 2. Spend longer whenever you need.

    A useful test compares a result with a requirement. The planner must never report negative remaining work for its stated nonnegative input domain. Run the starter, then deliberately remove the protection for completed counts above total. At least one check should fail. Restore it. Add two named study tasks, a summary, and boundary cases. Save the source and evidence on Agila Forge. Explain every line, including anything suggested by AI.

    Line numbers describe program order. GOSUB visits a subroutine and RETURN resumes the caller. SYSTEM exits this interpreter. BASIC dialects differ: a 6502 or Z80 computer does not automatically run this exact dialect.

    10 LET T=4
    +20 LET D=5
    +30 GOSUB 200
    +40 IF R<>0 THEN PRINT "Test failed"
    +50 IF R=0 THEN PRINT "Passed"
    +60 SYSTEM
    +200 LET R=T-D
    +210 IF R<0 THEN LET R=0
    +220 RETURN
    +

    Expected result: Passed

    Practice and evidence

    Keep three notes: your prediction, the actual result, and why they match or differ. The completion check grades understanding; the practice task builds skill.

    Language reference

    \ No newline at end of file diff --git a/en/basic-practice-20261101/lesson-3/main.bas b/en/basic-practice-20261101/lesson-3/main.bas new file mode 100644 index 0000000..ee5af09 --- /dev/null +++ b/en/basic-practice-20261101/lesson-3/main.bas @@ -0,0 +1,9 @@ +10 LET T=4 +20 LET D=5 +30 GOSUB 200 +40 IF R<>0 THEN PRINT "Test failed" +50 IF R=0 THEN PRINT "Passed" +60 SYSTEM +200 LET R=T-D +210 IF R<0 THEN LET R=0 +220 RETURN diff --git a/en/c-foundations-20261101/README.md b/en/c-foundations-20261101/README.md new file mode 100644 index 0000000..52b8cd9 --- /dev/null +++ b/en/c-foundations-20261101/README.md @@ -0,0 +1,9 @@ +# C — first steps + +[Agila University track](https://edu.agilaos.com/track.php?track=12&lang=en) + +About 15 minutes per lesson. Predict, run, change, explain, then complete the check in University. + +- [Lesson 1: Your first explainable program](lesson-1/lesson.html) +- [Lesson 2: Values and decisions](lesson-2/lesson.html) +- [Lesson 3: Functions and a clear policy](lesson-3/lesson.html) diff --git a/en/c-foundations-20261101/lesson-1/lesson.html b/en/c-foundations-20261101/lesson-1/lesson.html new file mode 100644 index 0000000..b075f39 --- /dev/null +++ b/en/c-foundations-20261101/lesson-1/lesson.html @@ -0,0 +1,8 @@ +Your first explainable program

    Your first explainable program

    15-minute session: read for 3 minutes, trace for 3, experiment for 7, and complete the check for 2. Spend longer whenever you need.

    A program is a set of instructions. Read the example from its entry point to the output statement. Text in quotes is data; the output operation is an instruction. Predict the printed line before running. Change only the message, run again, then remove one required punctuation mark and read the first error. Restore the working source.

    C begins at main. stdio.h declares output functions; puts adds a newline. Semicolons terminate statements. An integer and a pointer are different kinds of value.

    #include <stdio.h>
    +#include <assert.h>
    +
    +int main(void) {
    +    puts("Ready");
    +    return 0;
    +}
    +

    Expected result: Ready

    Practice and evidence

    Keep three notes: your prediction, the actual result, and why they match or differ. The completion check grades understanding; the practice task builds skill.

    Language reference

    \ No newline at end of file diff --git a/en/c-foundations-20261101/lesson-1/main.c b/en/c-foundations-20261101/lesson-1/main.c new file mode 100644 index 0000000..b265eea --- /dev/null +++ b/en/c-foundations-20261101/lesson-1/main.c @@ -0,0 +1,7 @@ +#include +#include + +int main(void) { + puts("Ready"); + return 0; +} diff --git a/en/c-foundations-20261101/lesson-2/lesson.html b/en/c-foundations-20261101/lesson-2/lesson.html new file mode 100644 index 0000000..8e5bbce --- /dev/null +++ b/en/c-foundations-20261101/lesson-2/lesson.html @@ -0,0 +1,9 @@ +Values and decisions

    Values and decisions

    15-minute session: read for 3 minutes, trace for 3, experiment for 7, and complete the check for 2. Spend longer whenever you need.

    A decision chooses which statements run. The policy here is “ready at 80 or higher.” Trace 85, 79, 80, and 81 before running each case. The comparison includes 80. A program that prints the right answer for 85 may still be wrong at the boundary. Add a separate check rejecting scores below 0 or above 100; rejection and needing practice mean different things.

    C begins at main. stdio.h declares output functions; puts adds a newline. Semicolons terminate statements. An integer and a pointer are different kinds of value.

    #include <stdio.h>
    +#include <assert.h>
    +
    +int main(void) {
    +    int score = 85;
    +    if (score >= 80) puts("Ready"); else puts("Practice");
    +    return 0;
    +}
    +

    Expected result: Ready

    Practice and evidence

    Keep three notes: your prediction, the actual result, and why they match or differ. The completion check grades understanding; the practice task builds skill.

    Language reference

    \ No newline at end of file diff --git a/en/c-foundations-20261101/lesson-2/main.c b/en/c-foundations-20261101/lesson-2/main.c new file mode 100644 index 0000000..b9201a6 --- /dev/null +++ b/en/c-foundations-20261101/lesson-2/main.c @@ -0,0 +1,8 @@ +#include +#include + +int main(void) { + int score = 85; + if (score >= 80) puts("Ready"); else puts("Practice"); + return 0; +} diff --git a/en/c-foundations-20261101/lesson-3/lesson.html b/en/c-foundations-20261101/lesson-3/lesson.html new file mode 100644 index 0000000..c930c8e --- /dev/null +++ b/en/c-foundations-20261101/lesson-3/lesson.html @@ -0,0 +1,8 @@ +Functions and a clear policy

    Functions and a clear policy

    15-minute session: read for 3 minutes, trace for 3, experiment for 7, and complete the check for 2. Spend longer whenever you need.

    A function or subroutine names a reusable calculation. Our policy accepts nonnegative total and completed counts and returns zero when completed reaches or exceeds total. Otherwise it returns their difference. Trace (4,1), (4,4), (4,5), and (0,0). Keep printing separate from calculation. Write down why negative inputs are outside this exercise’s domain, then design an explicit rejection policy before accepting external input.

    C begins at main. stdio.h declares output functions; puts adds a newline. Semicolons terminate statements. An integer and a pointer are different kinds of value.

    #include <stdio.h>
    +#include <assert.h>
    +int remaining(int total, int done) { return done >= total ? 0 : total - done; }
    +int main(void) {
    +    printf("%d\n", remaining(4, 1));
    +    return 0;
    +}
    +

    Expected result: 3

    Practice and evidence

    Keep three notes: your prediction, the actual result, and why they match or differ. The completion check grades understanding; the practice task builds skill.

    Language reference

    \ No newline at end of file diff --git a/en/c-foundations-20261101/lesson-3/main.c b/en/c-foundations-20261101/lesson-3/main.c new file mode 100644 index 0000000..680a002 --- /dev/null +++ b/en/c-foundations-20261101/lesson-3/main.c @@ -0,0 +1,7 @@ +#include +#include +int remaining(int total, int done) { return done >= total ? 0 : total - done; } +int main(void) { + printf("%d\n", remaining(4, 1)); + return 0; +} diff --git a/en/c-practice-20261101/README.md b/en/c-practice-20261101/README.md new file mode 100644 index 0000000..46f1486 --- /dev/null +++ b/en/c-practice-20261101/README.md @@ -0,0 +1,9 @@ +# C — build and test + +[Agila University track](https://edu.agilaos.com/track.php?track=12&lang=en) + +About 15 minutes per lesson. Predict, run, change, explain, then complete the check in University. + +- [Lesson 1: Collections and repeated work](lesson-1/lesson.html) +- [Lesson 2: A language feature worth understanding](lesson-2/lesson.html) +- [Lesson 3: Build, break, and test a study planner](lesson-3/lesson.html) diff --git a/en/c-practice-20261101/lesson-1/lesson.html b/en/c-practice-20261101/lesson-1/lesson.html new file mode 100644 index 0000000..221401d --- /dev/null +++ b/en/c-practice-20261101/lesson-1/lesson.html @@ -0,0 +1,11 @@ +Collections and repeated work

    Collections and repeated work

    15-minute session: read for 3 minutes, trace for 3, experiment for 7, and complete the check for 2. Spend longer whenever you need.

    A collection stores related values. The loop visits 1, 2, and 3, updating the total from 0 to 1, then 3, then 6. Record this trace rather than guessing. Identify the first and last valid positions in this language: Pascal can declare a 1-based array, while many other examples use zero-based containers. Add another value and update the bounds correctly. Explain what an empty collection should produce.

    C begins at main. stdio.h declares output functions; puts adds a newline. Semicolons terminate statements. An integer and a pointer are different kinds of value.

    #include <stdio.h>
    +#include <assert.h>
    +
    +int main(void) {
    +    int minutes[] = {1, 2, 3};
    +    int total = 0;
    +    for (size_t i = 0; i < sizeof minutes / sizeof minutes[0]; ++i) total += minutes[i];
    +    printf("%d\n", total);
    +    return 0;
    +}
    +

    Expected result: 6

    Practice and evidence

    Keep three notes: your prediction, the actual result, and why they match or differ. The completion check grades understanding; the practice task builds skill.

    Language reference

    \ No newline at end of file diff --git a/en/c-practice-20261101/lesson-1/main.c b/en/c-practice-20261101/lesson-1/main.c new file mode 100644 index 0000000..e3ee381 --- /dev/null +++ b/en/c-practice-20261101/lesson-1/main.c @@ -0,0 +1,10 @@ +#include +#include + +int main(void) { + int minutes[] = {1, 2, 3}; + int total = 0; + for (size_t i = 0; i < sizeof minutes / sizeof minutes[0]; ++i) total += minutes[i]; + printf("%d\n", total); + return 0; +} diff --git a/en/c-practice-20261101/lesson-2/lesson.html b/en/c-practice-20261101/lesson-2/lesson.html new file mode 100644 index 0000000..4b434a4 --- /dev/null +++ b/en/c-practice-20261101/lesson-2/lesson.html @@ -0,0 +1,11 @@ +A language feature worth understanding

    A language feature worth understanding

    15-minute session: read for 3 minutes, trace for 3, experiment for 7, and complete the check for 2. Spend longer whenever you need.

    Use the language note below to explain this example’s state changes. Identify what is copied, what is shared, what can fail, and what is released. Only some of those questions apply to this particular program: say which ones. Make one deliberate change, predict the effect, and compare it with the actual result. A familiar-looking operator in another language may obey a different rule.

    C begins at main. stdio.h declares output functions; puts adds a newline. Semicolons terminate statements. An integer and a pointer are different kinds of value.

    address points to the live local variable completed; *address updates that variable. Never return a pointer to an expired local or use an arbitrary numeric address.

    #include <stdio.h>
    +#include <assert.h>
    +
    +int main(void) {
    +    int completed = 2;
    +    int *address = &completed;
    +    *address += 1;
    +    printf("%d\n", completed);
    +    return 0;
    +}
    +

    Expected result: 3

    Practice and evidence

    Keep three notes: your prediction, the actual result, and why they match or differ. The completion check grades understanding; the practice task builds skill.

    Language reference

    \ No newline at end of file diff --git a/en/c-practice-20261101/lesson-2/main.c b/en/c-practice-20261101/lesson-2/main.c new file mode 100644 index 0000000..32f8d66 --- /dev/null +++ b/en/c-practice-20261101/lesson-2/main.c @@ -0,0 +1,10 @@ +#include +#include + +int main(void) { + int completed = 2; + int *address = &completed; + *address += 1; + printf("%d\n", completed); + return 0; +} diff --git a/en/c-practice-20261101/lesson-3/lesson.html b/en/c-practice-20261101/lesson-3/lesson.html new file mode 100644 index 0000000..ae6c191 --- /dev/null +++ b/en/c-practice-20261101/lesson-3/lesson.html @@ -0,0 +1,12 @@ +Build, break, and test a study planner

    Build, break, and test a study planner

    15-minute session: read for 3 minutes, trace for 3, experiment for 7, and complete the check for 2. Spend longer whenever you need.

    A useful test compares a result with a requirement. The planner must never report negative remaining work for its stated nonnegative input domain. Run the starter, then deliberately remove the protection for completed counts above total. At least one check should fail. Restore it. Add two named study tasks, a summary, and boundary cases. Save the source and evidence on Agila Forge. Explain every line, including anything suggested by AI.

    C begins at main. stdio.h declares output functions; puts adds a newline. Semicolons terminate statements. An integer and a pointer are different kinds of value.

    #include <stdio.h>
    +#include <assert.h>
    +int remaining(int total, int done) { return done >= total ? 0 : total - done; }
    +int main(void) {
    +    assert(remaining(4,1)==3);
    +    assert(remaining(4,4)==0);
    +    assert(remaining(4,5)==0);
    +    assert(remaining(0,0)==0);
    +    puts("Passed");
    +    return 0;
    +}
    +

    Expected result: Passed

    Practice and evidence

    Keep three notes: your prediction, the actual result, and why they match or differ. The completion check grades understanding; the practice task builds skill.

    Language reference

    \ No newline at end of file diff --git a/en/c-practice-20261101/lesson-3/main.c b/en/c-practice-20261101/lesson-3/main.c new file mode 100644 index 0000000..2d6464c --- /dev/null +++ b/en/c-practice-20261101/lesson-3/main.c @@ -0,0 +1,11 @@ +#include +#include +int remaining(int total, int done) { return done >= total ? 0 : total - done; } +int main(void) { + assert(remaining(4,1)==3); + assert(remaining(4,4)==0); + assert(remaining(4,5)==0); + assert(remaining(0,0)==0); + puts("Passed"); + return 0; +} diff --git a/en/cpp-foundations-20261101/README.md b/en/cpp-foundations-20261101/README.md new file mode 100644 index 0000000..9e86a92 --- /dev/null +++ b/en/cpp-foundations-20261101/README.md @@ -0,0 +1,9 @@ +# C++ — first steps + +[Agila University track](https://edu.agilaos.com/track.php?track=13&lang=en) + +About 15 minutes per lesson. Predict, run, change, explain, then complete the check in University. + +- [Lesson 1: Your first explainable program](lesson-1/lesson.html) +- [Lesson 2: Values and decisions](lesson-2/lesson.html) +- [Lesson 3: Functions and a clear policy](lesson-3/lesson.html) diff --git a/en/cpp-foundations-20261101/lesson-1/lesson.html b/en/cpp-foundations-20261101/lesson-1/lesson.html new file mode 100644 index 0000000..030c18d --- /dev/null +++ b/en/cpp-foundations-20261101/lesson-1/lesson.html @@ -0,0 +1,9 @@ +Your first explainable program

    Your first explainable program

    15-minute session: read for 3 minutes, trace for 3, experiment for 7, and complete the check for 2. Spend longer whenever you need.

    A program is a set of instructions. Read the example from its entry point to the output statement. Text in quotes is data; the output operation is an instruction. Predict the printed line before running. Change only the message, run again, then remove one required punctuation mark and read the first error. Restore the working source.

    std::cout writes output. std::vector manages a growing sequence and releases its storage when its lifetime ends. The lab selects C++17; an example that compiles under a different standard needs its settings recorded.

    #include <iostream>
    +#include <vector>
    +#include <string>
    +#include <cassert>
    +
    +int main() {
    +    std::cout << "Ready\n";
    +}
    +

    Expected result: Ready

    Practice and evidence

    Keep three notes: your prediction, the actual result, and why they match or differ. The completion check grades understanding; the practice task builds skill.

    Language reference

    \ No newline at end of file diff --git a/en/cpp-foundations-20261101/lesson-1/main.cpp b/en/cpp-foundations-20261101/lesson-1/main.cpp new file mode 100644 index 0000000..a6c3a7b --- /dev/null +++ b/en/cpp-foundations-20261101/lesson-1/main.cpp @@ -0,0 +1,8 @@ +#include +#include +#include +#include + +int main() { + std::cout << "Ready\n"; +} diff --git a/en/cpp-foundations-20261101/lesson-2/lesson.html b/en/cpp-foundations-20261101/lesson-2/lesson.html new file mode 100644 index 0000000..b2be1c4 --- /dev/null +++ b/en/cpp-foundations-20261101/lesson-2/lesson.html @@ -0,0 +1,10 @@ +Values and decisions

    Values and decisions

    15-minute session: read for 3 minutes, trace for 3, experiment for 7, and complete the check for 2. Spend longer whenever you need.

    A decision chooses which statements run. The policy here is “ready at 80 or higher.” Trace 85, 79, 80, and 81 before running each case. The comparison includes 80. A program that prints the right answer for 85 may still be wrong at the boundary. Add a separate check rejecting scores below 0 or above 100; rejection and needing practice mean different things.

    std::cout writes output. std::vector manages a growing sequence and releases its storage when its lifetime ends. The lab selects C++17; an example that compiles under a different standard needs its settings recorded.

    #include <iostream>
    +#include <vector>
    +#include <string>
    +#include <cassert>
    +
    +int main() {
    +    int score = 85;
    +    std::cout << (score >= 80 ? "Ready" : "Practice") << "\n";
    +}
    +

    Expected result: Ready

    Practice and evidence

    Keep three notes: your prediction, the actual result, and why they match or differ. The completion check grades understanding; the practice task builds skill.

    Language reference

    \ No newline at end of file diff --git a/en/cpp-foundations-20261101/lesson-2/main.cpp b/en/cpp-foundations-20261101/lesson-2/main.cpp new file mode 100644 index 0000000..a10db5e --- /dev/null +++ b/en/cpp-foundations-20261101/lesson-2/main.cpp @@ -0,0 +1,9 @@ +#include +#include +#include +#include + +int main() { + int score = 85; + std::cout << (score >= 80 ? "Ready" : "Practice") << "\n"; +} diff --git a/en/cpp-foundations-20261101/lesson-3/lesson.html b/en/cpp-foundations-20261101/lesson-3/lesson.html new file mode 100644 index 0000000..20663fc --- /dev/null +++ b/en/cpp-foundations-20261101/lesson-3/lesson.html @@ -0,0 +1,9 @@ +Functions and a clear policy

    Functions and a clear policy

    15-minute session: read for 3 minutes, trace for 3, experiment for 7, and complete the check for 2. Spend longer whenever you need.

    A function or subroutine names a reusable calculation. Our policy accepts nonnegative total and completed counts and returns zero when completed reaches or exceeds total. Otherwise it returns their difference. Trace (4,1), (4,4), (4,5), and (0,0). Keep printing separate from calculation. Write down why negative inputs are outside this exercise’s domain, then design an explicit rejection policy before accepting external input.

    std::cout writes output. std::vector manages a growing sequence and releases its storage when its lifetime ends. The lab selects C++17; an example that compiles under a different standard needs its settings recorded.

    #include <iostream>
    +#include <vector>
    +#include <string>
    +#include <cassert>
    +int remaining(int total, int done) { return done >= total ? 0 : total - done; }
    +int main() {
    +    std::cout << remaining(4, 1) << "\n";
    +}
    +

    Expected result: 3

    Practice and evidence

    Keep three notes: your prediction, the actual result, and why they match or differ. The completion check grades understanding; the practice task builds skill.

    Language reference

    \ No newline at end of file diff --git a/en/cpp-foundations-20261101/lesson-3/main.cpp b/en/cpp-foundations-20261101/lesson-3/main.cpp new file mode 100644 index 0000000..10f44d4 --- /dev/null +++ b/en/cpp-foundations-20261101/lesson-3/main.cpp @@ -0,0 +1,8 @@ +#include +#include +#include +#include +int remaining(int total, int done) { return done >= total ? 0 : total - done; } +int main() { + std::cout << remaining(4, 1) << "\n"; +} diff --git a/en/cpp-practice-20261101/README.md b/en/cpp-practice-20261101/README.md new file mode 100644 index 0000000..2326a08 --- /dev/null +++ b/en/cpp-practice-20261101/README.md @@ -0,0 +1,9 @@ +# C++ — build and test + +[Agila University track](https://edu.agilaos.com/track.php?track=13&lang=en) + +About 15 minutes per lesson. Predict, run, change, explain, then complete the check in University. + +- [Lesson 1: Collections and repeated work](lesson-1/lesson.html) +- [Lesson 2: A language feature worth understanding](lesson-2/lesson.html) +- [Lesson 3: Build, break, and test a study planner](lesson-3/lesson.html) diff --git a/en/cpp-practice-20261101/lesson-1/lesson.html b/en/cpp-practice-20261101/lesson-1/lesson.html new file mode 100644 index 0000000..dddae35 --- /dev/null +++ b/en/cpp-practice-20261101/lesson-1/lesson.html @@ -0,0 +1,12 @@ +Collections and repeated work

    Collections and repeated work

    15-minute session: read for 3 minutes, trace for 3, experiment for 7, and complete the check for 2. Spend longer whenever you need.

    A collection stores related values. The loop visits 1, 2, and 3, updating the total from 0 to 1, then 3, then 6. Record this trace rather than guessing. Identify the first and last valid positions in this language: Pascal can declare a 1-based array, while many other examples use zero-based containers. Add another value and update the bounds correctly. Explain what an empty collection should produce.

    std::cout writes output. std::vector manages a growing sequence and releases its storage when its lifetime ends. The lab selects C++17; an example that compiles under a different standard needs its settings recorded.

    #include <iostream>
    +#include <vector>
    +#include <string>
    +#include <cassert>
    +
    +int main() {
    +    std::vector<int> minutes{1, 2, 3};
    +    int total = 0;
    +    for (int value : minutes) total += value;
    +    std::cout << total << "\n";
    +}
    +

    Expected result: 6

    Practice and evidence

    Keep three notes: your prediction, the actual result, and why they match or differ. The completion check grades understanding; the practice task builds skill.

    Language reference

    \ No newline at end of file diff --git a/en/cpp-practice-20261101/lesson-1/main.cpp b/en/cpp-practice-20261101/lesson-1/main.cpp new file mode 100644 index 0000000..2e336b8 --- /dev/null +++ b/en/cpp-practice-20261101/lesson-1/main.cpp @@ -0,0 +1,11 @@ +#include +#include +#include +#include + +int main() { + std::vector minutes{1, 2, 3}; + int total = 0; + for (int value : minutes) total += value; + std::cout << total << "\n"; +} diff --git a/en/cpp-practice-20261101/lesson-2/lesson.html b/en/cpp-practice-20261101/lesson-2/lesson.html new file mode 100644 index 0000000..417e67b --- /dev/null +++ b/en/cpp-practice-20261101/lesson-2/lesson.html @@ -0,0 +1,12 @@ +A language feature worth understanding

    A language feature worth understanding

    15-minute session: read for 3 minutes, trace for 3, experiment for 7, and complete the check for 2. Spend longer whenever you need.

    Use the language note below to explain this example’s state changes. Identify what is copied, what is shared, what can fail, and what is released. Only some of those questions apply to this particular program: say which ones. Make one deliberate change, predict the effect, and compare it with the actual result. A familiar-looking operator in another language may obey a different rule.

    std::cout writes output. std::vector manages a growing sequence and releases its storage when its lifetime ends. The lab selects C++17; an example that compiles under a different standard needs its settings recorded.

    The vector copy owns a separate sequence. Appending to it leaves the original length at 2 while the copy has 3. This differs from copying a reference to a shared object.

    #include <iostream>
    +#include <vector>
    +#include <string>
    +#include <cassert>
    +
    +int main() {
    +    std::vector<std::string> plan{"Read", "Test"};
    +    auto copy = plan;
    +    copy.push_back("Explain");
    +    std::cout << plan.size() << " " << copy.size() << "\n";
    +}
    +

    Expected result: 2 3

    Practice and evidence

    Keep three notes: your prediction, the actual result, and why they match or differ. The completion check grades understanding; the practice task builds skill.

    Language reference

    \ No newline at end of file diff --git a/en/cpp-practice-20261101/lesson-2/main.cpp b/en/cpp-practice-20261101/lesson-2/main.cpp new file mode 100644 index 0000000..75b4235 --- /dev/null +++ b/en/cpp-practice-20261101/lesson-2/main.cpp @@ -0,0 +1,11 @@ +#include +#include +#include +#include + +int main() { + std::vector plan{"Read", "Test"}; + auto copy = plan; + copy.push_back("Explain"); + std::cout << plan.size() << " " << copy.size() << "\n"; +} diff --git a/en/cpp-practice-20261101/lesson-3/lesson.html b/en/cpp-practice-20261101/lesson-3/lesson.html new file mode 100644 index 0000000..ec8dfd3 --- /dev/null +++ b/en/cpp-practice-20261101/lesson-3/lesson.html @@ -0,0 +1,13 @@ +Build, break, and test a study planner

    Build, break, and test a study planner

    15-minute session: read for 3 minutes, trace for 3, experiment for 7, and complete the check for 2. Spend longer whenever you need.

    A useful test compares a result with a requirement. The planner must never report negative remaining work for its stated nonnegative input domain. Run the starter, then deliberately remove the protection for completed counts above total. At least one check should fail. Restore it. Add two named study tasks, a summary, and boundary cases. Save the source and evidence on Agila Forge. Explain every line, including anything suggested by AI.

    std::cout writes output. std::vector manages a growing sequence and releases its storage when its lifetime ends. The lab selects C++17; an example that compiles under a different standard needs its settings recorded.

    #include <iostream>
    +#include <vector>
    +#include <string>
    +#include <cassert>
    +int remaining(int total, int done) { return done >= total ? 0 : total - done; }
    +int main() {
    +    assert(remaining(4,1)==3);
    +    assert(remaining(4,4)==0);
    +    assert(remaining(4,5)==0);
    +    assert(remaining(0,0)==0);
    +    std::cout << "Passed\n";
    +}
    +

    Expected result: Passed

    Practice and evidence

    Keep three notes: your prediction, the actual result, and why they match or differ. The completion check grades understanding; the practice task builds skill.

    Language reference

    \ No newline at end of file diff --git a/en/cpp-practice-20261101/lesson-3/main.cpp b/en/cpp-practice-20261101/lesson-3/main.cpp new file mode 100644 index 0000000..b9c47dd --- /dev/null +++ b/en/cpp-practice-20261101/lesson-3/main.cpp @@ -0,0 +1,12 @@ +#include +#include +#include +#include +int remaining(int total, int done) { return done >= total ? 0 : total - done; } +int main() { + assert(remaining(4,1)==3); + assert(remaining(4,4)==0); + assert(remaining(4,5)==0); + assert(remaining(0,0)==0); + std::cout << "Passed\n"; +} diff --git a/en/csharp-foundations-20261101/README.md b/en/csharp-foundations-20261101/README.md new file mode 100644 index 0000000..8b91b87 --- /dev/null +++ b/en/csharp-foundations-20261101/README.md @@ -0,0 +1,9 @@ +# C# — first steps + +[Agila University track](https://edu.agilaos.com/track.php?track=14&lang=en) + +About 15 minutes per lesson. Predict, run, change, explain, then complete the check in University. + +- [Lesson 1: Your first explainable program](lesson-1/lesson.html) +- [Lesson 2: Values and decisions](lesson-2/lesson.html) +- [Lesson 3: Functions and a clear policy](lesson-3/lesson.html) diff --git a/en/csharp-foundations-20261101/lesson-1/lesson.html b/en/csharp-foundations-20261101/lesson-1/lesson.html new file mode 100644 index 0000000..7b1a15d --- /dev/null +++ b/en/csharp-foundations-20261101/lesson-1/lesson.html @@ -0,0 +1,9 @@ +Your first explainable program

    Your first explainable program

    15-minute session: read for 3 minutes, trace for 3, experiment for 7, and complete the check for 2. Spend longer whenever you need.

    A program is a set of instructions. Read the example from its entry point to the output statement. Text in quotes is data; the output operation is an instruction. Predict the printed line before running. Change only the message, run again, then remove one required punctuation mark and read the first error. Restore the working source.

    Main is the entry method inside Program. Console.WriteLine prints a line. A class instance can have several references to the same object; assigning a reference does not clone the object.

    using System;
    +using System.Collections.Generic;
    +class Program {
    +
    +    static void Main() {
    +        Console.WriteLine("Ready");
    +    }
    +}
    +

    Expected result: Ready

    Practice and evidence

    Keep three notes: your prediction, the actual result, and why they match or differ. The completion check grades understanding; the practice task builds skill.

    Language reference

    \ No newline at end of file diff --git a/en/csharp-foundations-20261101/lesson-1/main.cs b/en/csharp-foundations-20261101/lesson-1/main.cs new file mode 100644 index 0000000..c83ea08 --- /dev/null +++ b/en/csharp-foundations-20261101/lesson-1/main.cs @@ -0,0 +1,8 @@ +using System; +using System.Collections.Generic; +class Program { + + static void Main() { + Console.WriteLine("Ready"); + } +} diff --git a/en/csharp-foundations-20261101/lesson-2/lesson.html b/en/csharp-foundations-20261101/lesson-2/lesson.html new file mode 100644 index 0000000..e633532 --- /dev/null +++ b/en/csharp-foundations-20261101/lesson-2/lesson.html @@ -0,0 +1,10 @@ +Values and decisions

    Values and decisions

    15-minute session: read for 3 minutes, trace for 3, experiment for 7, and complete the check for 2. Spend longer whenever you need.

    A decision chooses which statements run. The policy here is “ready at 80 or higher.” Trace 85, 79, 80, and 81 before running each case. The comparison includes 80. A program that prints the right answer for 85 may still be wrong at the boundary. Add a separate check rejecting scores below 0 or above 100; rejection and needing practice mean different things.

    Main is the entry method inside Program. Console.WriteLine prints a line. A class instance can have several references to the same object; assigning a reference does not clone the object.

    using System;
    +using System.Collections.Generic;
    +class Program {
    +
    +    static void Main() {
    +        int score = 85;
    +        Console.WriteLine(score >= 80 ? "Ready" : "Practice");
    +    }
    +}
    +

    Expected result: Ready

    Practice and evidence

    Keep three notes: your prediction, the actual result, and why they match or differ. The completion check grades understanding; the practice task builds skill.

    Language reference

    \ No newline at end of file diff --git a/en/csharp-foundations-20261101/lesson-2/main.cs b/en/csharp-foundations-20261101/lesson-2/main.cs new file mode 100644 index 0000000..f3deaec --- /dev/null +++ b/en/csharp-foundations-20261101/lesson-2/main.cs @@ -0,0 +1,9 @@ +using System; +using System.Collections.Generic; +class Program { + + static void Main() { + int score = 85; + Console.WriteLine(score >= 80 ? "Ready" : "Practice"); + } +} diff --git a/en/csharp-foundations-20261101/lesson-3/lesson.html b/en/csharp-foundations-20261101/lesson-3/lesson.html new file mode 100644 index 0000000..854138e --- /dev/null +++ b/en/csharp-foundations-20261101/lesson-3/lesson.html @@ -0,0 +1,9 @@ +Functions and a clear policy

    Functions and a clear policy

    15-minute session: read for 3 minutes, trace for 3, experiment for 7, and complete the check for 2. Spend longer whenever you need.

    A function or subroutine names a reusable calculation. Our policy accepts nonnegative total and completed counts and returns zero when completed reaches or exceeds total. Otherwise it returns their difference. Trace (4,1), (4,4), (4,5), and (0,0). Keep printing separate from calculation. Write down why negative inputs are outside this exercise’s domain, then design an explicit rejection policy before accepting external input.

    Main is the entry method inside Program. Console.WriteLine prints a line. A class instance can have several references to the same object; assigning a reference does not clone the object.

    using System;
    +using System.Collections.Generic;
    +class Program {
    +    static int Remaining(int total, int done) { return done >= total ? 0 : total - done; }
    +    static void Main() {
    +        Console.WriteLine(Remaining(4, 1));
    +    }
    +}
    +

    Expected result: 3

    Practice and evidence

    Keep three notes: your prediction, the actual result, and why they match or differ. The completion check grades understanding; the practice task builds skill.

    Language reference

    \ No newline at end of file diff --git a/en/csharp-foundations-20261101/lesson-3/main.cs b/en/csharp-foundations-20261101/lesson-3/main.cs new file mode 100644 index 0000000..4229f78 --- /dev/null +++ b/en/csharp-foundations-20261101/lesson-3/main.cs @@ -0,0 +1,8 @@ +using System; +using System.Collections.Generic; +class Program { + static int Remaining(int total, int done) { return done >= total ? 0 : total - done; } + static void Main() { + Console.WriteLine(Remaining(4, 1)); + } +} diff --git a/en/csharp-practice-20261101/README.md b/en/csharp-practice-20261101/README.md new file mode 100644 index 0000000..4e8047b --- /dev/null +++ b/en/csharp-practice-20261101/README.md @@ -0,0 +1,9 @@ +# C# — build and test + +[Agila University track](https://edu.agilaos.com/track.php?track=14&lang=en) + +About 15 minutes per lesson. Predict, run, change, explain, then complete the check in University. + +- [Lesson 1: Collections and repeated work](lesson-1/lesson.html) +- [Lesson 2: A language feature worth understanding](lesson-2/lesson.html) +- [Lesson 3: Build, break, and test a study planner](lesson-3/lesson.html) diff --git a/en/csharp-practice-20261101/lesson-1/lesson.html b/en/csharp-practice-20261101/lesson-1/lesson.html new file mode 100644 index 0000000..8217daa --- /dev/null +++ b/en/csharp-practice-20261101/lesson-1/lesson.html @@ -0,0 +1,12 @@ +Collections and repeated work

    Collections and repeated work

    15-minute session: read for 3 minutes, trace for 3, experiment for 7, and complete the check for 2. Spend longer whenever you need.

    A collection stores related values. The loop visits 1, 2, and 3, updating the total from 0 to 1, then 3, then 6. Record this trace rather than guessing. Identify the first and last valid positions in this language: Pascal can declare a 1-based array, while many other examples use zero-based containers. Add another value and update the bounds correctly. Explain what an empty collection should produce.

    Main is the entry method inside Program. Console.WriteLine prints a line. A class instance can have several references to the same object; assigning a reference does not clone the object.

    using System;
    +using System.Collections.Generic;
    +class Program {
    +
    +    static void Main() {
    +        int[] minutes = {1, 2, 3};
    +        int total = 0;
    +        foreach (int value in minutes) total += value;
    +        Console.WriteLine(total);
    +    }
    +}
    +

    Expected result: 6

    Practice and evidence

    Keep three notes: your prediction, the actual result, and why they match or differ. The completion check grades understanding; the practice task builds skill.

    Language reference

    \ No newline at end of file diff --git a/en/csharp-practice-20261101/lesson-1/main.cs b/en/csharp-practice-20261101/lesson-1/main.cs new file mode 100644 index 0000000..9f7e352 --- /dev/null +++ b/en/csharp-practice-20261101/lesson-1/main.cs @@ -0,0 +1,11 @@ +using System; +using System.Collections.Generic; +class Program { + + static void Main() { + int[] minutes = {1, 2, 3}; + int total = 0; + foreach (int value in minutes) total += value; + Console.WriteLine(total); + } +} diff --git a/en/csharp-practice-20261101/lesson-2/lesson.html b/en/csharp-practice-20261101/lesson-2/lesson.html new file mode 100644 index 0000000..85575d7 --- /dev/null +++ b/en/csharp-practice-20261101/lesson-2/lesson.html @@ -0,0 +1,12 @@ +A language feature worth understanding

    A language feature worth understanding

    15-minute session: read for 3 minutes, trace for 3, experiment for 7, and complete the check for 2. Spend longer whenever you need.

    Use the language note below to explain this example’s state changes. Identify what is copied, what is shared, what can fail, and what is released. Only some of those questions apply to this particular program: say which ones. Make one deliberate change, predict the effect, and compare it with the actual result. A familiar-looking operator in another language may obey a different rule.

    Main is the entry method inside Program. Console.WriteLine prints a line. A class instance can have several references to the same object; assigning a reference does not clone the object.

    using System;
    +using System.Collections.Generic;
    +class Program {
    +    class Plan { public int Done = 2; }
    +    static void Main() {
    +        var plan = new Plan();
    +        var alias = plan;
    +        alias.Done = 3;
    +        Console.WriteLine(plan.Done);
    +    }
    +}
    +

    Expected result: 3

    Practice and evidence

    Keep three notes: your prediction, the actual result, and why they match or differ. The completion check grades understanding; the practice task builds skill.

    Language reference

    \ No newline at end of file diff --git a/en/csharp-practice-20261101/lesson-2/main.cs b/en/csharp-practice-20261101/lesson-2/main.cs new file mode 100644 index 0000000..721eb00 --- /dev/null +++ b/en/csharp-practice-20261101/lesson-2/main.cs @@ -0,0 +1,11 @@ +using System; +using System.Collections.Generic; +class Program { + class Plan { public int Done = 2; } + static void Main() { + var plan = new Plan(); + var alias = plan; + alias.Done = 3; + Console.WriteLine(plan.Done); + } +} diff --git a/en/csharp-practice-20261101/lesson-3/lesson.html b/en/csharp-practice-20261101/lesson-3/lesson.html new file mode 100644 index 0000000..4f1539f --- /dev/null +++ b/en/csharp-practice-20261101/lesson-3/lesson.html @@ -0,0 +1,11 @@ +Build, break, and test a study planner

    Build, break, and test a study planner

    15-minute session: read for 3 minutes, trace for 3, experiment for 7, and complete the check for 2. Spend longer whenever you need.

    A useful test compares a result with a requirement. The planner must never report negative remaining work for its stated nonnegative input domain. Run the starter, then deliberately remove the protection for completed counts above total. At least one check should fail. Restore it. Add two named study tasks, a summary, and boundary cases. Save the source and evidence on Agila Forge. Explain every line, including anything suggested by AI.

    Main is the entry method inside Program. Console.WriteLine prints a line. A class instance can have several references to the same object; assigning a reference does not clone the object.

    using System;
    +using System.Collections.Generic;
    +class Program {
    +    static int Remaining(int total, int done) { return done >= total ? 0 : total - done; }
    +    static void Main() {
    +        if (Remaining(4,1)!=3 || Remaining(4,4)!=0 || Remaining(4,5)!=0 || Remaining(0,0)!=0)
    +            throw new Exception("Test failed");
    +        Console.WriteLine("Passed");
    +    }
    +}
    +

    Expected result: Passed

    Practice and evidence

    Keep three notes: your prediction, the actual result, and why they match or differ. The completion check grades understanding; the practice task builds skill.

    Language reference

    \ No newline at end of file diff --git a/en/csharp-practice-20261101/lesson-3/main.cs b/en/csharp-practice-20261101/lesson-3/main.cs new file mode 100644 index 0000000..60b14ae --- /dev/null +++ b/en/csharp-practice-20261101/lesson-3/main.cs @@ -0,0 +1,10 @@ +using System; +using System.Collections.Generic; +class Program { + static int Remaining(int total, int done) { return done >= total ? 0 : total - done; } + static void Main() { + if (Remaining(4,1)!=3 || Remaining(4,4)!=0 || Remaining(4,5)!=0 || Remaining(0,0)!=0) + throw new Exception("Test failed"); + Console.WriteLine("Passed"); + } +} diff --git a/en/expanded-22-1/README.md b/en/expanded-22-1/README.md new file mode 100644 index 0000000..6346da7 --- /dev/null +++ b/en/expanded-22-1/README.md @@ -0,0 +1,9 @@ +# CPU Architecture & Portability · 1 + +[Agila University track](https://edu.agilaos.com/track.php?track=22&lang=en) + +About 15 minutes per lesson. Predict, run, change, explain, then complete the check in University. + +- [Lesson 1: Source, machine code, and ISA](lesson-1/lesson.html) +- [Lesson 2: Bits, bytes, and integer width](lesson-2/lesson.html) +- [Lesson 3: Endianness is a byte-order rule](lesson-3/lesson.html) diff --git a/en/expanded-22-1/lesson-1/lesson.html b/en/expanded-22-1/lesson-1/lesson.html new file mode 100644 index 0000000..c60e388 --- /dev/null +++ b/en/expanded-22-1/lesson-1/lesson.html @@ -0,0 +1,3 @@ +Source, machine code, and ISA

    Source, machine code, and ISA

    15-minute session: read for 3 minutes, trace for 3, experiment for 7, and complete the check for 2. Spend longer whenever you need.

    A CPU executes instructions from its instruction-set architecture (ISA). Source text needs a compiler or interpreter. The same Python source may work on x86-64 and Arm64 when each has a compatible interpreter; a compiled x86-64 executable is a different artifact. Print the lab machine’s architecture, then write a table separating source language, ISA, operating system, and runtime. An emulator implements another machine’s behavior and is not the same as recompilation.

    import platform
    +print(platform.machine())
    +

    Practice and evidence

    Keep three notes: your prediction, the actual result, and why they match or differ. The completion check grades understanding; the practice task builds skill.

    Language reference: www.intel.com

    Language reference: developer.arm.com

    Language reference: docs.riscv.org

    \ No newline at end of file diff --git a/en/expanded-22-1/lesson-1/main.py b/en/expanded-22-1/lesson-1/main.py new file mode 100644 index 0000000..e8b7ae6 --- /dev/null +++ b/en/expanded-22-1/lesson-1/main.py @@ -0,0 +1,2 @@ +import platform +print(platform.machine()) diff --git a/en/expanded-22-1/lesson-2/lesson.html b/en/expanded-22-1/lesson-2/lesson.html new file mode 100644 index 0000000..06eb525 --- /dev/null +++ b/en/expanded-22-1/lesson-2/lesson.html @@ -0,0 +1,5 @@ +Bits, bytes, and integer width

    Bits, bytes, and integer width

    15-minute session: read for 3 minutes, trace for 3, experiment for 7, and complete the check for 2. Spend longer whenever you need.

    Eight bits represent 256 bit patterns. Unsigned 8-bit values range from 0 to 255. The model uses modulo arithmetic to wrap 256 to zero; Python integers do not naturally have this fixed width. Compare signed and unsigned interpretations of 255. Predict the range for 16 bits. Do not infer pointer size or a language’s integer size solely from a CPU’s marketing name.

    bits=8
    +print(2**bits)
    +print((255+1) % (2**bits))
    +

    Expected result: 256 +0

    Practice and evidence

    Keep three notes: your prediction, the actual result, and why they match or differ. The completion check grades understanding; the practice task builds skill.

    Language reference: www.intel.com

    Language reference: developer.arm.com

    Language reference: docs.riscv.org

    \ No newline at end of file diff --git a/en/expanded-22-1/lesson-2/main.py b/en/expanded-22-1/lesson-2/main.py new file mode 100644 index 0000000..cea60d9 --- /dev/null +++ b/en/expanded-22-1/lesson-2/main.py @@ -0,0 +1,3 @@ +bits=8 +print(2**bits) +print((255+1) % (2**bits)) diff --git a/en/expanded-22-1/lesson-3/lesson.html b/en/expanded-22-1/lesson-3/lesson.html new file mode 100644 index 0000000..8696069 --- /dev/null +++ b/en/expanded-22-1/lesson-3/lesson.html @@ -0,0 +1,5 @@ +Endianness is a byte-order rule

    Endianness is a byte-order rule

    15-minute session: read for 3 minutes, trace for 3, experiment for 7, and complete the check for 2. Spend longer whenever you need.

    The number 0x1234 can be stored as bytes 34 12 in little-endian order or 12 34 in big-endian order. The number is unchanged; the representation changes. Run both conversions and decode them back. A file or network protocol must specify byte order instead of copying a host struct blindly. C struct padding and alignment are separate concerns.

    value=0x1234
    +print(value.to_bytes(2,"little").hex())
    +print(value.to_bytes(2,"big").hex())
    +

    Expected result: 3412 +1234

    Practice and evidence

    Keep three notes: your prediction, the actual result, and why they match or differ. The completion check grades understanding; the practice task builds skill.

    Language reference: www.intel.com

    Language reference: developer.arm.com

    Language reference: docs.riscv.org

    \ No newline at end of file diff --git a/en/expanded-22-1/lesson-3/main.py b/en/expanded-22-1/lesson-3/main.py new file mode 100644 index 0000000..ef772c3 --- /dev/null +++ b/en/expanded-22-1/lesson-3/main.py @@ -0,0 +1,3 @@ +value=0x1234 +print(value.to_bytes(2,"little").hex()) +print(value.to_bytes(2,"big").hex()) diff --git a/en/expanded-22-2/README.md b/en/expanded-22-2/README.md new file mode 100644 index 0000000..3eb7e63 --- /dev/null +++ b/en/expanded-22-2/README.md @@ -0,0 +1,9 @@ +# CPU Architecture & Portability · 2 + +[Agila University track](https://edu.agilaos.com/track.php?track=22&lang=en) + +About 15 minutes per lesson. Predict, run, change, explain, then complete the check in University. + +- [Lesson 1: Compare x86-64, Arm64, and RISC-V](lesson-1/lesson.html) +- [Lesson 2: BASIC on 6502, Z80, and modern hosts](lesson-2/lesson.html) +- [Lesson 3: A reproducible portability report](lesson-3/lesson.html) diff --git a/en/expanded-22-2/lesson-1/lesson.html b/en/expanded-22-2/lesson-1/lesson.html new file mode 100644 index 0000000..060a2b0 --- /dev/null +++ b/en/expanded-22-2/lesson-1/lesson.html @@ -0,0 +1 @@ +Compare x86-64, Arm64, and RISC-V

    Compare x86-64, Arm64, and RISC-V

    15-minute session: read for 3 minutes, trace for 3, experiment for 7, and complete the check for 2. Spend longer whenever you need.

    x86-64, AArch64, and RV64 use different instruction encodings and register conventions. AArch64 names 64-bit general registers X0–X30; RV64I has x0–x31 with x0 fixed to zero. The ABI adds calling conventions, stack rules, and binary interfaces. Compare a function call in the official manuals, then list which assumptions a compiler backend must change. A shared 64-bit label does not make binaries interchangeable.

    Practice and evidence

    Keep three notes: your prediction, the actual result, and why they match or differ. The completion check grades understanding; the practice task builds skill.

    Language reference: www.intel.com

    Language reference: developer.arm.com

    Language reference: docs.riscv.org

    \ No newline at end of file diff --git a/en/expanded-22-2/lesson-2/lesson.html b/en/expanded-22-2/lesson-2/lesson.html new file mode 100644 index 0000000..8a99b1b --- /dev/null +++ b/en/expanded-22-2/lesson-2/lesson.html @@ -0,0 +1 @@ +BASIC on 6502, Z80, and modern hosts

    BASIC on 6502, Z80, and modern hosts

    15-minute session: read for 3 minutes, trace for 3, experiment for 7, and complete the check for 2. Spend longer whenever you need.

    A BASIC dialect belongs to an interpreter or compiler, not directly to a CPU. Classic 6502 and Z80 systems often provided different BASIC dialects and device commands. Separate portable arithmetic from machine-specific graphics, PEEK/POKE addresses, and file commands. Port a three-line greeting by consulting the target dialect manual. In this lab Bywater runs on Linux; it does not emulate either historical machine.

    Practice and evidence

    Keep three notes: your prediction, the actual result, and why they match or differ. The completion check grades understanding; the practice task builds skill.

    Language reference: www.intel.com

    Language reference: developer.arm.com

    Language reference: docs.riscv.org

    \ No newline at end of file diff --git a/en/expanded-22-2/lesson-3/lesson.html b/en/expanded-22-2/lesson-3/lesson.html new file mode 100644 index 0000000..61a0888 --- /dev/null +++ b/en/expanded-22-2/lesson-3/lesson.html @@ -0,0 +1 @@ +A reproducible portability report

    A reproducible portability report

    15-minute session: read for 3 minutes, trace for 3, experiment for 7, and complete the check for 2. Spend longer whenever you need.

    Choose one small program and two target environments. Record compiler/interpreter version, ISA, OS, input, expected result, actual result, and limitations. Distinguish compile success from a successful target execution. If only one target is available, mark the other untested. Use the official Intel, Arm, and RISC-V references linked in the course resources. Your next step is the core and memory mapping track.

    Practice and evidence

    Keep three notes: your prediction, the actual result, and why they match or differ. The completion check grades understanding; the practice task builds skill.

    Language reference: www.intel.com

    Language reference: developer.arm.com

    Language reference: docs.riscv.org

    \ No newline at end of file diff --git a/en/expanded-23-1/README.md b/en/expanded-23-1/README.md new file mode 100644 index 0000000..fc0389c --- /dev/null +++ b/en/expanded-23-1/README.md @@ -0,0 +1,9 @@ +# Build Open Agila OS · 1 + +[Agila University track](https://edu.agilaos.com/track.php?track=23&lang=en) + +About 15 minutes per lesson. Predict, run, change, explain, then complete the check in University. + +- [Lesson 1: Build the public kernel prototype](lesson-1/lesson.html) +- [Lesson 2: Trace initialization honestly](lesson-2/lesson.html) +- [Lesson 3: Model page translation](lesson-3/lesson.html) diff --git a/en/expanded-23-1/lesson-1/lesson.html b/en/expanded-23-1/lesson-1/lesson.html new file mode 100644 index 0000000..8a492ea --- /dev/null +++ b/en/expanded-23-1/lesson-1/lesson.html @@ -0,0 +1 @@ +Build the public kernel prototype

    Build the public kernel prototype

    15-minute session: read for 3 minutes, trace for 3, experiment for 7, and complete the check for 2. Spend longer whenever you need.

    The public open_kernel repository uses Ada, kernel.gpr, and a Makefile. make run builds and executes a host program. It is not a bootable bare-metal image. Main calls Kernel.Start. Inspect the current source before changing it; the reference revision is 9af96aa.

    Practice and evidence: Clone from Forge in your development environment, install GNAT and gprbuild, run make and make run, and record the exact commit and output. The browser lab is single-file; use your own development environment for this multi-file build.

    Practice and evidence

    Keep three notes: your prediction, the actual result, and why they match or differ. The completion check grades understanding; the practice task builds skill.

    Language reference: git.agilaos.com

    Language reference: git.agilaos.com

    \ No newline at end of file diff --git a/en/expanded-23-1/lesson-2/lesson.html b/en/expanded-23-1/lesson-2/lesson.html new file mode 100644 index 0000000..1a13921 --- /dev/null +++ b/en/expanded-23-1/lesson-2/lesson.html @@ -0,0 +1 @@ +Trace initialization honestly

    Trace initialization honestly

    15-minute session: read for 3 minutes, trace for 3, experiment for 7, and complete the check for 2. Spend longer whenever you need.

    Kernel.Start calls CPU, Memory, Console, Interrupt, Timer, and Scheduler initialization. Several bodies currently contain null. The subsequent initialized messages do not prove those subsystems exist. Trace each call into its body and classify it as implemented behavior, host-backed behavior, or a stub.

    Practice and evidence: Create an evidence table with file, procedure, observable behavior, and one test still needed. Console currently uses Ada.Text_IO, which relies on the host runtime.

    Practice and evidence

    Keep three notes: your prediction, the actual result, and why they match or differ. The completion check grades understanding; the practice task builds skill.

    Language reference: git.agilaos.com

    Language reference: git.agilaos.com

    \ No newline at end of file diff --git a/en/expanded-23-1/lesson-3/lesson.html b/en/expanded-23-1/lesson-3/lesson.html new file mode 100644 index 0000000..013e243 --- /dev/null +++ b/en/expanded-23-1/lesson-3/lesson.html @@ -0,0 +1,6 @@ +Model page translation

    Model page translation

    15-minute session: read for 3 minutes, trace for 3, experiment for 7, and complete the check for 2. Spend longer whenever you need.

    A virtual address can be split into page number and offset. This model uses 4096-byte pages and a dictionary from virtual page to physical frame. Real page tables also encode permissions and are managed by architecture-specific hardware and kernel code. This is a model, not access to real physical memory.

    Practice and evidence: Predict the output, remove mapping 2, and handle the missing page explicitly. Add read/write permissions to your model and a test that denies a write.

    page_size=4096
    +table={2:7}
    +address=2*page_size+13
    +page,offset=divmod(address,page_size)
    +print(table[page]*page_size+offset)
    +

    Expected result: 28685

    Practice and evidence

    Keep three notes: your prediction, the actual result, and why they match or differ. The completion check grades understanding; the practice task builds skill.

    Language reference: git.agilaos.com

    Language reference: git.agilaos.com

    \ No newline at end of file diff --git a/en/expanded-23-1/lesson-3/main.py b/en/expanded-23-1/lesson-3/main.py new file mode 100644 index 0000000..935c7a2 --- /dev/null +++ b/en/expanded-23-1/lesson-3/main.py @@ -0,0 +1,5 @@ +page_size=4096 +table={2:7} +address=2*page_size+13 +page,offset=divmod(address,page_size) +print(table[page]*page_size+offset) diff --git a/en/expanded-23-2/README.md b/en/expanded-23-2/README.md new file mode 100644 index 0000000..3735a97 --- /dev/null +++ b/en/expanded-23-2/README.md @@ -0,0 +1,9 @@ +# Build Open Agila OS · 2 + +[Agila University track](https://edu.agilaos.com/track.php?track=23&lang=en) + +About 15 minutes per lesson. Predict, run, change, explain, then complete the check in University. + +- [Lesson 1: A scheduler with observable order](lesson-1/lesson.html) +- [Lesson 2: Interrupts and driver boundaries](lesson-2/lesson.html) +- [Lesson 3: From host prototype toward a bootable system](lesson-3/lesson.html) diff --git a/en/expanded-23-2/lesson-1/lesson.html b/en/expanded-23-2/lesson-1/lesson.html new file mode 100644 index 0000000..e37940b --- /dev/null +++ b/en/expanded-23-2/lesson-1/lesson.html @@ -0,0 +1,9 @@ +A scheduler with observable order

    A scheduler with observable order

    15-minute session: read for 3 minutes, trace for 3, experiment for 7, and complete the check for 2. Spend longer whenever you need.

    A scheduler chooses which runnable task receives a turn. Model round-robin with a queue. Each task consumes one unit before returning to the queue if work remains. This deterministic model omits interrupts, context switching, and true parallel execution.

    Practice and evidence: Trace A=2 and B=1, then add an empty task and document whether it should enter the runnable queue. Test fairness by checking the execution order.

    from collections import deque
    +ready=deque([("A",2),("B",1)])
    +order=[]
    +while ready:
    +    name,left=ready.popleft()
    +    order.append(name)
    +    if left>1: ready.append((name,left-1))
    +print(" ".join(order))
    +

    Expected result: A B A

    Practice and evidence

    Keep three notes: your prediction, the actual result, and why they match or differ. The completion check grades understanding; the practice task builds skill.

    Language reference: git.agilaos.com

    Language reference: git.agilaos.com

    \ No newline at end of file diff --git a/en/expanded-23-2/lesson-1/main.py b/en/expanded-23-2/lesson-1/main.py new file mode 100644 index 0000000..b66a647 --- /dev/null +++ b/en/expanded-23-2/lesson-1/main.py @@ -0,0 +1,8 @@ +from collections import deque +ready=deque([("A",2),("B",1)]) +order=[] +while ready: + name,left=ready.popleft() + order.append(name) + if left>1: ready.append((name,left-1)) +print(" ".join(order)) diff --git a/en/expanded-23-2/lesson-2/lesson.html b/en/expanded-23-2/lesson-2/lesson.html new file mode 100644 index 0000000..2913fe3 --- /dev/null +++ b/en/expanded-23-2/lesson-2/lesson.html @@ -0,0 +1 @@ +Interrupts and driver boundaries

    Interrupts and driver boundaries

    15-minute session: read for 3 minutes, trace for 3, experiment for 7, and complete the check for 2. Spend longer whenever you need.

    A hardware interrupt transfers control through architecture-specific entry code. A host callback is not a hardware interrupt. A driver validates device state, manages buffers, and observes ordering rules. Begin with a fake device so you can test invalid lengths and timeouts without writing to arbitrary hardware addresses.

    Practice and evidence: Design a read(buffer,length) contract with success, invalid argument, and timeout outcomes. Write one test per outcome before choosing an emulator and documented device.

    Practice and evidence

    Keep three notes: your prediction, the actual result, and why they match or differ. The completion check grades understanding; the practice task builds skill.

    Language reference: git.agilaos.com

    Language reference: git.agilaos.com

    \ No newline at end of file diff --git a/en/expanded-23-2/lesson-3/lesson.html b/en/expanded-23-2/lesson-3/lesson.html new file mode 100644 index 0000000..46b0dc5 --- /dev/null +++ b/en/expanded-23-2/lesson-3/lesson.html @@ -0,0 +1 @@ +From host prototype toward a bootable system

    From host prototype toward a bootable system

    15-minute session: read for 3 minutes, trace for 3, experiment for 7, and complete the check for 2. Spend longer whenever you need.

    A bootable kernel needs a chosen target, boot protocol, linker layout, freestanding runtime, exception entry, memory management, and drivers. The current repository does not supply all of these. Choose one small contribution: replace a stub with a tested host model, add a boundary test, or document an interface. Later milestones must boot in an emulator and prove each subsystem through observations.

    Practice and evidence: Create a Forge branch, commit the change and test evidence, and open a pull request. Your report must distinguish a host test from a boot test. A track certificate records these lesson checks; it is not a claim that a production OS is complete.

    Practice and evidence

    Keep three notes: your prediction, the actual result, and why they match or differ. The completion check grades understanding; the practice task builds skill.

    Language reference: git.agilaos.com

    Language reference: git.agilaos.com

    \ No newline at end of file diff --git a/en/expanded-24-1/README.md b/en/expanded-24-1/README.md new file mode 100644 index 0000000..3764340 --- /dev/null +++ b/en/expanded-24-1/README.md @@ -0,0 +1,9 @@ +# Server OS Engineering · 1 + +[Agila University track](https://edu.agilaos.com/track.php?track=24&lang=en) + +About 15 minutes per lesson. Predict, run, change, explain, then complete the check in University. + +- [Lesson 1: What makes a server operating system?](lesson-1/lesson.html) +- [Lesson 2: Service state and recovery](lesson-2/lesson.html) +- [Lesson 3: Accounts and least privilege](lesson-3/lesson.html) diff --git a/en/expanded-24-1/lesson-1/lesson.html b/en/expanded-24-1/lesson-1/lesson.html new file mode 100644 index 0000000..094a059 --- /dev/null +++ b/en/expanded-24-1/lesson-1/lesson.html @@ -0,0 +1 @@ +What makes a server operating system?

    What makes a server operating system?

    15-minute session: read for 3 minutes, trace for 3, experiment for 7, and complete the check for 2. Spend longer whenever you need.

    A server OS combines a kernel with boot and service management, storage, networking, accounts, updates, and recovery. Building a server distribution is different from writing a new kernel. Choose which goal your project has. Draw the request path from a network interface through a service to storage, and mark every trust boundary.

    Practice and evidence: Predict the example or draw its state transitions. Change one assumption, test the boundary, and record the actual result. Explain what this small model does not establish about a production system.

    Practice and evidence

    Keep three notes: your prediction, the actual result, and why they match or differ. The completion check grades understanding; the practice task builds skill.

    \ No newline at end of file diff --git a/en/expanded-24-1/lesson-2/lesson.html b/en/expanded-24-1/lesson-2/lesson.html new file mode 100644 index 0000000..c322e6e --- /dev/null +++ b/en/expanded-24-1/lesson-2/lesson.html @@ -0,0 +1,3 @@ +Service state and recovery

    Service state and recovery

    15-minute session: read for 3 minutes, trace for 3, experiment for 7, and complete the check for 2. Spend longer whenever you need.

    A service can be stopped, starting, ready, failed, or restarting. Readiness means it can serve its intended workload, not merely that a PID exists. A restart policy needs backoff and a limit to avoid an endless crash loop. Model startup failure and a dependency becoming available.

    Practice and evidence: Predict the example or draw its state transitions. Change one assumption, test the boundary, and record the actual result. Explain what this small model does not establish about a production system.

    delays=[min(2**attempt,30) for attempt in range(6)]
    +print(delays)
    +

    Expected result: [1, 2, 4, 8, 16, 30]

    Practice and evidence

    Keep three notes: your prediction, the actual result, and why they match or differ. The completion check grades understanding; the practice task builds skill.

    \ No newline at end of file diff --git a/en/expanded-24-1/lesson-2/main.py b/en/expanded-24-1/lesson-2/main.py new file mode 100644 index 0000000..42bd164 --- /dev/null +++ b/en/expanded-24-1/lesson-2/main.py @@ -0,0 +1,2 @@ +delays=[min(2**attempt,30) for attempt in range(6)] +print(delays) diff --git a/en/expanded-24-1/lesson-3/lesson.html b/en/expanded-24-1/lesson-3/lesson.html new file mode 100644 index 0000000..eb7a7bf --- /dev/null +++ b/en/expanded-24-1/lesson-3/lesson.html @@ -0,0 +1,6 @@ +Accounts and least privilege

    Accounts and least privilege

    15-minute session: read for 3 minutes, trace for 3, experiment for 7, and complete the check for 2. Spend longer whenever you need.

    Give each service only the files and capabilities it needs. Separate administrator access from application identity. Authentication asks who is calling; authorization asks which action that identity may perform. Test a student trying to read another student’s record. A hidden button is not an access-control check.

    Practice and evidence: Predict the example or draw its state transitions. Change one assumption, test the boundary, and record the actual result. Explain what this small model does not establish about a production system.

    def can_read(caller,owner):
    +    return caller==owner
    +assert can_read(7,7)
    +assert not can_read(7,8)
    +print("Passed")
    +

    Expected result: Passed

    Practice and evidence

    Keep three notes: your prediction, the actual result, and why they match or differ. The completion check grades understanding; the practice task builds skill.

    \ No newline at end of file diff --git a/en/expanded-24-1/lesson-3/main.py b/en/expanded-24-1/lesson-3/main.py new file mode 100644 index 0000000..d9cd1f0 --- /dev/null +++ b/en/expanded-24-1/lesson-3/main.py @@ -0,0 +1,5 @@ +def can_read(caller,owner): + return caller==owner +assert can_read(7,7) +assert not can_read(7,8) +print("Passed") diff --git a/en/expanded-24-2/README.md b/en/expanded-24-2/README.md new file mode 100644 index 0000000..57f899d --- /dev/null +++ b/en/expanded-24-2/README.md @@ -0,0 +1,9 @@ +# Server OS Engineering · 2 + +[Agila University track](https://edu.agilaos.com/track.php?track=24&lang=en) + +About 15 minutes per lesson. Predict, run, change, explain, then complete the check in University. + +- [Lesson 1: Durable storage and restore tests](lesson-1/lesson.html) +- [Lesson 2: Observe latency, errors, and capacity](lesson-2/lesson.html) +- [Lesson 3: A server-system capstone](lesson-3/lesson.html) diff --git a/en/expanded-24-2/lesson-1/lesson.html b/en/expanded-24-2/lesson-1/lesson.html new file mode 100644 index 0000000..7b1577c --- /dev/null +++ b/en/expanded-24-2/lesson-1/lesson.html @@ -0,0 +1,6 @@ +Durable storage and restore tests

    Durable storage and restore tests

    15-minute session: read for 3 minutes, trace for 3, experiment for 7, and complete the check for 2. Spend longer whenever you need.

    A backup is useful only if it restores the data and required metadata. Plan consistent database and repository snapshots together. A checksum detects changed bytes; it does not prove a database is logically valid. Define a recovery-point target and recovery-time target. Practice a restore in an isolated environment before an outage.

    Practice and evidence: Predict the example or draw its state transitions. Change one assumption, test the boundary, and record the actual result. Explain what this small model does not establish about a production system.

    import hashlib
    +original=b"study record v1"
    +restored=bytes(original)
    +assert hashlib.sha256(original).digest()==hashlib.sha256(restored).digest()
    +print("Bytes match; application checks still needed")
    +

    Expected result: Bytes match; application checks still needed

    Practice and evidence

    Keep three notes: your prediction, the actual result, and why they match or differ. The completion check grades understanding; the practice task builds skill.

    \ No newline at end of file diff --git a/en/expanded-24-2/lesson-1/main.py b/en/expanded-24-2/lesson-1/main.py new file mode 100644 index 0000000..b13abc7 --- /dev/null +++ b/en/expanded-24-2/lesson-1/main.py @@ -0,0 +1,5 @@ +import hashlib +original=b"study record v1" +restored=bytes(original) +assert hashlib.sha256(original).digest()==hashlib.sha256(restored).digest() +print("Bytes match; application checks still needed") diff --git a/en/expanded-24-2/lesson-2/lesson.html b/en/expanded-24-2/lesson-2/lesson.html new file mode 100644 index 0000000..0483aa5 --- /dev/null +++ b/en/expanded-24-2/lesson-2/lesson.html @@ -0,0 +1,6 @@ +Observe latency, errors, and capacity

    Observe latency, errors, and capacity

    15-minute session: read for 3 minutes, trace for 3, experiment for 7, and complete the check for 2. Spend longer whenever you need.

    Averages hide slow requests. Record a latency distribution, error count, resource use, and the measurement window. Avoid logging passwords or private payloads. The sample computes a median from fixed demonstration data; it is not a measurement of the server. Replace the data with a bounded local experiment and label its environment.

    Practice and evidence: Predict the example or draw its state transitions. Change one assumption, test the boundary, and record the actual result. Explain what this small model does not establish about a production system.

    from statistics import median
    +samples_ms=[2,3,3,4,40]
    +print(median(samples_ms))
    +print(max(samples_ms))
    +

    Expected result: 3 +40

    Practice and evidence

    Keep three notes: your prediction, the actual result, and why they match or differ. The completion check grades understanding; the practice task builds skill.

    \ No newline at end of file diff --git a/en/expanded-24-2/lesson-2/main.py b/en/expanded-24-2/lesson-2/main.py new file mode 100644 index 0000000..d7d32f9 --- /dev/null +++ b/en/expanded-24-2/lesson-2/main.py @@ -0,0 +1,4 @@ +from statistics import median +samples_ms=[2,3,3,4,40] +print(median(samples_ms)) +print(max(samples_ms)) diff --git a/en/expanded-24-2/lesson-3/lesson.html b/en/expanded-24-2/lesson-3/lesson.html new file mode 100644 index 0000000..11c45cd --- /dev/null +++ b/en/expanded-24-2/lesson-3/lesson.html @@ -0,0 +1 @@ +A server-system capstone

    A server-system capstone

    15-minute session: read for 3 minutes, trace for 3, experiment for 7, and complete the check for 2. Spend longer whenever you need.

    Design a reproducible server image in a disposable VM: documented base, service user, firewall, HTTPS, update policy, backup, health check, and restore drill. Record a clean install and a controlled service failure. For an Agila-native server, list missing kernel and driver prerequisites instead of claiming a host application is a new OS. Publish source and a redacted evidence report on Forge.

    Practice and evidence: Predict the example or draw its state transitions. Change one assumption, test the boundary, and record the actual result. Explain what this small model does not establish about a production system.

    Practice and evidence

    Keep three notes: your prediction, the actual result, and why they match or differ. The completion check grades understanding; the practice task builds skill.

    \ No newline at end of file diff --git a/en/expanded-25-1/README.md b/en/expanded-25-1/README.md new file mode 100644 index 0000000..00b68c4 --- /dev/null +++ b/en/expanded-25-1/README.md @@ -0,0 +1,9 @@ +# AI Runtime Engineering · 1 + +[Agila University track](https://edu.agilaos.com/track.php?track=25&lang=en) + +About 15 minutes per lesson. Predict, run, change, explain, then complete the check in University. + +- [Lesson 1: What an AI runtime does](lesson-1/lesson.html) +- [Lesson 2: Shapes before matrix multiplication](lesson-2/lesson.html) +- [Lesson 3: Numerical tolerance and a reference](lesson-3/lesson.html) diff --git a/en/expanded-25-1/lesson-1/lesson.html b/en/expanded-25-1/lesson-1/lesson.html new file mode 100644 index 0000000..7e9aae8 --- /dev/null +++ b/en/expanded-25-1/lesson-1/lesson.html @@ -0,0 +1,6 @@ +What an AI runtime does

    What an AI runtime does

    15-minute session: read for 3 minutes, trace for 3, experiment for 7, and complete the check for 2. Spend longer whenever you need.

    A model describes parameters and operations. A runtime loads that representation, validates shapes and types, allocates memory, schedules operations, and executes kernels. Training and inference are different workflows. Begin with a tiny deterministic computation so correctness can be checked by hand before introducing acceleration.

    Practice and evidence: Predict the example or draw its state transitions. Change one assumption, test the boundary, and record the actual result. Explain what this small model does not establish about a production system.

    x=[2.0,3.0]
    +w=[0.5,2.0]
    +bias=1.0
    +y=sum(a*b for a,b in zip(x,w))+bias
    +print(y)
    +

    Expected result: 8.0

    Practice and evidence

    Keep three notes: your prediction, the actual result, and why they match or differ. The completion check grades understanding; the practice task builds skill.

    Language reference: git.agilaos.com

    Language reference: onnx.ai

    \ No newline at end of file diff --git a/en/expanded-25-1/lesson-1/main.py b/en/expanded-25-1/lesson-1/main.py new file mode 100644 index 0000000..0a5b911 --- /dev/null +++ b/en/expanded-25-1/lesson-1/main.py @@ -0,0 +1,5 @@ +x=[2.0,3.0] +w=[0.5,2.0] +bias=1.0 +y=sum(a*b for a,b in zip(x,w))+bias +print(y) diff --git a/en/expanded-25-1/lesson-2/lesson.html b/en/expanded-25-1/lesson-2/lesson.html new file mode 100644 index 0000000..97b9ee4 --- /dev/null +++ b/en/expanded-25-1/lesson-2/lesson.html @@ -0,0 +1,6 @@ +Shapes before matrix multiplication

    Shapes before matrix multiplication

    15-minute session: read for 3 minutes, trace for 3, experiment for 7, and complete the check for 2. Spend longer whenever you need.

    For A with shape m×k and B with shape k×n, the result has shape m×n. The inner dimensions must match. Check empty and ragged inputs before indexing. A shape check prevents some errors but cannot establish that the weights mean the right thing. The example is a small CPU reference, not a trained language model.

    Practice and evidence: Predict the example or draw its state transitions. Change one assumption, test the boundary, and record the actual result. Explain what this small model does not establish about a production system.

    a=[[1,2],[3,4]]
    +b=[[5],[6]]
    +assert all(len(row)==len(b) for row in a)
    +out=[[sum(a[i][k]*b[k][j] for k in range(len(b))) for j in range(len(b[0]))] for i in range(len(a))]
    +print(out)
    +

    Expected result: [[17], [39]]

    Practice and evidence

    Keep three notes: your prediction, the actual result, and why they match or differ. The completion check grades understanding; the practice task builds skill.

    Language reference: git.agilaos.com

    Language reference: onnx.ai

    \ No newline at end of file diff --git a/en/expanded-25-1/lesson-2/main.py b/en/expanded-25-1/lesson-2/main.py new file mode 100644 index 0000000..f550200 --- /dev/null +++ b/en/expanded-25-1/lesson-2/main.py @@ -0,0 +1,5 @@ +a=[[1,2],[3,4]] +b=[[5],[6]] +assert all(len(row)==len(b) for row in a) +out=[[sum(a[i][k]*b[k][j] for k in range(len(b))) for j in range(len(b[0]))] for i in range(len(a))] +print(out) diff --git a/en/expanded-25-1/lesson-3/lesson.html b/en/expanded-25-1/lesson-3/lesson.html new file mode 100644 index 0000000..2063747 --- /dev/null +++ b/en/expanded-25-1/lesson-3/lesson.html @@ -0,0 +1,4 @@ +Numerical tolerance and a reference

    Numerical tolerance and a reference

    15-minute session: read for 3 minutes, trace for 3, experiment for 7, and complete the check for 2. Spend longer whenever you need.

    Floating-point calculations can differ slightly after reordering. Compare an optimized implementation with a trusted reference using documented absolute and relative tolerances, and reject NaN when it is not expected. Never choose an enormous tolerance merely to make a test pass. Test zero, negative values, large magnitudes, and the application’s normal range.

    Practice and evidence: Predict the example or draw its state transitions. Change one assumption, test the boundary, and record the actual result. Explain what this small model does not establish about a production system.

    import math
    +actual=0.1+0.2
    +print(math.isclose(actual,0.3,rel_tol=1e-9,abs_tol=1e-12))
    +

    Expected result: True

    Practice and evidence

    Keep three notes: your prediction, the actual result, and why they match or differ. The completion check grades understanding; the practice task builds skill.

    Language reference: git.agilaos.com

    Language reference: onnx.ai

    \ No newline at end of file diff --git a/en/expanded-25-1/lesson-3/main.py b/en/expanded-25-1/lesson-3/main.py new file mode 100644 index 0000000..2476d49 --- /dev/null +++ b/en/expanded-25-1/lesson-3/main.py @@ -0,0 +1,3 @@ +import math +actual=0.1+0.2 +print(math.isclose(actual,0.3,rel_tol=1e-9,abs_tol=1e-12)) diff --git a/en/expanded-25-2/README.md b/en/expanded-25-2/README.md new file mode 100644 index 0000000..728179a --- /dev/null +++ b/en/expanded-25-2/README.md @@ -0,0 +1,9 @@ +# AI Runtime Engineering · 2 + +[Agila University track](https://edu.agilaos.com/track.php?track=25&lang=en) + +About 15 minutes per lesson. Predict, run, change, explain, then complete the check in University. + +- [Lesson 1: Plan memory lifetimes](lesson-1/lesson.html) +- [Lesson 2: Quantization has an error budget](lesson-2/lesson.html) +- [Lesson 3: An explainable runtime capstone](lesson-3/lesson.html) diff --git a/en/expanded-25-2/lesson-1/lesson.html b/en/expanded-25-2/lesson-1/lesson.html new file mode 100644 index 0000000..da2b9ee --- /dev/null +++ b/en/expanded-25-2/lesson-1/lesson.html @@ -0,0 +1,4 @@ +Plan memory lifetimes

    Plan memory lifetimes

    15-minute session: read for 3 minutes, trace for 3, experiment for 7, and complete the check for 2. Spend longer whenever you need.

    An execution graph has values with creation and last-use points. Reuse a buffer only after its old value is no longer needed and no asynchronous operation is still using it. Weights, activations, temporary workspaces, and caches need separate accounting. Calculate element count times bytes per element, then include alignment and overhead in a real implementation.

    Practice and evidence: Predict the example or draw its state transitions. Change one assumption, test the boundary, and record the actual result. Explain what this small model does not establish about a production system.

    shape=(4,8)
    +bytes_per_element=4
    +print(shape[0]*shape[1]*bytes_per_element)
    +

    Expected result: 128

    Practice and evidence

    Keep three notes: your prediction, the actual result, and why they match or differ. The completion check grades understanding; the practice task builds skill.

    Language reference: git.agilaos.com

    Language reference: onnx.ai

    \ No newline at end of file diff --git a/en/expanded-25-2/lesson-1/main.py b/en/expanded-25-2/lesson-1/main.py new file mode 100644 index 0000000..31684b3 --- /dev/null +++ b/en/expanded-25-2/lesson-1/main.py @@ -0,0 +1,3 @@ +shape=(4,8) +bytes_per_element=4 +print(shape[0]*shape[1]*bytes_per_element) diff --git a/en/expanded-25-2/lesson-2/lesson.html b/en/expanded-25-2/lesson-2/lesson.html new file mode 100644 index 0000000..35b7438 --- /dev/null +++ b/en/expanded-25-2/lesson-2/lesson.html @@ -0,0 +1,8 @@ +Quantization has an error budget

    Quantization has an error budget

    15-minute session: read for 3 minutes, trace for 3, experiment for 7, and complete the check for 2. Spend longer whenever you need.

    A simple symmetric quantizer divides by a scale, rounds, and clamps to an integer range. Dequantization multiplies by the scale. Clipping and rounding lose information. Measure both numerical error and the task’s accuracy before calling a smaller representation acceptable. This scalar exercise is not an implementation of every production quantization format.

    Practice and evidence: Predict the example or draw its state transitions. Change one assumption, test the boundary, and record the actual result. Explain what this small model does not establish about a production system.

    value=0.36
    +scale=0.1
    +q=max(-127,min(127,round(value/scale)))
    +restored=q*scale
    +print(q)
    +print(round(abs(value-restored),3))
    +

    Expected result: 4 +0.04

    Practice and evidence

    Keep three notes: your prediction, the actual result, and why they match or differ. The completion check grades understanding; the practice task builds skill.

    Language reference: git.agilaos.com

    Language reference: onnx.ai

    \ No newline at end of file diff --git a/en/expanded-25-2/lesson-2/main.py b/en/expanded-25-2/lesson-2/main.py new file mode 100644 index 0000000..6800f3e --- /dev/null +++ b/en/expanded-25-2/lesson-2/main.py @@ -0,0 +1,6 @@ +value=0.36 +scale=0.1 +q=max(-127,min(127,round(value/scale))) +restored=q*scale +print(q) +print(round(abs(value-restored),3)) diff --git a/en/expanded-25-2/lesson-3/lesson.html b/en/expanded-25-2/lesson-3/lesson.html new file mode 100644 index 0000000..3f407ad --- /dev/null +++ b/en/expanded-25-2/lesson-3/lesson.html @@ -0,0 +1 @@ +An explainable runtime capstone

    An explainable runtime capstone

    15-minute session: read for 3 minutes, trace for 3, experiment for 7, and complete the check for 2. Spend longer whenever you need.

    Build a tiny graph executor with input, matrix multiplication, bias, and activation nodes. Validate shapes, keep a CPU reference, plan buffer lifetimes, and benchmark warm and cold runs separately. AGX Open currently provides a CPU reference backend; a requested GPU backend is not evidence of GPU execution. Add a backend only when detection and correctness checks prove it is used.

    Practice and evidence: Predict the example or draw its state transitions. Change one assumption, test the boundary, and record the actual result. Explain what this small model does not establish about a production system.

    Practice and evidence

    Keep three notes: your prediction, the actual result, and why they match or differ. The completion check grades understanding; the practice task builds skill.

    Language reference: git.agilaos.com

    Language reference: onnx.ai

    \ No newline at end of file diff --git a/en/expanded-26-1/README.md b/en/expanded-26-1/README.md new file mode 100644 index 0000000..f95f4be --- /dev/null +++ b/en/expanded-26-1/README.md @@ -0,0 +1,9 @@ +# Algorithms & Data Structures · 1 + +[Agila University track](https://edu.agilaos.com/track.php?track=26&lang=en) + +About 15 minutes per lesson. Predict, run, change, explain, then complete the check in University. + +- [Lesson 1: Count the work in a search](lesson-1/lesson.html) +- [Lesson 2: Use a queue when order matters](lesson-2/lesson.html) +- [Lesson 3: Binary search needs an invariant](lesson-3/lesson.html) diff --git a/en/expanded-26-1/lesson-1/lesson.html b/en/expanded-26-1/lesson-1/lesson.html new file mode 100644 index 0000000..f14ced7 --- /dev/null +++ b/en/expanded-26-1/lesson-1/lesson.html @@ -0,0 +1,7 @@ +Count the work in a search

    Count the work in a search

    15-minute session: read for 3 minutes, trace for 3, experiment for 7, and complete the check for 2. Spend longer whenever you need.

    Linear search may inspect every element. Count comparisons for a match at the start, a match at the end, and a missing value. Big-O describes growth, not a measured duration on your machine. Compare sizes 10, 100, and 1000 before choosing a different structure.

    Practice and evidence: Predict the example or draw its state transitions. Change one assumption, test the boundary, and record the actual result. Explain what this small model does not establish about a production system.

    items=list(range(10))
    +checks=0
    +for value in items:
    +    checks+=1
    +    if value==9:break
    +print(checks)
    +

    Expected result: 10

    Practice and evidence

    Keep three notes: your prediction, the actual result, and why they match or differ. The completion check grades understanding; the practice task builds skill.

    \ No newline at end of file diff --git a/en/expanded-26-1/lesson-1/main.py b/en/expanded-26-1/lesson-1/main.py new file mode 100644 index 0000000..01cbdd4 --- /dev/null +++ b/en/expanded-26-1/lesson-1/main.py @@ -0,0 +1,6 @@ +items=list(range(10)) +checks=0 +for value in items: + checks+=1 + if value==9:break +print(checks) diff --git a/en/expanded-26-1/lesson-2/lesson.html b/en/expanded-26-1/lesson-2/lesson.html new file mode 100644 index 0000000..04d4a71 --- /dev/null +++ b/en/expanded-26-1/lesson-2/lesson.html @@ -0,0 +1,7 @@ +Use a queue when order matters

    Use a queue when order matters

    15-minute session: read for 3 minutes, trace for 3, experiment for 7, and complete the check for 2. Spend longer whenever you need.

    FIFO removes the oldest item first. Use a deque for a work queue instead of repeatedly removing index zero from a long list. Specify capacity and what happens when it fills. Test empty, one-item, and full states; an efficient structure still needs a correct policy.

    Practice and evidence: Predict the example or draw its state transitions. Change one assumption, test the boundary, and record the actual result. Explain what this small model does not establish about a production system.

    from collections import deque
    +queue=deque(["A","B"])
    +print(queue.popleft())
    +queue.append("C")
    +print(list(queue))
    +

    Expected result: A +['B', 'C']

    Practice and evidence

    Keep three notes: your prediction, the actual result, and why they match or differ. The completion check grades understanding; the practice task builds skill.

    \ No newline at end of file diff --git a/en/expanded-26-1/lesson-2/main.py b/en/expanded-26-1/lesson-2/main.py new file mode 100644 index 0000000..5a90bd2 --- /dev/null +++ b/en/expanded-26-1/lesson-2/main.py @@ -0,0 +1,5 @@ +from collections import deque +queue=deque(["A","B"]) +print(queue.popleft()) +queue.append("C") +print(list(queue)) diff --git a/en/expanded-26-1/lesson-3/lesson.html b/en/expanded-26-1/lesson-3/lesson.html new file mode 100644 index 0000000..d8494b5 --- /dev/null +++ b/en/expanded-26-1/lesson-3/lesson.html @@ -0,0 +1,8 @@ +Binary search needs an invariant

    Binary search needs an invariant

    15-minute session: read for 3 minutes, trace for 3, experiment for 7, and complete the check for 2. Spend longer whenever you need.

    Binary search relies on sorted data and a shrinking search interval. A faster loop on unsorted data can return a wrong answer. Use a library operation, test insertion at both ends and an existing value, then explain the invariant before implementing your own.

    Practice and evidence: Predict the example or draw its state transitions. Change one assumption, test the boundary, and record the actual result. Explain what this small model does not establish about a production system.

    from bisect import bisect_left
    +values=[2,4,6]
    +print(bisect_left(values,1))
    +print(bisect_left(values,4))
    +print(bisect_left(values,8))
    +

    Expected result: 0 +1 +3

    Practice and evidence

    Keep three notes: your prediction, the actual result, and why they match or differ. The completion check grades understanding; the practice task builds skill.

    \ No newline at end of file diff --git a/en/expanded-26-1/lesson-3/main.py b/en/expanded-26-1/lesson-3/main.py new file mode 100644 index 0000000..fac026e --- /dev/null +++ b/en/expanded-26-1/lesson-3/main.py @@ -0,0 +1,5 @@ +from bisect import bisect_left +values=[2,4,6] +print(bisect_left(values,1)) +print(bisect_left(values,4)) +print(bisect_left(values,8)) diff --git a/en/expanded-27-1/README.md b/en/expanded-27-1/README.md new file mode 100644 index 0000000..de80de9 --- /dev/null +++ b/en/expanded-27-1/README.md @@ -0,0 +1,9 @@ +# Concurrency & Scheduling · 1 + +[Agila University track](https://edu.agilaos.com/track.php?track=27&lang=en) + +About 15 minutes per lesson. Predict, run, change, explain, then complete the check in University. + +- [Lesson 1: An interleaving can lose an update](lesson-1/lesson.html) +- [Lesson 2: Lock scope and ownership](lesson-2/lesson.html) +- [Lesson 3: Bounded queues and backpressure](lesson-3/lesson.html) diff --git a/en/expanded-27-1/lesson-1/lesson.html b/en/expanded-27-1/lesson-1/lesson.html new file mode 100644 index 0000000..d20e76f --- /dev/null +++ b/en/expanded-27-1/lesson-1/lesson.html @@ -0,0 +1,7 @@ +An interleaving can lose an update

    An interleaving can lose an update

    15-minute session: read for 3 minutes, trace for 3, experiment for 7, and complete the check for 2. Spend longer whenever you need.

    Two workers can read the same counter before either writes. Both compute one, and the final value becomes one instead of two. The deterministic example models the interleaving without relying on a race to happen by chance. Identify the shared state and the operation that must be atomic or protected.

    Practice and evidence: Predict the example or draw its state transitions. Change one assumption, test the boundary, and record the actual result. Explain what this small model does not establish about a production system.

    counter=0
    +a=counter
    +b=counter
    +counter=a+1
    +counter=b+1
    +print(counter)
    +

    Expected result: 1

    Practice and evidence

    Keep three notes: your prediction, the actual result, and why they match or differ. The completion check grades understanding; the practice task builds skill.

    \ No newline at end of file diff --git a/en/expanded-27-1/lesson-1/main.py b/en/expanded-27-1/lesson-1/main.py new file mode 100644 index 0000000..5118802 --- /dev/null +++ b/en/expanded-27-1/lesson-1/main.py @@ -0,0 +1,6 @@ +counter=0 +a=counter +b=counter +counter=a+1 +counter=b+1 +print(counter) diff --git a/en/expanded-27-1/lesson-2/lesson.html b/en/expanded-27-1/lesson-2/lesson.html new file mode 100644 index 0000000..303944d --- /dev/null +++ b/en/expanded-27-1/lesson-2/lesson.html @@ -0,0 +1 @@ +Lock scope and ownership

    Lock scope and ownership

    15-minute session: read for 3 minutes, trace for 3, experiment for 7, and complete the check for 2. Spend longer whenever you need.

    A lock protects an invariant only when every relevant access follows the same rule. Protect the whole read-modify-write operation, not just the final assignment. Define a consistent lock order when multiple locks are needed. A global lock may be correct but limit throughput; measure before splitting it.

    Practice and evidence: Predict the example or draw its state transitions. Change one assumption, test the boundary, and record the actual result. Explain what this small model does not establish about a production system.

    Practice and evidence

    Keep three notes: your prediction, the actual result, and why they match or differ. The completion check grades understanding; the practice task builds skill.

    \ No newline at end of file diff --git a/en/expanded-27-1/lesson-3/lesson.html b/en/expanded-27-1/lesson-3/lesson.html new file mode 100644 index 0000000..d26723e --- /dev/null +++ b/en/expanded-27-1/lesson-3/lesson.html @@ -0,0 +1,8 @@ +Bounded queues and backpressure

    Bounded queues and backpressure

    15-minute session: read for 3 minutes, trace for 3, experiment for 7, and complete the check for 2. Spend longer whenever you need.

    An unbounded producer can exhaust memory when consumers are slower. Choose a bounded queue and a policy: wait, reject, or shed selected work. Cancellation and shutdown must wake blocked participants. Model a capacity of two, then explain what happens to a third job and how the caller learns the outcome.

    Practice and evidence: Predict the example or draw its state transitions. Change one assumption, test the boundary, and record the actual result. Explain what this small model does not establish about a production system.

    queue=[]
    +capacity=2
    +for job in ["A","B","C"]:
    +    if len(queue)<capacity:queue.append(job)
    +    else:print("Rejected",job)
    +print(queue)
    +

    Expected result: Rejected C +['A', 'B']

    Practice and evidence

    Keep three notes: your prediction, the actual result, and why they match or differ. The completion check grades understanding; the practice task builds skill.

    \ No newline at end of file diff --git a/en/expanded-27-1/lesson-3/main.py b/en/expanded-27-1/lesson-3/main.py new file mode 100644 index 0000000..bd2e6b4 --- /dev/null +++ b/en/expanded-27-1/lesson-3/main.py @@ -0,0 +1,6 @@ +queue=[] +capacity=2 +for job in ["A","B","C"]: + if len(queue)Validate before crossing a boundary

    Validate before crossing a boundary

    15-minute session: read for 3 minutes, trace for 3, experiment for 7, and complete the check for 2. Spend longer whenever you need.

    Treat external values as untrusted. Define valid type, size, range, and structure before use. Reject an invalid value with a clear error instead of silently turning it into a different request. Test both endpoints and the values immediately outside them. A validated value still needs authorization for the requested action.

    Practice and evidence: Predict the example or draw its state transitions. Change one assumption, test the boundary, and record the actual result. Explain what this small model does not establish about a production system.

    def valid_score(value):
    +    return type(value) is int and 0<=value<=100
    +print([valid_score(x) for x in [-1,0,100,101,True]])
    +

    Expected result: [False, True, True, False, False]

    Practice and evidence

    Keep three notes: your prediction, the actual result, and why they match or differ. The completion check grades understanding; the practice task builds skill.

    \ No newline at end of file diff --git a/en/expanded-28-1/lesson-1/main.py b/en/expanded-28-1/lesson-1/main.py new file mode 100644 index 0000000..d68c399 --- /dev/null +++ b/en/expanded-28-1/lesson-1/main.py @@ -0,0 +1,3 @@ +def valid_score(value): + return type(value) is int and 0<=value<=100 +print([valid_score(x) for x in [-1,0,100,101,True]]) diff --git a/en/expanded-28-1/lesson-2/lesson.html b/en/expanded-28-1/lesson-2/lesson.html new file mode 100644 index 0000000..792b30e --- /dev/null +++ b/en/expanded-28-1/lesson-2/lesson.html @@ -0,0 +1,7 @@ +Separate data from instructions

    Separate data from instructions

    15-minute session: read for 3 minutes, trace for 3, experiment for 7, and complete the check for 2. Spend longer whenever you need.

    Use parameterized queries for database values and argument arrays for process invocation. Escaping for HTML does not make a string safe for SQL or a shell. Identify the interpreter at each boundary and use the interface designed for data. This lesson does not require executing attack payloads against another service.

    Practice and evidence: Predict the example or draw its state transitions. Change one assumption, test the boundary, and record the actual result. Explain what this small model does not establish about a production system.

    import sqlite3
    +db=sqlite3.connect(":memory:")
    +db.execute("create table notes(value text)")
    +value="A student's note"
    +db.execute("insert into notes values (?)",(value,))
    +print(db.execute("select value from notes").fetchone()[0])
    +

    Expected result: A student's note

    Practice and evidence

    Keep three notes: your prediction, the actual result, and why they match or differ. The completion check grades understanding; the practice task builds skill.

    \ No newline at end of file diff --git a/en/expanded-28-1/lesson-2/main.py b/en/expanded-28-1/lesson-2/main.py new file mode 100644 index 0000000..350944e --- /dev/null +++ b/en/expanded-28-1/lesson-2/main.py @@ -0,0 +1,6 @@ +import sqlite3 +db=sqlite3.connect(":memory:") +db.execute("create table notes(value text)") +value="A student's note" +db.execute("insert into notes values (?)",(value,)) +print(db.execute("select value from notes").fetchone()[0]) diff --git a/en/expanded-28-1/lesson-3/lesson.html b/en/expanded-28-1/lesson-3/lesson.html new file mode 100644 index 0000000..db97f62 --- /dev/null +++ b/en/expanded-28-1/lesson-3/lesson.html @@ -0,0 +1 @@ +Regression tests must challenge the fix

    Regression tests must challenge the fix

    15-minute session: read for 3 minutes, trace for 3, experiment for 7, and complete the check for 2. Spend longer whenever you need.

    Write a test that fails before a bug fix and passes afterward. Include the smallest input that reproduces the issue and a neighboring valid case. Keep authorization, boundary, and error-path tests; a happy-path screenshot is not sufficient. Document what your test cannot prove and avoid claiming absence of all vulnerabilities.

    Practice and evidence: Predict the example or draw its state transitions. Change one assumption, test the boundary, and record the actual result. Explain what this small model does not establish about a production system.

    Practice and evidence

    Keep three notes: your prediction, the actual result, and why they match or differ. The completion check grades understanding; the practice task builds skill.

    \ No newline at end of file diff --git a/en/expanded-29-1/README.md b/en/expanded-29-1/README.md new file mode 100644 index 0000000..f267309 --- /dev/null +++ b/en/expanded-29-1/README.md @@ -0,0 +1,9 @@ +# Networking & Protocols · 1 + +[Agila University track](https://edu.agilaos.com/track.php?track=29&lang=en) + +About 15 minutes per lesson. Predict, run, change, explain, then complete the check in University. + +- [Lesson 1: Name, address, connection, request](lesson-1/lesson.html) +- [Lesson 2: A byte stream needs framing](lesson-2/lesson.html) +- [Lesson 3: Timeouts, retries, and idempotency](lesson-3/lesson.html) diff --git a/en/expanded-29-1/lesson-1/lesson.html b/en/expanded-29-1/lesson-1/lesson.html new file mode 100644 index 0000000..f505043 --- /dev/null +++ b/en/expanded-29-1/lesson-1/lesson.html @@ -0,0 +1 @@ +Name, address, connection, request

    Name, address, connection, request

    15-minute session: read for 3 minutes, trace for 3, experiment for 7, and complete the check for 2. Spend longer whenever you need.

    DNS resolves a name; transport establishes communication; TLS authenticates and encrypts a channel; HTTP describes requests and responses. Failure at one layer should not be mislabeled as another. The University DNS incident is a useful example: a healthy web server could not help a client that still cached a failed name lookup. Draw the layers and choose a test for each.

    Practice and evidence: Predict the example or draw its state transitions. Change one assumption, test the boundary, and record the actual result. Explain what this small model does not establish about a production system.

    Practice and evidence

    Keep three notes: your prediction, the actual result, and why they match or differ. The completion check grades understanding; the practice task builds skill.

    \ No newline at end of file diff --git a/en/expanded-29-1/lesson-2/lesson.html b/en/expanded-29-1/lesson-2/lesson.html new file mode 100644 index 0000000..c0cf7e2 --- /dev/null +++ b/en/expanded-29-1/lesson-2/lesson.html @@ -0,0 +1,5 @@ +A byte stream needs framing

    A byte stream needs framing

    15-minute session: read for 3 minutes, trace for 3, experiment for 7, and complete the check for 2. Spend longer whenever you need.

    A TCP read may return part of a message or several messages together. Define framing using a length, delimiter, or specified format. Validate maximum length before allocation and handle truncated input. The model parses a two-byte length prefix from fixed bytes; no network connection is made in the sandbox.

    Practice and evidence: Predict the example or draw its state transitions. Change one assumption, test the boundary, and record the actual result. Explain what this small model does not establish about a production system.

    packet=bytes([0,3])+b"cat"
    +length=int.from_bytes(packet[:2],"big")
    +assert length<=100 and len(packet)-2==length
    +print(packet[2:].decode())
    +

    Expected result: cat

    Practice and evidence

    Keep three notes: your prediction, the actual result, and why they match or differ. The completion check grades understanding; the practice task builds skill.

    \ No newline at end of file diff --git a/en/expanded-29-1/lesson-2/main.py b/en/expanded-29-1/lesson-2/main.py new file mode 100644 index 0000000..065589a --- /dev/null +++ b/en/expanded-29-1/lesson-2/main.py @@ -0,0 +1,4 @@ +packet=bytes([0,3])+b"cat" +length=int.from_bytes(packet[:2],"big") +assert length<=100 and len(packet)-2==length +print(packet[2:].decode()) diff --git a/en/expanded-29-1/lesson-3/lesson.html b/en/expanded-29-1/lesson-3/lesson.html new file mode 100644 index 0000000..288ead2 --- /dev/null +++ b/en/expanded-29-1/lesson-3/lesson.html @@ -0,0 +1,8 @@ +Timeouts, retries, and idempotency

    Timeouts, retries, and idempotency

    15-minute session: read for 3 minutes, trace for 3, experiment for 7, and complete the check for 2. Spend longer whenever you need.

    A timeout does not prove a server did nothing: the action may have completed before the response was lost. Use an idempotency key for operations that must not run twice. Bound retries and add backoff. The model returns the same stored result for repeated keys instead of applying the side effect again.

    Practice and evidence: Predict the example or draw its state transitions. Change one assumption, test the boundary, and record the actual result. Explain what this small model does not establish about a production system.

    results={}
    +def complete(key):
    +    if key not in results:results[key]=len(results)+1
    +    return results[key]
    +print(complete("lesson-1"),complete("lesson-1"))
    +print(len(results))
    +

    Expected result: 1 1 +1

    Practice and evidence

    Keep three notes: your prediction, the actual result, and why they match or differ. The completion check grades understanding; the practice task builds skill.

    \ No newline at end of file diff --git a/en/expanded-29-1/lesson-3/main.py b/en/expanded-29-1/lesson-3/main.py new file mode 100644 index 0000000..ffb99f8 --- /dev/null +++ b/en/expanded-29-1/lesson-3/main.py @@ -0,0 +1,6 @@ +results={} +def complete(key): + if key not in results:results[key]=len(results)+1 + return results[key] +print(complete("lesson-1"),complete("lesson-1")) +print(len(results)) diff --git a/en/expanded-30-1/README.md b/en/expanded-30-1/README.md new file mode 100644 index 0000000..ae34399 --- /dev/null +++ b/en/expanded-30-1/README.md @@ -0,0 +1,9 @@ +# CPU/GPU Core & Memory Mapping · 1 + +[Agila University track](https://edu.agilaos.com/track.php?track=30&lang=en) + +About 15 minutes per lesson. Predict, run, change, explain, then complete the check in University. + +- [Lesson 1: Map the machine before scheduling work](lesson-1/lesson.html) +- [Lesson 2: Match work to an execution model](lesson-2/lesson.html) +- [Lesson 3: Affinity and migration](lesson-3/lesson.html) diff --git a/en/expanded-30-1/lesson-1/lesson.html b/en/expanded-30-1/lesson-1/lesson.html new file mode 100644 index 0000000..e52873d --- /dev/null +++ b/en/expanded-30-1/lesson-1/lesson.html @@ -0,0 +1,5 @@ +Map the machine before scheduling work

    Map the machine before scheduling work

    15-minute session: read for 3 minutes, trace for 3, experiment for 7, and complete the check for 2. Spend longer whenever you need.

    Separate sockets, physical cores, logical CPUs, and virtual CPUs. A cloud vCPU does not prove exclusive ownership of a physical core. GPU compute units and lanes use another execution model. Record what the environment actually exposes and what remains unknown. This droplet has one vCPU and no GPU; a multi-core or GPU comparison needs other hardware.

    Practice and evidence: Predict the example or draw its state transitions. Change one assumption, test the boundary, and record the actual result. Explain what this small model does not establish about a production system.

    import os,platform
    +print("ISA:",platform.machine())
    +print("Visible logical CPUs:",os.cpu_count())
    +print("GPU: not measured by this program")
    +

    Practice and evidence

    Keep three notes: your prediction, the actual result, and why they match or differ. The completion check grades understanding; the practice task builds skill.

    Language reference: git.agilaos.com

    Language reference: docs.nvidia.com

    \ No newline at end of file diff --git a/en/expanded-30-1/lesson-1/main.py b/en/expanded-30-1/lesson-1/main.py new file mode 100644 index 0000000..d11b19e --- /dev/null +++ b/en/expanded-30-1/lesson-1/main.py @@ -0,0 +1,4 @@ +import os,platform +print("ISA:",platform.machine()) +print("Visible logical CPUs:",os.cpu_count()) +print("GPU: not measured by this program") diff --git a/en/expanded-30-1/lesson-2/lesson.html b/en/expanded-30-1/lesson-2/lesson.html new file mode 100644 index 0000000..99a52e4 --- /dev/null +++ b/en/expanded-30-1/lesson-2/lesson.html @@ -0,0 +1 @@ +Match work to an execution model

    Match work to an execution model

    15-minute session: read for 3 minutes, trace for 3, experiment for 7, and complete the check for 2. Spend longer whenever you need.

    Independent operations over large arrays can expose parallelism. A serial dependency chain cannot be split merely by adding cores. Branch-heavy or tiny jobs may favor CPU execution after launch and transfer overhead. Treat these as hypotheses, not universal rules. Classify a parser, a large matrix multiply, and a small request handler, then state what you would measure.

    Practice and evidence: Predict the example or draw its state transitions. Change one assumption, test the boundary, and record the actual result. Explain what this small model does not establish about a production system.

    Practice and evidence

    Keep three notes: your prediction, the actual result, and why they match or differ. The completion check grades understanding; the practice task builds skill.

    Language reference: git.agilaos.com

    Language reference: docs.nvidia.com

    \ No newline at end of file diff --git a/en/expanded-30-1/lesson-3/lesson.html b/en/expanded-30-1/lesson-3/lesson.html new file mode 100644 index 0000000..5ce4489 --- /dev/null +++ b/en/expanded-30-1/lesson-3/lesson.html @@ -0,0 +1,3 @@ +Affinity and migration

    Affinity and migration

    15-minute session: read for 3 minutes, trace for 3, experiment for 7, and complete the check for 2. Spend longer whenever you need.

    CPU affinity restricts which logical CPUs a thread may run on. It can reduce migration or accidentally create contention. Pinning does not reserve a core from other workloads. Compare unpinned and pinned runs only on a machine where topology and policy are known. Record affinity, competing load, frequency behavior, and sample count. Do not change a production server’s scheduling policy for a lesson.

    Practice and evidence: Predict the example or draw its state transitions. Change one assumption, test the boundary, and record the actual result. Explain what this small model does not establish about a production system.

    import os
    +print(sorted(os.sched_getaffinity(0)))
    +

    Practice and evidence

    Keep three notes: your prediction, the actual result, and why they match or differ. The completion check grades understanding; the practice task builds skill.

    Language reference: git.agilaos.com

    Language reference: docs.nvidia.com

    \ No newline at end of file diff --git a/en/expanded-30-1/lesson-3/main.py b/en/expanded-30-1/lesson-3/main.py new file mode 100644 index 0000000..95814c3 --- /dev/null +++ b/en/expanded-30-1/lesson-3/main.py @@ -0,0 +1,2 @@ +import os +print(sorted(os.sched_getaffinity(0))) diff --git a/en/expanded-30-2/README.md b/en/expanded-30-2/README.md new file mode 100644 index 0000000..c910a21 --- /dev/null +++ b/en/expanded-30-2/README.md @@ -0,0 +1,9 @@ +# CPU/GPU Core & Memory Mapping · 2 + +[Agila University track](https://edu.agilaos.com/track.php?track=30&lang=en) + +About 15 minutes per lesson. Predict, run, change, explain, then complete the check in University. + +- [Lesson 1: Virtual, physical, and device addresses](lesson-1/lesson.html) +- [Lesson 2: Caches, locality, and working sets](lesson-2/lesson.html) +- [Lesson 3: NUMA placement and first touch](lesson-3/lesson.html) diff --git a/en/expanded-30-2/lesson-1/lesson.html b/en/expanded-30-2/lesson-1/lesson.html new file mode 100644 index 0000000..f30e708 --- /dev/null +++ b/en/expanded-30-2/lesson-1/lesson.html @@ -0,0 +1 @@ +Virtual, physical, and device addresses

    Virtual, physical, and device addresses

    15-minute session: read for 3 minutes, trace for 3, experiment for 7, and complete the check for 2. Spend longer whenever you need.

    A process uses virtual addresses. Page tables translate them subject to permissions. A device may use a DMA/IOMMU mapping rather than the same address. Never cast an arbitrary process pointer into a device address and assume it works. Draw the mappings, owners, access permissions, and lifetime of a buffer before designing an API.

    Practice and evidence: Predict the example or draw its state transitions. Change one assumption, test the boundary, and record the actual result. Explain what this small model does not establish about a production system.

    Practice and evidence

    Keep three notes: your prediction, the actual result, and why they match or differ. The completion check grades understanding; the practice task builds skill.

    Language reference: git.agilaos.com

    Language reference: docs.nvidia.com

    \ No newline at end of file diff --git a/en/expanded-30-2/lesson-2/lesson.html b/en/expanded-30-2/lesson-2/lesson.html new file mode 100644 index 0000000..0f047a0 --- /dev/null +++ b/en/expanded-30-2/lesson-2/lesson.html @@ -0,0 +1,5 @@ +Caches, locality, and working sets

    Caches, locality, and working sets

    15-minute session: read for 3 minutes, trace for 3, experiment for 7, and complete the check for 2. Spend longer whenever you need.

    Locality describes reuse of nearby data or recently accessed data. A working set that fits a cache can behave differently from one that streams through RAM. Stride, element size, prefetching, compiler optimization, and the amount of useful work all affect results. A Python loop also measures interpreter overhead, so it cannot isolate cache latency by itself.

    Practice and evidence: Predict the example or draw its state transitions. Change one assumption, test the boundary, and record the actual result. Explain what this small model does not establish about a production system.

    data=list(range(16))
    +print(sum(data))
    +print(sum(data[::4]))
    +

    Expected result: 120 +24

    Practice and evidence

    Keep three notes: your prediction, the actual result, and why they match or differ. The completion check grades understanding; the practice task builds skill.

    Language reference: git.agilaos.com

    Language reference: docs.nvidia.com

    \ No newline at end of file diff --git a/en/expanded-30-2/lesson-2/main.py b/en/expanded-30-2/lesson-2/main.py new file mode 100644 index 0000000..b9841e0 --- /dev/null +++ b/en/expanded-30-2/lesson-2/main.py @@ -0,0 +1,3 @@ +data=list(range(16)) +print(sum(data)) +print(sum(data[::4])) diff --git a/en/expanded-30-2/lesson-3/lesson.html b/en/expanded-30-2/lesson-3/lesson.html new file mode 100644 index 0000000..70cdbee --- /dev/null +++ b/en/expanded-30-2/lesson-3/lesson.html @@ -0,0 +1 @@ +NUMA placement and first touch

    NUMA placement and first touch

    15-minute session: read for 3 minutes, trace for 3, experiment for 7, and complete the check for 2. Spend longer whenever you need.

    On NUMA systems, memory access cost can depend on which node owns the pages and where the thread runs. Allocation policy and first touch can influence placement. Measure local and remote access on an actual multi-node system; a single-node VM cannot demonstrate a NUMA speedup. Record node topology and verify placement rather than inferring it from allocation code.

    Practice and evidence: Predict the example or draw its state transitions. Change one assumption, test the boundary, and record the actual result. Explain what this small model does not establish about a production system.

    Practice and evidence

    Keep three notes: your prediction, the actual result, and why they match or differ. The completion check grades understanding; the practice task builds skill.

    Language reference: git.agilaos.com

    Language reference: docs.nvidia.com

    \ No newline at end of file diff --git a/en/expanded-30-3/README.md b/en/expanded-30-3/README.md new file mode 100644 index 0000000..c31bf27 --- /dev/null +++ b/en/expanded-30-3/README.md @@ -0,0 +1,9 @@ +# CPU/GPU Core & Memory Mapping · 3 + +[Agila University track](https://edu.agilaos.com/track.php?track=30&lang=en) + +About 15 minutes per lesson. Predict, run, change, explain, then complete the check in University. + +- [Lesson 1: GPU buffers and transfer cost](lesson-1/lesson.html) +- [Lesson 2: Coalescing and shared workgroup memory](lesson-2/lesson.html) +- [Lesson 3: Synchronization and buffer ownership](lesson-3/lesson.html) diff --git a/en/expanded-30-3/lesson-1/lesson.html b/en/expanded-30-3/lesson-1/lesson.html new file mode 100644 index 0000000..1c2699c --- /dev/null +++ b/en/expanded-30-3/lesson-1/lesson.html @@ -0,0 +1,6 @@ +GPU buffers and transfer cost

    GPU buffers and transfer cost

    15-minute session: read for 3 minutes, trace for 3, experiment for 7, and complete the check for 2. Spend longer whenever you need.

    Discrete GPUs often have device memory separate from host RAM. Uploads, downloads, launch overhead, and synchronization can dominate a small kernel. Unified memory changes the API but does not make movement free. Pinned host memory is a limited resource. The sample uses explicitly hypothetical timings; it illustrates accounting, not hardware performance.

    Practice and evidence: Predict the example or draw its state transitions. Change one assumption, test the boundary, and record the actual result. Explain what this small model does not establish about a production system.

    cpu_ms=8
    +upload_ms,kernel_ms,download_ms=5,2,4
    +print("Hypothetical GPU total:",upload_ms+kernel_ms+download_ms)
    +print("Hypothetical CPU total:",cpu_ms)
    +

    Expected result: Hypothetical GPU total: 11 +Hypothetical CPU total: 8

    Practice and evidence

    Keep three notes: your prediction, the actual result, and why they match or differ. The completion check grades understanding; the practice task builds skill.

    Language reference: git.agilaos.com

    Language reference: docs.nvidia.com

    \ No newline at end of file diff --git a/en/expanded-30-3/lesson-1/main.py b/en/expanded-30-3/lesson-1/main.py new file mode 100644 index 0000000..89f5b3b --- /dev/null +++ b/en/expanded-30-3/lesson-1/main.py @@ -0,0 +1,4 @@ +cpu_ms=8 +upload_ms,kernel_ms,download_ms=5,2,4 +print("Hypothetical GPU total:",upload_ms+kernel_ms+download_ms) +print("Hypothetical CPU total:",cpu_ms) diff --git a/en/expanded-30-3/lesson-2/lesson.html b/en/expanded-30-3/lesson-2/lesson.html new file mode 100644 index 0000000..6df2c17 --- /dev/null +++ b/en/expanded-30-3/lesson-2/lesson.html @@ -0,0 +1,7 @@ +Coalescing and shared workgroup memory

    Coalescing and shared workgroup memory

    15-minute session: read for 3 minutes, trace for 3, experiment for 7, and complete the check for 2. Spend longer whenever you need.

    GPU lanes accessing adjacent elements can allow efficient memory transactions. Workgroup-shared memory may reduce repeated global reads, but it consumes a limited resource and requires correct synchronization. Names and details vary across CUDA, Metal, Vulkan, and other APIs. Draw which lane reads which element before changing data layout; validate the output after every layout change.

    Practice and evidence: Predict the example or draw its state transitions. Change one assumption, test the boundary, and record the actual result. Explain what this small model does not establish about a production system.

    lanes=4
    +contiguous=[lane for lane in range(lanes)]
    +strided=[lane*16 for lane in range(lanes)]
    +print(contiguous)
    +print(strided)
    +

    Expected result: [0, 1, 2, 3] +[0, 16, 32, 48]

    Practice and evidence

    Keep three notes: your prediction, the actual result, and why they match or differ. The completion check grades understanding; the practice task builds skill.

    Language reference: git.agilaos.com

    Language reference: docs.nvidia.com

    \ No newline at end of file diff --git a/en/expanded-30-3/lesson-2/main.py b/en/expanded-30-3/lesson-2/main.py new file mode 100644 index 0000000..4075806 --- /dev/null +++ b/en/expanded-30-3/lesson-2/main.py @@ -0,0 +1,5 @@ +lanes=4 +contiguous=[lane for lane in range(lanes)] +strided=[lane*16 for lane in range(lanes)] +print(contiguous) +print(strided) diff --git a/en/expanded-30-3/lesson-3/lesson.html b/en/expanded-30-3/lesson-3/lesson.html new file mode 100644 index 0000000..a1b72c9 --- /dev/null +++ b/en/expanded-30-3/lesson-3/lesson.html @@ -0,0 +1,7 @@ +Synchronization and buffer ownership

    Synchronization and buffer ownership

    15-minute session: read for 3 minutes, trace for 3, experiment for 7, and complete the check for 2. Spend longer whenever you need.

    Submitting a GPU job may return before execution finishes. Reusing or freeing its buffers too early can corrupt results. Model allocated, uploaded, submitted, completed, and released states. Require completion before reuse. A barrier has a defined scope; a workgroup barrier is not automatically synchronization between every workgroup or with the host.

    Practice and evidence: Predict the example or draw its state transitions. Change one assumption, test the boundary, and record the actual result. Explain what this small model does not establish about a production system.

    state="submitted"
    +def can_release(state): return state=="completed"
    +assert not can_release(state)
    +state="completed"
    +assert can_release(state)
    +print("Passed")
    +

    Expected result: Passed

    Practice and evidence

    Keep three notes: your prediction, the actual result, and why they match or differ. The completion check grades understanding; the practice task builds skill.

    Language reference: git.agilaos.com

    Language reference: docs.nvidia.com

    \ No newline at end of file diff --git a/en/expanded-30-3/lesson-3/main.py b/en/expanded-30-3/lesson-3/main.py new file mode 100644 index 0000000..944f0fa --- /dev/null +++ b/en/expanded-30-3/lesson-3/main.py @@ -0,0 +1,6 @@ +state="submitted" +def can_release(state): return state=="completed" +assert not can_release(state) +state="completed" +assert can_release(state) +print("Passed") diff --git a/en/expanded-30-4/README.md b/en/expanded-30-4/README.md new file mode 100644 index 0000000..2ade595 --- /dev/null +++ b/en/expanded-30-4/README.md @@ -0,0 +1,9 @@ +# CPU/GPU Core & Memory Mapping · 4 + +[Agila University track](https://edu.agilaos.com/track.php?track=30&lang=en) + +About 15 minutes per lesson. Predict, run, change, explain, then complete the check in University. + +- [Lesson 1: Measure repeated runs with a real clock](lesson-1/lesson.html) +- [Lesson 2: Select a backend from evidence](lesson-2/lesson.html) +- [Lesson 3: Publish a reproducible placement study](lesson-3/lesson.html) diff --git a/en/expanded-30-4/lesson-1/lesson.html b/en/expanded-30-4/lesson-1/lesson.html new file mode 100644 index 0000000..dd3f3e1 --- /dev/null +++ b/en/expanded-30-4/lesson-1/lesson.html @@ -0,0 +1,14 @@ +Measure repeated runs with a real clock

    Measure repeated runs with a real clock

    15-minute session: read for 3 minutes, trace for 3, experiment for 7, and complete the check for 2. Spend longer whenever you need.

    Use a monotonic high-resolution clock. Warm up separately, repeat a fixed workload, verify a checksum, and report median plus spread. Record units, data size, environment, and compiler/runtime version. The following measures Python sum on this CPU and includes interpreter/runtime costs; it is not a GPU or raw memory-bandwidth benchmark.

    Practice and evidence: Predict the example or draw its state transitions. Change one assumption, test the boundary, and record the actual result. Explain what this small model does not establish about a production system.

    import time,statistics,platform
    +data=list(range(100000))
    +expected=4999950000
    +assert sum(data)==expected
    +samples=[]
    +for _ in range(7):
    +    start=time.perf_counter_ns()
    +    result=sum(data)
    +    samples.append((time.perf_counter_ns()-start)/1e6)
    +    assert result==expected
    +print("CPU Python",platform.python_version(),platform.machine())
    +print("median_ms",round(statistics.median(samples),4))
    +print("min_ms",round(min(samples),4),"max_ms",round(max(samples),4))
    +

    Practice and evidence

    Keep three notes: your prediction, the actual result, and why they match or differ. The completion check grades understanding; the practice task builds skill.

    Language reference: git.agilaos.com

    Language reference: docs.nvidia.com

    \ No newline at end of file diff --git a/en/expanded-30-4/lesson-1/main.py b/en/expanded-30-4/lesson-1/main.py new file mode 100644 index 0000000..ff9edc3 --- /dev/null +++ b/en/expanded-30-4/lesson-1/main.py @@ -0,0 +1,13 @@ +import time,statistics,platform +data=list(range(100000)) +expected=4999950000 +assert sum(data)==expected +samples=[] +for _ in range(7): + start=time.perf_counter_ns() + result=sum(data) + samples.append((time.perf_counter_ns()-start)/1e6) + assert result==expected +print("CPU Python",platform.python_version(),platform.machine()) +print("median_ms",round(statistics.median(samples),4)) +print("min_ms",round(min(samples),4),"max_ms",round(max(samples),4)) diff --git a/en/expanded-30-4/lesson-2/lesson.html b/en/expanded-30-4/lesson-2/lesson.html new file mode 100644 index 0000000..94f260f --- /dev/null +++ b/en/expanded-30-4/lesson-2/lesson.html @@ -0,0 +1,4 @@ +Select a backend from evidence

    Select a backend from evidence

    15-minute session: read for 3 minutes, trace for 3, experiment for 7, and complete the check for 2. Spend longer whenever you need.

    Filter candidates by capability, correctness, memory capacity, and constraints before comparing speed. Match representative workload sizes and include transfers. Preserve a fallback when a device is absent. The table below contains invented demonstration results, explicitly marked as such; replace them with real measurements only after validation. Do not fit a policy to one lucky run.

    Practice and evidence: Predict the example or draw its state transitions. Change one assumption, test the boundary, and record the actual result. Explain what this small model does not establish about a production system.

    candidates=[{"name":"CPU demo","correct":True,"ms":8},{"name":"GPU demo","correct":True,"ms":11},{"name":"Broken demo","correct":False,"ms":1}]
    +valid=[c for c in candidates if c["correct"]]
    +print("Hypothetical winner:",min(valid,key=lambda c:c["ms"])["name"])
    +

    Expected result: Hypothetical winner: CPU demo

    Practice and evidence

    Keep three notes: your prediction, the actual result, and why they match or differ. The completion check grades understanding; the practice task builds skill.

    Language reference: git.agilaos.com

    Language reference: docs.nvidia.com

    \ No newline at end of file diff --git a/en/expanded-30-4/lesson-2/main.py b/en/expanded-30-4/lesson-2/main.py new file mode 100644 index 0000000..1c313a7 --- /dev/null +++ b/en/expanded-30-4/lesson-2/main.py @@ -0,0 +1,3 @@ +candidates=[{"name":"CPU demo","correct":True,"ms":8},{"name":"GPU demo","correct":True,"ms":11},{"name":"Broken demo","correct":False,"ms":1}] +valid=[c for c in candidates if c["correct"]] +print("Hypothetical winner:",min(valid,key=lambda c:c["ms"])["name"]) diff --git a/en/expanded-30-4/lesson-3/lesson.html b/en/expanded-30-4/lesson-3/lesson.html new file mode 100644 index 0000000..d06bd46 --- /dev/null +++ b/en/expanded-30-4/lesson-3/lesson.html @@ -0,0 +1 @@ +Publish a reproducible placement study

    Publish a reproducible placement study

    15-minute session: read for 3 minutes, trace for 3, experiment for 7, and complete the check for 2. Spend longer whenever you need.

    Build a report for at least two workload sizes. Include source revision, device topology, memory type and placement, affinity, input seed, correctness tolerance, repetitions, raw samples, and end-to-end cost. Distinguish measured results, simulations, and untested candidates. Explain why the winning policy may change on another machine. Submit code and raw evidence on Forge, never confidential machine credentials.

    Practice and evidence: Predict the example or draw its state transitions. Change one assumption, test the boundary, and record the actual result. Explain what this small model does not establish about a production system.

    Practice and evidence

    Keep three notes: your prediction, the actual result, and why they match or differ. The completion check grades understanding; the practice task builds skill.

    Language reference: git.agilaos.com

    Language reference: docs.nvidia.com

    \ No newline at end of file diff --git a/en/expanded-8-1/README.md b/en/expanded-8-1/README.md new file mode 100644 index 0000000..71f925a --- /dev/null +++ b/en/expanded-8-1/README.md @@ -0,0 +1,9 @@ +# Web Development · 1 + +[Agila University track](https://edu.agilaos.com/track.php?track=8&lang=en) + +About 15 minutes per lesson. Predict, run, change, explain, then complete the check in University. + +- [Lesson 1: Give a page meaning with HTML](lesson-1/lesson.html) +- [Lesson 2: Style without breaking readability](lesson-2/lesson.html) +- [Lesson 3: Respond to an event](lesson-3/lesson.html) diff --git a/en/expanded-8-1/lesson-1/lesson.html b/en/expanded-8-1/lesson-1/lesson.html new file mode 100644 index 0000000..9985c22 --- /dev/null +++ b/en/expanded-8-1/lesson-1/lesson.html @@ -0,0 +1,5 @@ +Give a page meaning with HTML

    Give a page meaning with HTML

    15-minute session: read for 3 minutes, trace for 3, experiment for 7, and complete the check for 2. Spend longer whenever you need.

    HTML describes content. A heading labels a section; a list groups related items. Open the live preview, then replace the title and add a third task. Explain why a heading element communicates more than a large bold paragraph. Keep one clear main heading and set the document language for your audience.

    <!doctype html>
    +<html lang="en"><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1">
    +<title>Agila study</title>
    +<main><h1>My study plan</h1><p>I will explain what I build.</p><ul><li>Read</li><li>Test</li></ul></main>
    +</html>

    Practice and evidence

    Keep three notes: your prediction, the actual result, and why they match or differ. The completion check grades understanding; the practice task builds skill.

    \ No newline at end of file diff --git a/en/expanded-8-1/lesson-1/main.html b/en/expanded-8-1/lesson-1/main.html new file mode 100644 index 0000000..b8b2f86 --- /dev/null +++ b/en/expanded-8-1/lesson-1/main.html @@ -0,0 +1,5 @@ + + +Agila study +

    My study plan

    I will explain what I build.

    • Read
    • Test
    + \ No newline at end of file diff --git a/en/expanded-8-1/lesson-2/lesson.html b/en/expanded-8-1/lesson-2/lesson.html new file mode 100644 index 0000000..9589d3d --- /dev/null +++ b/en/expanded-8-1/lesson-2/lesson.html @@ -0,0 +1,5 @@ +Style without breaking readability

    Style without breaking readability

    15-minute session: read for 3 minutes, trace for 3, experiment for 7, and complete the check for 2. Spend longer whenever you need.

    CSS selectors choose elements and declarations change their presentation. Predict what changing padding does to the card’s interior. Compare it with margin outside the border. Resize the preview and keep text readable without horizontal scrolling. Test keyboard focus on the button. Color alone must not communicate a pass or failure.

    <!doctype html>
    +<html lang="en"><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1">
    +<title>Agila study</title>
    +<style>body{font:1.1rem system-ui;margin:2rem;background:#f4f2fb;color:#21143e} main{max-width:40rem;margin:auto;padding:1.5rem;background:white;border:2px solid #56329a;border-radius:12px}button{padding:1rem}</style>
    +<main><h1>My study plan</h1><p>Resize the preview. Keep this text readable.</p><button>Start</button></main></html>

    Practice and evidence

    Keep three notes: your prediction, the actual result, and why they match or differ. The completion check grades understanding; the practice task builds skill.

    \ No newline at end of file diff --git a/en/expanded-8-1/lesson-2/main.html b/en/expanded-8-1/lesson-2/main.html new file mode 100644 index 0000000..de7c19f --- /dev/null +++ b/en/expanded-8-1/lesson-2/main.html @@ -0,0 +1,5 @@ + + +Agila study + +

    My study plan

    Resize the preview. Keep this text readable.

    \ No newline at end of file diff --git a/en/expanded-8-1/lesson-3/lesson.html b/en/expanded-8-1/lesson-3/lesson.html new file mode 100644 index 0000000..942a4a8 --- /dev/null +++ b/en/expanded-8-1/lesson-3/lesson.html @@ -0,0 +1,5 @@ +Respond to an event

    Respond to an event

    15-minute session: read for 3 minutes, trace for 3, experiment for 7, and complete the check for 2. Spend longer whenever you need.

    JavaScript changes behavior. The listener waits for a click, updates done, and renders the new text. Predict the display after three clicks. Add a reset button that updates both state and the visible count. Reload the preview: this counter is memory in a page, not a saved account record.

    <!doctype html>
    +<html lang="en"><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1">
    +<title>Agila study</title>
    +<main><h1>Study counter</h1><button id="add">Complete one</button><p id="count" aria-live="polite">0</p></main>
    +<script>let done=0;document.getElementById("add").addEventListener("click",()=>{done+=1;document.getElementById("count").textContent=String(done);});</script></html>

    Practice and evidence

    Keep three notes: your prediction, the actual result, and why they match or differ. The completion check grades understanding; the practice task builds skill.

    \ No newline at end of file diff --git a/en/expanded-8-1/lesson-3/main.html b/en/expanded-8-1/lesson-3/main.html new file mode 100644 index 0000000..68b7607 --- /dev/null +++ b/en/expanded-8-1/lesson-3/main.html @@ -0,0 +1,5 @@ + + +Agila study +

    Study counter

    0

    + \ No newline at end of file diff --git a/en/expanded-8-2/README.md b/en/expanded-8-2/README.md new file mode 100644 index 0000000..44f7c8b --- /dev/null +++ b/en/expanded-8-2/README.md @@ -0,0 +1,9 @@ +# Web Development · 2 + +[Agila University track](https://edu.agilaos.com/track.php?track=8&lang=en) + +About 15 minutes per lesson. Predict, run, change, explain, then complete the check in University. + +- [Lesson 1: Validate input and label controls](lesson-1/lesson.html) +- [Lesson 2: Render data as text](lesson-2/lesson.html) +- [Lesson 3: Ship a small tested website](lesson-3/lesson.html) diff --git a/en/expanded-8-2/lesson-1/lesson.html b/en/expanded-8-2/lesson-1/lesson.html new file mode 100644 index 0000000..ab3de88 --- /dev/null +++ b/en/expanded-8-2/lesson-1/lesson.html @@ -0,0 +1,5 @@ +Validate input and label controls

    Validate input and label controls

    15-minute session: read for 3 minutes, trace for 3, experiment for 7, and complete the check for 2. Spend longer whenever you need.

    A visible label explains an input. The for attribute connects it to an id. Test empty input, 0, 1, 60, 61, and 1.5. HTML constraints help users but a real server must validate again because browser requests can be changed. This preview does not submit data to a server.

    <!doctype html>
    +<html lang="en"><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1">
    +<title>Agila study</title>
    +<main><h1>Study time</h1><label for="minutes">Minutes (1–60)</label><input id="minutes" type="number" min="1" max="60"><button id="check">Check</button><p id="result" role="status"></p></main>
    +<script>document.getElementById("check").onclick=()=>{const raw=document.getElementById("minutes").value;const n=Number(raw);document.getElementById("result").textContent=raw.trim()!==""&&Number.isInteger(n)&&n>=1&&n<=60?"Ready":"Use a whole number from 1 to 60";};</script></html>

    Practice and evidence

    Keep three notes: your prediction, the actual result, and why they match or differ. The completion check grades understanding; the practice task builds skill.

    \ No newline at end of file diff --git a/en/expanded-8-2/lesson-1/main.html b/en/expanded-8-2/lesson-1/main.html new file mode 100644 index 0000000..279f995 --- /dev/null +++ b/en/expanded-8-2/lesson-1/main.html @@ -0,0 +1,5 @@ + + +Agila study +

    Study time

    + \ No newline at end of file diff --git a/en/expanded-8-2/lesson-2/lesson.html b/en/expanded-8-2/lesson-2/lesson.html new file mode 100644 index 0000000..a376c16 --- /dev/null +++ b/en/expanded-8-2/lesson-2/lesson.html @@ -0,0 +1,5 @@ +Render data as text

    Render data as text

    15-minute session: read for 3 minutes, trace for 3, experiment for 7, and complete the check for 2. Spend longer whenever you need.

    The third task contains characters that resemble HTML. textContent displays those characters as text. Replacing it with innerHTML would interpret markup and can create an injection risk with untrusted data. Add an item containing an ampersand and angle brackets. Verify that the visible result preserves the literal text.

    <!doctype html>
    +<html lang="en"><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1">
    +<title>Agila study</title>
    +<main><h1>Tasks</h1><ul id="tasks"></ul></main>
    +<script>const tasks=["Read","Test","<strong>Explain</strong>"];for(const text of tasks){const li=document.createElement("li");li.textContent=text;document.getElementById("tasks").append(li);}</script></html>

    Practice and evidence

    Keep three notes: your prediction, the actual result, and why they match or differ. The completion check grades understanding; the practice task builds skill.

    \ No newline at end of file diff --git a/en/expanded-8-2/lesson-2/main.html b/en/expanded-8-2/lesson-2/main.html new file mode 100644 index 0000000..106dc16 --- /dev/null +++ b/en/expanded-8-2/lesson-2/main.html @@ -0,0 +1,5 @@ + + +Agila study +

    Tasks

      + \ No newline at end of file diff --git a/en/expanded-8-2/lesson-3/lesson.html b/en/expanded-8-2/lesson-3/lesson.html new file mode 100644 index 0000000..ef52ce4 --- /dev/null +++ b/en/expanded-8-2/lesson-3/lesson.html @@ -0,0 +1,5 @@ +Ship a small tested website

      Ship a small tested website

      15-minute session: read for 3 minutes, trace for 3, experiment for 7, and complete the check for 2. Spend longer whenever you need.

      Combine the semantic page, responsive card, validated input, and counter into a study planner. The sample checks only its remaining-work function. Add tests for empty input and keyboard use, then deliberately break one condition to ensure a test fails. Save your source on Forge. Publishing needs a host, domain, HTTPS, and a rollback plan; this isolated preview is your workshop.

      <!doctype html>
      +<html lang="en"><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1">
      +<title>Agila study</title>
      +<main><h1>Planner checks</h1><pre id="result"></pre></main>
      +<script>function remaining(total,done){return Math.max(0,total-done)}const cases=[[4,1,3],[4,4,0],[4,5,0],[0,0,0]];document.getElementById("result").textContent=cases.map(([t,d,want])=>`${t},${d}: ${remaining(t,d)===want?"PASS":"FAIL"}`).join("\n");</script></html>

      Practice and evidence

      Keep three notes: your prediction, the actual result, and why they match or differ. The completion check grades understanding; the practice task builds skill.

      \ No newline at end of file diff --git a/en/expanded-8-2/lesson-3/main.html b/en/expanded-8-2/lesson-3/main.html new file mode 100644 index 0000000..92c6980 --- /dev/null +++ b/en/expanded-8-2/lesson-3/main.html @@ -0,0 +1,5 @@ + + +Agila study +

      Planner checks

      + \ No newline at end of file diff --git a/en/objective-pascal-bridge-20261101/README.md b/en/objective-pascal-bridge-20261101/README.md new file mode 100644 index 0000000..fdfc578 --- /dev/null +++ b/en/objective-pascal-bridge-20261101/README.md @@ -0,0 +1,9 @@ +# Objective-Pascal interoperability + +[Agila University track](https://edu.agilaos.com/track.php?track=10&lang=en) + +About 15 minutes per lesson. Predict, run, change, explain, then complete the check in University. + +- [Lesson 1: Enable Objective-Pascal deliberately](lesson-1/lesson.html) +- [Lesson 2: Messages, selectors, and runtime contracts](lesson-2/lesson.html) +- [Lesson 3: Test a platform bridge honestly](lesson-3/lesson.html) diff --git a/en/objective-pascal-bridge-20261101/lesson-1/lesson.html b/en/objective-pascal-bridge-20261101/lesson-1/lesson.html new file mode 100644 index 0000000..fef0512 --- /dev/null +++ b/en/objective-pascal-bridge-20261101/lesson-1/lesson.html @@ -0,0 +1 @@ +Enable Objective-Pascal deliberately

      Enable Objective-Pascal deliberately

      15-minute session: read for 3 minutes, trace for 3, experiment for 7, and complete the check for 2. Spend longer whenever you need.

      Objective-Pascal is Free Pascal support for Objective-C constructs, not just another name for Object Pascal classes. The mode switches {$modeswitch objectivec1} and {$modeswitch objectivec2} enable the relevant features. A later {$mode ...} directive resets mode switches, so order matters. Read the Free Pascal reference and annotate a source header. This Linux lab runs the preceding Object Pascal exercises; it does not provide an Objective-Pascal Apple-framework runtime.

      Practice and evidence

      Keep three notes: your prediction, the actual result, and why they match or differ. The completion check grades understanding; the practice task builds skill.

      Language reference

      \ No newline at end of file diff --git a/en/objective-pascal-bridge-20261101/lesson-2/lesson.html b/en/objective-pascal-bridge-20261101/lesson-2/lesson.html new file mode 100644 index 0000000..1cee0e2 --- /dev/null +++ b/en/objective-pascal-bridge-20261101/lesson-2/lesson.html @@ -0,0 +1 @@ +Messages, selectors, and runtime contracts

      Messages, selectors, and runtime contracts

      15-minute session: read for 3 minutes, trace for 3, experiment for 7, and complete the check for 2. Spend longer whenever you need.

      Objective-C interoperability requires agreement about classes, selectors, argument types, object lifetime, and the runtime ABI. Similar-looking source syntax is not enough. Compare a method declaration in an Objective-C header with its Pascal binding in a documented framework unit. Write a table of receiver, selector, parameters, result, and ownership. Do not invent a new binding from a name alone. These are useful design questions for a future Objective Ada specification, not a specification of that proposed language.

      Practice and evidence

      Keep three notes: your prediction, the actual result, and why they match or differ. The completion check grades understanding; the practice task builds skill.

      Language reference

      \ No newline at end of file diff --git a/en/objective-pascal-bridge-20261101/lesson-3/lesson.html b/en/objective-pascal-bridge-20261101/lesson-3/lesson.html new file mode 100644 index 0000000..c2bcac8 --- /dev/null +++ b/en/objective-pascal-bridge-20261101/lesson-3/lesson.html @@ -0,0 +1 @@ +Test a platform bridge honestly

      Test a platform bridge honestly

      15-minute session: read for 3 minutes, trace for 3, experiment for 7, and complete the check for 2. Spend longer whenever you need.

      Use a supported target compiler, framework headers, and runtime. Record the exact versions. Compile one minimal binding, execute it on the target, and verify the result and ownership behavior. A Linux Object Pascal class test cannot establish that an Apple framework bridge works. If the target is unavailable, complete the design analysis and label execution untested. Keep a separate portable core so the rest of your project remains testable.

      Practice and evidence

      Keep three notes: your prediction, the actual result, and why they match or differ. The completion check grades understanding; the practice task builds skill.

      Language reference

      \ No newline at end of file diff --git a/en/objectivec-foundations-20261101/README.md b/en/objectivec-foundations-20261101/README.md new file mode 100644 index 0000000..a2cf4fa --- /dev/null +++ b/en/objectivec-foundations-20261101/README.md @@ -0,0 +1,9 @@ +# Objective-C — first steps + +[Agila University track](https://edu.agilaos.com/track.php?track=15&lang=en) + +About 15 minutes per lesson. Predict, run, change, explain, then complete the check in University. + +- [Lesson 1: Your first explainable program](lesson-1/lesson.html) +- [Lesson 2: Values and decisions](lesson-2/lesson.html) +- [Lesson 3: Functions and a clear policy](lesson-3/lesson.html) diff --git a/en/objectivec-foundations-20261101/lesson-1/lesson.html b/en/objectivec-foundations-20261101/lesson-1/lesson.html new file mode 100644 index 0000000..b214472 --- /dev/null +++ b/en/objectivec-foundations-20261101/lesson-1/lesson.html @@ -0,0 +1,12 @@ +Your first explainable program

      Your first explainable program

      15-minute session: read for 3 minutes, trace for 3, experiment for 7, and complete the check for 2. Spend longer whenever you need.

      A program is a set of instructions. Read the example from its entry point to the output statement. Text in quotes is data; the output operation is an instruction. Predict the printed line before running. Change only the message, run again, then remove one required punctuation mark and read the first error. Restore the working source.

      Square brackets send a message to a receiver: [plan completed]. @interface declares methods and @implementation defines them. These GNUstep exercises use explicit memory management, not Apple ARC.

      #import <Foundation/Foundation.h>
      +#include <stdio.h>
      +#include <assert.h>
      +
      +int main(void) {
      +    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
      +    NSString *message = @"Ready";
      +    puts([message UTF8String]);
      +    [pool drain];
      +    return 0;
      +}
      +

      Expected result: Ready

      Practice and evidence

      Keep three notes: your prediction, the actual result, and why they match or differ. The completion check grades understanding; the practice task builds skill.

      Language reference

      \ No newline at end of file diff --git a/en/objectivec-foundations-20261101/lesson-1/main.m b/en/objectivec-foundations-20261101/lesson-1/main.m new file mode 100644 index 0000000..46bc812 --- /dev/null +++ b/en/objectivec-foundations-20261101/lesson-1/main.m @@ -0,0 +1,11 @@ +#import +#include +#include + +int main(void) { + NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; + NSString *message = @"Ready"; + puts([message UTF8String]); + [pool drain]; + return 0; +} diff --git a/en/objectivec-foundations-20261101/lesson-2/lesson.html b/en/objectivec-foundations-20261101/lesson-2/lesson.html new file mode 100644 index 0000000..9017fd0 --- /dev/null +++ b/en/objectivec-foundations-20261101/lesson-2/lesson.html @@ -0,0 +1,12 @@ +Values and decisions

      Values and decisions

      15-minute session: read for 3 minutes, trace for 3, experiment for 7, and complete the check for 2. Spend longer whenever you need.

      A decision chooses which statements run. The policy here is “ready at 80 or higher.” Trace 85, 79, 80, and 81 before running each case. The comparison includes 80. A program that prints the right answer for 85 may still be wrong at the boundary. Add a separate check rejecting scores below 0 or above 100; rejection and needing practice mean different things.

      Square brackets send a message to a receiver: [plan completed]. @interface declares methods and @implementation defines them. These GNUstep exercises use explicit memory management, not Apple ARC.

      #import <Foundation/Foundation.h>
      +#include <stdio.h>
      +#include <assert.h>
      +
      +int main(void) {
      +    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
      +    NSInteger score = 85;
      +    puts(score >= 80 ? "Ready" : "Practice");
      +    [pool drain];
      +    return 0;
      +}
      +

      Expected result: Ready

      Practice and evidence

      Keep three notes: your prediction, the actual result, and why they match or differ. The completion check grades understanding; the practice task builds skill.

      Language reference

      \ No newline at end of file diff --git a/en/objectivec-foundations-20261101/lesson-2/main.m b/en/objectivec-foundations-20261101/lesson-2/main.m new file mode 100644 index 0000000..34856ad --- /dev/null +++ b/en/objectivec-foundations-20261101/lesson-2/main.m @@ -0,0 +1,11 @@ +#import +#include +#include + +int main(void) { + NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; + NSInteger score = 85; + puts(score >= 80 ? "Ready" : "Practice"); + [pool drain]; + return 0; +} diff --git a/en/objectivec-foundations-20261101/lesson-3/lesson.html b/en/objectivec-foundations-20261101/lesson-3/lesson.html new file mode 100644 index 0000000..fe72652 --- /dev/null +++ b/en/objectivec-foundations-20261101/lesson-3/lesson.html @@ -0,0 +1,11 @@ +Functions and a clear policy

      Functions and a clear policy

      15-minute session: read for 3 minutes, trace for 3, experiment for 7, and complete the check for 2. Spend longer whenever you need.

      A function or subroutine names a reusable calculation. Our policy accepts nonnegative total and completed counts and returns zero when completed reaches or exceeds total. Otherwise it returns their difference. Trace (4,1), (4,4), (4,5), and (0,0). Keep printing separate from calculation. Write down why negative inputs are outside this exercise’s domain, then design an explicit rejection policy before accepting external input.

      Square brackets send a message to a receiver: [plan completed]. @interface declares methods and @implementation defines them. These GNUstep exercises use explicit memory management, not Apple ARC.

      #import <Foundation/Foundation.h>
      +#include <stdio.h>
      +#include <assert.h>
      +int remaining(int total, int done) { return done >= total ? 0 : total - done; }
      +int main(void) {
      +    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
      +    printf("%d\n", remaining(4,1));
      +    [pool drain];
      +    return 0;
      +}
      +

      Expected result: 3

      Practice and evidence

      Keep three notes: your prediction, the actual result, and why they match or differ. The completion check grades understanding; the practice task builds skill.

      Language reference

      \ No newline at end of file diff --git a/en/objectivec-foundations-20261101/lesson-3/main.m b/en/objectivec-foundations-20261101/lesson-3/main.m new file mode 100644 index 0000000..980493c --- /dev/null +++ b/en/objectivec-foundations-20261101/lesson-3/main.m @@ -0,0 +1,10 @@ +#import +#include +#include +int remaining(int total, int done) { return done >= total ? 0 : total - done; } +int main(void) { + NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; + printf("%d\n", remaining(4,1)); + [pool drain]; + return 0; +} diff --git a/en/objectivec-practice-20261101/README.md b/en/objectivec-practice-20261101/README.md new file mode 100644 index 0000000..23f85ee --- /dev/null +++ b/en/objectivec-practice-20261101/README.md @@ -0,0 +1,9 @@ +# Objective-C — build and test + +[Agila University track](https://edu.agilaos.com/track.php?track=15&lang=en) + +About 15 minutes per lesson. Predict, run, change, explain, then complete the check in University. + +- [Lesson 1: Collections and repeated work](lesson-1/lesson.html) +- [Lesson 2: A language feature worth understanding](lesson-2/lesson.html) +- [Lesson 3: Build, break, and test a study planner](lesson-3/lesson.html) diff --git a/en/objectivec-practice-20261101/lesson-1/lesson.html b/en/objectivec-practice-20261101/lesson-1/lesson.html new file mode 100644 index 0000000..9f49f68 --- /dev/null +++ b/en/objectivec-practice-20261101/lesson-1/lesson.html @@ -0,0 +1,15 @@ +Collections and repeated work

      Collections and repeated work

      15-minute session: read for 3 minutes, trace for 3, experiment for 7, and complete the check for 2. Spend longer whenever you need.

      A collection stores related values. The loop visits 1, 2, and 3, updating the total from 0 to 1, then 3, then 6. Record this trace rather than guessing. Identify the first and last valid positions in this language: Pascal can declare a 1-based array, while many other examples use zero-based containers. Add another value and update the bounds correctly. Explain what an empty collection should produce.

      Square brackets send a message to a receiver: [plan completed]. @interface declares methods and @implementation defines them. These GNUstep exercises use explicit memory management, not Apple ARC.

      #import <Foundation/Foundation.h>
      +#include <stdio.h>
      +#include <assert.h>
      +
      +int main(void) {
      +    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
      +    NSArray *minutes = [NSArray arrayWithObjects:
      +        [NSNumber numberWithInt:1], [NSNumber numberWithInt:2], [NSNumber numberWithInt:3], nil];
      +    int total = 0;
      +    for (NSNumber *value in minutes) total += [value intValue];
      +    printf("%d\n", total);
      +    [pool drain];
      +    return 0;
      +}
      +

      Expected result: 6

      Practice and evidence

      Keep three notes: your prediction, the actual result, and why they match or differ. The completion check grades understanding; the practice task builds skill.

      Language reference

      \ No newline at end of file diff --git a/en/objectivec-practice-20261101/lesson-1/main.m b/en/objectivec-practice-20261101/lesson-1/main.m new file mode 100644 index 0000000..8d5b43c --- /dev/null +++ b/en/objectivec-practice-20261101/lesson-1/main.m @@ -0,0 +1,14 @@ +#import +#include +#include + +int main(void) { + NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; + NSArray *minutes = [NSArray arrayWithObjects: + [NSNumber numberWithInt:1], [NSNumber numberWithInt:2], [NSNumber numberWithInt:3], nil]; + int total = 0; + for (NSNumber *value in minutes) total += [value intValue]; + printf("%d\n", total); + [pool drain]; + return 0; +} diff --git a/en/objectivec-practice-20261101/lesson-2/lesson.html b/en/objectivec-practice-20261101/lesson-2/lesson.html new file mode 100644 index 0000000..0baac86 --- /dev/null +++ b/en/objectivec-practice-20261101/lesson-2/lesson.html @@ -0,0 +1,18 @@ +A language feature worth understanding

      A language feature worth understanding

      15-minute session: read for 3 minutes, trace for 3, experiment for 7, and complete the check for 2. Spend longer whenever you need.

      Use the language note below to explain this example’s state changes. Identify what is copied, what is shared, what can fail, and what is released. Only some of those questions apply to this particular program: say which ones. Make one deliberate change, predict the effect, and compare it with the actual result. A familiar-looking operator in another language may obey a different rule.

      Square brackets send a message to a receiver: [plan completed]. @interface declares methods and @implementation defines them. These GNUstep exercises use explicit memory management, not Apple ARC.

      #import <Foundation/Foundation.h>
      +#include <stdio.h>
      +#include <assert.h>
      +@interface StudyPlan : NSObject
      +- (int)completed;
      +@end
      +@implementation StudyPlan
      +- (int)completed { return 3; }
      +@end
      +int main(void) {
      +    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
      +    StudyPlan *plan = [[StudyPlan alloc] init];
      +    printf("%d\n", [plan completed]);
      +    [plan release];
      +    [pool drain];
      +    return 0;
      +}
      +

      Expected result: 3

      Practice and evidence

      Keep three notes: your prediction, the actual result, and why they match or differ. The completion check grades understanding; the practice task builds skill.

      Language reference

      \ No newline at end of file diff --git a/en/objectivec-practice-20261101/lesson-2/main.m b/en/objectivec-practice-20261101/lesson-2/main.m new file mode 100644 index 0000000..0dde997 --- /dev/null +++ b/en/objectivec-practice-20261101/lesson-2/main.m @@ -0,0 +1,17 @@ +#import +#include +#include +@interface StudyPlan : NSObject +- (int)completed; +@end +@implementation StudyPlan +- (int)completed { return 3; } +@end +int main(void) { + NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; + StudyPlan *plan = [[StudyPlan alloc] init]; + printf("%d\n", [plan completed]); + [plan release]; + [pool drain]; + return 0; +} diff --git a/en/objectivec-practice-20261101/lesson-3/lesson.html b/en/objectivec-practice-20261101/lesson-3/lesson.html new file mode 100644 index 0000000..7543bfb --- /dev/null +++ b/en/objectivec-practice-20261101/lesson-3/lesson.html @@ -0,0 +1,15 @@ +Build, break, and test a study planner

      Build, break, and test a study planner

      15-minute session: read for 3 minutes, trace for 3, experiment for 7, and complete the check for 2. Spend longer whenever you need.

      A useful test compares a result with a requirement. The planner must never report negative remaining work for its stated nonnegative input domain. Run the starter, then deliberately remove the protection for completed counts above total. At least one check should fail. Restore it. Add two named study tasks, a summary, and boundary cases. Save the source and evidence on Agila Forge. Explain every line, including anything suggested by AI.

      Square brackets send a message to a receiver: [plan completed]. @interface declares methods and @implementation defines them. These GNUstep exercises use explicit memory management, not Apple ARC.

      #import <Foundation/Foundation.h>
      +#include <stdio.h>
      +#include <assert.h>
      +int remaining(int total, int done) { return done >= total ? 0 : total - done; }
      +int main(void) {
      +    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
      +    assert(remaining(4,1)==3);
      +    assert(remaining(4,4)==0);
      +    assert(remaining(4,5)==0);
      +    assert(remaining(0,0)==0);
      +    puts("Passed");
      +    [pool drain];
      +    return 0;
      +}
      +

      Expected result: Passed

      Practice and evidence

      Keep three notes: your prediction, the actual result, and why they match or differ. The completion check grades understanding; the practice task builds skill.

      Language reference

      \ No newline at end of file diff --git a/en/objectivec-practice-20261101/lesson-3/main.m b/en/objectivec-practice-20261101/lesson-3/main.m new file mode 100644 index 0000000..787edd2 --- /dev/null +++ b/en/objectivec-practice-20261101/lesson-3/main.m @@ -0,0 +1,14 @@ +#import +#include +#include +int remaining(int total, int done) { return done >= total ? 0 : total - done; } +int main(void) { + NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; + assert(remaining(4,1)==3); + assert(remaining(4,4)==0); + assert(remaining(4,5)==0); + assert(remaining(0,0)==0); + puts("Passed"); + [pool drain]; + return 0; +} diff --git a/en/objectpascal-foundations-20261101/README.md b/en/objectpascal-foundations-20261101/README.md new file mode 100644 index 0000000..df5b75f --- /dev/null +++ b/en/objectpascal-foundations-20261101/README.md @@ -0,0 +1,9 @@ +# Object Pascal & Objective-Pascal — first steps + +[Agila University track](https://edu.agilaos.com/track.php?track=10&lang=en) + +About 15 minutes per lesson. Predict, run, change, explain, then complete the check in University. + +- [Lesson 1: Your first explainable program](lesson-1/lesson.html) +- [Lesson 2: Values and decisions](lesson-2/lesson.html) +- [Lesson 3: Functions and a clear policy](lesson-3/lesson.html) diff --git a/en/objectpascal-foundations-20261101/lesson-1/lesson.html b/en/objectpascal-foundations-20261101/lesson-1/lesson.html new file mode 100644 index 0000000..343ac4a --- /dev/null +++ b/en/objectpascal-foundations-20261101/lesson-1/lesson.html @@ -0,0 +1,8 @@ +Your first explainable program

      Your first explainable program

      15-minute session: read for 3 minutes, trace for 3, experiment for 7, and complete the check for 2. Spend longer whenever you need.

      A program is a set of instructions. Read the example from its entry point to the output statement. Text in quotes is data; the output operation is an instruction. Predict the printed line before running. Change only the message, run again, then remove one required punctuation mark and read the first error. Restore the working source.

      Object Pascal classes and Objective-Pascal are distinct. First learn class, construction, and Free using the Linux lab. Objective-Pascal adds Objective-C interoperability through mode switches; this lab does not provide that Apple runtime.

      program AgilaStudy;
      +{$mode objfpc}{$H+}{$assertions on}
      +
      +
      +begin
      +  writeln('Ready');
      +end.
      +

      Expected result: Ready

      Practice and evidence

      Keep three notes: your prediction, the actual result, and why they match or differ. The completion check grades understanding; the practice task builds skill.

      Language reference

      \ No newline at end of file diff --git a/en/objectpascal-foundations-20261101/lesson-1/main.pas b/en/objectpascal-foundations-20261101/lesson-1/main.pas new file mode 100644 index 0000000..ff75288 --- /dev/null +++ b/en/objectpascal-foundations-20261101/lesson-1/main.pas @@ -0,0 +1,7 @@ +program AgilaStudy; +{$mode objfpc}{$H+}{$assertions on} + + +begin + writeln('Ready'); +end. diff --git a/en/objectpascal-foundations-20261101/lesson-2/lesson.html b/en/objectpascal-foundations-20261101/lesson-2/lesson.html new file mode 100644 index 0000000..0c72ee6 --- /dev/null +++ b/en/objectpascal-foundations-20261101/lesson-2/lesson.html @@ -0,0 +1,9 @@ +Values and decisions

      Values and decisions

      15-minute session: read for 3 minutes, trace for 3, experiment for 7, and complete the check for 2. Spend longer whenever you need.

      A decision chooses which statements run. The policy here is “ready at 80 or higher.” Trace 85, 79, 80, and 81 before running each case. The comparison includes 80. A program that prints the right answer for 85 may still be wrong at the boundary. Add a separate check rejecting scores below 0 or above 100; rejection and needing practice mean different things.

      Object Pascal classes and Objective-Pascal are distinct. First learn class, construction, and Free using the Linux lab. Objective-Pascal adds Objective-C interoperability through mode switches; this lab does not provide that Apple runtime.

      program AgilaStudy;
      +{$mode objfpc}{$H+}{$assertions on}
      +
      +var Score: Integer;
      +begin
      +  Score := 85;
      +  if Score >= 80 then writeln('Ready') else writeln('Practice');
      +end.
      +

      Expected result: Ready

      Practice and evidence

      Keep three notes: your prediction, the actual result, and why they match or differ. The completion check grades understanding; the practice task builds skill.

      Language reference

      \ No newline at end of file diff --git a/en/objectpascal-foundations-20261101/lesson-2/main.pas b/en/objectpascal-foundations-20261101/lesson-2/main.pas new file mode 100644 index 0000000..0992f28 --- /dev/null +++ b/en/objectpascal-foundations-20261101/lesson-2/main.pas @@ -0,0 +1,8 @@ +program AgilaStudy; +{$mode objfpc}{$H+}{$assertions on} + +var Score: Integer; +begin + Score := 85; + if Score >= 80 then writeln('Ready') else writeln('Practice'); +end. diff --git a/en/objectpascal-foundations-20261101/lesson-3/lesson.html b/en/objectpascal-foundations-20261101/lesson-3/lesson.html new file mode 100644 index 0000000..973c74f --- /dev/null +++ b/en/objectpascal-foundations-20261101/lesson-3/lesson.html @@ -0,0 +1,11 @@ +Functions and a clear policy

      Functions and a clear policy

      15-minute session: read for 3 minutes, trace for 3, experiment for 7, and complete the check for 2. Spend longer whenever you need.

      A function or subroutine names a reusable calculation. Our policy accepts nonnegative total and completed counts and returns zero when completed reaches or exceeds total. Otherwise it returns their difference. Trace (4,1), (4,4), (4,5), and (0,0). Keep printing separate from calculation. Write down why negative inputs are outside this exercise’s domain, then design an explicit rejection policy before accepting external input.

      Object Pascal classes and Objective-Pascal are distinct. First learn class, construction, and Free using the Linux lab. Objective-Pascal adds Objective-C interoperability through mode switches; this lab does not provide that Apple runtime.

      program AgilaStudy;
      +{$mode objfpc}{$H+}{$assertions on}
      +function Remaining(Total, Done: Integer): Integer;
      +begin
      +  if Done >= Total then Result := 0 else Result := Total - Done;
      +end;
      +
      +begin
      +  writeln(Remaining(4, 1));
      +end.
      +

      Expected result: 3

      Practice and evidence

      Keep three notes: your prediction, the actual result, and why they match or differ. The completion check grades understanding; the practice task builds skill.

      Language reference

      \ No newline at end of file diff --git a/en/objectpascal-foundations-20261101/lesson-3/main.pas b/en/objectpascal-foundations-20261101/lesson-3/main.pas new file mode 100644 index 0000000..ae28c77 --- /dev/null +++ b/en/objectpascal-foundations-20261101/lesson-3/main.pas @@ -0,0 +1,10 @@ +program AgilaStudy; +{$mode objfpc}{$H+}{$assertions on} +function Remaining(Total, Done: Integer): Integer; +begin + if Done >= Total then Result := 0 else Result := Total - Done; +end; + +begin + writeln(Remaining(4, 1)); +end. diff --git a/en/objectpascal-practice-20261101/README.md b/en/objectpascal-practice-20261101/README.md new file mode 100644 index 0000000..c1e70c7 --- /dev/null +++ b/en/objectpascal-practice-20261101/README.md @@ -0,0 +1,9 @@ +# Object Pascal & Objective-Pascal — build and test + +[Agila University track](https://edu.agilaos.com/track.php?track=10&lang=en) + +About 15 minutes per lesson. Predict, run, change, explain, then complete the check in University. + +- [Lesson 1: Collections and repeated work](lesson-1/lesson.html) +- [Lesson 2: A language feature worth understanding](lesson-2/lesson.html) +- [Lesson 3: Build, break, and test a study planner](lesson-3/lesson.html) diff --git a/en/objectpascal-practice-20261101/lesson-1/lesson.html b/en/objectpascal-practice-20261101/lesson-1/lesson.html new file mode 100644 index 0000000..a210470 --- /dev/null +++ b/en/objectpascal-practice-20261101/lesson-1/lesson.html @@ -0,0 +1,11 @@ +Collections and repeated work

      Collections and repeated work

      15-minute session: read for 3 minutes, trace for 3, experiment for 7, and complete the check for 2. Spend longer whenever you need.

      A collection stores related values. The loop visits 1, 2, and 3, updating the total from 0 to 1, then 3, then 6. Record this trace rather than guessing. Identify the first and last valid positions in this language: Pascal can declare a 1-based array, while many other examples use zero-based containers. Add another value and update the bounds correctly. Explain what an empty collection should produce.

      Object Pascal classes and Objective-Pascal are distinct. First learn class, construction, and Free using the Linux lab. Objective-Pascal adds Objective-C interoperability through mode switches; this lab does not provide that Apple runtime.

      program AgilaStudy;
      +{$mode objfpc}{$H+}{$assertions on}
      +
      +var Minutes: array[1..3] of Integer; I, Total: Integer;
      +begin
      +  Minutes[1] := 1; Minutes[2] := 2; Minutes[3] := 3;
      +  Total := 0;
      +  for I := Low(Minutes) to High(Minutes) do Total := Total + Minutes[I];
      +  writeln(Total);
      +end.
      +

      Expected result: 6

      Practice and evidence

      Keep three notes: your prediction, the actual result, and why they match or differ. The completion check grades understanding; the practice task builds skill.

      Language reference

      \ No newline at end of file diff --git a/en/objectpascal-practice-20261101/lesson-1/main.pas b/en/objectpascal-practice-20261101/lesson-1/main.pas new file mode 100644 index 0000000..f1c7b61 --- /dev/null +++ b/en/objectpascal-practice-20261101/lesson-1/main.pas @@ -0,0 +1,10 @@ +program AgilaStudy; +{$mode objfpc}{$H+}{$assertions on} + +var Minutes: array[1..3] of Integer; I, Total: Integer; +begin + Minutes[1] := 1; Minutes[2] := 2; Minutes[3] := 3; + Total := 0; + for I := Low(Minutes) to High(Minutes) do Total := Total + Minutes[I]; + writeln(Total); +end. diff --git a/en/objectpascal-practice-20261101/lesson-2/lesson.html b/en/objectpascal-practice-20261101/lesson-2/lesson.html new file mode 100644 index 0000000..d5f4b43 --- /dev/null +++ b/en/objectpascal-practice-20261101/lesson-2/lesson.html @@ -0,0 +1,17 @@ +A language feature worth understanding

      A language feature worth understanding

      15-minute session: read for 3 minutes, trace for 3, experiment for 7, and complete the check for 2. Spend longer whenever you need.

      Use the language note below to explain this example’s state changes. Identify what is copied, what is shared, what can fail, and what is released. Only some of those questions apply to this particular program: say which ones. Make one deliberate change, predict the effect, and compare it with the actual result. A familiar-looking operator in another language may obey a different rule.

      Object Pascal classes and Objective-Pascal are distinct. First learn class, construction, and Free using the Linux lab. Objective-Pascal adds Objective-C interoperability through mode switches; this lab does not provide that Apple runtime.

      program AgilaStudy;
      +{$mode objfpc}{$H+}{$assertions on}
      +
      +type TPlan = class
      +  public Done: Integer;
      +end;
      +var Plan: TPlan;
      +begin
      +  Plan := TPlan.Create;
      +  try
      +    Plan.Done := 3;
      +    writeln(Plan.Done);
      +  finally
      +    Plan.Free;
      +  end;
      +end.
      +

      Expected result: 3

      Practice and evidence

      Keep three notes: your prediction, the actual result, and why they match or differ. The completion check grades understanding; the practice task builds skill.

      Language reference

      \ No newline at end of file diff --git a/en/objectpascal-practice-20261101/lesson-2/main.pas b/en/objectpascal-practice-20261101/lesson-2/main.pas new file mode 100644 index 0000000..f6eab3b --- /dev/null +++ b/en/objectpascal-practice-20261101/lesson-2/main.pas @@ -0,0 +1,16 @@ +program AgilaStudy; +{$mode objfpc}{$H+}{$assertions on} + +type TPlan = class + public Done: Integer; +end; +var Plan: TPlan; +begin + Plan := TPlan.Create; + try + Plan.Done := 3; + writeln(Plan.Done); + finally + Plan.Free; + end; +end. diff --git a/en/objectpascal-practice-20261101/lesson-3/lesson.html b/en/objectpascal-practice-20261101/lesson-3/lesson.html new file mode 100644 index 0000000..2d7c2cb --- /dev/null +++ b/en/objectpascal-practice-20261101/lesson-3/lesson.html @@ -0,0 +1,15 @@ +Build, break, and test a study planner

      Build, break, and test a study planner

      15-minute session: read for 3 minutes, trace for 3, experiment for 7, and complete the check for 2. Spend longer whenever you need.

      A useful test compares a result with a requirement. The planner must never report negative remaining work for its stated nonnegative input domain. Run the starter, then deliberately remove the protection for completed counts above total. At least one check should fail. Restore it. Add two named study tasks, a summary, and boundary cases. Save the source and evidence on Agila Forge. Explain every line, including anything suggested by AI.

      Object Pascal classes and Objective-Pascal are distinct. First learn class, construction, and Free using the Linux lab. Objective-Pascal adds Objective-C interoperability through mode switches; this lab does not provide that Apple runtime.

      program AgilaStudy;
      +{$mode objfpc}{$H+}{$assertions on}
      +function Remaining(Total, Done: Integer): Integer;
      +begin
      +  if Done >= Total then Result := 0 else Result := Total - Done;
      +end;
      +
      +begin
      +  Assert(Remaining(4,1)=3);
      +  Assert(Remaining(4,4)=0);
      +  Assert(Remaining(4,5)=0);
      +  Assert(Remaining(0,0)=0);
      +  writeln('Passed');
      +end.
      +

      Expected result: Passed

      Practice and evidence

      Keep three notes: your prediction, the actual result, and why they match or differ. The completion check grades understanding; the practice task builds skill.

      Language reference

      \ No newline at end of file diff --git a/en/objectpascal-practice-20261101/lesson-3/main.pas b/en/objectpascal-practice-20261101/lesson-3/main.pas new file mode 100644 index 0000000..a9775cb --- /dev/null +++ b/en/objectpascal-practice-20261101/lesson-3/main.pas @@ -0,0 +1,14 @@ +program AgilaStudy; +{$mode objfpc}{$H+}{$assertions on} +function Remaining(Total, Done: Integer): Integer; +begin + if Done >= Total then Result := 0 else Result := Total - Done; +end; + +begin + Assert(Remaining(4,1)=3); + Assert(Remaining(4,4)=0); + Assert(Remaining(4,5)=0); + Assert(Remaining(0,0)=0); + writeln('Passed'); +end. diff --git a/en/pascal-foundations-20261101/README.md b/en/pascal-foundations-20261101/README.md new file mode 100644 index 0000000..626c2a9 --- /dev/null +++ b/en/pascal-foundations-20261101/README.md @@ -0,0 +1,9 @@ +# Pascal — first steps + +[Agila University track](https://edu.agilaos.com/track.php?track=9&lang=en) + +About 15 minutes per lesson. Predict, run, change, explain, then complete the check in University. + +- [Lesson 1: Your first explainable program](lesson-1/lesson.html) +- [Lesson 2: Values and decisions](lesson-2/lesson.html) +- [Lesson 3: Functions and a clear policy](lesson-3/lesson.html) diff --git a/en/pascal-foundations-20261101/lesson-1/lesson.html b/en/pascal-foundations-20261101/lesson-1/lesson.html new file mode 100644 index 0000000..b7118ee --- /dev/null +++ b/en/pascal-foundations-20261101/lesson-1/lesson.html @@ -0,0 +1,8 @@ +Your first explainable program

      Your first explainable program

      15-minute session: read for 3 minutes, trace for 3, experiment for 7, and complete the check for 2. Spend longer whenever you need.

      A program is a set of instructions. Read the example from its entry point to the output statement. Text in quotes is data; the output operation is an instruction. Predict the printed line before running. Change only the message, run again, then remove one required punctuation mark and read the first error. Restore the working source.

      begin and end enclose statements. := assigns; = compares. The final program terminator is end.. This course uses Free Pascal in Object Pascal mode while starting with procedural constructs.

      program AgilaStudy;
      +{$mode objfpc}{$H+}{$assertions on}
      +
      +
      +begin
      +  writeln('Ready');
      +end.
      +

      Expected result: Ready

      Practice and evidence

      Keep three notes: your prediction, the actual result, and why they match or differ. The completion check grades understanding; the practice task builds skill.

      Language reference

      \ No newline at end of file diff --git a/en/pascal-foundations-20261101/lesson-1/main.pas b/en/pascal-foundations-20261101/lesson-1/main.pas new file mode 100644 index 0000000..ff75288 --- /dev/null +++ b/en/pascal-foundations-20261101/lesson-1/main.pas @@ -0,0 +1,7 @@ +program AgilaStudy; +{$mode objfpc}{$H+}{$assertions on} + + +begin + writeln('Ready'); +end. diff --git a/en/pascal-foundations-20261101/lesson-2/lesson.html b/en/pascal-foundations-20261101/lesson-2/lesson.html new file mode 100644 index 0000000..8ac3122 --- /dev/null +++ b/en/pascal-foundations-20261101/lesson-2/lesson.html @@ -0,0 +1,9 @@ +Values and decisions

      Values and decisions

      15-minute session: read for 3 minutes, trace for 3, experiment for 7, and complete the check for 2. Spend longer whenever you need.

      A decision chooses which statements run. The policy here is “ready at 80 or higher.” Trace 85, 79, 80, and 81 before running each case. The comparison includes 80. A program that prints the right answer for 85 may still be wrong at the boundary. Add a separate check rejecting scores below 0 or above 100; rejection and needing practice mean different things.

      begin and end enclose statements. := assigns; = compares. The final program terminator is end.. This course uses Free Pascal in Object Pascal mode while starting with procedural constructs.

      program AgilaStudy;
      +{$mode objfpc}{$H+}{$assertions on}
      +
      +var Score: Integer;
      +begin
      +  Score := 85;
      +  if Score >= 80 then writeln('Ready') else writeln('Practice');
      +end.
      +

      Expected result: Ready

      Practice and evidence

      Keep three notes: your prediction, the actual result, and why they match or differ. The completion check grades understanding; the practice task builds skill.

      Language reference

      \ No newline at end of file diff --git a/en/pascal-foundations-20261101/lesson-2/main.pas b/en/pascal-foundations-20261101/lesson-2/main.pas new file mode 100644 index 0000000..0992f28 --- /dev/null +++ b/en/pascal-foundations-20261101/lesson-2/main.pas @@ -0,0 +1,8 @@ +program AgilaStudy; +{$mode objfpc}{$H+}{$assertions on} + +var Score: Integer; +begin + Score := 85; + if Score >= 80 then writeln('Ready') else writeln('Practice'); +end. diff --git a/en/pascal-foundations-20261101/lesson-3/lesson.html b/en/pascal-foundations-20261101/lesson-3/lesson.html new file mode 100644 index 0000000..db1cee0 --- /dev/null +++ b/en/pascal-foundations-20261101/lesson-3/lesson.html @@ -0,0 +1,11 @@ +Functions and a clear policy

      Functions and a clear policy

      15-minute session: read for 3 minutes, trace for 3, experiment for 7, and complete the check for 2. Spend longer whenever you need.

      A function or subroutine names a reusable calculation. Our policy accepts nonnegative total and completed counts and returns zero when completed reaches or exceeds total. Otherwise it returns their difference. Trace (4,1), (4,4), (4,5), and (0,0). Keep printing separate from calculation. Write down why negative inputs are outside this exercise’s domain, then design an explicit rejection policy before accepting external input.

      begin and end enclose statements. := assigns; = compares. The final program terminator is end.. This course uses Free Pascal in Object Pascal mode while starting with procedural constructs.

      program AgilaStudy;
      +{$mode objfpc}{$H+}{$assertions on}
      +function Remaining(Total, Done: Integer): Integer;
      +begin
      +  if Done >= Total then Result := 0 else Result := Total - Done;
      +end;
      +
      +begin
      +  writeln(Remaining(4, 1));
      +end.
      +

      Expected result: 3

      Practice and evidence

      Keep three notes: your prediction, the actual result, and why they match or differ. The completion check grades understanding; the practice task builds skill.

      Language reference

      \ No newline at end of file diff --git a/en/pascal-foundations-20261101/lesson-3/main.pas b/en/pascal-foundations-20261101/lesson-3/main.pas new file mode 100644 index 0000000..ae28c77 --- /dev/null +++ b/en/pascal-foundations-20261101/lesson-3/main.pas @@ -0,0 +1,10 @@ +program AgilaStudy; +{$mode objfpc}{$H+}{$assertions on} +function Remaining(Total, Done: Integer): Integer; +begin + if Done >= Total then Result := 0 else Result := Total - Done; +end; + +begin + writeln(Remaining(4, 1)); +end. diff --git a/en/pascal-practice-20261101/README.md b/en/pascal-practice-20261101/README.md new file mode 100644 index 0000000..2b133e1 --- /dev/null +++ b/en/pascal-practice-20261101/README.md @@ -0,0 +1,9 @@ +# Pascal — build and test + +[Agila University track](https://edu.agilaos.com/track.php?track=9&lang=en) + +About 15 minutes per lesson. Predict, run, change, explain, then complete the check in University. + +- [Lesson 1: Collections and repeated work](lesson-1/lesson.html) +- [Lesson 2: A language feature worth understanding](lesson-2/lesson.html) +- [Lesson 3: Build, break, and test a study planner](lesson-3/lesson.html) diff --git a/en/pascal-practice-20261101/lesson-1/lesson.html b/en/pascal-practice-20261101/lesson-1/lesson.html new file mode 100644 index 0000000..4cd58c9 --- /dev/null +++ b/en/pascal-practice-20261101/lesson-1/lesson.html @@ -0,0 +1,11 @@ +Collections and repeated work

      Collections and repeated work

      15-minute session: read for 3 minutes, trace for 3, experiment for 7, and complete the check for 2. Spend longer whenever you need.

      A collection stores related values. The loop visits 1, 2, and 3, updating the total from 0 to 1, then 3, then 6. Record this trace rather than guessing. Identify the first and last valid positions in this language: Pascal can declare a 1-based array, while many other examples use zero-based containers. Add another value and update the bounds correctly. Explain what an empty collection should produce.

      begin and end enclose statements. := assigns; = compares. The final program terminator is end.. This course uses Free Pascal in Object Pascal mode while starting with procedural constructs.

      program AgilaStudy;
      +{$mode objfpc}{$H+}{$assertions on}
      +
      +var Minutes: array[1..3] of Integer; I, Total: Integer;
      +begin
      +  Minutes[1] := 1; Minutes[2] := 2; Minutes[3] := 3;
      +  Total := 0;
      +  for I := Low(Minutes) to High(Minutes) do Total := Total + Minutes[I];
      +  writeln(Total);
      +end.
      +

      Expected result: 6

      Practice and evidence

      Keep three notes: your prediction, the actual result, and why they match or differ. The completion check grades understanding; the practice task builds skill.

      Language reference

      \ No newline at end of file diff --git a/en/pascal-practice-20261101/lesson-1/main.pas b/en/pascal-practice-20261101/lesson-1/main.pas new file mode 100644 index 0000000..f1c7b61 --- /dev/null +++ b/en/pascal-practice-20261101/lesson-1/main.pas @@ -0,0 +1,10 @@ +program AgilaStudy; +{$mode objfpc}{$H+}{$assertions on} + +var Minutes: array[1..3] of Integer; I, Total: Integer; +begin + Minutes[1] := 1; Minutes[2] := 2; Minutes[3] := 3; + Total := 0; + for I := Low(Minutes) to High(Minutes) do Total := Total + Minutes[I]; + writeln(Total); +end. diff --git a/en/pascal-practice-20261101/lesson-2/lesson.html b/en/pascal-practice-20261101/lesson-2/lesson.html new file mode 100644 index 0000000..46d1fb4 --- /dev/null +++ b/en/pascal-practice-20261101/lesson-2/lesson.html @@ -0,0 +1,10 @@ +A language feature worth understanding

      A language feature worth understanding

      15-minute session: read for 3 minutes, trace for 3, experiment for 7, and complete the check for 2. Spend longer whenever you need.

      Use the language note below to explain this example’s state changes. Identify what is copied, what is shared, what can fail, and what is released. Only some of those questions apply to this particular program: say which ones. Make one deliberate change, predict the effect, and compare it with the actual result. A familiar-looking operator in another language may obey a different rule.

      begin and end enclose statements. := assigns; = compares. The final program terminator is end.. This course uses Free Pascal in Object Pascal mode while starting with procedural constructs.

      program AgilaStudy;
      +{$mode objfpc}{$H+}{$assertions on}
      +
      +type StudyPlan = record Total, Done: Integer; end;
      +var Plan: StudyPlan;
      +begin
      +  Plan.Total := 4; Plan.Done := 1;
      +  writeln(Plan.Total - Plan.Done);
      +end.
      +

      Expected result: 3

      Practice and evidence

      Keep three notes: your prediction, the actual result, and why they match or differ. The completion check grades understanding; the practice task builds skill.

      Language reference

      \ No newline at end of file diff --git a/en/pascal-practice-20261101/lesson-2/main.pas b/en/pascal-practice-20261101/lesson-2/main.pas new file mode 100644 index 0000000..9f80b6c --- /dev/null +++ b/en/pascal-practice-20261101/lesson-2/main.pas @@ -0,0 +1,9 @@ +program AgilaStudy; +{$mode objfpc}{$H+}{$assertions on} + +type StudyPlan = record Total, Done: Integer; end; +var Plan: StudyPlan; +begin + Plan.Total := 4; Plan.Done := 1; + writeln(Plan.Total - Plan.Done); +end. diff --git a/en/pascal-practice-20261101/lesson-3/lesson.html b/en/pascal-practice-20261101/lesson-3/lesson.html new file mode 100644 index 0000000..7fbbf17 --- /dev/null +++ b/en/pascal-practice-20261101/lesson-3/lesson.html @@ -0,0 +1,15 @@ +Build, break, and test a study planner

      Build, break, and test a study planner

      15-minute session: read for 3 minutes, trace for 3, experiment for 7, and complete the check for 2. Spend longer whenever you need.

      A useful test compares a result with a requirement. The planner must never report negative remaining work for its stated nonnegative input domain. Run the starter, then deliberately remove the protection for completed counts above total. At least one check should fail. Restore it. Add two named study tasks, a summary, and boundary cases. Save the source and evidence on Agila Forge. Explain every line, including anything suggested by AI.

      begin and end enclose statements. := assigns; = compares. The final program terminator is end.. This course uses Free Pascal in Object Pascal mode while starting with procedural constructs.

      program AgilaStudy;
      +{$mode objfpc}{$H+}{$assertions on}
      +function Remaining(Total, Done: Integer): Integer;
      +begin
      +  if Done >= Total then Result := 0 else Result := Total - Done;
      +end;
      +
      +begin
      +  Assert(Remaining(4,1)=3);
      +  Assert(Remaining(4,4)=0);
      +  Assert(Remaining(4,5)=0);
      +  Assert(Remaining(0,0)=0);
      +  writeln('Passed');
      +end.
      +

      Expected result: Passed

      Practice and evidence

      Keep three notes: your prediction, the actual result, and why they match or differ. The completion check grades understanding; the practice task builds skill.

      Language reference

      \ No newline at end of file diff --git a/en/pascal-practice-20261101/lesson-3/main.pas b/en/pascal-practice-20261101/lesson-3/main.pas new file mode 100644 index 0000000..a9775cb --- /dev/null +++ b/en/pascal-practice-20261101/lesson-3/main.pas @@ -0,0 +1,14 @@ +program AgilaStudy; +{$mode objfpc}{$H+}{$assertions on} +function Remaining(Total, Done: Integer): Integer; +begin + if Done >= Total then Result := 0 else Result := Total - Done; +end; + +begin + Assert(Remaining(4,1)=3); + Assert(Remaining(4,4)=0); + Assert(Remaining(4,5)=0); + Assert(Remaining(0,0)=0); + writeln('Passed'); +end. diff --git a/en/python-foundations-20261101/README.md b/en/python-foundations-20261101/README.md new file mode 100644 index 0000000..a2cd7e2 --- /dev/null +++ b/en/python-foundations-20261101/README.md @@ -0,0 +1,9 @@ +# Python — first steps + +[Agila University track](https://edu.agilaos.com/track.php?track=18&lang=en) + +About 15 minutes per lesson. Predict, run, change, explain, then complete the check in University. + +- [Lesson 1: Your first explainable program](lesson-1/lesson.html) +- [Lesson 2: Values and decisions](lesson-2/lesson.html) +- [Lesson 3: Functions and a clear policy](lesson-3/lesson.html) diff --git a/en/python-foundations-20261101/lesson-1/lesson.html b/en/python-foundations-20261101/lesson-1/lesson.html new file mode 100644 index 0000000..a0542a1 --- /dev/null +++ b/en/python-foundations-20261101/lesson-1/lesson.html @@ -0,0 +1,2 @@ +Your first explainable program

      Your first explainable program

      15-minute session: read for 3 minutes, trace for 3, experiment for 7, and complete the check for 2. Spend longer whenever you need.

      A program is a set of instructions. Read the example from its entry point to the output statement. Text in quotes is data; the output operation is an instruction. Predict the printed line before running. Change only the message, run again, then remove one required punctuation mark and read the first error. Restore the working source.

      Indentation groups statements. def defines a function and return supplies its result. A dictionary maps keys to values. The isolated Python 3 lab has the standard library; external packages are not installed by student code.

      print("Ready")
      +

      Expected result: Ready

      Practice and evidence

      Keep three notes: your prediction, the actual result, and why they match or differ. The completion check grades understanding; the practice task builds skill.

      Language reference

      \ No newline at end of file diff --git a/en/python-foundations-20261101/lesson-1/main.py b/en/python-foundations-20261101/lesson-1/main.py new file mode 100644 index 0000000..dfc2b53 --- /dev/null +++ b/en/python-foundations-20261101/lesson-1/main.py @@ -0,0 +1 @@ +print("Ready") diff --git a/en/python-foundations-20261101/lesson-2/lesson.html b/en/python-foundations-20261101/lesson-2/lesson.html new file mode 100644 index 0000000..790c335 --- /dev/null +++ b/en/python-foundations-20261101/lesson-2/lesson.html @@ -0,0 +1,6 @@ +Values and decisions

      Values and decisions

      15-minute session: read for 3 minutes, trace for 3, experiment for 7, and complete the check for 2. Spend longer whenever you need.

      A decision chooses which statements run. The policy here is “ready at 80 or higher.” Trace 85, 79, 80, and 81 before running each case. The comparison includes 80. A program that prints the right answer for 85 may still be wrong at the boundary. Add a separate check rejecting scores below 0 or above 100; rejection and needing practice mean different things.

      Indentation groups statements. def defines a function and return supplies its result. A dictionary maps keys to values. The isolated Python 3 lab has the standard library; external packages are not installed by student code.

      score = 85
      +if score >= 80:
      +    print("Ready")
      +else:
      +    print("Practice")
      +

      Expected result: Ready

      Practice and evidence

      Keep three notes: your prediction, the actual result, and why they match or differ. The completion check grades understanding; the practice task builds skill.

      Language reference

      \ No newline at end of file diff --git a/en/python-foundations-20261101/lesson-2/main.py b/en/python-foundations-20261101/lesson-2/main.py new file mode 100644 index 0000000..7eedab6 --- /dev/null +++ b/en/python-foundations-20261101/lesson-2/main.py @@ -0,0 +1,5 @@ +score = 85 +if score >= 80: + print("Ready") +else: + print("Practice") diff --git a/en/python-foundations-20261101/lesson-3/lesson.html b/en/python-foundations-20261101/lesson-3/lesson.html new file mode 100644 index 0000000..7e23cd6 --- /dev/null +++ b/en/python-foundations-20261101/lesson-3/lesson.html @@ -0,0 +1,5 @@ +Functions and a clear policy

      Functions and a clear policy

      15-minute session: read for 3 minutes, trace for 3, experiment for 7, and complete the check for 2. Spend longer whenever you need.

      A function or subroutine names a reusable calculation. Our policy accepts nonnegative total and completed counts and returns zero when completed reaches or exceeds total. Otherwise it returns their difference. Trace (4,1), (4,4), (4,5), and (0,0). Keep printing separate from calculation. Write down why negative inputs are outside this exercise’s domain, then design an explicit rejection policy before accepting external input.

      Indentation groups statements. def defines a function and return supplies its result. A dictionary maps keys to values. The isolated Python 3 lab has the standard library; external packages are not installed by student code.

      def remaining(total, done):
      +    return max(0, total - done)
      +
      +print(remaining(4, 1))
      +

      Expected result: 3

      Practice and evidence

      Keep three notes: your prediction, the actual result, and why they match or differ. The completion check grades understanding; the practice task builds skill.

      Language reference

      \ No newline at end of file diff --git a/en/python-foundations-20261101/lesson-3/main.py b/en/python-foundations-20261101/lesson-3/main.py new file mode 100644 index 0000000..54abaa7 --- /dev/null +++ b/en/python-foundations-20261101/lesson-3/main.py @@ -0,0 +1,4 @@ +def remaining(total, done): + return max(0, total - done) + +print(remaining(4, 1)) diff --git a/en/python-practice-20261101/README.md b/en/python-practice-20261101/README.md new file mode 100644 index 0000000..e9425a9 --- /dev/null +++ b/en/python-practice-20261101/README.md @@ -0,0 +1,9 @@ +# Python — build and test + +[Agila University track](https://edu.agilaos.com/track.php?track=18&lang=en) + +About 15 minutes per lesson. Predict, run, change, explain, then complete the check in University. + +- [Lesson 1: Collections and repeated work](lesson-1/lesson.html) +- [Lesson 2: A language feature worth understanding](lesson-2/lesson.html) +- [Lesson 3: Build, break, and test a study planner](lesson-3/lesson.html) diff --git a/en/python-practice-20261101/lesson-1/lesson.html b/en/python-practice-20261101/lesson-1/lesson.html new file mode 100644 index 0000000..1910d4d --- /dev/null +++ b/en/python-practice-20261101/lesson-1/lesson.html @@ -0,0 +1,6 @@ +Collections and repeated work

      Collections and repeated work

      15-minute session: read for 3 minutes, trace for 3, experiment for 7, and complete the check for 2. Spend longer whenever you need.

      A collection stores related values. The loop visits 1, 2, and 3, updating the total from 0 to 1, then 3, then 6. Record this trace rather than guessing. Identify the first and last valid positions in this language: Pascal can declare a 1-based array, while many other examples use zero-based containers. Add another value and update the bounds correctly. Explain what an empty collection should produce.

      Indentation groups statements. def defines a function and return supplies its result. A dictionary maps keys to values. The isolated Python 3 lab has the standard library; external packages are not installed by student code.

      minutes = [1, 2, 3]
      +total = 0
      +for value in minutes:
      +    total += value
      +print(total)
      +

      Expected result: 6

      Practice and evidence

      Keep three notes: your prediction, the actual result, and why they match or differ. The completion check grades understanding; the practice task builds skill.

      Language reference

      \ No newline at end of file diff --git a/en/python-practice-20261101/lesson-1/main.py b/en/python-practice-20261101/lesson-1/main.py new file mode 100644 index 0000000..d801278 --- /dev/null +++ b/en/python-practice-20261101/lesson-1/main.py @@ -0,0 +1,5 @@ +minutes = [1, 2, 3] +total = 0 +for value in minutes: + total += value +print(total) diff --git a/en/python-practice-20261101/lesson-2/lesson.html b/en/python-practice-20261101/lesson-2/lesson.html new file mode 100644 index 0000000..53d52a3 --- /dev/null +++ b/en/python-practice-20261101/lesson-2/lesson.html @@ -0,0 +1,3 @@ +A language feature worth understanding

      A language feature worth understanding

      15-minute session: read for 3 minutes, trace for 3, experiment for 7, and complete the check for 2. Spend longer whenever you need.

      Use the language note below to explain this example’s state changes. Identify what is copied, what is shared, what can fail, and what is released. Only some of those questions apply to this particular program: say which ones. Make one deliberate change, predict the effect, and compare it with the actual result. A familiar-looking operator in another language may obey a different rule.

      Indentation groups statements. def defines a function and return supplies its result. A dictionary maps keys to values. The isolated Python 3 lab has the standard library; external packages are not installed by student code.

      plan = {"total": 4, "done": 1}
      +print(plan["total"] - plan["done"])
      +

      Expected result: 3

      Practice and evidence

      Keep three notes: your prediction, the actual result, and why they match or differ. The completion check grades understanding; the practice task builds skill.

      Language reference

      \ No newline at end of file diff --git a/en/python-practice-20261101/lesson-2/main.py b/en/python-practice-20261101/lesson-2/main.py new file mode 100644 index 0000000..f1ef02c --- /dev/null +++ b/en/python-practice-20261101/lesson-2/main.py @@ -0,0 +1,2 @@ +plan = {"total": 4, "done": 1} +print(plan["total"] - plan["done"]) diff --git a/en/python-practice-20261101/lesson-3/lesson.html b/en/python-practice-20261101/lesson-3/lesson.html new file mode 100644 index 0000000..601ee28 --- /dev/null +++ b/en/python-practice-20261101/lesson-3/lesson.html @@ -0,0 +1,9 @@ +Build, break, and test a study planner

      Build, break, and test a study planner

      15-minute session: read for 3 minutes, trace for 3, experiment for 7, and complete the check for 2. Spend longer whenever you need.

      A useful test compares a result with a requirement. The planner must never report negative remaining work for its stated nonnegative input domain. Run the starter, then deliberately remove the protection for completed counts above total. At least one check should fail. Restore it. Add two named study tasks, a summary, and boundary cases. Save the source and evidence on Agila Forge. Explain every line, including anything suggested by AI.

      Indentation groups statements. def defines a function and return supplies its result. A dictionary maps keys to values. The isolated Python 3 lab has the standard library; external packages are not installed by student code.

      def remaining(total, done):
      +    return max(0, total - done)
      +
      +assert remaining(4,1) == 3
      +assert remaining(4,4) == 0
      +assert remaining(4,5) == 0
      +assert remaining(0,0) == 0
      +print("Passed")
      +

      Expected result: Passed

      Practice and evidence

      Keep three notes: your prediction, the actual result, and why they match or differ. The completion check grades understanding; the practice task builds skill.

      Language reference

      \ No newline at end of file diff --git a/en/python-practice-20261101/lesson-3/main.py b/en/python-practice-20261101/lesson-3/main.py new file mode 100644 index 0000000..2554b0a --- /dev/null +++ b/en/python-practice-20261101/lesson-3/main.py @@ -0,0 +1,8 @@ +def remaining(total, done): + return max(0, total - done) + +assert remaining(4,1) == 3 +assert remaining(4,4) == 0 +assert remaining(4,5) == 0 +assert remaining(0,0) == 0 +print("Passed") diff --git a/en/ruby-foundations-20261101/README.md b/en/ruby-foundations-20261101/README.md new file mode 100644 index 0000000..00de907 --- /dev/null +++ b/en/ruby-foundations-20261101/README.md @@ -0,0 +1,9 @@ +# Ruby — first steps + +[Agila University track](https://edu.agilaos.com/track.php?track=19&lang=en) + +About 15 minutes per lesson. Predict, run, change, explain, then complete the check in University. + +- [Lesson 1: Your first explainable program](lesson-1/lesson.html) +- [Lesson 2: Values and decisions](lesson-2/lesson.html) +- [Lesson 3: Functions and a clear policy](lesson-3/lesson.html) diff --git a/en/ruby-foundations-20261101/lesson-1/lesson.html b/en/ruby-foundations-20261101/lesson-1/lesson.html new file mode 100644 index 0000000..eaa571f --- /dev/null +++ b/en/ruby-foundations-20261101/lesson-1/lesson.html @@ -0,0 +1,2 @@ +Your first explainable program

      Your first explainable program

      15-minute session: read for 3 minutes, trace for 3, experiment for 7, and complete the check for 2. Spend longer whenever you need.

      A program is a set of instructions. Read the example from its entry point to the output statement. Text in quotes is data; the output operation is an instruction. Predict the printed line before running. Change only the message, run again, then remove one required punctuation mark and read the first error. Restore the working source.

      puts prints a line. def and end delimit a method. each yields values to a block. An instance variable beginning with @ belongs to an object; two objects can hold different values.

      puts "Ready"
      +

      Expected result: Ready

      Practice and evidence

      Keep three notes: your prediction, the actual result, and why they match or differ. The completion check grades understanding; the practice task builds skill.

      Language reference

      \ No newline at end of file diff --git a/en/ruby-foundations-20261101/lesson-1/main.rb b/en/ruby-foundations-20261101/lesson-1/main.rb new file mode 100644 index 0000000..5b10434 --- /dev/null +++ b/en/ruby-foundations-20261101/lesson-1/main.rb @@ -0,0 +1 @@ +puts "Ready" diff --git a/en/ruby-foundations-20261101/lesson-2/lesson.html b/en/ruby-foundations-20261101/lesson-2/lesson.html new file mode 100644 index 0000000..60b1678 --- /dev/null +++ b/en/ruby-foundations-20261101/lesson-2/lesson.html @@ -0,0 +1,7 @@ +Values and decisions

      Values and decisions

      15-minute session: read for 3 minutes, trace for 3, experiment for 7, and complete the check for 2. Spend longer whenever you need.

      A decision chooses which statements run. The policy here is “ready at 80 or higher.” Trace 85, 79, 80, and 81 before running each case. The comparison includes 80. A program that prints the right answer for 85 may still be wrong at the boundary. Add a separate check rejecting scores below 0 or above 100; rejection and needing practice mean different things.

      puts prints a line. def and end delimit a method. each yields values to a block. An instance variable beginning with @ belongs to an object; two objects can hold different values.

      score = 85
      +if score >= 80
      +  puts "Ready"
      +else
      +  puts "Practice"
      +end
      +

      Expected result: Ready

      Practice and evidence

      Keep three notes: your prediction, the actual result, and why they match or differ. The completion check grades understanding; the practice task builds skill.

      Language reference

      \ No newline at end of file diff --git a/en/ruby-foundations-20261101/lesson-2/main.rb b/en/ruby-foundations-20261101/lesson-2/main.rb new file mode 100644 index 0000000..79fb9d3 --- /dev/null +++ b/en/ruby-foundations-20261101/lesson-2/main.rb @@ -0,0 +1,6 @@ +score = 85 +if score >= 80 + puts "Ready" +else + puts "Practice" +end diff --git a/en/ruby-foundations-20261101/lesson-3/lesson.html b/en/ruby-foundations-20261101/lesson-3/lesson.html new file mode 100644 index 0000000..c1772d5 --- /dev/null +++ b/en/ruby-foundations-20261101/lesson-3/lesson.html @@ -0,0 +1,6 @@ +Functions and a clear policy

      Functions and a clear policy

      15-minute session: read for 3 minutes, trace for 3, experiment for 7, and complete the check for 2. Spend longer whenever you need.

      A function or subroutine names a reusable calculation. Our policy accepts nonnegative total and completed counts and returns zero when completed reaches or exceeds total. Otherwise it returns their difference. Trace (4,1), (4,4), (4,5), and (0,0). Keep printing separate from calculation. Write down why negative inputs are outside this exercise’s domain, then design an explicit rejection policy before accepting external input.

      puts prints a line. def and end delimit a method. each yields values to a block. An instance variable beginning with @ belongs to an object; two objects can hold different values.

      def remaining(total, done)
      +  [0, total - done].max
      +end
      +
      +puts remaining(4, 1)
      +

      Expected result: 3

      Practice and evidence

      Keep three notes: your prediction, the actual result, and why they match or differ. The completion check grades understanding; the practice task builds skill.

      Language reference

      \ No newline at end of file diff --git a/en/ruby-foundations-20261101/lesson-3/main.rb b/en/ruby-foundations-20261101/lesson-3/main.rb new file mode 100644 index 0000000..75643fd --- /dev/null +++ b/en/ruby-foundations-20261101/lesson-3/main.rb @@ -0,0 +1,5 @@ +def remaining(total, done) + [0, total - done].max +end + +puts remaining(4, 1) diff --git a/en/ruby-practice-20261101/README.md b/en/ruby-practice-20261101/README.md new file mode 100644 index 0000000..257a0c1 --- /dev/null +++ b/en/ruby-practice-20261101/README.md @@ -0,0 +1,9 @@ +# Ruby — build and test + +[Agila University track](https://edu.agilaos.com/track.php?track=19&lang=en) + +About 15 minutes per lesson. Predict, run, change, explain, then complete the check in University. + +- [Lesson 1: Collections and repeated work](lesson-1/lesson.html) +- [Lesson 2: A language feature worth understanding](lesson-2/lesson.html) +- [Lesson 3: Build, break, and test a study planner](lesson-3/lesson.html) diff --git a/en/ruby-practice-20261101/lesson-1/lesson.html b/en/ruby-practice-20261101/lesson-1/lesson.html new file mode 100644 index 0000000..cb6f606 --- /dev/null +++ b/en/ruby-practice-20261101/lesson-1/lesson.html @@ -0,0 +1,5 @@ +Collections and repeated work

      Collections and repeated work

      15-minute session: read for 3 minutes, trace for 3, experiment for 7, and complete the check for 2. Spend longer whenever you need.

      A collection stores related values. The loop visits 1, 2, and 3, updating the total from 0 to 1, then 3, then 6. Record this trace rather than guessing. Identify the first and last valid positions in this language: Pascal can declare a 1-based array, while many other examples use zero-based containers. Add another value and update the bounds correctly. Explain what an empty collection should produce.

      puts prints a line. def and end delimit a method. each yields values to a block. An instance variable beginning with @ belongs to an object; two objects can hold different values.

      minutes = [1, 2, 3]
      +total = 0
      +minutes.each { |value| total += value }
      +puts total
      +

      Expected result: 6

      Practice and evidence

      Keep three notes: your prediction, the actual result, and why they match or differ. The completion check grades understanding; the practice task builds skill.

      Language reference

      \ No newline at end of file diff --git a/en/ruby-practice-20261101/lesson-1/main.rb b/en/ruby-practice-20261101/lesson-1/main.rb new file mode 100644 index 0000000..b0cfae2 --- /dev/null +++ b/en/ruby-practice-20261101/lesson-1/main.rb @@ -0,0 +1,4 @@ +minutes = [1, 2, 3] +total = 0 +minutes.each { |value| total += value } +puts total diff --git a/en/ruby-practice-20261101/lesson-2/lesson.html b/en/ruby-practice-20261101/lesson-2/lesson.html new file mode 100644 index 0000000..db5024b --- /dev/null +++ b/en/ruby-practice-20261101/lesson-2/lesson.html @@ -0,0 +1,10 @@ +A language feature worth understanding

      A language feature worth understanding

      15-minute session: read for 3 minutes, trace for 3, experiment for 7, and complete the check for 2. Spend longer whenever you need.

      Use the language note below to explain this example’s state changes. Identify what is copied, what is shared, what can fail, and what is released. Only some of those questions apply to this particular program: say which ones. Make one deliberate change, predict the effect, and compare it with the actual result. A familiar-looking operator in another language may obey a different rule.

      puts prints a line. def and end delimit a method. each yields values to a block. An instance variable beginning with @ belongs to an object; two objects can hold different values.

      class StudyPlan
      +  def initialize(done)
      +    @done = done
      +  end
      +  def completed
      +    @done
      +  end
      +end
      +puts StudyPlan.new(3).completed
      +

      Expected result: 3

      Practice and evidence

      Keep three notes: your prediction, the actual result, and why they match or differ. The completion check grades understanding; the practice task builds skill.

      Language reference

      \ No newline at end of file diff --git a/en/ruby-practice-20261101/lesson-2/main.rb b/en/ruby-practice-20261101/lesson-2/main.rb new file mode 100644 index 0000000..2bdb21d --- /dev/null +++ b/en/ruby-practice-20261101/lesson-2/main.rb @@ -0,0 +1,9 @@ +class StudyPlan + def initialize(done) + @done = done + end + def completed + @done + end +end +puts StudyPlan.new(3).completed diff --git a/en/ruby-practice-20261101/lesson-3/lesson.html b/en/ruby-practice-20261101/lesson-3/lesson.html new file mode 100644 index 0000000..d3fd849 --- /dev/null +++ b/en/ruby-practice-20261101/lesson-3/lesson.html @@ -0,0 +1,7 @@ +Build, break, and test a study planner

      Build, break, and test a study planner

      15-minute session: read for 3 minutes, trace for 3, experiment for 7, and complete the check for 2. Spend longer whenever you need.

      A useful test compares a result with a requirement. The planner must never report negative remaining work for its stated nonnegative input domain. Run the starter, then deliberately remove the protection for completed counts above total. At least one check should fail. Restore it. Add two named study tasks, a summary, and boundary cases. Save the source and evidence on Agila Forge. Explain every line, including anything suggested by AI.

      puts prints a line. def and end delimit a method. each yields values to a block. An instance variable beginning with @ belongs to an object; two objects can hold different values.

      def remaining(total, done)
      +  [0, total - done].max
      +end
      +
      +raise "Test failed" unless remaining(4,1) == 3 && remaining(4,4) == 0 && remaining(4,5) == 0 && remaining(0,0) == 0
      +puts "Passed"
      +

      Expected result: Passed

      Practice and evidence

      Keep three notes: your prediction, the actual result, and why they match or differ. The completion check grades understanding; the practice task builds skill.

      Language reference

      \ No newline at end of file diff --git a/en/ruby-practice-20261101/lesson-3/main.rb b/en/ruby-practice-20261101/lesson-3/main.rb new file mode 100644 index 0000000..6021f06 --- /dev/null +++ b/en/ruby-practice-20261101/lesson-3/main.rb @@ -0,0 +1,6 @@ +def remaining(total, done) + [0, total - done].max +end + +raise "Test failed" unless remaining(4,1) == 3 && remaining(4,4) == 0 && remaining(4,5) == 0 && remaining(0,0) == 0 +puts "Passed" diff --git a/en/rust-foundations-20261101/README.md b/en/rust-foundations-20261101/README.md new file mode 100644 index 0000000..d7a1d2d --- /dev/null +++ b/en/rust-foundations-20261101/README.md @@ -0,0 +1,9 @@ +# Rust — first steps + +[Agila University track](https://edu.agilaos.com/track.php?track=11&lang=en) + +About 15 minutes per lesson. Predict, run, change, explain, then complete the check in University. + +- [Lesson 1: Your first explainable program](lesson-1/lesson.html) +- [Lesson 2: Values and decisions](lesson-2/lesson.html) +- [Lesson 3: Functions and a clear policy](lesson-3/lesson.html) diff --git a/en/rust-foundations-20261101/lesson-1/lesson.html b/en/rust-foundations-20261101/lesson-1/lesson.html new file mode 100644 index 0000000..8b4acff --- /dev/null +++ b/en/rust-foundations-20261101/lesson-1/lesson.html @@ -0,0 +1,5 @@ +Your first explainable program

      Your first explainable program

      15-minute session: read for 3 minutes, trace for 3, experiment for 7, and complete the check for 2. Spend longer whenever you need.

      A program is a set of instructions. Read the example from its entry point to the output statement. Text in quotes is data; the output operation is an instruction. Predict the printed line before running. Change only the message, run again, then remove one required punctuation mark and read the first error. Restore the working source.

      fn main is the entry point. let introduces a binding; mut permits reassignment. println! is a macro. A reference such as &plan borrows rather than transfers ownership.

      
      +fn main() {
      +    println!("Ready");
      +}
      +

      Expected result: Ready

      Practice and evidence

      Keep three notes: your prediction, the actual result, and why they match or differ. The completion check grades understanding; the practice task builds skill.

      Language reference

      \ No newline at end of file diff --git a/en/rust-foundations-20261101/lesson-1/main.rs b/en/rust-foundations-20261101/lesson-1/main.rs new file mode 100644 index 0000000..83fabcc --- /dev/null +++ b/en/rust-foundations-20261101/lesson-1/main.rs @@ -0,0 +1,4 @@ + +fn main() { + println!("Ready"); +} diff --git a/en/rust-foundations-20261101/lesson-2/lesson.html b/en/rust-foundations-20261101/lesson-2/lesson.html new file mode 100644 index 0000000..e4e358a --- /dev/null +++ b/en/rust-foundations-20261101/lesson-2/lesson.html @@ -0,0 +1,6 @@ +Values and decisions

      Values and decisions

      15-minute session: read for 3 minutes, trace for 3, experiment for 7, and complete the check for 2. Spend longer whenever you need.

      A decision chooses which statements run. The policy here is “ready at 80 or higher.” Trace 85, 79, 80, and 81 before running each case. The comparison includes 80. A program that prints the right answer for 85 may still be wrong at the boundary. Add a separate check rejecting scores below 0 or above 100; rejection and needing practice mean different things.

      fn main is the entry point. let introduces a binding; mut permits reassignment. println! is a macro. A reference such as &plan borrows rather than transfers ownership.

      
      +fn main() {
      +    let score = 85;
      +    if score >= 80 { println!("Ready"); } else { println!("Practice"); }
      +}
      +

      Expected result: Ready

      Practice and evidence

      Keep three notes: your prediction, the actual result, and why they match or differ. The completion check grades understanding; the practice task builds skill.

      Language reference

      \ No newline at end of file diff --git a/en/rust-foundations-20261101/lesson-2/main.rs b/en/rust-foundations-20261101/lesson-2/main.rs new file mode 100644 index 0000000..1f84f20 --- /dev/null +++ b/en/rust-foundations-20261101/lesson-2/main.rs @@ -0,0 +1,5 @@ + +fn main() { + let score = 85; + if score >= 80 { println!("Ready"); } else { println!("Practice"); } +} diff --git a/en/rust-foundations-20261101/lesson-3/lesson.html b/en/rust-foundations-20261101/lesson-3/lesson.html new file mode 100644 index 0000000..0edea2e --- /dev/null +++ b/en/rust-foundations-20261101/lesson-3/lesson.html @@ -0,0 +1,5 @@ +Functions and a clear policy

      Functions and a clear policy

      15-minute session: read for 3 minutes, trace for 3, experiment for 7, and complete the check for 2. Spend longer whenever you need.

      A function or subroutine names a reusable calculation. Our policy accepts nonnegative total and completed counts and returns zero when completed reaches or exceeds total. Otherwise it returns their difference. Trace (4,1), (4,4), (4,5), and (0,0). Keep printing separate from calculation. Write down why negative inputs are outside this exercise’s domain, then design an explicit rejection policy before accepting external input.

      fn main is the entry point. let introduces a binding; mut permits reassignment. println! is a macro. A reference such as &plan borrows rather than transfers ownership.

      fn remaining(total: u32, done: u32) -> u32 { total.saturating_sub(done) }
      +fn main() {
      +    println!("{}", remaining(4, 1));
      +}
      +

      Expected result: 3

      Practice and evidence

      Keep three notes: your prediction, the actual result, and why they match or differ. The completion check grades understanding; the practice task builds skill.

      Language reference

      \ No newline at end of file diff --git a/en/rust-foundations-20261101/lesson-3/main.rs b/en/rust-foundations-20261101/lesson-3/main.rs new file mode 100644 index 0000000..87fa80b --- /dev/null +++ b/en/rust-foundations-20261101/lesson-3/main.rs @@ -0,0 +1,4 @@ +fn remaining(total: u32, done: u32) -> u32 { total.saturating_sub(done) } +fn main() { + println!("{}", remaining(4, 1)); +} diff --git a/en/rust-practice-20261101/README.md b/en/rust-practice-20261101/README.md new file mode 100644 index 0000000..27b8adb --- /dev/null +++ b/en/rust-practice-20261101/README.md @@ -0,0 +1,9 @@ +# Rust — build and test + +[Agila University track](https://edu.agilaos.com/track.php?track=11&lang=en) + +About 15 minutes per lesson. Predict, run, change, explain, then complete the check in University. + +- [Lesson 1: Collections and repeated work](lesson-1/lesson.html) +- [Lesson 2: A language feature worth understanding](lesson-2/lesson.html) +- [Lesson 3: Build, break, and test a study planner](lesson-3/lesson.html) diff --git a/en/rust-practice-20261101/lesson-1/lesson.html b/en/rust-practice-20261101/lesson-1/lesson.html new file mode 100644 index 0000000..1c243a5 --- /dev/null +++ b/en/rust-practice-20261101/lesson-1/lesson.html @@ -0,0 +1,8 @@ +Collections and repeated work

      Collections and repeated work

      15-minute session: read for 3 minutes, trace for 3, experiment for 7, and complete the check for 2. Spend longer whenever you need.

      A collection stores related values. The loop visits 1, 2, and 3, updating the total from 0 to 1, then 3, then 6. Record this trace rather than guessing. Identify the first and last valid positions in this language: Pascal can declare a 1-based array, while many other examples use zero-based containers. Add another value and update the bounds correctly. Explain what an empty collection should produce.

      fn main is the entry point. let introduces a binding; mut permits reassignment. println! is a macro. A reference such as &plan borrows rather than transfers ownership.

      
      +fn main() {
      +    let minutes = [1, 2, 3];
      +    let mut total = 0;
      +    for value in minutes { total += value; }
      +    println!("{}", total);
      +}
      +

      Expected result: 6

      Practice and evidence

      Keep three notes: your prediction, the actual result, and why they match or differ. The completion check grades understanding; the practice task builds skill.

      Language reference

      \ No newline at end of file diff --git a/en/rust-practice-20261101/lesson-1/main.rs b/en/rust-practice-20261101/lesson-1/main.rs new file mode 100644 index 0000000..1a422ab --- /dev/null +++ b/en/rust-practice-20261101/lesson-1/main.rs @@ -0,0 +1,7 @@ + +fn main() { + let minutes = [1, 2, 3]; + let mut total = 0; + for value in minutes { total += value; } + println!("{}", total); +} diff --git a/en/rust-practice-20261101/lesson-2/lesson.html b/en/rust-practice-20261101/lesson-2/lesson.html new file mode 100644 index 0000000..c5a1007 --- /dev/null +++ b/en/rust-practice-20261101/lesson-2/lesson.html @@ -0,0 +1,9 @@ +A language feature worth understanding

      A language feature worth understanding

      15-minute session: read for 3 minutes, trace for 3, experiment for 7, and complete the check for 2. Spend longer whenever you need.

      Use the language note below to explain this example’s state changes. Identify what is copied, what is shared, what can fail, and what is released. Only some of those questions apply to this particular program: say which ones. Make one deliberate change, predict the effect, and compare it with the actual result. A familiar-looking operator in another language may obey a different rule.

      fn main is the entry point. let introduces a binding; mut permits reassignment. println! is a macro. A reference such as &plan borrows rather than transfers ownership.

      
      +fn main() {
      +    let plan = String::from("Read");
      +    let view = &plan;
      +    println!("{}", view);
      +    println!("{}", plan);
      +}
      +

      Expected result: Read +Read

      Practice and evidence

      Keep three notes: your prediction, the actual result, and why they match or differ. The completion check grades understanding; the practice task builds skill.

      Language reference

      \ No newline at end of file diff --git a/en/rust-practice-20261101/lesson-2/main.rs b/en/rust-practice-20261101/lesson-2/main.rs new file mode 100644 index 0000000..de73df2 --- /dev/null +++ b/en/rust-practice-20261101/lesson-2/main.rs @@ -0,0 +1,7 @@ + +fn main() { + let plan = String::from("Read"); + let view = &plan; + println!("{}", view); + println!("{}", plan); +} diff --git a/en/rust-practice-20261101/lesson-3/lesson.html b/en/rust-practice-20261101/lesson-3/lesson.html new file mode 100644 index 0000000..7896a18 --- /dev/null +++ b/en/rust-practice-20261101/lesson-3/lesson.html @@ -0,0 +1,9 @@ +Build, break, and test a study planner

      Build, break, and test a study planner

      15-minute session: read for 3 minutes, trace for 3, experiment for 7, and complete the check for 2. Spend longer whenever you need.

      A useful test compares a result with a requirement. The planner must never report negative remaining work for its stated nonnegative input domain. Run the starter, then deliberately remove the protection for completed counts above total. At least one check should fail. Restore it. Add two named study tasks, a summary, and boundary cases. Save the source and evidence on Agila Forge. Explain every line, including anything suggested by AI.

      fn main is the entry point. let introduces a binding; mut permits reassignment. println! is a macro. A reference such as &plan borrows rather than transfers ownership.

      fn remaining(total: u32, done: u32) -> u32 { total.saturating_sub(done) }
      +fn main() {
      +    assert_eq!(remaining(4,1),3);
      +    assert_eq!(remaining(4,4),0);
      +    assert_eq!(remaining(4,5),0);
      +    assert_eq!(remaining(0,0),0);
      +    println!("Passed");
      +}
      +

      Expected result: Passed

      Practice and evidence

      Keep three notes: your prediction, the actual result, and why they match or differ. The completion check grades understanding; the practice task builds skill.

      Language reference

      \ No newline at end of file diff --git a/en/rust-practice-20261101/lesson-3/main.rs b/en/rust-practice-20261101/lesson-3/main.rs new file mode 100644 index 0000000..66eb120 --- /dev/null +++ b/en/rust-practice-20261101/lesson-3/main.rs @@ -0,0 +1,8 @@ +fn remaining(total: u32, done: u32) -> u32 { total.saturating_sub(done) } +fn main() { + assert_eq!(remaining(4,1),3); + assert_eq!(remaining(4,4),0); + assert_eq!(remaining(4,5),0); + assert_eq!(remaining(0,0),0); + println!("Passed"); +} diff --git a/en/swift-foundations-20261101/README.md b/en/swift-foundations-20261101/README.md new file mode 100644 index 0000000..909f24b --- /dev/null +++ b/en/swift-foundations-20261101/README.md @@ -0,0 +1,9 @@ +# Swift — first steps + +[Agila University track](https://edu.agilaos.com/track.php?track=17&lang=en) + +About 15 minutes per lesson. Predict, run, change, explain, then complete the check in University. + +- [Lesson 1: Your first explainable program](lesson-1/lesson.html) +- [Lesson 2: Values and decisions](lesson-2/lesson.html) +- [Lesson 3: Functions and a clear policy](lesson-3/lesson.html) diff --git a/en/swift-foundations-20261101/lesson-1/lesson.html b/en/swift-foundations-20261101/lesson-1/lesson.html new file mode 100644 index 0000000..d2cc648 --- /dev/null +++ b/en/swift-foundations-20261101/lesson-1/lesson.html @@ -0,0 +1,2 @@ +Your first explainable program

      Your first explainable program

      15-minute session: read for 3 minutes, trace for 3, experiment for 7, and complete the check for 2. Spend longer whenever you need.

      A program is a set of instructions. Read the example from its entry point to the output statement. Text in quotes is data; the output operation is an instruction. Predict the printed line before running. Change only the message, run again, then remove one required punctuation mark and read the first error. Restore the working source.

      let introduces an immutable binding and var a mutable one. Converting text with Int(raw) may produce nil. if let unwraps a present value without force-unwrapping missing data.

      print("Ready")
      +

      Expected result: Ready

      Practice and evidence

      Keep three notes: your prediction, the actual result, and why they match or differ. The completion check grades understanding; the practice task builds skill.

      Language reference

      \ No newline at end of file diff --git a/en/swift-foundations-20261101/lesson-1/main.swift b/en/swift-foundations-20261101/lesson-1/main.swift new file mode 100644 index 0000000..dfc2b53 --- /dev/null +++ b/en/swift-foundations-20261101/lesson-1/main.swift @@ -0,0 +1 @@ +print("Ready") diff --git a/en/swift-foundations-20261101/lesson-2/lesson.html b/en/swift-foundations-20261101/lesson-2/lesson.html new file mode 100644 index 0000000..5370fab --- /dev/null +++ b/en/swift-foundations-20261101/lesson-2/lesson.html @@ -0,0 +1,3 @@ +Values and decisions

      Values and decisions

      15-minute session: read for 3 minutes, trace for 3, experiment for 7, and complete the check for 2. Spend longer whenever you need.

      A decision chooses which statements run. The policy here is “ready at 80 or higher.” Trace 85, 79, 80, and 81 before running each case. The comparison includes 80. A program that prints the right answer for 85 may still be wrong at the boundary. Add a separate check rejecting scores below 0 or above 100; rejection and needing practice mean different things.

      let introduces an immutable binding and var a mutable one. Converting text with Int(raw) may produce nil. if let unwraps a present value without force-unwrapping missing data.

      let score = 85
      +if score >= 80 { print("Ready") } else { print("Practice") }
      +

      Expected result: Ready

      Practice and evidence

      Keep three notes: your prediction, the actual result, and why they match or differ. The completion check grades understanding; the practice task builds skill.

      Language reference

      \ No newline at end of file diff --git a/en/swift-foundations-20261101/lesson-2/main.swift b/en/swift-foundations-20261101/lesson-2/main.swift new file mode 100644 index 0000000..4382845 --- /dev/null +++ b/en/swift-foundations-20261101/lesson-2/main.swift @@ -0,0 +1,2 @@ +let score = 85 +if score >= 80 { print("Ready") } else { print("Practice") } diff --git a/en/swift-foundations-20261101/lesson-3/lesson.html b/en/swift-foundations-20261101/lesson-3/lesson.html new file mode 100644 index 0000000..93e51d3 --- /dev/null +++ b/en/swift-foundations-20261101/lesson-3/lesson.html @@ -0,0 +1,6 @@ +Functions and a clear policy

      Functions and a clear policy

      15-minute session: read for 3 minutes, trace for 3, experiment for 7, and complete the check for 2. Spend longer whenever you need.

      A function or subroutine names a reusable calculation. Our policy accepts nonnegative total and completed counts and returns zero when completed reaches or exceeds total. Otherwise it returns their difference. Trace (4,1), (4,4), (4,5), and (0,0). Keep printing separate from calculation. Write down why negative inputs are outside this exercise’s domain, then design an explicit rejection policy before accepting external input.

      let introduces an immutable binding and var a mutable one. Converting text with Int(raw) may produce nil. if let unwraps a present value without force-unwrapping missing data.

      func remaining(_ total: Int, _ done: Int) -> Int {
      +    return max(0, total - done)
      +}
      +
      +print(remaining(4, 1))
      +

      Expected result: 3

      Practice and evidence

      Keep three notes: your prediction, the actual result, and why they match or differ. The completion check grades understanding; the practice task builds skill.

      Language reference

      \ No newline at end of file diff --git a/en/swift-foundations-20261101/lesson-3/main.swift b/en/swift-foundations-20261101/lesson-3/main.swift new file mode 100644 index 0000000..d06d8dd --- /dev/null +++ b/en/swift-foundations-20261101/lesson-3/main.swift @@ -0,0 +1,5 @@ +func remaining(_ total: Int, _ done: Int) -> Int { + return max(0, total - done) +} + +print(remaining(4, 1)) diff --git a/en/swift-practice-20261101/README.md b/en/swift-practice-20261101/README.md new file mode 100644 index 0000000..67bf209 --- /dev/null +++ b/en/swift-practice-20261101/README.md @@ -0,0 +1,9 @@ +# Swift — build and test + +[Agila University track](https://edu.agilaos.com/track.php?track=17&lang=en) + +About 15 minutes per lesson. Predict, run, change, explain, then complete the check in University. + +- [Lesson 1: Collections and repeated work](lesson-1/lesson.html) +- [Lesson 2: A language feature worth understanding](lesson-2/lesson.html) +- [Lesson 3: Build, break, and test a study planner](lesson-3/lesson.html) diff --git a/en/swift-practice-20261101/lesson-1/lesson.html b/en/swift-practice-20261101/lesson-1/lesson.html new file mode 100644 index 0000000..a8b399a --- /dev/null +++ b/en/swift-practice-20261101/lesson-1/lesson.html @@ -0,0 +1,5 @@ +Collections and repeated work

      Collections and repeated work

      15-minute session: read for 3 minutes, trace for 3, experiment for 7, and complete the check for 2. Spend longer whenever you need.

      A collection stores related values. The loop visits 1, 2, and 3, updating the total from 0 to 1, then 3, then 6. Record this trace rather than guessing. Identify the first and last valid positions in this language: Pascal can declare a 1-based array, while many other examples use zero-based containers. Add another value and update the bounds correctly. Explain what an empty collection should produce.

      let introduces an immutable binding and var a mutable one. Converting text with Int(raw) may produce nil. if let unwraps a present value without force-unwrapping missing data.

      let minutes = [1, 2, 3]
      +var total = 0
      +for value in minutes { total += value }
      +print(total)
      +

      Expected result: 6

      Practice and evidence

      Keep three notes: your prediction, the actual result, and why they match or differ. The completion check grades understanding; the practice task builds skill.

      Language reference

      \ No newline at end of file diff --git a/en/swift-practice-20261101/lesson-1/main.swift b/en/swift-practice-20261101/lesson-1/main.swift new file mode 100644 index 0000000..c64a1f8 --- /dev/null +++ b/en/swift-practice-20261101/lesson-1/main.swift @@ -0,0 +1,4 @@ +let minutes = [1, 2, 3] +var total = 0 +for value in minutes { total += value } +print(total) diff --git a/en/swift-practice-20261101/lesson-2/lesson.html b/en/swift-practice-20261101/lesson-2/lesson.html new file mode 100644 index 0000000..a02a380 --- /dev/null +++ b/en/swift-practice-20261101/lesson-2/lesson.html @@ -0,0 +1,7 @@ +A language feature worth understanding

      A language feature worth understanding

      15-minute session: read for 3 minutes, trace for 3, experiment for 7, and complete the check for 2. Spend longer whenever you need.

      Use the language note below to explain this example’s state changes. Identify what is copied, what is shared, what can fail, and what is released. Only some of those questions apply to this particular program: say which ones. Make one deliberate change, predict the effect, and compare it with the actual result. A familiar-looking operator in another language may obey a different rule.

      let introduces an immutable binding and var a mutable one. Converting text with Int(raw) may produce nil. if let unwraps a present value without force-unwrapping missing data.

      let raw = "three"
      +if let count = Int(raw) {
      +    print(count)
      +} else {
      +    print("Practice")
      +}
      +

      Expected result: Practice

      Practice and evidence

      Keep three notes: your prediction, the actual result, and why they match or differ. The completion check grades understanding; the practice task builds skill.

      Language reference

      \ No newline at end of file diff --git a/en/swift-practice-20261101/lesson-2/main.swift b/en/swift-practice-20261101/lesson-2/main.swift new file mode 100644 index 0000000..91d6ed3 --- /dev/null +++ b/en/swift-practice-20261101/lesson-2/main.swift @@ -0,0 +1,6 @@ +let raw = "three" +if let count = Int(raw) { + print(count) +} else { + print("Practice") +} diff --git a/en/swift-practice-20261101/lesson-3/lesson.html b/en/swift-practice-20261101/lesson-3/lesson.html new file mode 100644 index 0000000..7806688 --- /dev/null +++ b/en/swift-practice-20261101/lesson-3/lesson.html @@ -0,0 +1,10 @@ +Build, break, and test a study planner

      Build, break, and test a study planner

      15-minute session: read for 3 minutes, trace for 3, experiment for 7, and complete the check for 2. Spend longer whenever you need.

      A useful test compares a result with a requirement. The planner must never report negative remaining work for its stated nonnegative input domain. Run the starter, then deliberately remove the protection for completed counts above total. At least one check should fail. Restore it. Add two named study tasks, a summary, and boundary cases. Save the source and evidence on Agila Forge. Explain every line, including anything suggested by AI.

      let introduces an immutable binding and var a mutable one. Converting text with Int(raw) may produce nil. if let unwraps a present value without force-unwrapping missing data.

      func remaining(_ total: Int, _ done: Int) -> Int {
      +    return max(0, total - done)
      +}
      +
      +precondition(remaining(4,1) == 3)
      +precondition(remaining(4,4) == 0)
      +precondition(remaining(4,5) == 0)
      +precondition(remaining(0,0) == 0)
      +print("Passed")
      +

      Expected result: Passed

      Practice and evidence

      Keep three notes: your prediction, the actual result, and why they match or differ. The completion check grades understanding; the practice task builds skill.

      Language reference

      \ No newline at end of file diff --git a/en/swift-practice-20261101/lesson-3/main.swift b/en/swift-practice-20261101/lesson-3/main.swift new file mode 100644 index 0000000..1441034 --- /dev/null +++ b/en/swift-practice-20261101/lesson-3/main.swift @@ -0,0 +1,9 @@ +func remaining(_ total: Int, _ done: Int) -> Int { + return max(0, total - done) +} + +precondition(remaining(4,1) == 3) +precondition(remaining(4,4) == 0) +precondition(remaining(4,5) == 0) +precondition(remaining(0,0) == 0) +print("Passed") diff --git a/en/vlang-foundations-20261101/README.md b/en/vlang-foundations-20261101/README.md new file mode 100644 index 0000000..b038bda --- /dev/null +++ b/en/vlang-foundations-20261101/README.md @@ -0,0 +1,9 @@ +# V (Vlang) — first steps + +[Agila University track](https://edu.agilaos.com/track.php?track=16&lang=en) + +About 15 minutes per lesson. Predict, run, change, explain, then complete the check in University. + +- [Lesson 1: Your first explainable program](lesson-1/lesson.html) +- [Lesson 2: Values and decisions](lesson-2/lesson.html) +- [Lesson 3: Functions and a clear policy](lesson-3/lesson.html) diff --git a/en/vlang-foundations-20261101/lesson-1/lesson.html b/en/vlang-foundations-20261101/lesson-1/lesson.html new file mode 100644 index 0000000..51e360e --- /dev/null +++ b/en/vlang-foundations-20261101/lesson-1/lesson.html @@ -0,0 +1,5 @@ +Your first explainable program

      Your first explainable program

      15-minute session: read for 3 minutes, trace for 3, experiment for 7, and complete the check for 2. Spend longer whenever you need.

      A program is a set of instructions. Read the example from its entry point to the output statement. Text in quotes is data; the output operation is an instruction. Predict the printed line before running. Change only the message, run again, then remove one required punctuation mark and read the first error. Restore the working source.

      := declares a value. Add mut only when it must change. !int describes a result that may fail; the caller handles the failure with an or block. Standard V examples do not import the Agila SDK.

      
      +fn main() {
      +    println('Ready')
      +}
      +

      Expected result: Ready

      Practice and evidence

      Keep three notes: your prediction, the actual result, and why they match or differ. The completion check grades understanding; the practice task builds skill.

      Language reference

      \ No newline at end of file diff --git a/en/vlang-foundations-20261101/lesson-1/main.v b/en/vlang-foundations-20261101/lesson-1/main.v new file mode 100644 index 0000000..6d84e1c --- /dev/null +++ b/en/vlang-foundations-20261101/lesson-1/main.v @@ -0,0 +1,4 @@ + +fn main() { + println('Ready') +} diff --git a/en/vlang-foundations-20261101/lesson-2/lesson.html b/en/vlang-foundations-20261101/lesson-2/lesson.html new file mode 100644 index 0000000..6b88148 --- /dev/null +++ b/en/vlang-foundations-20261101/lesson-2/lesson.html @@ -0,0 +1,6 @@ +Values and decisions

      Values and decisions

      15-minute session: read for 3 minutes, trace for 3, experiment for 7, and complete the check for 2. Spend longer whenever you need.

      A decision chooses which statements run. The policy here is “ready at 80 or higher.” Trace 85, 79, 80, and 81 before running each case. The comparison includes 80. A program that prints the right answer for 85 may still be wrong at the boundary. Add a separate check rejecting scores below 0 or above 100; rejection and needing practice mean different things.

      := declares a value. Add mut only when it must change. !int describes a result that may fail; the caller handles the failure with an or block. Standard V examples do not import the Agila SDK.

      
      +fn main() {
      +    score := 85
      +    if score >= 80 { println('Ready') } else { println('Practice') }
      +}
      +

      Expected result: Ready

      Practice and evidence

      Keep three notes: your prediction, the actual result, and why they match or differ. The completion check grades understanding; the practice task builds skill.

      Language reference

      \ No newline at end of file diff --git a/en/vlang-foundations-20261101/lesson-2/main.v b/en/vlang-foundations-20261101/lesson-2/main.v new file mode 100644 index 0000000..e98705a --- /dev/null +++ b/en/vlang-foundations-20261101/lesson-2/main.v @@ -0,0 +1,5 @@ + +fn main() { + score := 85 + if score >= 80 { println('Ready') } else { println('Practice') } +} diff --git a/en/vlang-foundations-20261101/lesson-3/lesson.html b/en/vlang-foundations-20261101/lesson-3/lesson.html new file mode 100644 index 0000000..138e7a4 --- /dev/null +++ b/en/vlang-foundations-20261101/lesson-3/lesson.html @@ -0,0 +1,8 @@ +Functions and a clear policy

      Functions and a clear policy

      15-minute session: read for 3 minutes, trace for 3, experiment for 7, and complete the check for 2. Spend longer whenever you need.

      A function or subroutine names a reusable calculation. Our policy accepts nonnegative total and completed counts and returns zero when completed reaches or exceeds total. Otherwise it returns their difference. Trace (4,1), (4,4), (4,5), and (0,0). Keep printing separate from calculation. Write down why negative inputs are outside this exercise’s domain, then design an explicit rejection policy before accepting external input.

      := declares a value. Add mut only when it must change. !int describes a result that may fail; the caller handles the failure with an or block. Standard V examples do not import the Agila SDK.

      fn remaining(total int, done int) int {
      +    if done >= total { return 0 }
      +    return total - done
      +}
      +fn main() {
      +    println(remaining(4, 1))
      +}
      +

      Expected result: 3

      Practice and evidence

      Keep three notes: your prediction, the actual result, and why they match or differ. The completion check grades understanding; the practice task builds skill.

      Language reference

      \ No newline at end of file diff --git a/en/vlang-foundations-20261101/lesson-3/main.v b/en/vlang-foundations-20261101/lesson-3/main.v new file mode 100644 index 0000000..d429bf6 --- /dev/null +++ b/en/vlang-foundations-20261101/lesson-3/main.v @@ -0,0 +1,7 @@ +fn remaining(total int, done int) int { + if done >= total { return 0 } + return total - done +} +fn main() { + println(remaining(4, 1)) +} diff --git a/en/vlang-practice-20261101/README.md b/en/vlang-practice-20261101/README.md new file mode 100644 index 0000000..ddd411c --- /dev/null +++ b/en/vlang-practice-20261101/README.md @@ -0,0 +1,9 @@ +# V (Vlang) — build and test + +[Agila University track](https://edu.agilaos.com/track.php?track=16&lang=en) + +About 15 minutes per lesson. Predict, run, change, explain, then complete the check in University. + +- [Lesson 1: Collections and repeated work](lesson-1/lesson.html) +- [Lesson 2: A language feature worth understanding](lesson-2/lesson.html) +- [Lesson 3: Build, break, and test a study planner](lesson-3/lesson.html) diff --git a/en/vlang-practice-20261101/lesson-1/lesson.html b/en/vlang-practice-20261101/lesson-1/lesson.html new file mode 100644 index 0000000..4d65bce --- /dev/null +++ b/en/vlang-practice-20261101/lesson-1/lesson.html @@ -0,0 +1,8 @@ +Collections and repeated work

      Collections and repeated work

      15-minute session: read for 3 minutes, trace for 3, experiment for 7, and complete the check for 2. Spend longer whenever you need.

      A collection stores related values. The loop visits 1, 2, and 3, updating the total from 0 to 1, then 3, then 6. Record this trace rather than guessing. Identify the first and last valid positions in this language: Pascal can declare a 1-based array, while many other examples use zero-based containers. Add another value and update the bounds correctly. Explain what an empty collection should produce.

      := declares a value. Add mut only when it must change. !int describes a result that may fail; the caller handles the failure with an or block. Standard V examples do not import the Agila SDK.

      
      +fn main() {
      +    minutes := [1, 2, 3]
      +    mut total := 0
      +    for value in minutes { total += value }
      +    println(total)
      +}
      +

      Expected result: 6

      Practice and evidence

      Keep three notes: your prediction, the actual result, and why they match or differ. The completion check grades understanding; the practice task builds skill.

      Language reference

      \ No newline at end of file diff --git a/en/vlang-practice-20261101/lesson-1/main.v b/en/vlang-practice-20261101/lesson-1/main.v new file mode 100644 index 0000000..6f31717 --- /dev/null +++ b/en/vlang-practice-20261101/lesson-1/main.v @@ -0,0 +1,7 @@ + +fn main() { + minutes := [1, 2, 3] + mut total := 0 + for value in minutes { total += value } + println(total) +} diff --git a/en/vlang-practice-20261101/lesson-2/lesson.html b/en/vlang-practice-20261101/lesson-2/lesson.html new file mode 100644 index 0000000..6d14e97 --- /dev/null +++ b/en/vlang-practice-20261101/lesson-2/lesson.html @@ -0,0 +1,12 @@ +A language feature worth understanding

      A language feature worth understanding

      15-minute session: read for 3 minutes, trace for 3, experiment for 7, and complete the check for 2. Spend longer whenever you need.

      Use the language note below to explain this example’s state changes. Identify what is copied, what is shared, what can fail, and what is released. Only some of those questions apply to this particular program: say which ones. Make one deliberate change, predict the effect, and compare it with the actual result. A familiar-looking operator in another language may obey a different rule.

      := declares a value. Add mut only when it must change. !int describes a result that may fail; the caller handles the failure with an or block. Standard V examples do not import the Agila SDK.

      fn checked_score(value int) !int {
      +    if value < 0 || value > 100 { return error('Invalid score') }
      +    return value
      +}
      +fn main() {
      +    result := checked_score(101) or {
      +        println('Practice')
      +        return
      +    }
      +    println(result)
      +}
      +

      Expected result: Practice

      Practice and evidence

      Keep three notes: your prediction, the actual result, and why they match or differ. The completion check grades understanding; the practice task builds skill.

      Language reference

      \ No newline at end of file diff --git a/en/vlang-practice-20261101/lesson-2/main.v b/en/vlang-practice-20261101/lesson-2/main.v new file mode 100644 index 0000000..4c38eb7 --- /dev/null +++ b/en/vlang-practice-20261101/lesson-2/main.v @@ -0,0 +1,11 @@ +fn checked_score(value int) !int { + if value < 0 || value > 100 { return error('Invalid score') } + return value +} +fn main() { + result := checked_score(101) or { + println('Practice') + return + } + println(result) +} diff --git a/en/vlang-practice-20261101/lesson-3/lesson.html b/en/vlang-practice-20261101/lesson-3/lesson.html new file mode 100644 index 0000000..2ac3ce0 --- /dev/null +++ b/en/vlang-practice-20261101/lesson-3/lesson.html @@ -0,0 +1,12 @@ +Build, break, and test a study planner

      Build, break, and test a study planner

      15-minute session: read for 3 minutes, trace for 3, experiment for 7, and complete the check for 2. Spend longer whenever you need.

      A useful test compares a result with a requirement. The planner must never report negative remaining work for its stated nonnegative input domain. Run the starter, then deliberately remove the protection for completed counts above total. At least one check should fail. Restore it. Add two named study tasks, a summary, and boundary cases. Save the source and evidence on Agila Forge. Explain every line, including anything suggested by AI.

      := declares a value. Add mut only when it must change. !int describes a result that may fail; the caller handles the failure with an or block. Standard V examples do not import the Agila SDK.

      fn remaining(total int, done int) int {
      +    if done >= total { return 0 }
      +    return total - done
      +}
      +fn main() {
      +    assert remaining(4,1)==3
      +    assert remaining(4,4)==0
      +    assert remaining(4,5)==0
      +    assert remaining(0,0)==0
      +    println('Passed')
      +}
      +

      Expected result: Passed

      Practice and evidence

      Keep three notes: your prediction, the actual result, and why they match or differ. The completion check grades understanding; the practice task builds skill.

      Language reference

      \ No newline at end of file diff --git a/en/vlang-practice-20261101/lesson-3/main.v b/en/vlang-practice-20261101/lesson-3/main.v new file mode 100644 index 0000000..6a84229 --- /dev/null +++ b/en/vlang-practice-20261101/lesson-3/main.v @@ -0,0 +1,11 @@ +fn remaining(total int, done int) int { + if done >= total { return 0 } + return total - done +} +fn main() { + assert remaining(4,1)==3 + assert remaining(4,4)==0 + assert remaining(4,5)==0 + assert remaining(0,0)==0 + println('Passed') +} diff --git a/tl/basic-foundations-20261101/README.md b/tl/basic-foundations-20261101/README.md new file mode 100644 index 0000000..06fd7ac --- /dev/null +++ b/tl/basic-foundations-20261101/README.md @@ -0,0 +1,9 @@ +# BASIC — mga unang hakbang + +[Agila University track](https://edu.agilaos.com/track.php?track=21&lang=tl) + +Mga 15 minuto bawat aralin. Hulaan, patakbuhin, baguhin, ipaliwanag, at sagutan ang pagsusulit sa University. + +- [Lesson 1: Ang unang programang kaya mong ipaliwanag](lesson-1/lesson.html) +- [Lesson 2: Mga value at desisyon](lesson-2/lesson.html) +- [Lesson 3: Function at malinaw na patakaran](lesson-3/lesson.html) diff --git a/tl/basic-foundations-20261101/lesson-1/lesson.html b/tl/basic-foundations-20261101/lesson-1/lesson.html new file mode 100644 index 0000000..ea6edd3 --- /dev/null +++ b/tl/basic-foundations-20261101/lesson-1/lesson.html @@ -0,0 +1,4 @@ +Ang unang programang kaya mong ipaliwanag

      Ang unang programang kaya mong ipaliwanag

      15-minutong sesyon: magbasa nang 3 minuto, mag-trace nang 3, mag-eksperimento nang 7, at sagutan ang check nang 2. Maglaan ng dagdag na oras kung kailangan.

      Mga utos ang isang programa. Basahin mula sa entry point hanggang sa output statement. Data ang tekstong nasa panipi; utos ang output operation. Hulaan ang linyang lalabas bago patakbuhin. Baguhin lang ang mensahe, patakbuhin muli, at alisin ang isang kailangang bantas para basahin ang unang error. Ibalik ang gumaganang source.

      Ipinapakita ng line number ang ayos ng programa. Pumupunta sa subroutine ang GOSUB; bumabalik ang RETURN. Lumalabas sa interpreter ang SYSTEM. Magkakaiba ang BASIC dialect; hindi awtomatikong tumatakbo ang eksaktong dialect na ito sa 6502 o Z80.

      10 REM Change the message
      +20 PRINT "Handa"
      +30 SYSTEM
      +

      Inaasahang resulta: Handa

      Pagsasanay at ebidensiya

      Itala ang hula, aktuwal na resulta, at dahilan ng pagtugma o pagkakaiba. Sinusukat ng completion check ang pag-unawa; hinahasa ng practice task ang kasanayan.

      Sanggunian sa wika

      \ No newline at end of file diff --git a/tl/basic-foundations-20261101/lesson-1/main.bas b/tl/basic-foundations-20261101/lesson-1/main.bas new file mode 100644 index 0000000..660d617 --- /dev/null +++ b/tl/basic-foundations-20261101/lesson-1/main.bas @@ -0,0 +1,3 @@ +10 REM Change the message +20 PRINT "Handa" +30 SYSTEM diff --git a/tl/basic-foundations-20261101/lesson-2/lesson.html b/tl/basic-foundations-20261101/lesson-2/lesson.html new file mode 100644 index 0000000..afd092d --- /dev/null +++ b/tl/basic-foundations-20261101/lesson-2/lesson.html @@ -0,0 +1,5 @@ +Mga value at desisyon

      Mga value at desisyon

      15-minutong sesyon: magbasa nang 3 minuto, mag-trace nang 3, mag-eksperimento nang 7, at sagutan ang check nang 2. Maglaan ng dagdag na oras kung kailangan.

      Pumipili ang desisyon kung aling statement ang tatakbo. Ang patakaran ay “handa sa 80 pataas.” Sundan ang 85, 79, 80, at 81 bago patakbuhin ang bawat kaso. Kasama ang 80 sa comparison. Maaaring tama sa 85 ngunit mali sa hangganan. Magdagdag ng hiwalay na check para tanggihan ang mas mababa sa 0 o lampas sa 100; magkaiba ang invalid at kailangang magsanay.

      Ipinapakita ng line number ang ayos ng programa. Pumupunta sa subroutine ang GOSUB; bumabalik ang RETURN. Lumalabas sa interpreter ang SYSTEM. Magkakaiba ang BASIC dialect; hindi awtomatikong tumatakbo ang eksaktong dialect na ito sa 6502 o Z80.

      10 LET S = 85
      +20 IF S >= 80 THEN PRINT "Handa"
      +30 IF S < 80 THEN PRINT "Magsanay"
      +40 SYSTEM
      +

      Inaasahang resulta: Handa

      Pagsasanay at ebidensiya

      Itala ang hula, aktuwal na resulta, at dahilan ng pagtugma o pagkakaiba. Sinusukat ng completion check ang pag-unawa; hinahasa ng practice task ang kasanayan.

      Sanggunian sa wika

      \ No newline at end of file diff --git a/tl/basic-foundations-20261101/lesson-2/main.bas b/tl/basic-foundations-20261101/lesson-2/main.bas new file mode 100644 index 0000000..191cb04 --- /dev/null +++ b/tl/basic-foundations-20261101/lesson-2/main.bas @@ -0,0 +1,4 @@ +10 LET S = 85 +20 IF S >= 80 THEN PRINT "Handa" +30 IF S < 80 THEN PRINT "Magsanay" +40 SYSTEM diff --git a/tl/basic-foundations-20261101/lesson-3/lesson.html b/tl/basic-foundations-20261101/lesson-3/lesson.html new file mode 100644 index 0000000..502e7de --- /dev/null +++ b/tl/basic-foundations-20261101/lesson-3/lesson.html @@ -0,0 +1,9 @@ +Function at malinaw na patakaran

      Function at malinaw na patakaran

      15-minutong sesyon: magbasa nang 3 minuto, mag-trace nang 3, mag-eksperimento nang 7, at sagutan ang check nang 2. Maglaan ng dagdag na oras kung kailangan.

      Pinapangalanan ng function o subroutine ang calculation na magagamit muli. Tumatanggap ang patakaran ng nonnegative total at completed; zero ang sagot kapag umabot o lumampas ang completed sa total. Kung hindi, ibinabalik ang diperensiya. Sundan ang (4,1), (4,4), (4,5), at (0,0). Ihiwalay ang pagpi-print sa calculation. Ipaliwanag kung bakit wala sa saklaw ang negative input at magdisenyo ng pagtanggi bago tumanggap ng external input.

      Ipinapakita ng line number ang ayos ng programa. Pumupunta sa subroutine ang GOSUB; bumabalik ang RETURN. Lumalabas sa interpreter ang SYSTEM. Magkakaiba ang BASIC dialect; hindi awtomatikong tumatakbo ang eksaktong dialect na ito sa 6502 o Z80.

      30 LET T=4
      +40 LET D=1
      +50 GOSUB 200
      +60 PRINT R
      +70 SYSTEM
      +200 LET R=T-D
      +210 IF R<0 THEN LET R=0
      +220 RETURN
      +

      Inaasahang resulta: 3

      Pagsasanay at ebidensiya

      Itala ang hula, aktuwal na resulta, at dahilan ng pagtugma o pagkakaiba. Sinusukat ng completion check ang pag-unawa; hinahasa ng practice task ang kasanayan.

      Sanggunian sa wika

      \ No newline at end of file diff --git a/tl/basic-foundations-20261101/lesson-3/main.bas b/tl/basic-foundations-20261101/lesson-3/main.bas new file mode 100644 index 0000000..f690fb2 --- /dev/null +++ b/tl/basic-foundations-20261101/lesson-3/main.bas @@ -0,0 +1,8 @@ +30 LET T=4 +40 LET D=1 +50 GOSUB 200 +60 PRINT R +70 SYSTEM +200 LET R=T-D +210 IF R<0 THEN LET R=0 +220 RETURN diff --git a/tl/basic-practice-20261101/README.md b/tl/basic-practice-20261101/README.md new file mode 100644 index 0000000..edb179d --- /dev/null +++ b/tl/basic-practice-20261101/README.md @@ -0,0 +1,9 @@ +# BASIC — pagbuo at pagsubok + +[Agila University track](https://edu.agilaos.com/track.php?track=21&lang=tl) + +Mga 15 minuto bawat aralin. Hulaan, patakbuhin, baguhin, ipaliwanag, at sagutan ang pagsusulit sa University. + +- [Lesson 1: Collection at paulit-ulit na gawain](lesson-1/lesson.html) +- [Lesson 2: Isang mahalagang katangian ng wika](lesson-2/lesson.html) +- [Lesson 3: Bumuo, sirain, at subukan ang study planner](lesson-3/lesson.html) diff --git a/tl/basic-practice-20261101/lesson-1/lesson.html b/tl/basic-practice-20261101/lesson-1/lesson.html new file mode 100644 index 0000000..d38fde5 --- /dev/null +++ b/tl/basic-practice-20261101/lesson-1/lesson.html @@ -0,0 +1,11 @@ +Collection at paulit-ulit na gawain

      Collection at paulit-ulit na gawain

      15-minutong sesyon: magbasa nang 3 minuto, mag-trace nang 3, mag-eksperimento nang 7, at sagutan ang check nang 2. Maglaan ng dagdag na oras kung kailangan.

      Nag-iimbak ng magkakaugnay na value ang collection. Binibisita ng loop ang 1, 2, at 3; mula 0 ay nagiging 1, 3, at 6 ang total. Itala ang trace sa halip na manghula. Tukuyin ang una at huling valid na posisyon: maaaring 1-based ang Pascal array samantalang zero-based ang maraming ibang container. Magdagdag ng value at itama ang bounds. Ipaliwanag ang resulta para sa empty collection.

      Ipinapakita ng line number ang ayos ng programa. Pumupunta sa subroutine ang GOSUB; bumabalik ang RETURN. Lumalabas sa interpreter ang SYSTEM. Magkakaiba ang BASIC dialect; hindi awtomatikong tumatakbo ang eksaktong dialect na ito sa 6502 o Z80.

      10 DIM M(3)
      +20 LET M(1)=1
      +30 LET M(2)=2
      +40 LET M(3)=3
      +50 LET T=0
      +60 FOR I=1 TO 3
      +70 LET T=T+M(I)
      +80 NEXT I
      +90 PRINT T
      +100 SYSTEM
      +

      Inaasahang resulta: 6

      Pagsasanay at ebidensiya

      Itala ang hula, aktuwal na resulta, at dahilan ng pagtugma o pagkakaiba. Sinusukat ng completion check ang pag-unawa; hinahasa ng practice task ang kasanayan.

      Sanggunian sa wika

      \ No newline at end of file diff --git a/tl/basic-practice-20261101/lesson-1/main.bas b/tl/basic-practice-20261101/lesson-1/main.bas new file mode 100644 index 0000000..ad76e72 --- /dev/null +++ b/tl/basic-practice-20261101/lesson-1/main.bas @@ -0,0 +1,10 @@ +10 DIM M(3) +20 LET M(1)=1 +30 LET M(2)=2 +40 LET M(3)=3 +50 LET T=0 +60 FOR I=1 TO 3 +70 LET T=T+M(I) +80 NEXT I +90 PRINT T +100 SYSTEM diff --git a/tl/basic-practice-20261101/lesson-2/lesson.html b/tl/basic-practice-20261101/lesson-2/lesson.html new file mode 100644 index 0000000..8446774 --- /dev/null +++ b/tl/basic-practice-20261101/lesson-2/lesson.html @@ -0,0 +1,6 @@ +Isang mahalagang katangian ng wika

      Isang mahalagang katangian ng wika

      15-minutong sesyon: magbasa nang 3 minuto, mag-trace nang 3, mag-eksperimento nang 7, at sagutan ang check nang 2. Maglaan ng dagdag na oras kung kailangan.

      Gamitin ang tala sa wika sa ibaba upang ipaliwanag ang pagbabago ng state. Tukuyin kung ano ang kinokopya, pinagsasaluhan, maaaring mabigo, at inilalabas. Hindi lahat ng tanong ay naaangkop sa programang ito: sabihin kung alin. Gumawa ng isang pagbabago, hulaan ang epekto, at ihambing sa aktuwal na resulta. Maaaring iba ang patakaran ng pamilyar na operator sa ibang wika.

      Ipinapakita ng line number ang ayos ng programa. Pumupunta sa subroutine ang GOSUB; bumabalik ang RETURN. Lumalabas sa interpreter ang SYSTEM. Magkakaiba ang BASIC dialect; hindi awtomatikong tumatakbo ang eksaktong dialect na ito sa 6502 o Z80.

      Sadyang modelo ng unsigned 8-bit wrap ang MOD expression: nagiging 0 ang 255 + 1 modulo 256. Hindi nito binabago ang numeric representation ng BASIC interpreter o ine-emulate ang 6502 CPU.

      10 REM An 8-bit unsigned wrap is modeled explicitly
      +20 LET VALUE=255
      +30 LET WRAPPED=(VALUE+1) MOD 256
      +40 PRINT WRAPPED
      +50 SYSTEM
      +

      Inaasahang resulta: 0

      Pagsasanay at ebidensiya

      Itala ang hula, aktuwal na resulta, at dahilan ng pagtugma o pagkakaiba. Sinusukat ng completion check ang pag-unawa; hinahasa ng practice task ang kasanayan.

      Sanggunian sa wika

      \ No newline at end of file diff --git a/tl/basic-practice-20261101/lesson-2/main.bas b/tl/basic-practice-20261101/lesson-2/main.bas new file mode 100644 index 0000000..993afdf --- /dev/null +++ b/tl/basic-practice-20261101/lesson-2/main.bas @@ -0,0 +1,5 @@ +10 REM An 8-bit unsigned wrap is modeled explicitly +20 LET VALUE=255 +30 LET WRAPPED=(VALUE+1) MOD 256 +40 PRINT WRAPPED +50 SYSTEM diff --git a/tl/basic-practice-20261101/lesson-3/lesson.html b/tl/basic-practice-20261101/lesson-3/lesson.html new file mode 100644 index 0000000..783e929 --- /dev/null +++ b/tl/basic-practice-20261101/lesson-3/lesson.html @@ -0,0 +1,10 @@ +Bumuo, sirain, at subukan ang study planner

      Bumuo, sirain, at subukan ang study planner

      15-minutong sesyon: magbasa nang 3 minuto, mag-trace nang 3, mag-eksperimento nang 7, at sagutan ang check nang 2. Maglaan ng dagdag na oras kung kailangan.

      Inihahambing ng makabuluhang test ang resulta sa requirement. Hindi dapat maging negative ang natitirang gawain sa nonnegative input domain ng planner. Patakbuhin ang starter, sadyang alisin ang proteksiyon kapag lampas sa total ang completed, at tiyaking may check na mabibigo. Ibalik ito. Magdagdag ng dalawang study task, summary, at boundary cases. I-save ang source at ebidensiya sa Agila Forge. Ipaliwanag ang bawat linya, pati mungkahi ng AI.

      Ipinapakita ng line number ang ayos ng programa. Pumupunta sa subroutine ang GOSUB; bumabalik ang RETURN. Lumalabas sa interpreter ang SYSTEM. Magkakaiba ang BASIC dialect; hindi awtomatikong tumatakbo ang eksaktong dialect na ito sa 6502 o Z80.

      10 LET T=4
      +20 LET D=5
      +30 GOSUB 200
      +40 IF R<>0 THEN PRINT "Test failed"
      +50 IF R=0 THEN PRINT "Pumasa"
      +60 SYSTEM
      +200 LET R=T-D
      +210 IF R<0 THEN LET R=0
      +220 RETURN
      +

      Inaasahang resulta: Pumasa

      Pagsasanay at ebidensiya

      Itala ang hula, aktuwal na resulta, at dahilan ng pagtugma o pagkakaiba. Sinusukat ng completion check ang pag-unawa; hinahasa ng practice task ang kasanayan.

      Sanggunian sa wika

      \ No newline at end of file diff --git a/tl/basic-practice-20261101/lesson-3/main.bas b/tl/basic-practice-20261101/lesson-3/main.bas new file mode 100644 index 0000000..45b7309 --- /dev/null +++ b/tl/basic-practice-20261101/lesson-3/main.bas @@ -0,0 +1,9 @@ +10 LET T=4 +20 LET D=5 +30 GOSUB 200 +40 IF R<>0 THEN PRINT "Test failed" +50 IF R=0 THEN PRINT "Pumasa" +60 SYSTEM +200 LET R=T-D +210 IF R<0 THEN LET R=0 +220 RETURN diff --git a/tl/c-foundations-20261101/README.md b/tl/c-foundations-20261101/README.md new file mode 100644 index 0000000..a6cba94 --- /dev/null +++ b/tl/c-foundations-20261101/README.md @@ -0,0 +1,9 @@ +# C — mga unang hakbang + +[Agila University track](https://edu.agilaos.com/track.php?track=12&lang=tl) + +Mga 15 minuto bawat aralin. Hulaan, patakbuhin, baguhin, ipaliwanag, at sagutan ang pagsusulit sa University. + +- [Lesson 1: Ang unang programang kaya mong ipaliwanag](lesson-1/lesson.html) +- [Lesson 2: Mga value at desisyon](lesson-2/lesson.html) +- [Lesson 3: Function at malinaw na patakaran](lesson-3/lesson.html) diff --git a/tl/c-foundations-20261101/lesson-1/lesson.html b/tl/c-foundations-20261101/lesson-1/lesson.html new file mode 100644 index 0000000..65a6c23 --- /dev/null +++ b/tl/c-foundations-20261101/lesson-1/lesson.html @@ -0,0 +1,8 @@ +Ang unang programang kaya mong ipaliwanag

      Ang unang programang kaya mong ipaliwanag

      15-minutong sesyon: magbasa nang 3 minuto, mag-trace nang 3, mag-eksperimento nang 7, at sagutan ang check nang 2. Maglaan ng dagdag na oras kung kailangan.

      Mga utos ang isang programa. Basahin mula sa entry point hanggang sa output statement. Data ang tekstong nasa panipi; utos ang output operation. Hulaan ang linyang lalabas bago patakbuhin. Baguhin lang ang mensahe, patakbuhin muli, at alisin ang isang kailangang bantas para basahin ang unang error. Ibalik ang gumaganang source.

      Nagsisimula ang C sa main. Dinedeklara ng stdio.h ang output functions; nagdaragdag ng bagong linya ang puts. Nagtatapos sa semicolon ang statement. Magkaiba ang integer at pointer.

      #include <stdio.h>
      +#include <assert.h>
      +
      +int main(void) {
      +    puts("Handa");
      +    return 0;
      +}
      +

      Inaasahang resulta: Handa

      Pagsasanay at ebidensiya

      Itala ang hula, aktuwal na resulta, at dahilan ng pagtugma o pagkakaiba. Sinusukat ng completion check ang pag-unawa; hinahasa ng practice task ang kasanayan.

      Sanggunian sa wika

      \ No newline at end of file diff --git a/tl/c-foundations-20261101/lesson-1/main.c b/tl/c-foundations-20261101/lesson-1/main.c new file mode 100644 index 0000000..727dce3 --- /dev/null +++ b/tl/c-foundations-20261101/lesson-1/main.c @@ -0,0 +1,7 @@ +#include +#include + +int main(void) { + puts("Handa"); + return 0; +} diff --git a/tl/c-foundations-20261101/lesson-2/lesson.html b/tl/c-foundations-20261101/lesson-2/lesson.html new file mode 100644 index 0000000..2c95f08 --- /dev/null +++ b/tl/c-foundations-20261101/lesson-2/lesson.html @@ -0,0 +1,9 @@ +Mga value at desisyon

      Mga value at desisyon

      15-minutong sesyon: magbasa nang 3 minuto, mag-trace nang 3, mag-eksperimento nang 7, at sagutan ang check nang 2. Maglaan ng dagdag na oras kung kailangan.

      Pumipili ang desisyon kung aling statement ang tatakbo. Ang patakaran ay “handa sa 80 pataas.” Sundan ang 85, 79, 80, at 81 bago patakbuhin ang bawat kaso. Kasama ang 80 sa comparison. Maaaring tama sa 85 ngunit mali sa hangganan. Magdagdag ng hiwalay na check para tanggihan ang mas mababa sa 0 o lampas sa 100; magkaiba ang invalid at kailangang magsanay.

      Nagsisimula ang C sa main. Dinedeklara ng stdio.h ang output functions; nagdaragdag ng bagong linya ang puts. Nagtatapos sa semicolon ang statement. Magkaiba ang integer at pointer.

      #include <stdio.h>
      +#include <assert.h>
      +
      +int main(void) {
      +    int score = 85;
      +    if (score >= 80) puts("Handa"); else puts("Magsanay");
      +    return 0;
      +}
      +

      Inaasahang resulta: Handa

      Pagsasanay at ebidensiya

      Itala ang hula, aktuwal na resulta, at dahilan ng pagtugma o pagkakaiba. Sinusukat ng completion check ang pag-unawa; hinahasa ng practice task ang kasanayan.

      Sanggunian sa wika

      \ No newline at end of file diff --git a/tl/c-foundations-20261101/lesson-2/main.c b/tl/c-foundations-20261101/lesson-2/main.c new file mode 100644 index 0000000..59e5b61 --- /dev/null +++ b/tl/c-foundations-20261101/lesson-2/main.c @@ -0,0 +1,8 @@ +#include +#include + +int main(void) { + int score = 85; + if (score >= 80) puts("Handa"); else puts("Magsanay"); + return 0; +} diff --git a/tl/c-foundations-20261101/lesson-3/lesson.html b/tl/c-foundations-20261101/lesson-3/lesson.html new file mode 100644 index 0000000..bc66489 --- /dev/null +++ b/tl/c-foundations-20261101/lesson-3/lesson.html @@ -0,0 +1,8 @@ +Function at malinaw na patakaran

      Function at malinaw na patakaran

      15-minutong sesyon: magbasa nang 3 minuto, mag-trace nang 3, mag-eksperimento nang 7, at sagutan ang check nang 2. Maglaan ng dagdag na oras kung kailangan.

      Pinapangalanan ng function o subroutine ang calculation na magagamit muli. Tumatanggap ang patakaran ng nonnegative total at completed; zero ang sagot kapag umabot o lumampas ang completed sa total. Kung hindi, ibinabalik ang diperensiya. Sundan ang (4,1), (4,4), (4,5), at (0,0). Ihiwalay ang pagpi-print sa calculation. Ipaliwanag kung bakit wala sa saklaw ang negative input at magdisenyo ng pagtanggi bago tumanggap ng external input.

      Nagsisimula ang C sa main. Dinedeklara ng stdio.h ang output functions; nagdaragdag ng bagong linya ang puts. Nagtatapos sa semicolon ang statement. Magkaiba ang integer at pointer.

      #include <stdio.h>
      +#include <assert.h>
      +int remaining(int total, int done) { return done >= total ? 0 : total - done; }
      +int main(void) {
      +    printf("%d\n", remaining(4, 1));
      +    return 0;
      +}
      +

      Inaasahang resulta: 3

      Pagsasanay at ebidensiya

      Itala ang hula, aktuwal na resulta, at dahilan ng pagtugma o pagkakaiba. Sinusukat ng completion check ang pag-unawa; hinahasa ng practice task ang kasanayan.

      Sanggunian sa wika

      \ No newline at end of file diff --git a/tl/c-foundations-20261101/lesson-3/main.c b/tl/c-foundations-20261101/lesson-3/main.c new file mode 100644 index 0000000..680a002 --- /dev/null +++ b/tl/c-foundations-20261101/lesson-3/main.c @@ -0,0 +1,7 @@ +#include +#include +int remaining(int total, int done) { return done >= total ? 0 : total - done; } +int main(void) { + printf("%d\n", remaining(4, 1)); + return 0; +} diff --git a/tl/c-practice-20261101/README.md b/tl/c-practice-20261101/README.md new file mode 100644 index 0000000..25739f0 --- /dev/null +++ b/tl/c-practice-20261101/README.md @@ -0,0 +1,9 @@ +# C — pagbuo at pagsubok + +[Agila University track](https://edu.agilaos.com/track.php?track=12&lang=tl) + +Mga 15 minuto bawat aralin. Hulaan, patakbuhin, baguhin, ipaliwanag, at sagutan ang pagsusulit sa University. + +- [Lesson 1: Collection at paulit-ulit na gawain](lesson-1/lesson.html) +- [Lesson 2: Isang mahalagang katangian ng wika](lesson-2/lesson.html) +- [Lesson 3: Bumuo, sirain, at subukan ang study planner](lesson-3/lesson.html) diff --git a/tl/c-practice-20261101/lesson-1/lesson.html b/tl/c-practice-20261101/lesson-1/lesson.html new file mode 100644 index 0000000..1eb6ea5 --- /dev/null +++ b/tl/c-practice-20261101/lesson-1/lesson.html @@ -0,0 +1,11 @@ +Collection at paulit-ulit na gawain

      Collection at paulit-ulit na gawain

      15-minutong sesyon: magbasa nang 3 minuto, mag-trace nang 3, mag-eksperimento nang 7, at sagutan ang check nang 2. Maglaan ng dagdag na oras kung kailangan.

      Nag-iimbak ng magkakaugnay na value ang collection. Binibisita ng loop ang 1, 2, at 3; mula 0 ay nagiging 1, 3, at 6 ang total. Itala ang trace sa halip na manghula. Tukuyin ang una at huling valid na posisyon: maaaring 1-based ang Pascal array samantalang zero-based ang maraming ibang container. Magdagdag ng value at itama ang bounds. Ipaliwanag ang resulta para sa empty collection.

      Nagsisimula ang C sa main. Dinedeklara ng stdio.h ang output functions; nagdaragdag ng bagong linya ang puts. Nagtatapos sa semicolon ang statement. Magkaiba ang integer at pointer.

      #include <stdio.h>
      +#include <assert.h>
      +
      +int main(void) {
      +    int minutes[] = {1, 2, 3};
      +    int total = 0;
      +    for (size_t i = 0; i < sizeof minutes / sizeof minutes[0]; ++i) total += minutes[i];
      +    printf("%d\n", total);
      +    return 0;
      +}
      +

      Inaasahang resulta: 6

      Pagsasanay at ebidensiya

      Itala ang hula, aktuwal na resulta, at dahilan ng pagtugma o pagkakaiba. Sinusukat ng completion check ang pag-unawa; hinahasa ng practice task ang kasanayan.

      Sanggunian sa wika

      \ No newline at end of file diff --git a/tl/c-practice-20261101/lesson-1/main.c b/tl/c-practice-20261101/lesson-1/main.c new file mode 100644 index 0000000..e3ee381 --- /dev/null +++ b/tl/c-practice-20261101/lesson-1/main.c @@ -0,0 +1,10 @@ +#include +#include + +int main(void) { + int minutes[] = {1, 2, 3}; + int total = 0; + for (size_t i = 0; i < sizeof minutes / sizeof minutes[0]; ++i) total += minutes[i]; + printf("%d\n", total); + return 0; +} diff --git a/tl/c-practice-20261101/lesson-2/lesson.html b/tl/c-practice-20261101/lesson-2/lesson.html new file mode 100644 index 0000000..490fe73 --- /dev/null +++ b/tl/c-practice-20261101/lesson-2/lesson.html @@ -0,0 +1,11 @@ +Isang mahalagang katangian ng wika

      Isang mahalagang katangian ng wika

      15-minutong sesyon: magbasa nang 3 minuto, mag-trace nang 3, mag-eksperimento nang 7, at sagutan ang check nang 2. Maglaan ng dagdag na oras kung kailangan.

      Gamitin ang tala sa wika sa ibaba upang ipaliwanag ang pagbabago ng state. Tukuyin kung ano ang kinokopya, pinagsasaluhan, maaaring mabigo, at inilalabas. Hindi lahat ng tanong ay naaangkop sa programang ito: sabihin kung alin. Gumawa ng isang pagbabago, hulaan ang epekto, at ihambing sa aktuwal na resulta. Maaaring iba ang patakaran ng pamilyar na operator sa ibang wika.

      Nagsisimula ang C sa main. Dinedeklara ng stdio.h ang output functions; nagdaragdag ng bagong linya ang puts. Nagtatapos sa semicolon ang statement. Magkaiba ang integer at pointer.

      Nakaturo ang address sa buhay na local na completed; binabago ito ng *address. Huwag magbalik ng pointer sa expired local o gumamit ng arbitraryong numeric address.

      #include <stdio.h>
      +#include <assert.h>
      +
      +int main(void) {
      +    int completed = 2;
      +    int *address = &completed;
      +    *address += 1;
      +    printf("%d\n", completed);
      +    return 0;
      +}
      +

      Inaasahang resulta: 3

      Pagsasanay at ebidensiya

      Itala ang hula, aktuwal na resulta, at dahilan ng pagtugma o pagkakaiba. Sinusukat ng completion check ang pag-unawa; hinahasa ng practice task ang kasanayan.

      Sanggunian sa wika

      \ No newline at end of file diff --git a/tl/c-practice-20261101/lesson-2/main.c b/tl/c-practice-20261101/lesson-2/main.c new file mode 100644 index 0000000..32f8d66 --- /dev/null +++ b/tl/c-practice-20261101/lesson-2/main.c @@ -0,0 +1,10 @@ +#include +#include + +int main(void) { + int completed = 2; + int *address = &completed; + *address += 1; + printf("%d\n", completed); + return 0; +} diff --git a/tl/c-practice-20261101/lesson-3/lesson.html b/tl/c-practice-20261101/lesson-3/lesson.html new file mode 100644 index 0000000..f8ccff3 --- /dev/null +++ b/tl/c-practice-20261101/lesson-3/lesson.html @@ -0,0 +1,12 @@ +Bumuo, sirain, at subukan ang study planner

      Bumuo, sirain, at subukan ang study planner

      15-minutong sesyon: magbasa nang 3 minuto, mag-trace nang 3, mag-eksperimento nang 7, at sagutan ang check nang 2. Maglaan ng dagdag na oras kung kailangan.

      Inihahambing ng makabuluhang test ang resulta sa requirement. Hindi dapat maging negative ang natitirang gawain sa nonnegative input domain ng planner. Patakbuhin ang starter, sadyang alisin ang proteksiyon kapag lampas sa total ang completed, at tiyaking may check na mabibigo. Ibalik ito. Magdagdag ng dalawang study task, summary, at boundary cases. I-save ang source at ebidensiya sa Agila Forge. Ipaliwanag ang bawat linya, pati mungkahi ng AI.

      Nagsisimula ang C sa main. Dinedeklara ng stdio.h ang output functions; nagdaragdag ng bagong linya ang puts. Nagtatapos sa semicolon ang statement. Magkaiba ang integer at pointer.

      #include <stdio.h>
      +#include <assert.h>
      +int remaining(int total, int done) { return done >= total ? 0 : total - done; }
      +int main(void) {
      +    assert(remaining(4,1)==3);
      +    assert(remaining(4,4)==0);
      +    assert(remaining(4,5)==0);
      +    assert(remaining(0,0)==0);
      +    puts("Pumasa");
      +    return 0;
      +}
      +

      Inaasahang resulta: Pumasa

      Pagsasanay at ebidensiya

      Itala ang hula, aktuwal na resulta, at dahilan ng pagtugma o pagkakaiba. Sinusukat ng completion check ang pag-unawa; hinahasa ng practice task ang kasanayan.

      Sanggunian sa wika

      \ No newline at end of file diff --git a/tl/c-practice-20261101/lesson-3/main.c b/tl/c-practice-20261101/lesson-3/main.c new file mode 100644 index 0000000..14072ac --- /dev/null +++ b/tl/c-practice-20261101/lesson-3/main.c @@ -0,0 +1,11 @@ +#include +#include +int remaining(int total, int done) { return done >= total ? 0 : total - done; } +int main(void) { + assert(remaining(4,1)==3); + assert(remaining(4,4)==0); + assert(remaining(4,5)==0); + assert(remaining(0,0)==0); + puts("Pumasa"); + return 0; +} diff --git a/tl/cpp-foundations-20261101/README.md b/tl/cpp-foundations-20261101/README.md new file mode 100644 index 0000000..f765bba --- /dev/null +++ b/tl/cpp-foundations-20261101/README.md @@ -0,0 +1,9 @@ +# C++ — mga unang hakbang + +[Agila University track](https://edu.agilaos.com/track.php?track=13&lang=tl) + +Mga 15 minuto bawat aralin. Hulaan, patakbuhin, baguhin, ipaliwanag, at sagutan ang pagsusulit sa University. + +- [Lesson 1: Ang unang programang kaya mong ipaliwanag](lesson-1/lesson.html) +- [Lesson 2: Mga value at desisyon](lesson-2/lesson.html) +- [Lesson 3: Function at malinaw na patakaran](lesson-3/lesson.html) diff --git a/tl/cpp-foundations-20261101/lesson-1/lesson.html b/tl/cpp-foundations-20261101/lesson-1/lesson.html new file mode 100644 index 0000000..1a2b409 --- /dev/null +++ b/tl/cpp-foundations-20261101/lesson-1/lesson.html @@ -0,0 +1,9 @@ +Ang unang programang kaya mong ipaliwanag

      Ang unang programang kaya mong ipaliwanag

      15-minutong sesyon: magbasa nang 3 minuto, mag-trace nang 3, mag-eksperimento nang 7, at sagutan ang check nang 2. Maglaan ng dagdag na oras kung kailangan.

      Mga utos ang isang programa. Basahin mula sa entry point hanggang sa output statement. Data ang tekstong nasa panipi; utos ang output operation. Hulaan ang linyang lalabas bago patakbuhin. Baguhin lang ang mensahe, patakbuhin muli, at alisin ang isang kailangang bantas para basahin ang unang error. Ibalik ang gumaganang source.

      Nagsusulat ng output ang std::cout. Pinamamahalaan ng std::vector ang lumalaking sequence at inilalabas ang storage sa dulo ng lifetime nito. C++17 ang lab; itala ang ibang standard kung kailangan.

      #include <iostream>
      +#include <vector>
      +#include <string>
      +#include <cassert>
      +
      +int main() {
      +    std::cout << "Handa\n";
      +}
      +

      Inaasahang resulta: Handa

      Pagsasanay at ebidensiya

      Itala ang hula, aktuwal na resulta, at dahilan ng pagtugma o pagkakaiba. Sinusukat ng completion check ang pag-unawa; hinahasa ng practice task ang kasanayan.

      Sanggunian sa wika

      \ No newline at end of file diff --git a/tl/cpp-foundations-20261101/lesson-1/main.cpp b/tl/cpp-foundations-20261101/lesson-1/main.cpp new file mode 100644 index 0000000..a913467 --- /dev/null +++ b/tl/cpp-foundations-20261101/lesson-1/main.cpp @@ -0,0 +1,8 @@ +#include +#include +#include +#include + +int main() { + std::cout << "Handa\n"; +} diff --git a/tl/cpp-foundations-20261101/lesson-2/lesson.html b/tl/cpp-foundations-20261101/lesson-2/lesson.html new file mode 100644 index 0000000..6870cae --- /dev/null +++ b/tl/cpp-foundations-20261101/lesson-2/lesson.html @@ -0,0 +1,10 @@ +Mga value at desisyon

      Mga value at desisyon

      15-minutong sesyon: magbasa nang 3 minuto, mag-trace nang 3, mag-eksperimento nang 7, at sagutan ang check nang 2. Maglaan ng dagdag na oras kung kailangan.

      Pumipili ang desisyon kung aling statement ang tatakbo. Ang patakaran ay “handa sa 80 pataas.” Sundan ang 85, 79, 80, at 81 bago patakbuhin ang bawat kaso. Kasama ang 80 sa comparison. Maaaring tama sa 85 ngunit mali sa hangganan. Magdagdag ng hiwalay na check para tanggihan ang mas mababa sa 0 o lampas sa 100; magkaiba ang invalid at kailangang magsanay.

      Nagsusulat ng output ang std::cout. Pinamamahalaan ng std::vector ang lumalaking sequence at inilalabas ang storage sa dulo ng lifetime nito. C++17 ang lab; itala ang ibang standard kung kailangan.

      #include <iostream>
      +#include <vector>
      +#include <string>
      +#include <cassert>
      +
      +int main() {
      +    int score = 85;
      +    std::cout << (score >= 80 ? "Handa" : "Magsanay") << "\n";
      +}
      +

      Inaasahang resulta: Handa

      Pagsasanay at ebidensiya

      Itala ang hula, aktuwal na resulta, at dahilan ng pagtugma o pagkakaiba. Sinusukat ng completion check ang pag-unawa; hinahasa ng practice task ang kasanayan.

      Sanggunian sa wika

      \ No newline at end of file diff --git a/tl/cpp-foundations-20261101/lesson-2/main.cpp b/tl/cpp-foundations-20261101/lesson-2/main.cpp new file mode 100644 index 0000000..3d4d076 --- /dev/null +++ b/tl/cpp-foundations-20261101/lesson-2/main.cpp @@ -0,0 +1,9 @@ +#include +#include +#include +#include + +int main() { + int score = 85; + std::cout << (score >= 80 ? "Handa" : "Magsanay") << "\n"; +} diff --git a/tl/cpp-foundations-20261101/lesson-3/lesson.html b/tl/cpp-foundations-20261101/lesson-3/lesson.html new file mode 100644 index 0000000..0d6d506 --- /dev/null +++ b/tl/cpp-foundations-20261101/lesson-3/lesson.html @@ -0,0 +1,9 @@ +Function at malinaw na patakaran

      Function at malinaw na patakaran

      15-minutong sesyon: magbasa nang 3 minuto, mag-trace nang 3, mag-eksperimento nang 7, at sagutan ang check nang 2. Maglaan ng dagdag na oras kung kailangan.

      Pinapangalanan ng function o subroutine ang calculation na magagamit muli. Tumatanggap ang patakaran ng nonnegative total at completed; zero ang sagot kapag umabot o lumampas ang completed sa total. Kung hindi, ibinabalik ang diperensiya. Sundan ang (4,1), (4,4), (4,5), at (0,0). Ihiwalay ang pagpi-print sa calculation. Ipaliwanag kung bakit wala sa saklaw ang negative input at magdisenyo ng pagtanggi bago tumanggap ng external input.

      Nagsusulat ng output ang std::cout. Pinamamahalaan ng std::vector ang lumalaking sequence at inilalabas ang storage sa dulo ng lifetime nito. C++17 ang lab; itala ang ibang standard kung kailangan.

      #include <iostream>
      +#include <vector>
      +#include <string>
      +#include <cassert>
      +int remaining(int total, int done) { return done >= total ? 0 : total - done; }
      +int main() {
      +    std::cout << remaining(4, 1) << "\n";
      +}
      +

      Inaasahang resulta: 3

      Pagsasanay at ebidensiya

      Itala ang hula, aktuwal na resulta, at dahilan ng pagtugma o pagkakaiba. Sinusukat ng completion check ang pag-unawa; hinahasa ng practice task ang kasanayan.

      Sanggunian sa wika

      \ No newline at end of file diff --git a/tl/cpp-foundations-20261101/lesson-3/main.cpp b/tl/cpp-foundations-20261101/lesson-3/main.cpp new file mode 100644 index 0000000..10f44d4 --- /dev/null +++ b/tl/cpp-foundations-20261101/lesson-3/main.cpp @@ -0,0 +1,8 @@ +#include +#include +#include +#include +int remaining(int total, int done) { return done >= total ? 0 : total - done; } +int main() { + std::cout << remaining(4, 1) << "\n"; +} diff --git a/tl/cpp-practice-20261101/README.md b/tl/cpp-practice-20261101/README.md new file mode 100644 index 0000000..ec9639e --- /dev/null +++ b/tl/cpp-practice-20261101/README.md @@ -0,0 +1,9 @@ +# C++ — pagbuo at pagsubok + +[Agila University track](https://edu.agilaos.com/track.php?track=13&lang=tl) + +Mga 15 minuto bawat aralin. Hulaan, patakbuhin, baguhin, ipaliwanag, at sagutan ang pagsusulit sa University. + +- [Lesson 1: Collection at paulit-ulit na gawain](lesson-1/lesson.html) +- [Lesson 2: Isang mahalagang katangian ng wika](lesson-2/lesson.html) +- [Lesson 3: Bumuo, sirain, at subukan ang study planner](lesson-3/lesson.html) diff --git a/tl/cpp-practice-20261101/lesson-1/lesson.html b/tl/cpp-practice-20261101/lesson-1/lesson.html new file mode 100644 index 0000000..4d412dc --- /dev/null +++ b/tl/cpp-practice-20261101/lesson-1/lesson.html @@ -0,0 +1,12 @@ +Collection at paulit-ulit na gawain

      Collection at paulit-ulit na gawain

      15-minutong sesyon: magbasa nang 3 minuto, mag-trace nang 3, mag-eksperimento nang 7, at sagutan ang check nang 2. Maglaan ng dagdag na oras kung kailangan.

      Nag-iimbak ng magkakaugnay na value ang collection. Binibisita ng loop ang 1, 2, at 3; mula 0 ay nagiging 1, 3, at 6 ang total. Itala ang trace sa halip na manghula. Tukuyin ang una at huling valid na posisyon: maaaring 1-based ang Pascal array samantalang zero-based ang maraming ibang container. Magdagdag ng value at itama ang bounds. Ipaliwanag ang resulta para sa empty collection.

      Nagsusulat ng output ang std::cout. Pinamamahalaan ng std::vector ang lumalaking sequence at inilalabas ang storage sa dulo ng lifetime nito. C++17 ang lab; itala ang ibang standard kung kailangan.

      #include <iostream>
      +#include <vector>
      +#include <string>
      +#include <cassert>
      +
      +int main() {
      +    std::vector<int> minutes{1, 2, 3};
      +    int total = 0;
      +    for (int value : minutes) total += value;
      +    std::cout << total << "\n";
      +}
      +

      Inaasahang resulta: 6

      Pagsasanay at ebidensiya

      Itala ang hula, aktuwal na resulta, at dahilan ng pagtugma o pagkakaiba. Sinusukat ng completion check ang pag-unawa; hinahasa ng practice task ang kasanayan.

      Sanggunian sa wika

      \ No newline at end of file diff --git a/tl/cpp-practice-20261101/lesson-1/main.cpp b/tl/cpp-practice-20261101/lesson-1/main.cpp new file mode 100644 index 0000000..2e336b8 --- /dev/null +++ b/tl/cpp-practice-20261101/lesson-1/main.cpp @@ -0,0 +1,11 @@ +#include +#include +#include +#include + +int main() { + std::vector minutes{1, 2, 3}; + int total = 0; + for (int value : minutes) total += value; + std::cout << total << "\n"; +} diff --git a/tl/cpp-practice-20261101/lesson-2/lesson.html b/tl/cpp-practice-20261101/lesson-2/lesson.html new file mode 100644 index 0000000..5eb5ece --- /dev/null +++ b/tl/cpp-practice-20261101/lesson-2/lesson.html @@ -0,0 +1,12 @@ +Isang mahalagang katangian ng wika

      Isang mahalagang katangian ng wika

      15-minutong sesyon: magbasa nang 3 minuto, mag-trace nang 3, mag-eksperimento nang 7, at sagutan ang check nang 2. Maglaan ng dagdag na oras kung kailangan.

      Gamitin ang tala sa wika sa ibaba upang ipaliwanag ang pagbabago ng state. Tukuyin kung ano ang kinokopya, pinagsasaluhan, maaaring mabigo, at inilalabas. Hindi lahat ng tanong ay naaangkop sa programang ito: sabihin kung alin. Gumawa ng isang pagbabago, hulaan ang epekto, at ihambing sa aktuwal na resulta. Maaaring iba ang patakaran ng pamilyar na operator sa ibang wika.

      Nagsusulat ng output ang std::cout. Pinamamahalaan ng std::vector ang lumalaking sequence at inilalabas ang storage sa dulo ng lifetime nito. C++17 ang lab; itala ang ibang standard kung kailangan.

      May sariling sequence ang vector copy. Nananatiling 2 ang haba ng orihinal habang 3 ang copy. Iba ito sa pagkopya ng reference sa shared object.

      #include <iostream>
      +#include <vector>
      +#include <string>
      +#include <cassert>
      +
      +int main() {
      +    std::vector<std::string> plan{"Read", "Test"};
      +    auto copy = plan;
      +    copy.push_back("Explain");
      +    std::cout << plan.size() << " " << copy.size() << "\n";
      +}
      +

      Inaasahang resulta: 2 3

      Pagsasanay at ebidensiya

      Itala ang hula, aktuwal na resulta, at dahilan ng pagtugma o pagkakaiba. Sinusukat ng completion check ang pag-unawa; hinahasa ng practice task ang kasanayan.

      Sanggunian sa wika

      \ No newline at end of file diff --git a/tl/cpp-practice-20261101/lesson-2/main.cpp b/tl/cpp-practice-20261101/lesson-2/main.cpp new file mode 100644 index 0000000..75b4235 --- /dev/null +++ b/tl/cpp-practice-20261101/lesson-2/main.cpp @@ -0,0 +1,11 @@ +#include +#include +#include +#include + +int main() { + std::vector plan{"Read", "Test"}; + auto copy = plan; + copy.push_back("Explain"); + std::cout << plan.size() << " " << copy.size() << "\n"; +} diff --git a/tl/cpp-practice-20261101/lesson-3/lesson.html b/tl/cpp-practice-20261101/lesson-3/lesson.html new file mode 100644 index 0000000..96284bb --- /dev/null +++ b/tl/cpp-practice-20261101/lesson-3/lesson.html @@ -0,0 +1,13 @@ +Bumuo, sirain, at subukan ang study planner

      Bumuo, sirain, at subukan ang study planner

      15-minutong sesyon: magbasa nang 3 minuto, mag-trace nang 3, mag-eksperimento nang 7, at sagutan ang check nang 2. Maglaan ng dagdag na oras kung kailangan.

      Inihahambing ng makabuluhang test ang resulta sa requirement. Hindi dapat maging negative ang natitirang gawain sa nonnegative input domain ng planner. Patakbuhin ang starter, sadyang alisin ang proteksiyon kapag lampas sa total ang completed, at tiyaking may check na mabibigo. Ibalik ito. Magdagdag ng dalawang study task, summary, at boundary cases. I-save ang source at ebidensiya sa Agila Forge. Ipaliwanag ang bawat linya, pati mungkahi ng AI.

      Nagsusulat ng output ang std::cout. Pinamamahalaan ng std::vector ang lumalaking sequence at inilalabas ang storage sa dulo ng lifetime nito. C++17 ang lab; itala ang ibang standard kung kailangan.

      #include <iostream>
      +#include <vector>
      +#include <string>
      +#include <cassert>
      +int remaining(int total, int done) { return done >= total ? 0 : total - done; }
      +int main() {
      +    assert(remaining(4,1)==3);
      +    assert(remaining(4,4)==0);
      +    assert(remaining(4,5)==0);
      +    assert(remaining(0,0)==0);
      +    std::cout << "Pumasa\n";
      +}
      +

      Inaasahang resulta: Pumasa

      Pagsasanay at ebidensiya

      Itala ang hula, aktuwal na resulta, at dahilan ng pagtugma o pagkakaiba. Sinusukat ng completion check ang pag-unawa; hinahasa ng practice task ang kasanayan.

      Sanggunian sa wika

      \ No newline at end of file diff --git a/tl/cpp-practice-20261101/lesson-3/main.cpp b/tl/cpp-practice-20261101/lesson-3/main.cpp new file mode 100644 index 0000000..f9ae8b3 --- /dev/null +++ b/tl/cpp-practice-20261101/lesson-3/main.cpp @@ -0,0 +1,12 @@ +#include +#include +#include +#include +int remaining(int total, int done) { return done >= total ? 0 : total - done; } +int main() { + assert(remaining(4,1)==3); + assert(remaining(4,4)==0); + assert(remaining(4,5)==0); + assert(remaining(0,0)==0); + std::cout << "Pumasa\n"; +} diff --git a/tl/csharp-foundations-20261101/README.md b/tl/csharp-foundations-20261101/README.md new file mode 100644 index 0000000..82ecdfe --- /dev/null +++ b/tl/csharp-foundations-20261101/README.md @@ -0,0 +1,9 @@ +# C# — mga unang hakbang + +[Agila University track](https://edu.agilaos.com/track.php?track=14&lang=tl) + +Mga 15 minuto bawat aralin. Hulaan, patakbuhin, baguhin, ipaliwanag, at sagutan ang pagsusulit sa University. + +- [Lesson 1: Ang unang programang kaya mong ipaliwanag](lesson-1/lesson.html) +- [Lesson 2: Mga value at desisyon](lesson-2/lesson.html) +- [Lesson 3: Function at malinaw na patakaran](lesson-3/lesson.html) diff --git a/tl/csharp-foundations-20261101/lesson-1/lesson.html b/tl/csharp-foundations-20261101/lesson-1/lesson.html new file mode 100644 index 0000000..def94e3 --- /dev/null +++ b/tl/csharp-foundations-20261101/lesson-1/lesson.html @@ -0,0 +1,9 @@ +Ang unang programang kaya mong ipaliwanag

      Ang unang programang kaya mong ipaliwanag

      15-minutong sesyon: magbasa nang 3 minuto, mag-trace nang 3, mag-eksperimento nang 7, at sagutan ang check nang 2. Maglaan ng dagdag na oras kung kailangan.

      Mga utos ang isang programa. Basahin mula sa entry point hanggang sa output statement. Data ang tekstong nasa panipi; utos ang output operation. Hulaan ang linyang lalabas bago patakbuhin. Baguhin lang ang mensahe, patakbuhin muli, at alisin ang isang kailangang bantas para basahin ang unang error. Ibalik ang gumaganang source.

      Ang Main ang entry method sa Program. Nagpi-print ng linya ang Console.WriteLine. Maaaring maraming reference sa iisang class instance; hindi cloning ang pag-assign ng reference.

      using System;
      +using System.Collections.Generic;
      +class Program {
      +
      +    static void Main() {
      +        Console.WriteLine("Handa");
      +    }
      +}
      +

      Inaasahang resulta: Handa

      Pagsasanay at ebidensiya

      Itala ang hula, aktuwal na resulta, at dahilan ng pagtugma o pagkakaiba. Sinusukat ng completion check ang pag-unawa; hinahasa ng practice task ang kasanayan.

      Sanggunian sa wika

      \ No newline at end of file diff --git a/tl/csharp-foundations-20261101/lesson-1/main.cs b/tl/csharp-foundations-20261101/lesson-1/main.cs new file mode 100644 index 0000000..12205c5 --- /dev/null +++ b/tl/csharp-foundations-20261101/lesson-1/main.cs @@ -0,0 +1,8 @@ +using System; +using System.Collections.Generic; +class Program { + + static void Main() { + Console.WriteLine("Handa"); + } +} diff --git a/tl/csharp-foundations-20261101/lesson-2/lesson.html b/tl/csharp-foundations-20261101/lesson-2/lesson.html new file mode 100644 index 0000000..a45581c --- /dev/null +++ b/tl/csharp-foundations-20261101/lesson-2/lesson.html @@ -0,0 +1,10 @@ +Mga value at desisyon

      Mga value at desisyon

      15-minutong sesyon: magbasa nang 3 minuto, mag-trace nang 3, mag-eksperimento nang 7, at sagutan ang check nang 2. Maglaan ng dagdag na oras kung kailangan.

      Pumipili ang desisyon kung aling statement ang tatakbo. Ang patakaran ay “handa sa 80 pataas.” Sundan ang 85, 79, 80, at 81 bago patakbuhin ang bawat kaso. Kasama ang 80 sa comparison. Maaaring tama sa 85 ngunit mali sa hangganan. Magdagdag ng hiwalay na check para tanggihan ang mas mababa sa 0 o lampas sa 100; magkaiba ang invalid at kailangang magsanay.

      Ang Main ang entry method sa Program. Nagpi-print ng linya ang Console.WriteLine. Maaaring maraming reference sa iisang class instance; hindi cloning ang pag-assign ng reference.

      using System;
      +using System.Collections.Generic;
      +class Program {
      +
      +    static void Main() {
      +        int score = 85;
      +        Console.WriteLine(score >= 80 ? "Handa" : "Magsanay");
      +    }
      +}
      +

      Inaasahang resulta: Handa

      Pagsasanay at ebidensiya

      Itala ang hula, aktuwal na resulta, at dahilan ng pagtugma o pagkakaiba. Sinusukat ng completion check ang pag-unawa; hinahasa ng practice task ang kasanayan.

      Sanggunian sa wika

      \ No newline at end of file diff --git a/tl/csharp-foundations-20261101/lesson-2/main.cs b/tl/csharp-foundations-20261101/lesson-2/main.cs new file mode 100644 index 0000000..0b5a84e --- /dev/null +++ b/tl/csharp-foundations-20261101/lesson-2/main.cs @@ -0,0 +1,9 @@ +using System; +using System.Collections.Generic; +class Program { + + static void Main() { + int score = 85; + Console.WriteLine(score >= 80 ? "Handa" : "Magsanay"); + } +} diff --git a/tl/csharp-foundations-20261101/lesson-3/lesson.html b/tl/csharp-foundations-20261101/lesson-3/lesson.html new file mode 100644 index 0000000..e0a5b7e --- /dev/null +++ b/tl/csharp-foundations-20261101/lesson-3/lesson.html @@ -0,0 +1,9 @@ +Function at malinaw na patakaran

      Function at malinaw na patakaran

      15-minutong sesyon: magbasa nang 3 minuto, mag-trace nang 3, mag-eksperimento nang 7, at sagutan ang check nang 2. Maglaan ng dagdag na oras kung kailangan.

      Pinapangalanan ng function o subroutine ang calculation na magagamit muli. Tumatanggap ang patakaran ng nonnegative total at completed; zero ang sagot kapag umabot o lumampas ang completed sa total. Kung hindi, ibinabalik ang diperensiya. Sundan ang (4,1), (4,4), (4,5), at (0,0). Ihiwalay ang pagpi-print sa calculation. Ipaliwanag kung bakit wala sa saklaw ang negative input at magdisenyo ng pagtanggi bago tumanggap ng external input.

      Ang Main ang entry method sa Program. Nagpi-print ng linya ang Console.WriteLine. Maaaring maraming reference sa iisang class instance; hindi cloning ang pag-assign ng reference.

      using System;
      +using System.Collections.Generic;
      +class Program {
      +    static int Remaining(int total, int done) { return done >= total ? 0 : total - done; }
      +    static void Main() {
      +        Console.WriteLine(Remaining(4, 1));
      +    }
      +}
      +

      Inaasahang resulta: 3

      Pagsasanay at ebidensiya

      Itala ang hula, aktuwal na resulta, at dahilan ng pagtugma o pagkakaiba. Sinusukat ng completion check ang pag-unawa; hinahasa ng practice task ang kasanayan.

      Sanggunian sa wika

      \ No newline at end of file diff --git a/tl/csharp-foundations-20261101/lesson-3/main.cs b/tl/csharp-foundations-20261101/lesson-3/main.cs new file mode 100644 index 0000000..4229f78 --- /dev/null +++ b/tl/csharp-foundations-20261101/lesson-3/main.cs @@ -0,0 +1,8 @@ +using System; +using System.Collections.Generic; +class Program { + static int Remaining(int total, int done) { return done >= total ? 0 : total - done; } + static void Main() { + Console.WriteLine(Remaining(4, 1)); + } +} diff --git a/tl/csharp-practice-20261101/README.md b/tl/csharp-practice-20261101/README.md new file mode 100644 index 0000000..489e117 --- /dev/null +++ b/tl/csharp-practice-20261101/README.md @@ -0,0 +1,9 @@ +# C# — pagbuo at pagsubok + +[Agila University track](https://edu.agilaos.com/track.php?track=14&lang=tl) + +Mga 15 minuto bawat aralin. Hulaan, patakbuhin, baguhin, ipaliwanag, at sagutan ang pagsusulit sa University. + +- [Lesson 1: Collection at paulit-ulit na gawain](lesson-1/lesson.html) +- [Lesson 2: Isang mahalagang katangian ng wika](lesson-2/lesson.html) +- [Lesson 3: Bumuo, sirain, at subukan ang study planner](lesson-3/lesson.html) diff --git a/tl/csharp-practice-20261101/lesson-1/lesson.html b/tl/csharp-practice-20261101/lesson-1/lesson.html new file mode 100644 index 0000000..4637173 --- /dev/null +++ b/tl/csharp-practice-20261101/lesson-1/lesson.html @@ -0,0 +1,12 @@ +Collection at paulit-ulit na gawain

      Collection at paulit-ulit na gawain

      15-minutong sesyon: magbasa nang 3 minuto, mag-trace nang 3, mag-eksperimento nang 7, at sagutan ang check nang 2. Maglaan ng dagdag na oras kung kailangan.

      Nag-iimbak ng magkakaugnay na value ang collection. Binibisita ng loop ang 1, 2, at 3; mula 0 ay nagiging 1, 3, at 6 ang total. Itala ang trace sa halip na manghula. Tukuyin ang una at huling valid na posisyon: maaaring 1-based ang Pascal array samantalang zero-based ang maraming ibang container. Magdagdag ng value at itama ang bounds. Ipaliwanag ang resulta para sa empty collection.

      Ang Main ang entry method sa Program. Nagpi-print ng linya ang Console.WriteLine. Maaaring maraming reference sa iisang class instance; hindi cloning ang pag-assign ng reference.

      using System;
      +using System.Collections.Generic;
      +class Program {
      +
      +    static void Main() {
      +        int[] minutes = {1, 2, 3};
      +        int total = 0;
      +        foreach (int value in minutes) total += value;
      +        Console.WriteLine(total);
      +    }
      +}
      +

      Inaasahang resulta: 6

      Pagsasanay at ebidensiya

      Itala ang hula, aktuwal na resulta, at dahilan ng pagtugma o pagkakaiba. Sinusukat ng completion check ang pag-unawa; hinahasa ng practice task ang kasanayan.

      Sanggunian sa wika

      \ No newline at end of file diff --git a/tl/csharp-practice-20261101/lesson-1/main.cs b/tl/csharp-practice-20261101/lesson-1/main.cs new file mode 100644 index 0000000..9f7e352 --- /dev/null +++ b/tl/csharp-practice-20261101/lesson-1/main.cs @@ -0,0 +1,11 @@ +using System; +using System.Collections.Generic; +class Program { + + static void Main() { + int[] minutes = {1, 2, 3}; + int total = 0; + foreach (int value in minutes) total += value; + Console.WriteLine(total); + } +} diff --git a/tl/csharp-practice-20261101/lesson-2/lesson.html b/tl/csharp-practice-20261101/lesson-2/lesson.html new file mode 100644 index 0000000..571cf84 --- /dev/null +++ b/tl/csharp-practice-20261101/lesson-2/lesson.html @@ -0,0 +1,12 @@ +Isang mahalagang katangian ng wika

      Isang mahalagang katangian ng wika

      15-minutong sesyon: magbasa nang 3 minuto, mag-trace nang 3, mag-eksperimento nang 7, at sagutan ang check nang 2. Maglaan ng dagdag na oras kung kailangan.

      Gamitin ang tala sa wika sa ibaba upang ipaliwanag ang pagbabago ng state. Tukuyin kung ano ang kinokopya, pinagsasaluhan, maaaring mabigo, at inilalabas. Hindi lahat ng tanong ay naaangkop sa programang ito: sabihin kung alin. Gumawa ng isang pagbabago, hulaan ang epekto, at ihambing sa aktuwal na resulta. Maaaring iba ang patakaran ng pamilyar na operator sa ibang wika.

      Ang Main ang entry method sa Program. Nagpi-print ng linya ang Console.WriteLine. Maaaring maraming reference sa iisang class instance; hindi cloning ang pag-assign ng reference.

      using System;
      +using System.Collections.Generic;
      +class Program {
      +    class Plan { public int Done = 2; }
      +    static void Main() {
      +        var plan = new Plan();
      +        var alias = plan;
      +        alias.Done = 3;
      +        Console.WriteLine(plan.Done);
      +    }
      +}
      +

      Inaasahang resulta: 3

      Pagsasanay at ebidensiya

      Itala ang hula, aktuwal na resulta, at dahilan ng pagtugma o pagkakaiba. Sinusukat ng completion check ang pag-unawa; hinahasa ng practice task ang kasanayan.

      Sanggunian sa wika

      \ No newline at end of file diff --git a/tl/csharp-practice-20261101/lesson-2/main.cs b/tl/csharp-practice-20261101/lesson-2/main.cs new file mode 100644 index 0000000..721eb00 --- /dev/null +++ b/tl/csharp-practice-20261101/lesson-2/main.cs @@ -0,0 +1,11 @@ +using System; +using System.Collections.Generic; +class Program { + class Plan { public int Done = 2; } + static void Main() { + var plan = new Plan(); + var alias = plan; + alias.Done = 3; + Console.WriteLine(plan.Done); + } +} diff --git a/tl/csharp-practice-20261101/lesson-3/lesson.html b/tl/csharp-practice-20261101/lesson-3/lesson.html new file mode 100644 index 0000000..e294ebc --- /dev/null +++ b/tl/csharp-practice-20261101/lesson-3/lesson.html @@ -0,0 +1,11 @@ +Bumuo, sirain, at subukan ang study planner

      Bumuo, sirain, at subukan ang study planner

      15-minutong sesyon: magbasa nang 3 minuto, mag-trace nang 3, mag-eksperimento nang 7, at sagutan ang check nang 2. Maglaan ng dagdag na oras kung kailangan.

      Inihahambing ng makabuluhang test ang resulta sa requirement. Hindi dapat maging negative ang natitirang gawain sa nonnegative input domain ng planner. Patakbuhin ang starter, sadyang alisin ang proteksiyon kapag lampas sa total ang completed, at tiyaking may check na mabibigo. Ibalik ito. Magdagdag ng dalawang study task, summary, at boundary cases. I-save ang source at ebidensiya sa Agila Forge. Ipaliwanag ang bawat linya, pati mungkahi ng AI.

      Ang Main ang entry method sa Program. Nagpi-print ng linya ang Console.WriteLine. Maaaring maraming reference sa iisang class instance; hindi cloning ang pag-assign ng reference.

      using System;
      +using System.Collections.Generic;
      +class Program {
      +    static int Remaining(int total, int done) { return done >= total ? 0 : total - done; }
      +    static void Main() {
      +        if (Remaining(4,1)!=3 || Remaining(4,4)!=0 || Remaining(4,5)!=0 || Remaining(0,0)!=0)
      +            throw new Exception("Test failed");
      +        Console.WriteLine("Pumasa");
      +    }
      +}
      +

      Inaasahang resulta: Pumasa

      Pagsasanay at ebidensiya

      Itala ang hula, aktuwal na resulta, at dahilan ng pagtugma o pagkakaiba. Sinusukat ng completion check ang pag-unawa; hinahasa ng practice task ang kasanayan.

      Sanggunian sa wika

      \ No newline at end of file diff --git a/tl/csharp-practice-20261101/lesson-3/main.cs b/tl/csharp-practice-20261101/lesson-3/main.cs new file mode 100644 index 0000000..60e3b21 --- /dev/null +++ b/tl/csharp-practice-20261101/lesson-3/main.cs @@ -0,0 +1,10 @@ +using System; +using System.Collections.Generic; +class Program { + static int Remaining(int total, int done) { return done >= total ? 0 : total - done; } + static void Main() { + if (Remaining(4,1)!=3 || Remaining(4,4)!=0 || Remaining(4,5)!=0 || Remaining(0,0)!=0) + throw new Exception("Test failed"); + Console.WriteLine("Pumasa"); + } +} diff --git a/tl/expanded-22-1/README.md b/tl/expanded-22-1/README.md new file mode 100644 index 0000000..d3ec0f3 --- /dev/null +++ b/tl/expanded-22-1/README.md @@ -0,0 +1,9 @@ +# CPU Architecture at Portability · 1 + +[Agila University track](https://edu.agilaos.com/track.php?track=22&lang=tl) + +Mga 15 minuto bawat aralin. Hulaan, patakbuhin, baguhin, ipaliwanag, at sagutan ang pagsusulit sa University. + +- [Lesson 1: Source, machine code, at ISA](lesson-1/lesson.html) +- [Lesson 2: Bit, byte, at lapad ng integer](lesson-2/lesson.html) +- [Lesson 3: Patakaran sa byte order ang endianness](lesson-3/lesson.html) diff --git a/tl/expanded-22-1/lesson-1/lesson.html b/tl/expanded-22-1/lesson-1/lesson.html new file mode 100644 index 0000000..9ef0a10 --- /dev/null +++ b/tl/expanded-22-1/lesson-1/lesson.html @@ -0,0 +1,3 @@ +Source, machine code, at ISA

      Source, machine code, at ISA

      15-minutong sesyon: magbasa nang 3 minuto, mag-trace nang 3, mag-eksperimento nang 7, at sagutan ang check nang 2. Maglaan ng dagdag na oras kung kailangan.

      Nag-e-execute ang CPU ng instruction mula sa ISA nito. Kailangan ng compiler o interpreter ang source. Maaaring gumana ang parehong Python source sa x86-64 at Arm64 kung may compatible interpreter; ibang artifact ang compiled x86-64 executable. I-print ang architecture ng lab at gumawa ng table para sa source language, ISA, OS, at runtime. Iba ang emulator sa recompilation.

      import platform
      +print(platform.machine())
      +

      Pagsasanay at ebidensiya

      Itala ang hula, aktuwal na resulta, at dahilan ng pagtugma o pagkakaiba. Sinusukat ng completion check ang pag-unawa; hinahasa ng practice task ang kasanayan.

      Sanggunian sa wika: www.intel.com

      Sanggunian sa wika: developer.arm.com

      Sanggunian sa wika: docs.riscv.org

      \ No newline at end of file diff --git a/tl/expanded-22-1/lesson-1/main.py b/tl/expanded-22-1/lesson-1/main.py new file mode 100644 index 0000000..e8b7ae6 --- /dev/null +++ b/tl/expanded-22-1/lesson-1/main.py @@ -0,0 +1,2 @@ +import platform +print(platform.machine()) diff --git a/tl/expanded-22-1/lesson-2/lesson.html b/tl/expanded-22-1/lesson-2/lesson.html new file mode 100644 index 0000000..65183de --- /dev/null +++ b/tl/expanded-22-1/lesson-2/lesson.html @@ -0,0 +1,5 @@ +Bit, byte, at lapad ng integer

      Bit, byte, at lapad ng integer

      15-minutong sesyon: magbasa nang 3 minuto, mag-trace nang 3, mag-eksperimento nang 7, at sagutan ang check nang 2. Maglaan ng dagdag na oras kung kailangan.

      May 256 pattern ang walong bit. Mula 0 hanggang 255 ang unsigned 8-bit value. Gumagamit ng modulo ang modelo para maging zero ang 256; hindi likas na ganito ang Python integer. Ihambing ang signed at unsigned na interpretasyon ng 255. Hulaan ang range sa 16 bit. Huwag ibatay ang pointer o integer size sa pangalan lang ng CPU.

      bits=8
      +print(2**bits)
      +print((255+1) % (2**bits))
      +

      Inaasahang resulta: 256 +0

      Pagsasanay at ebidensiya

      Itala ang hula, aktuwal na resulta, at dahilan ng pagtugma o pagkakaiba. Sinusukat ng completion check ang pag-unawa; hinahasa ng practice task ang kasanayan.

      Sanggunian sa wika: www.intel.com

      Sanggunian sa wika: developer.arm.com

      Sanggunian sa wika: docs.riscv.org

      \ No newline at end of file diff --git a/tl/expanded-22-1/lesson-2/main.py b/tl/expanded-22-1/lesson-2/main.py new file mode 100644 index 0000000..cea60d9 --- /dev/null +++ b/tl/expanded-22-1/lesson-2/main.py @@ -0,0 +1,3 @@ +bits=8 +print(2**bits) +print((255+1) % (2**bits)) diff --git a/tl/expanded-22-1/lesson-3/lesson.html b/tl/expanded-22-1/lesson-3/lesson.html new file mode 100644 index 0000000..0787213 --- /dev/null +++ b/tl/expanded-22-1/lesson-3/lesson.html @@ -0,0 +1,5 @@ +Patakaran sa byte order ang endianness

      Patakaran sa byte order ang endianness

      15-minutong sesyon: magbasa nang 3 minuto, mag-trace nang 3, mag-eksperimento nang 7, at sagutan ang check nang 2. Maglaan ng dagdag na oras kung kailangan.

      Maaaring itago ang 0x1234 bilang 34 12 sa little-endian o 12 34 sa big-endian. Pareho ang numero; representasyon ang nagbago. Patakbuhin ang conversion at i-decode pabalik. Dapat tukuyin ng file o network protocol ang byte order sa halip na basta kumopya ng host struct. Hiwalay na usapin ang padding at alignment.

      value=0x1234
      +print(value.to_bytes(2,"little").hex())
      +print(value.to_bytes(2,"big").hex())
      +

      Inaasahang resulta: 3412 +1234

      Pagsasanay at ebidensiya

      Itala ang hula, aktuwal na resulta, at dahilan ng pagtugma o pagkakaiba. Sinusukat ng completion check ang pag-unawa; hinahasa ng practice task ang kasanayan.

      Sanggunian sa wika: www.intel.com

      Sanggunian sa wika: developer.arm.com

      Sanggunian sa wika: docs.riscv.org

      \ No newline at end of file diff --git a/tl/expanded-22-1/lesson-3/main.py b/tl/expanded-22-1/lesson-3/main.py new file mode 100644 index 0000000..ef772c3 --- /dev/null +++ b/tl/expanded-22-1/lesson-3/main.py @@ -0,0 +1,3 @@ +value=0x1234 +print(value.to_bytes(2,"little").hex()) +print(value.to_bytes(2,"big").hex()) diff --git a/tl/expanded-22-2/README.md b/tl/expanded-22-2/README.md new file mode 100644 index 0000000..77b3cbe --- /dev/null +++ b/tl/expanded-22-2/README.md @@ -0,0 +1,9 @@ +# CPU Architecture at Portability · 2 + +[Agila University track](https://edu.agilaos.com/track.php?track=22&lang=tl) + +Mga 15 minuto bawat aralin. Hulaan, patakbuhin, baguhin, ipaliwanag, at sagutan ang pagsusulit sa University. + +- [Lesson 1: Ihambing ang x86-64, Arm64, at RISC-V](lesson-1/lesson.html) +- [Lesson 2: BASIC sa 6502, Z80, at modernong host](lesson-2/lesson.html) +- [Lesson 3: Ulat sa portability na mauulit](lesson-3/lesson.html) diff --git a/tl/expanded-22-2/lesson-1/lesson.html b/tl/expanded-22-2/lesson-1/lesson.html new file mode 100644 index 0000000..687296b --- /dev/null +++ b/tl/expanded-22-2/lesson-1/lesson.html @@ -0,0 +1 @@ +Ihambing ang x86-64, Arm64, at RISC-V

      Ihambing ang x86-64, Arm64, at RISC-V

      15-minutong sesyon: magbasa nang 3 minuto, mag-trace nang 3, mag-eksperimento nang 7, at sagutan ang check nang 2. Maglaan ng dagdag na oras kung kailangan.

      Magkakaiba ang instruction encoding at register convention ng x86-64, AArch64, at RV64. X0–X30 ang 64-bit general register sa AArch64; x0–x31 sa RV64I at laging zero ang x0. Nagdaragdag ang ABI ng calling convention, stack rule, at binary interface. Ihambing ang function call sa opisyal na manual at ilista ang kailangang baguhin ng compiler backend. Hindi interchangeable ang binary dahil lang 64-bit.

      Pagsasanay at ebidensiya

      Itala ang hula, aktuwal na resulta, at dahilan ng pagtugma o pagkakaiba. Sinusukat ng completion check ang pag-unawa; hinahasa ng practice task ang kasanayan.

      Sanggunian sa wika: www.intel.com

      Sanggunian sa wika: developer.arm.com

      Sanggunian sa wika: docs.riscv.org

      \ No newline at end of file diff --git a/tl/expanded-22-2/lesson-2/lesson.html b/tl/expanded-22-2/lesson-2/lesson.html new file mode 100644 index 0000000..7a57d5d --- /dev/null +++ b/tl/expanded-22-2/lesson-2/lesson.html @@ -0,0 +1 @@ +BASIC sa 6502, Z80, at modernong host

      BASIC sa 6502, Z80, at modernong host

      15-minutong sesyon: magbasa nang 3 minuto, mag-trace nang 3, mag-eksperimento nang 7, at sagutan ang check nang 2. Maglaan ng dagdag na oras kung kailangan.

      Nakaugnay ang BASIC dialect sa interpreter o compiler, hindi direkta sa CPU. Madalas magkaiba ang BASIC at device command sa klasikong 6502 at Z80 system. Ihiwalay ang portable arithmetic sa machine-specific graphics, PEEK/POKE address, at file command. I-port ang tatlong linyang greeting gamit ang target manual. Sa lab, tumatakbo ang Bywater sa Linux; hindi nito ine-emulate ang dalawang lumang machine.

      Pagsasanay at ebidensiya

      Itala ang hula, aktuwal na resulta, at dahilan ng pagtugma o pagkakaiba. Sinusukat ng completion check ang pag-unawa; hinahasa ng practice task ang kasanayan.

      Sanggunian sa wika: www.intel.com

      Sanggunian sa wika: developer.arm.com

      Sanggunian sa wika: docs.riscv.org

      \ No newline at end of file diff --git a/tl/expanded-22-2/lesson-3/lesson.html b/tl/expanded-22-2/lesson-3/lesson.html new file mode 100644 index 0000000..3a97bdf --- /dev/null +++ b/tl/expanded-22-2/lesson-3/lesson.html @@ -0,0 +1 @@ +Ulat sa portability na mauulit

      Ulat sa portability na mauulit

      15-minutong sesyon: magbasa nang 3 minuto, mag-trace nang 3, mag-eksperimento nang 7, at sagutan ang check nang 2. Maglaan ng dagdag na oras kung kailangan.

      Pumili ng maliit na program at dalawang target environment. Itala ang compiler/interpreter version, ISA, OS, input, expected at actual result, at limitasyon. Magkaiba ang compile success at matagumpay na pagtakbo sa target. Kung isa lang ang available, markahan ang isa na untested. Gamitin ang opisyal na Intel, Arm, at RISC-V reference sa resources. Susunod ang core at memory mapping track.

      Pagsasanay at ebidensiya

      Itala ang hula, aktuwal na resulta, at dahilan ng pagtugma o pagkakaiba. Sinusukat ng completion check ang pag-unawa; hinahasa ng practice task ang kasanayan.

      Sanggunian sa wika: www.intel.com

      Sanggunian sa wika: developer.arm.com

      Sanggunian sa wika: docs.riscv.org

      \ No newline at end of file diff --git a/tl/expanded-23-1/README.md b/tl/expanded-23-1/README.md new file mode 100644 index 0000000..c3e5283 --- /dev/null +++ b/tl/expanded-23-1/README.md @@ -0,0 +1,9 @@ +# Bumuo ng Open Agila OS · 1 + +[Agila University track](https://edu.agilaos.com/track.php?track=23&lang=tl) + +Mga 15 minuto bawat aralin. Hulaan, patakbuhin, baguhin, ipaliwanag, at sagutan ang pagsusulit sa University. + +- [Lesson 1: I-build ang public kernel prototype](lesson-1/lesson.html) +- [Lesson 2: Sundan nang tapat ang initialization](lesson-2/lesson.html) +- [Lesson 3: Imodelo ang page translation](lesson-3/lesson.html) diff --git a/tl/expanded-23-1/lesson-1/lesson.html b/tl/expanded-23-1/lesson-1/lesson.html new file mode 100644 index 0000000..8bdea1c --- /dev/null +++ b/tl/expanded-23-1/lesson-1/lesson.html @@ -0,0 +1 @@ +I-build ang public kernel prototype

      I-build ang public kernel prototype

      15-minutong sesyon: magbasa nang 3 minuto, mag-trace nang 3, mag-eksperimento nang 7, at sagutan ang check nang 2. Maglaan ng dagdag na oras kung kailangan.

      Gumagamit ng Ada, kernel.gpr, at Makefile ang public open_kernel. Host program ang bina-build at pinapatakbo ng make run. Hindi ito bootable bare-metal image. Tinatawag ng Main ang Kernel.Start. Suriin ang source bago baguhin; 9af96aa ang reference revision.

      Pagsasanay at ebidensiya: I-clone mula sa Forge sa development environment, mag-install ng GNAT at gprbuild, patakbuhin ang make at make run, at itala ang commit at output. Single-file ang browser lab; sariling development environment ang gamit sa multi-file build.

      Pagsasanay at ebidensiya

      Itala ang hula, aktuwal na resulta, at dahilan ng pagtugma o pagkakaiba. Sinusukat ng completion check ang pag-unawa; hinahasa ng practice task ang kasanayan.

      Sanggunian sa wika: git.agilaos.com

      Sanggunian sa wika: git.agilaos.com

      \ No newline at end of file diff --git a/tl/expanded-23-1/lesson-2/lesson.html b/tl/expanded-23-1/lesson-2/lesson.html new file mode 100644 index 0000000..75d012c --- /dev/null +++ b/tl/expanded-23-1/lesson-2/lesson.html @@ -0,0 +1 @@ +Sundan nang tapat ang initialization

      Sundan nang tapat ang initialization

      15-minutong sesyon: magbasa nang 3 minuto, mag-trace nang 3, mag-eksperimento nang 7, at sagutan ang check nang 2. Maglaan ng dagdag na oras kung kailangan.

      Tinatawag ng Kernel.Start ang initialization ng CPU, Memory, Console, Interrupt, Timer, at Scheduler. Null pa ang laman ng ilan. Hindi patunay ng subsystem ang initialized message. Sundan ang bawat call at uriin bilang implemented, host-backed, o stub.

      Pagsasanay at ebidensiya: Gumawa ng evidence table: file, procedure, nakikitang kilos, at test na kailangan pa. Ada.Text_IO ang Console, kaya umaasa ito sa host runtime.

      Pagsasanay at ebidensiya

      Itala ang hula, aktuwal na resulta, at dahilan ng pagtugma o pagkakaiba. Sinusukat ng completion check ang pag-unawa; hinahasa ng practice task ang kasanayan.

      Sanggunian sa wika: git.agilaos.com

      Sanggunian sa wika: git.agilaos.com

      \ No newline at end of file diff --git a/tl/expanded-23-1/lesson-3/lesson.html b/tl/expanded-23-1/lesson-3/lesson.html new file mode 100644 index 0000000..54edad9 --- /dev/null +++ b/tl/expanded-23-1/lesson-3/lesson.html @@ -0,0 +1,6 @@ +Imodelo ang page translation

      Imodelo ang page translation

      15-minutong sesyon: magbasa nang 3 minuto, mag-trace nang 3, mag-eksperimento nang 7, at sagutan ang check nang 2. Maglaan ng dagdag na oras kung kailangan.

      Maaaring hatiin ang virtual address sa page number at offset. Gumagamit ang modelo ng 4096-byte page at dictionary mula virtual page patungo sa physical frame. May permission din ang tunay na page table at pinamamahalaan ito ng architecture-specific hardware at kernel. Modelo ito, hindi access sa physical memory.

      Pagsasanay at ebidensiya: Hulaan ang output, alisin ang mapping 2, at hawakan ang nawawalang page. Magdagdag ng read/write permission at test na tumatanggi sa write.

      page_size=4096
      +table={2:7}
      +address=2*page_size+13
      +page,offset=divmod(address,page_size)
      +print(table[page]*page_size+offset)
      +

      Inaasahang resulta: 28685

      Pagsasanay at ebidensiya

      Itala ang hula, aktuwal na resulta, at dahilan ng pagtugma o pagkakaiba. Sinusukat ng completion check ang pag-unawa; hinahasa ng practice task ang kasanayan.

      Sanggunian sa wika: git.agilaos.com

      Sanggunian sa wika: git.agilaos.com

      \ No newline at end of file diff --git a/tl/expanded-23-1/lesson-3/main.py b/tl/expanded-23-1/lesson-3/main.py new file mode 100644 index 0000000..935c7a2 --- /dev/null +++ b/tl/expanded-23-1/lesson-3/main.py @@ -0,0 +1,5 @@ +page_size=4096 +table={2:7} +address=2*page_size+13 +page,offset=divmod(address,page_size) +print(table[page]*page_size+offset) diff --git a/tl/expanded-23-2/README.md b/tl/expanded-23-2/README.md new file mode 100644 index 0000000..cab033d --- /dev/null +++ b/tl/expanded-23-2/README.md @@ -0,0 +1,9 @@ +# Bumuo ng Open Agila OS · 2 + +[Agila University track](https://edu.agilaos.com/track.php?track=23&lang=tl) + +Mga 15 minuto bawat aralin. Hulaan, patakbuhin, baguhin, ipaliwanag, at sagutan ang pagsusulit sa University. + +- [Lesson 1: Scheduler na may nasusuring ayos](lesson-1/lesson.html) +- [Lesson 2: Interrupt at hangganan ng driver](lesson-2/lesson.html) +- [Lesson 3: Mula host prototype tungo sa bootable system](lesson-3/lesson.html) diff --git a/tl/expanded-23-2/lesson-1/lesson.html b/tl/expanded-23-2/lesson-1/lesson.html new file mode 100644 index 0000000..2c0e22c --- /dev/null +++ b/tl/expanded-23-2/lesson-1/lesson.html @@ -0,0 +1,9 @@ +Scheduler na may nasusuring ayos

      Scheduler na may nasusuring ayos

      15-minutong sesyon: magbasa nang 3 minuto, mag-trace nang 3, mag-eksperimento nang 7, at sagutan ang check nang 2. Maglaan ng dagdag na oras kung kailangan.

      Pumipili ang scheduler kung aling runnable task ang magkakaroon ng turn. Imodelo ang round-robin gamit ang queue. Bawat task ay kumokonsumo ng isang unit bago bumalik kung may natitira. Walang interrupt, context switch, o tunay na parallel execution sa modelong ito.

      Pagsasanay at ebidensiya: Sundan ang A=2 at B=1, magdagdag ng empty task, at itakda kung dapat itong pumasok sa runnable queue. Subukan ang fairness sa execution order.

      from collections import deque
      +ready=deque([("A",2),("B",1)])
      +order=[]
      +while ready:
      +    name,left=ready.popleft()
      +    order.append(name)
      +    if left>1: ready.append((name,left-1))
      +print(" ".join(order))
      +

      Inaasahang resulta: A B A

      Pagsasanay at ebidensiya

      Itala ang hula, aktuwal na resulta, at dahilan ng pagtugma o pagkakaiba. Sinusukat ng completion check ang pag-unawa; hinahasa ng practice task ang kasanayan.

      Sanggunian sa wika: git.agilaos.com

      Sanggunian sa wika: git.agilaos.com

      \ No newline at end of file diff --git a/tl/expanded-23-2/lesson-1/main.py b/tl/expanded-23-2/lesson-1/main.py new file mode 100644 index 0000000..b66a647 --- /dev/null +++ b/tl/expanded-23-2/lesson-1/main.py @@ -0,0 +1,8 @@ +from collections import deque +ready=deque([("A",2),("B",1)]) +order=[] +while ready: + name,left=ready.popleft() + order.append(name) + if left>1: ready.append((name,left-1)) +print(" ".join(order)) diff --git a/tl/expanded-23-2/lesson-2/lesson.html b/tl/expanded-23-2/lesson-2/lesson.html new file mode 100644 index 0000000..5804319 --- /dev/null +++ b/tl/expanded-23-2/lesson-2/lesson.html @@ -0,0 +1 @@ +Interrupt at hangganan ng driver

      Interrupt at hangganan ng driver

      15-minutong sesyon: magbasa nang 3 minuto, mag-trace nang 3, mag-eksperimento nang 7, at sagutan ang check nang 2. Maglaan ng dagdag na oras kung kailangan.

      Dumadaan sa architecture-specific entry code ang hardware interrupt. Hindi hardware interrupt ang host callback. Nagva-validate ng device state, namamahala ng buffer, at sumusunod sa ordering rule ang driver. Magsimula sa fake device upang subukan ang invalid length at timeout nang walang arbitraryong hardware write.

      Pagsasanay at ebidensiya: Magdisenyo ng read(buffer,length) contract na may success, invalid argument, at timeout. Sumulat ng test sa bawat resulta bago pumili ng emulator at documented device.

      Pagsasanay at ebidensiya

      Itala ang hula, aktuwal na resulta, at dahilan ng pagtugma o pagkakaiba. Sinusukat ng completion check ang pag-unawa; hinahasa ng practice task ang kasanayan.

      Sanggunian sa wika: git.agilaos.com

      Sanggunian sa wika: git.agilaos.com

      \ No newline at end of file diff --git a/tl/expanded-23-2/lesson-3/lesson.html b/tl/expanded-23-2/lesson-3/lesson.html new file mode 100644 index 0000000..aa1b2ad --- /dev/null +++ b/tl/expanded-23-2/lesson-3/lesson.html @@ -0,0 +1 @@ +Mula host prototype tungo sa bootable system

      Mula host prototype tungo sa bootable system

      15-minutong sesyon: magbasa nang 3 minuto, mag-trace nang 3, mag-eksperimento nang 7, at sagutan ang check nang 2. Maglaan ng dagdag na oras kung kailangan.

      Kailangan ng bootable kernel ng target, boot protocol, linker layout, freestanding runtime, exception entry, memory management, at driver. Hindi pa kumpleto ang mga ito sa repository. Pumili ng maliit na ambag: palitan ang stub ng tested host model, magdagdag ng boundary test, o magdokumento ng interface. Dapat mag-boot sa emulator ang susunod na milestone at patunayan ang subsystem sa obserbasyon.

      Pagsasanay at ebidensiya: Gumawa ng Forge branch, i-commit ang pagbabago at test evidence, at magbukas ng pull request. Ihiwalay sa ulat ang host test at boot test. Itinatala ng certificate ang lesson checks; hindi nito sinasabing tapos na ang production OS.

      Pagsasanay at ebidensiya

      Itala ang hula, aktuwal na resulta, at dahilan ng pagtugma o pagkakaiba. Sinusukat ng completion check ang pag-unawa; hinahasa ng practice task ang kasanayan.

      Sanggunian sa wika: git.agilaos.com

      Sanggunian sa wika: git.agilaos.com

      \ No newline at end of file diff --git a/tl/expanded-24-1/README.md b/tl/expanded-24-1/README.md new file mode 100644 index 0000000..e971907 --- /dev/null +++ b/tl/expanded-24-1/README.md @@ -0,0 +1,9 @@ +# Server OS Engineering · 1 + +[Agila University track](https://edu.agilaos.com/track.php?track=24&lang=tl) + +Mga 15 minuto bawat aralin. Hulaan, patakbuhin, baguhin, ipaliwanag, at sagutan ang pagsusulit sa University. + +- [Lesson 1: Ano ang bumubuo sa server OS?](lesson-1/lesson.html) +- [Lesson 2: State at recovery ng service](lesson-2/lesson.html) +- [Lesson 3: Account at least privilege](lesson-3/lesson.html) diff --git a/tl/expanded-24-1/lesson-1/lesson.html b/tl/expanded-24-1/lesson-1/lesson.html new file mode 100644 index 0000000..4b8995c --- /dev/null +++ b/tl/expanded-24-1/lesson-1/lesson.html @@ -0,0 +1 @@ +Ano ang bumubuo sa server OS?

      Ano ang bumubuo sa server OS?

      15-minutong sesyon: magbasa nang 3 minuto, mag-trace nang 3, mag-eksperimento nang 7, at sagutan ang check nang 2. Maglaan ng dagdag na oras kung kailangan.

      Pinagsasama ng server OS ang kernel, boot at service management, storage, networking, account, update, at recovery. Iba ang pagbuo ng server distribution sa pagsulat ng bagong kernel. Piliin ang layunin. Iguhit ang request mula network interface sa service at storage; markahan ang trust boundary.

      Pagsasanay at ebidensiya: Hulaan ang halimbawa o iguhit ang pagbabago ng state. Baguhin ang isang palagay, subukan ang hangganan, at itala ang aktuwal na resulta. Ipaliwanag kung ano ang hindi napapatunayan ng maliit na modelo tungkol sa production system.

      Pagsasanay at ebidensiya

      Itala ang hula, aktuwal na resulta, at dahilan ng pagtugma o pagkakaiba. Sinusukat ng completion check ang pag-unawa; hinahasa ng practice task ang kasanayan.

      \ No newline at end of file diff --git a/tl/expanded-24-1/lesson-2/lesson.html b/tl/expanded-24-1/lesson-2/lesson.html new file mode 100644 index 0000000..32ad451 --- /dev/null +++ b/tl/expanded-24-1/lesson-2/lesson.html @@ -0,0 +1,3 @@ +State at recovery ng service

      State at recovery ng service

      15-minutong sesyon: magbasa nang 3 minuto, mag-trace nang 3, mag-eksperimento nang 7, at sagutan ang check nang 2. Maglaan ng dagdag na oras kung kailangan.

      Maaaring stopped, starting, ready, failed, o restarting ang service. Ang readiness ay kakayahang gawin ang trabaho, hindi pagkakaroon lang ng PID. Kailangan ng backoff at limit ang restart upang maiwasan ang endless crash loop. Imodelo ang startup failure at pagdating ng dependency.

      Pagsasanay at ebidensiya: Hulaan ang halimbawa o iguhit ang pagbabago ng state. Baguhin ang isang palagay, subukan ang hangganan, at itala ang aktuwal na resulta. Ipaliwanag kung ano ang hindi napapatunayan ng maliit na modelo tungkol sa production system.

      delays=[min(2**attempt,30) for attempt in range(6)]
      +print(delays)
      +

      Inaasahang resulta: [1, 2, 4, 8, 16, 30]

      Pagsasanay at ebidensiya

      Itala ang hula, aktuwal na resulta, at dahilan ng pagtugma o pagkakaiba. Sinusukat ng completion check ang pag-unawa; hinahasa ng practice task ang kasanayan.

      \ No newline at end of file diff --git a/tl/expanded-24-1/lesson-2/main.py b/tl/expanded-24-1/lesson-2/main.py new file mode 100644 index 0000000..42bd164 --- /dev/null +++ b/tl/expanded-24-1/lesson-2/main.py @@ -0,0 +1,2 @@ +delays=[min(2**attempt,30) for attempt in range(6)] +print(delays) diff --git a/tl/expanded-24-1/lesson-3/lesson.html b/tl/expanded-24-1/lesson-3/lesson.html new file mode 100644 index 0000000..0b107e8 --- /dev/null +++ b/tl/expanded-24-1/lesson-3/lesson.html @@ -0,0 +1,6 @@ +Account at least privilege

      Account at least privilege

      15-minutong sesyon: magbasa nang 3 minuto, mag-trace nang 3, mag-eksperimento nang 7, at sagutan ang check nang 2. Maglaan ng dagdag na oras kung kailangan.

      Ibigay lang sa service ang file at capability na kailangan. Ihiwalay ang admin sa application identity. Tinutukoy ng authentication kung sino ang caller; ng authorization kung ano ang pinapayagan. Subukan ang estudyanteng bumabasa ng record ng iba. Hindi access-control check ang hidden button.

      Pagsasanay at ebidensiya: Hulaan ang halimbawa o iguhit ang pagbabago ng state. Baguhin ang isang palagay, subukan ang hangganan, at itala ang aktuwal na resulta. Ipaliwanag kung ano ang hindi napapatunayan ng maliit na modelo tungkol sa production system.

      def can_read(caller,owner):
      +    return caller==owner
      +assert can_read(7,7)
      +assert not can_read(7,8)
      +print("Passed")
      +

      Inaasahang resulta: Passed

      Pagsasanay at ebidensiya

      Itala ang hula, aktuwal na resulta, at dahilan ng pagtugma o pagkakaiba. Sinusukat ng completion check ang pag-unawa; hinahasa ng practice task ang kasanayan.

      \ No newline at end of file diff --git a/tl/expanded-24-1/lesson-3/main.py b/tl/expanded-24-1/lesson-3/main.py new file mode 100644 index 0000000..d9cd1f0 --- /dev/null +++ b/tl/expanded-24-1/lesson-3/main.py @@ -0,0 +1,5 @@ +def can_read(caller,owner): + return caller==owner +assert can_read(7,7) +assert not can_read(7,8) +print("Passed") diff --git a/tl/expanded-24-2/README.md b/tl/expanded-24-2/README.md new file mode 100644 index 0000000..825d734 --- /dev/null +++ b/tl/expanded-24-2/README.md @@ -0,0 +1,9 @@ +# Server OS Engineering · 2 + +[Agila University track](https://edu.agilaos.com/track.php?track=24&lang=tl) + +Mga 15 minuto bawat aralin. Hulaan, patakbuhin, baguhin, ipaliwanag, at sagutan ang pagsusulit sa University. + +- [Lesson 1: Durable storage at restore test](lesson-1/lesson.html) +- [Lesson 2: Obserbahan ang latency, error, at capacity](lesson-2/lesson.html) +- [Lesson 3: Capstone para sa server system](lesson-3/lesson.html) diff --git a/tl/expanded-24-2/lesson-1/lesson.html b/tl/expanded-24-2/lesson-1/lesson.html new file mode 100644 index 0000000..2d4fcda --- /dev/null +++ b/tl/expanded-24-2/lesson-1/lesson.html @@ -0,0 +1,6 @@ +Durable storage at restore test

      Durable storage at restore test

      15-minutong sesyon: magbasa nang 3 minuto, mag-trace nang 3, mag-eksperimento nang 7, at sagutan ang check nang 2. Maglaan ng dagdag na oras kung kailangan.

      Kapaki-pakinabang lang ang backup kung naibabalik ang data at metadata. Planuhin ang consistent na database at repository snapshot. Nakakakita ng binagong byte ang checksum ngunit hindi patunay ng logical validity. Itakda ang recovery-point at recovery-time target. Magsanay ng isolated restore bago ang outage.

      Pagsasanay at ebidensiya: Hulaan ang halimbawa o iguhit ang pagbabago ng state. Baguhin ang isang palagay, subukan ang hangganan, at itala ang aktuwal na resulta. Ipaliwanag kung ano ang hindi napapatunayan ng maliit na modelo tungkol sa production system.

      import hashlib
      +original=b"study record v1"
      +restored=bytes(original)
      +assert hashlib.sha256(original).digest()==hashlib.sha256(restored).digest()
      +print("Bytes match; application checks still needed")
      +

      Inaasahang resulta: Bytes match; application checks still needed

      Pagsasanay at ebidensiya

      Itala ang hula, aktuwal na resulta, at dahilan ng pagtugma o pagkakaiba. Sinusukat ng completion check ang pag-unawa; hinahasa ng practice task ang kasanayan.

      \ No newline at end of file diff --git a/tl/expanded-24-2/lesson-1/main.py b/tl/expanded-24-2/lesson-1/main.py new file mode 100644 index 0000000..b13abc7 --- /dev/null +++ b/tl/expanded-24-2/lesson-1/main.py @@ -0,0 +1,5 @@ +import hashlib +original=b"study record v1" +restored=bytes(original) +assert hashlib.sha256(original).digest()==hashlib.sha256(restored).digest() +print("Bytes match; application checks still needed") diff --git a/tl/expanded-24-2/lesson-2/lesson.html b/tl/expanded-24-2/lesson-2/lesson.html new file mode 100644 index 0000000..dc009e3 --- /dev/null +++ b/tl/expanded-24-2/lesson-2/lesson.html @@ -0,0 +1,6 @@ +Obserbahan ang latency, error, at capacity

      Obserbahan ang latency, error, at capacity

      15-minutong sesyon: magbasa nang 3 minuto, mag-trace nang 3, mag-eksperimento nang 7, at sagutan ang check nang 2. Maglaan ng dagdag na oras kung kailangan.

      Naitatago ng average ang mabagal na request. Itala ang latency distribution, error count, resource use, at measurement window. Huwag mag-log ng password o private payload. Median ng fixed demonstration data ang sample, hindi sukat ng server. Palitan ng bounded local experiment at lagyan ng environment label.

      Pagsasanay at ebidensiya: Hulaan ang halimbawa o iguhit ang pagbabago ng state. Baguhin ang isang palagay, subukan ang hangganan, at itala ang aktuwal na resulta. Ipaliwanag kung ano ang hindi napapatunayan ng maliit na modelo tungkol sa production system.

      from statistics import median
      +samples_ms=[2,3,3,4,40]
      +print(median(samples_ms))
      +print(max(samples_ms))
      +

      Inaasahang resulta: 3 +40

      Pagsasanay at ebidensiya

      Itala ang hula, aktuwal na resulta, at dahilan ng pagtugma o pagkakaiba. Sinusukat ng completion check ang pag-unawa; hinahasa ng practice task ang kasanayan.

      \ No newline at end of file diff --git a/tl/expanded-24-2/lesson-2/main.py b/tl/expanded-24-2/lesson-2/main.py new file mode 100644 index 0000000..d7d32f9 --- /dev/null +++ b/tl/expanded-24-2/lesson-2/main.py @@ -0,0 +1,4 @@ +from statistics import median +samples_ms=[2,3,3,4,40] +print(median(samples_ms)) +print(max(samples_ms)) diff --git a/tl/expanded-24-2/lesson-3/lesson.html b/tl/expanded-24-2/lesson-3/lesson.html new file mode 100644 index 0000000..77ea791 --- /dev/null +++ b/tl/expanded-24-2/lesson-3/lesson.html @@ -0,0 +1 @@ +Capstone para sa server system

      Capstone para sa server system

      15-minutong sesyon: magbasa nang 3 minuto, mag-trace nang 3, mag-eksperimento nang 7, at sagutan ang check nang 2. Maglaan ng dagdag na oras kung kailangan.

      Magdisenyo ng reproducible server image sa disposable VM: base, service user, firewall, HTTPS, update policy, backup, health check, at restore drill. Itala ang clean install at controlled failure. Para sa Agila-native server, ilista ang kulang na kernel at driver sa halip na tawaging bagong OS ang host app. I-publish ang source at redacted evidence sa Forge.

      Pagsasanay at ebidensiya: Hulaan ang halimbawa o iguhit ang pagbabago ng state. Baguhin ang isang palagay, subukan ang hangganan, at itala ang aktuwal na resulta. Ipaliwanag kung ano ang hindi napapatunayan ng maliit na modelo tungkol sa production system.

      Pagsasanay at ebidensiya

      Itala ang hula, aktuwal na resulta, at dahilan ng pagtugma o pagkakaiba. Sinusukat ng completion check ang pag-unawa; hinahasa ng practice task ang kasanayan.

      \ No newline at end of file diff --git a/tl/expanded-25-1/README.md b/tl/expanded-25-1/README.md new file mode 100644 index 0000000..35958a8 --- /dev/null +++ b/tl/expanded-25-1/README.md @@ -0,0 +1,9 @@ +# AI Runtime Engineering · 1 + +[Agila University track](https://edu.agilaos.com/track.php?track=25&lang=tl) + +Mga 15 minuto bawat aralin. Hulaan, patakbuhin, baguhin, ipaliwanag, at sagutan ang pagsusulit sa University. + +- [Lesson 1: Ano ang ginagawa ng AI runtime](lesson-1/lesson.html) +- [Lesson 2: Shape bago matrix multiplication](lesson-2/lesson.html) +- [Lesson 3: Numerical tolerance at reference](lesson-3/lesson.html) diff --git a/tl/expanded-25-1/lesson-1/lesson.html b/tl/expanded-25-1/lesson-1/lesson.html new file mode 100644 index 0000000..5e7dbb7 --- /dev/null +++ b/tl/expanded-25-1/lesson-1/lesson.html @@ -0,0 +1,6 @@ +Ano ang ginagawa ng AI runtime

      Ano ang ginagawa ng AI runtime

      15-minutong sesyon: magbasa nang 3 minuto, mag-trace nang 3, mag-eksperimento nang 7, at sagutan ang check nang 2. Maglaan ng dagdag na oras kung kailangan.

      Inilalarawan ng model ang parameter at operation. Nilo-load at vina-validate ng runtime ang shape at type, nag-a-allocate ng memory, nagsi-schedule, at nag-e-execute ng kernel. Magkaiba ang training at inference. Magsimula sa maliit na deterministic calculation na masusuri sa kamay bago acceleration.

      Pagsasanay at ebidensiya: Hulaan ang halimbawa o iguhit ang pagbabago ng state. Baguhin ang isang palagay, subukan ang hangganan, at itala ang aktuwal na resulta. Ipaliwanag kung ano ang hindi napapatunayan ng maliit na modelo tungkol sa production system.

      x=[2.0,3.0]
      +w=[0.5,2.0]
      +bias=1.0
      +y=sum(a*b for a,b in zip(x,w))+bias
      +print(y)
      +

      Inaasahang resulta: 8.0

      Pagsasanay at ebidensiya

      Itala ang hula, aktuwal na resulta, at dahilan ng pagtugma o pagkakaiba. Sinusukat ng completion check ang pag-unawa; hinahasa ng practice task ang kasanayan.

      Sanggunian sa wika: git.agilaos.com

      Sanggunian sa wika: onnx.ai

      \ No newline at end of file diff --git a/tl/expanded-25-1/lesson-1/main.py b/tl/expanded-25-1/lesson-1/main.py new file mode 100644 index 0000000..0a5b911 --- /dev/null +++ b/tl/expanded-25-1/lesson-1/main.py @@ -0,0 +1,5 @@ +x=[2.0,3.0] +w=[0.5,2.0] +bias=1.0 +y=sum(a*b for a,b in zip(x,w))+bias +print(y) diff --git a/tl/expanded-25-1/lesson-2/lesson.html b/tl/expanded-25-1/lesson-2/lesson.html new file mode 100644 index 0000000..d859ee3 --- /dev/null +++ b/tl/expanded-25-1/lesson-2/lesson.html @@ -0,0 +1,6 @@ +Shape bago matrix multiplication

      Shape bago matrix multiplication

      15-minutong sesyon: magbasa nang 3 minuto, mag-trace nang 3, mag-eksperimento nang 7, at sagutan ang check nang 2. Maglaan ng dagdag na oras kung kailangan.

      Kung m×k ang A at k×n ang B, m×n ang resulta. Dapat magtugma ang inner dimension. Suriin ang empty at ragged input bago indexing. May error na napipigilan ng shape check ngunit hindi nito pinatutunayang tama ang kahulugan ng weight. CPU reference ang halimbawa, hindi trained language model.

      Pagsasanay at ebidensiya: Hulaan ang halimbawa o iguhit ang pagbabago ng state. Baguhin ang isang palagay, subukan ang hangganan, at itala ang aktuwal na resulta. Ipaliwanag kung ano ang hindi napapatunayan ng maliit na modelo tungkol sa production system.

      a=[[1,2],[3,4]]
      +b=[[5],[6]]
      +assert all(len(row)==len(b) for row in a)
      +out=[[sum(a[i][k]*b[k][j] for k in range(len(b))) for j in range(len(b[0]))] for i in range(len(a))]
      +print(out)
      +

      Inaasahang resulta: [[17], [39]]

      Pagsasanay at ebidensiya

      Itala ang hula, aktuwal na resulta, at dahilan ng pagtugma o pagkakaiba. Sinusukat ng completion check ang pag-unawa; hinahasa ng practice task ang kasanayan.

      Sanggunian sa wika: git.agilaos.com

      Sanggunian sa wika: onnx.ai

      \ No newline at end of file diff --git a/tl/expanded-25-1/lesson-2/main.py b/tl/expanded-25-1/lesson-2/main.py new file mode 100644 index 0000000..f550200 --- /dev/null +++ b/tl/expanded-25-1/lesson-2/main.py @@ -0,0 +1,5 @@ +a=[[1,2],[3,4]] +b=[[5],[6]] +assert all(len(row)==len(b) for row in a) +out=[[sum(a[i][k]*b[k][j] for k in range(len(b))) for j in range(len(b[0]))] for i in range(len(a))] +print(out) diff --git a/tl/expanded-25-1/lesson-3/lesson.html b/tl/expanded-25-1/lesson-3/lesson.html new file mode 100644 index 0000000..251d0c6 --- /dev/null +++ b/tl/expanded-25-1/lesson-3/lesson.html @@ -0,0 +1,4 @@ +Numerical tolerance at reference

      Numerical tolerance at reference

      15-minutong sesyon: magbasa nang 3 minuto, mag-trace nang 3, mag-eksperimento nang 7, at sagutan ang check nang 2. Maglaan ng dagdag na oras kung kailangan.

      Maaaring magkaiba nang kaunti ang floating-point result kapag naiba ang ayos. Ihambing sa trusted reference gamit ang documented absolute at relative tolerance; tanggihan ang hindi inaasahang NaN. Huwag lakihan lang ang tolerance para pumasa. Subukan ang zero, negative, malaking magnitude, at normal range.

      Pagsasanay at ebidensiya: Hulaan ang halimbawa o iguhit ang pagbabago ng state. Baguhin ang isang palagay, subukan ang hangganan, at itala ang aktuwal na resulta. Ipaliwanag kung ano ang hindi napapatunayan ng maliit na modelo tungkol sa production system.

      import math
      +actual=0.1+0.2
      +print(math.isclose(actual,0.3,rel_tol=1e-9,abs_tol=1e-12))
      +

      Inaasahang resulta: True

      Pagsasanay at ebidensiya

      Itala ang hula, aktuwal na resulta, at dahilan ng pagtugma o pagkakaiba. Sinusukat ng completion check ang pag-unawa; hinahasa ng practice task ang kasanayan.

      Sanggunian sa wika: git.agilaos.com

      Sanggunian sa wika: onnx.ai

      \ No newline at end of file diff --git a/tl/expanded-25-1/lesson-3/main.py b/tl/expanded-25-1/lesson-3/main.py new file mode 100644 index 0000000..2476d49 --- /dev/null +++ b/tl/expanded-25-1/lesson-3/main.py @@ -0,0 +1,3 @@ +import math +actual=0.1+0.2 +print(math.isclose(actual,0.3,rel_tol=1e-9,abs_tol=1e-12)) diff --git a/tl/expanded-25-2/README.md b/tl/expanded-25-2/README.md new file mode 100644 index 0000000..9886cd6 --- /dev/null +++ b/tl/expanded-25-2/README.md @@ -0,0 +1,9 @@ +# AI Runtime Engineering · 2 + +[Agila University track](https://edu.agilaos.com/track.php?track=25&lang=tl) + +Mga 15 minuto bawat aralin. Hulaan, patakbuhin, baguhin, ipaliwanag, at sagutan ang pagsusulit sa University. + +- [Lesson 1: Planuhin ang memory lifetime](lesson-1/lesson.html) +- [Lesson 2: May error budget ang quantization](lesson-2/lesson.html) +- [Lesson 3: Runtime capstone na kayang ipaliwanag](lesson-3/lesson.html) diff --git a/tl/expanded-25-2/lesson-1/lesson.html b/tl/expanded-25-2/lesson-1/lesson.html new file mode 100644 index 0000000..972b46f --- /dev/null +++ b/tl/expanded-25-2/lesson-1/lesson.html @@ -0,0 +1,4 @@ +Planuhin ang memory lifetime

      Planuhin ang memory lifetime

      15-minutong sesyon: magbasa nang 3 minuto, mag-trace nang 3, mag-eksperimento nang 7, at sagutan ang check nang 2. Maglaan ng dagdag na oras kung kailangan.

      May creation at last-use point ang value sa execution graph. Gamitin muli ang buffer kapag hindi na kailangan ang dating value at walang asynchronous operation na gumagamit nito. Ihiwalay ang accounting ng weight, activation, workspace, at cache. Kalkulahin ang element count times bytes per element; idagdag ang alignment at overhead sa tunay na implementation.

      Pagsasanay at ebidensiya: Hulaan ang halimbawa o iguhit ang pagbabago ng state. Baguhin ang isang palagay, subukan ang hangganan, at itala ang aktuwal na resulta. Ipaliwanag kung ano ang hindi napapatunayan ng maliit na modelo tungkol sa production system.

      shape=(4,8)
      +bytes_per_element=4
      +print(shape[0]*shape[1]*bytes_per_element)
      +

      Inaasahang resulta: 128

      Pagsasanay at ebidensiya

      Itala ang hula, aktuwal na resulta, at dahilan ng pagtugma o pagkakaiba. Sinusukat ng completion check ang pag-unawa; hinahasa ng practice task ang kasanayan.

      Sanggunian sa wika: git.agilaos.com

      Sanggunian sa wika: onnx.ai

      \ No newline at end of file diff --git a/tl/expanded-25-2/lesson-1/main.py b/tl/expanded-25-2/lesson-1/main.py new file mode 100644 index 0000000..31684b3 --- /dev/null +++ b/tl/expanded-25-2/lesson-1/main.py @@ -0,0 +1,3 @@ +shape=(4,8) +bytes_per_element=4 +print(shape[0]*shape[1]*bytes_per_element) diff --git a/tl/expanded-25-2/lesson-2/lesson.html b/tl/expanded-25-2/lesson-2/lesson.html new file mode 100644 index 0000000..8a61208 --- /dev/null +++ b/tl/expanded-25-2/lesson-2/lesson.html @@ -0,0 +1,8 @@ +May error budget ang quantization

      May error budget ang quantization

      15-minutong sesyon: magbasa nang 3 minuto, mag-trace nang 3, mag-eksperimento nang 7, at sagutan ang check nang 2. Maglaan ng dagdag na oras kung kailangan.

      Hinahati ng simpleng symmetric quantizer sa scale, niro-round, at nililimitahan sa integer range. Minumultiply ng dequantization sa scale. May nawawalang impormasyon sa clipping at rounding. Sukatin ang numerical error at task accuracy bago tanggapin ang mas maliit na representation. Hindi lahat ng production format ang implemented ng scalar exercise.

      Pagsasanay at ebidensiya: Hulaan ang halimbawa o iguhit ang pagbabago ng state. Baguhin ang isang palagay, subukan ang hangganan, at itala ang aktuwal na resulta. Ipaliwanag kung ano ang hindi napapatunayan ng maliit na modelo tungkol sa production system.

      value=0.36
      +scale=0.1
      +q=max(-127,min(127,round(value/scale)))
      +restored=q*scale
      +print(q)
      +print(round(abs(value-restored),3))
      +

      Inaasahang resulta: 4 +0.04

      Pagsasanay at ebidensiya

      Itala ang hula, aktuwal na resulta, at dahilan ng pagtugma o pagkakaiba. Sinusukat ng completion check ang pag-unawa; hinahasa ng practice task ang kasanayan.

      Sanggunian sa wika: git.agilaos.com

      Sanggunian sa wika: onnx.ai

      \ No newline at end of file diff --git a/tl/expanded-25-2/lesson-2/main.py b/tl/expanded-25-2/lesson-2/main.py new file mode 100644 index 0000000..6800f3e --- /dev/null +++ b/tl/expanded-25-2/lesson-2/main.py @@ -0,0 +1,6 @@ +value=0.36 +scale=0.1 +q=max(-127,min(127,round(value/scale))) +restored=q*scale +print(q) +print(round(abs(value-restored),3)) diff --git a/tl/expanded-25-2/lesson-3/lesson.html b/tl/expanded-25-2/lesson-3/lesson.html new file mode 100644 index 0000000..5a66b3a --- /dev/null +++ b/tl/expanded-25-2/lesson-3/lesson.html @@ -0,0 +1 @@ +Runtime capstone na kayang ipaliwanag

      Runtime capstone na kayang ipaliwanag

      15-minutong sesyon: magbasa nang 3 minuto, mag-trace nang 3, mag-eksperimento nang 7, at sagutan ang check nang 2. Maglaan ng dagdag na oras kung kailangan.

      Bumuo ng maliit na graph executor na may input, matrix multiplication, bias, at activation. I-validate ang shape, panatilihin ang CPU reference, planuhin ang buffer lifetime, at i-benchmark nang hiwalay ang warm at cold run. CPU reference backend pa ang AGX Open; hindi patunay ng GPU execution ang pag-request ng GPU. Magdagdag lang ng backend kapag napatunayang gamit ito ng detection at correctness check.

      Pagsasanay at ebidensiya: Hulaan ang halimbawa o iguhit ang pagbabago ng state. Baguhin ang isang palagay, subukan ang hangganan, at itala ang aktuwal na resulta. Ipaliwanag kung ano ang hindi napapatunayan ng maliit na modelo tungkol sa production system.

      Pagsasanay at ebidensiya

      Itala ang hula, aktuwal na resulta, at dahilan ng pagtugma o pagkakaiba. Sinusukat ng completion check ang pag-unawa; hinahasa ng practice task ang kasanayan.

      Sanggunian sa wika: git.agilaos.com

      Sanggunian sa wika: onnx.ai

      \ No newline at end of file diff --git a/tl/expanded-26-1/README.md b/tl/expanded-26-1/README.md new file mode 100644 index 0000000..166fbda --- /dev/null +++ b/tl/expanded-26-1/README.md @@ -0,0 +1,9 @@ +# Algorithm at Data Structure · 1 + +[Agila University track](https://edu.agilaos.com/track.php?track=26&lang=tl) + +Mga 15 minuto bawat aralin. Hulaan, patakbuhin, baguhin, ipaliwanag, at sagutan ang pagsusulit sa University. + +- [Lesson 1: Bilangin ang gawain sa paghahanap](lesson-1/lesson.html) +- [Lesson 2: Gumamit ng queue kung mahalaga ang ayos](lesson-2/lesson.html) +- [Lesson 3: Kailangan ng invariant ang binary search](lesson-3/lesson.html) diff --git a/tl/expanded-26-1/lesson-1/lesson.html b/tl/expanded-26-1/lesson-1/lesson.html new file mode 100644 index 0000000..7362db8 --- /dev/null +++ b/tl/expanded-26-1/lesson-1/lesson.html @@ -0,0 +1,7 @@ +Bilangin ang gawain sa paghahanap

      Bilangin ang gawain sa paghahanap

      15-minutong sesyon: magbasa nang 3 minuto, mag-trace nang 3, mag-eksperimento nang 7, at sagutan ang check nang 2. Maglaan ng dagdag na oras kung kailangan.

      Maaaring suriin ng linear search ang bawat element. Bilangin ang comparison sa una, huling match, at missing value. Growth ang Big-O, hindi aktuwal na oras sa machine. Ihambing ang size 10, 100, at 1000 bago pumili ng structure.

      Pagsasanay at ebidensiya: Hulaan ang halimbawa o iguhit ang pagbabago ng state. Baguhin ang isang palagay, subukan ang hangganan, at itala ang aktuwal na resulta. Ipaliwanag kung ano ang hindi napapatunayan ng maliit na modelo tungkol sa production system.

      items=list(range(10))
      +checks=0
      +for value in items:
      +    checks+=1
      +    if value==9:break
      +print(checks)
      +

      Inaasahang resulta: 10

      Pagsasanay at ebidensiya

      Itala ang hula, aktuwal na resulta, at dahilan ng pagtugma o pagkakaiba. Sinusukat ng completion check ang pag-unawa; hinahasa ng practice task ang kasanayan.

      \ No newline at end of file diff --git a/tl/expanded-26-1/lesson-1/main.py b/tl/expanded-26-1/lesson-1/main.py new file mode 100644 index 0000000..01cbdd4 --- /dev/null +++ b/tl/expanded-26-1/lesson-1/main.py @@ -0,0 +1,6 @@ +items=list(range(10)) +checks=0 +for value in items: + checks+=1 + if value==9:break +print(checks) diff --git a/tl/expanded-26-1/lesson-2/lesson.html b/tl/expanded-26-1/lesson-2/lesson.html new file mode 100644 index 0000000..d69f2ce --- /dev/null +++ b/tl/expanded-26-1/lesson-2/lesson.html @@ -0,0 +1,7 @@ +Gumamit ng queue kung mahalaga ang ayos

      Gumamit ng queue kung mahalaga ang ayos

      15-minutong sesyon: magbasa nang 3 minuto, mag-trace nang 3, mag-eksperimento nang 7, at sagutan ang check nang 2. Maglaan ng dagdag na oras kung kailangan.

      Pinakaunang item ang inaalis ng FIFO. Gumamit ng deque sa work queue sa halip na paulit-ulit na alisin ang index zero sa mahabang list. Itakda ang capacity at gagawin kapag puno. Subukan ang empty, one-item, at full; kailangan pa rin ng tamang policy ang efficient structure.

      Pagsasanay at ebidensiya: Hulaan ang halimbawa o iguhit ang pagbabago ng state. Baguhin ang isang palagay, subukan ang hangganan, at itala ang aktuwal na resulta. Ipaliwanag kung ano ang hindi napapatunayan ng maliit na modelo tungkol sa production system.

      from collections import deque
      +queue=deque(["A","B"])
      +print(queue.popleft())
      +queue.append("C")
      +print(list(queue))
      +

      Inaasahang resulta: A +['B', 'C']

      Pagsasanay at ebidensiya

      Itala ang hula, aktuwal na resulta, at dahilan ng pagtugma o pagkakaiba. Sinusukat ng completion check ang pag-unawa; hinahasa ng practice task ang kasanayan.

      \ No newline at end of file diff --git a/tl/expanded-26-1/lesson-2/main.py b/tl/expanded-26-1/lesson-2/main.py new file mode 100644 index 0000000..5a90bd2 --- /dev/null +++ b/tl/expanded-26-1/lesson-2/main.py @@ -0,0 +1,5 @@ +from collections import deque +queue=deque(["A","B"]) +print(queue.popleft()) +queue.append("C") +print(list(queue)) diff --git a/tl/expanded-26-1/lesson-3/lesson.html b/tl/expanded-26-1/lesson-3/lesson.html new file mode 100644 index 0000000..5fc6a4f --- /dev/null +++ b/tl/expanded-26-1/lesson-3/lesson.html @@ -0,0 +1,8 @@ +Kailangan ng invariant ang binary search

      Kailangan ng invariant ang binary search

      15-minutong sesyon: magbasa nang 3 minuto, mag-trace nang 3, mag-eksperimento nang 7, at sagutan ang check nang 2. Maglaan ng dagdag na oras kung kailangan.

      Umaasa ang binary search sa sorted data at lumiliit na interval. Maaaring mali ang mabilis na loop sa unsorted data. Gumamit ng library, subukan ang insertion sa magkabilang dulo at existing value, at ipaliwanag ang invariant bago gumawa ng sarili.

      Pagsasanay at ebidensiya: Hulaan ang halimbawa o iguhit ang pagbabago ng state. Baguhin ang isang palagay, subukan ang hangganan, at itala ang aktuwal na resulta. Ipaliwanag kung ano ang hindi napapatunayan ng maliit na modelo tungkol sa production system.

      from bisect import bisect_left
      +values=[2,4,6]
      +print(bisect_left(values,1))
      +print(bisect_left(values,4))
      +print(bisect_left(values,8))
      +

      Inaasahang resulta: 0 +1 +3

      Pagsasanay at ebidensiya

      Itala ang hula, aktuwal na resulta, at dahilan ng pagtugma o pagkakaiba. Sinusukat ng completion check ang pag-unawa; hinahasa ng practice task ang kasanayan.

      \ No newline at end of file diff --git a/tl/expanded-26-1/lesson-3/main.py b/tl/expanded-26-1/lesson-3/main.py new file mode 100644 index 0000000..fac026e --- /dev/null +++ b/tl/expanded-26-1/lesson-3/main.py @@ -0,0 +1,5 @@ +from bisect import bisect_left +values=[2,4,6] +print(bisect_left(values,1)) +print(bisect_left(values,4)) +print(bisect_left(values,8)) diff --git a/tl/expanded-27-1/README.md b/tl/expanded-27-1/README.md new file mode 100644 index 0000000..b68ac32 --- /dev/null +++ b/tl/expanded-27-1/README.md @@ -0,0 +1,9 @@ +# Concurrency at Scheduling · 1 + +[Agila University track](https://edu.agilaos.com/track.php?track=27&lang=tl) + +Mga 15 minuto bawat aralin. Hulaan, patakbuhin, baguhin, ipaliwanag, at sagutan ang pagsusulit sa University. + +- [Lesson 1: Maaaring mawala ang update sa interleaving](lesson-1/lesson.html) +- [Lesson 2: Saklaw at ownership ng lock](lesson-2/lesson.html) +- [Lesson 3: Bounded queue at backpressure](lesson-3/lesson.html) diff --git a/tl/expanded-27-1/lesson-1/lesson.html b/tl/expanded-27-1/lesson-1/lesson.html new file mode 100644 index 0000000..8c48dea --- /dev/null +++ b/tl/expanded-27-1/lesson-1/lesson.html @@ -0,0 +1,7 @@ +Maaaring mawala ang update sa interleaving

      Maaaring mawala ang update sa interleaving

      15-minutong sesyon: magbasa nang 3 minuto, mag-trace nang 3, mag-eksperimento nang 7, at sagutan ang check nang 2. Maglaan ng dagdag na oras kung kailangan.

      Maaaring mabasa ng dalawang worker ang parehong counter bago magsulat. Parehong nagiging one ang kalkulasyon kaya one lang ang final imbes two. Deterministic na modelo ang halimbawa upang hindi umasa sa tsansang mangyari ang race. Tukuyin ang shared state at operation na dapat atomic o protected.

      Pagsasanay at ebidensiya: Hulaan ang halimbawa o iguhit ang pagbabago ng state. Baguhin ang isang palagay, subukan ang hangganan, at itala ang aktuwal na resulta. Ipaliwanag kung ano ang hindi napapatunayan ng maliit na modelo tungkol sa production system.

      counter=0
      +a=counter
      +b=counter
      +counter=a+1
      +counter=b+1
      +print(counter)
      +

      Inaasahang resulta: 1

      Pagsasanay at ebidensiya

      Itala ang hula, aktuwal na resulta, at dahilan ng pagtugma o pagkakaiba. Sinusukat ng completion check ang pag-unawa; hinahasa ng practice task ang kasanayan.

      \ No newline at end of file diff --git a/tl/expanded-27-1/lesson-1/main.py b/tl/expanded-27-1/lesson-1/main.py new file mode 100644 index 0000000..5118802 --- /dev/null +++ b/tl/expanded-27-1/lesson-1/main.py @@ -0,0 +1,6 @@ +counter=0 +a=counter +b=counter +counter=a+1 +counter=b+1 +print(counter) diff --git a/tl/expanded-27-1/lesson-2/lesson.html b/tl/expanded-27-1/lesson-2/lesson.html new file mode 100644 index 0000000..31b16fa --- /dev/null +++ b/tl/expanded-27-1/lesson-2/lesson.html @@ -0,0 +1 @@ +Saklaw at ownership ng lock

      Saklaw at ownership ng lock

      15-minutong sesyon: magbasa nang 3 minuto, mag-trace nang 3, mag-eksperimento nang 7, at sagutan ang check nang 2. Maglaan ng dagdag na oras kung kailangan.

      Napoprotektahan ng lock ang invariant kung pareho ang patakaran ng lahat ng access. Protektahan ang buong read-modify-write, hindi final assignment lang. Magtakda ng consistent lock order kapag marami. Maaaring tama ngunit mabagal ang global lock; sukatin bago hatiin.

      Pagsasanay at ebidensiya: Hulaan ang halimbawa o iguhit ang pagbabago ng state. Baguhin ang isang palagay, subukan ang hangganan, at itala ang aktuwal na resulta. Ipaliwanag kung ano ang hindi napapatunayan ng maliit na modelo tungkol sa production system.

      Pagsasanay at ebidensiya

      Itala ang hula, aktuwal na resulta, at dahilan ng pagtugma o pagkakaiba. Sinusukat ng completion check ang pag-unawa; hinahasa ng practice task ang kasanayan.

      \ No newline at end of file diff --git a/tl/expanded-27-1/lesson-3/lesson.html b/tl/expanded-27-1/lesson-3/lesson.html new file mode 100644 index 0000000..50a0f7a --- /dev/null +++ b/tl/expanded-27-1/lesson-3/lesson.html @@ -0,0 +1,8 @@ +Bounded queue at backpressure

      Bounded queue at backpressure

      15-minutong sesyon: magbasa nang 3 minuto, mag-trace nang 3, mag-eksperimento nang 7, at sagutan ang check nang 2. Maglaan ng dagdag na oras kung kailangan.

      Maaaring maubos ang memory sa unbounded producer kapag mabagal ang consumer. Pumili ng bounded queue at policy: wait, reject, o shed. Dapat magising ang blocked participant sa cancellation at shutdown. Imodelo ang capacity two at ipaliwanag ang ikatlong job at abiso sa caller.

      Pagsasanay at ebidensiya: Hulaan ang halimbawa o iguhit ang pagbabago ng state. Baguhin ang isang palagay, subukan ang hangganan, at itala ang aktuwal na resulta. Ipaliwanag kung ano ang hindi napapatunayan ng maliit na modelo tungkol sa production system.

      queue=[]
      +capacity=2
      +for job in ["A","B","C"]:
      +    if len(queue)<capacity:queue.append(job)
      +    else:print("Rejected",job)
      +print(queue)
      +

      Inaasahang resulta: Rejected C +['A', 'B']

      Pagsasanay at ebidensiya

      Itala ang hula, aktuwal na resulta, at dahilan ng pagtugma o pagkakaiba. Sinusukat ng completion check ang pag-unawa; hinahasa ng practice task ang kasanayan.

      \ No newline at end of file diff --git a/tl/expanded-27-1/lesson-3/main.py b/tl/expanded-27-1/lesson-3/main.py new file mode 100644 index 0000000..bd2e6b4 --- /dev/null +++ b/tl/expanded-27-1/lesson-3/main.py @@ -0,0 +1,6 @@ +queue=[] +capacity=2 +for job in ["A","B","C"]: + if len(queue)Mag-validate bago lumampas sa boundary

      Mag-validate bago lumampas sa boundary

      15-minutong sesyon: magbasa nang 3 minuto, mag-trace nang 3, mag-eksperimento nang 7, at sagutan ang check nang 2. Maglaan ng dagdag na oras kung kailangan.

      Ituring na untrusted ang external value. Itakda ang valid type, size, range, at structure bago gamitin. Tanggihan nang malinaw ang invalid sa halip na gawing ibang request. Subukan ang endpoints at katabing outside value. Kailangan pa rin ng authorization kahit valid ang value.

      Pagsasanay at ebidensiya: Hulaan ang halimbawa o iguhit ang pagbabago ng state. Baguhin ang isang palagay, subukan ang hangganan, at itala ang aktuwal na resulta. Ipaliwanag kung ano ang hindi napapatunayan ng maliit na modelo tungkol sa production system.

      def valid_score(value):
      +    return type(value) is int and 0<=value<=100
      +print([valid_score(x) for x in [-1,0,100,101,True]])
      +

      Inaasahang resulta: [False, True, True, False, False]

      Pagsasanay at ebidensiya

      Itala ang hula, aktuwal na resulta, at dahilan ng pagtugma o pagkakaiba. Sinusukat ng completion check ang pag-unawa; hinahasa ng practice task ang kasanayan.

      \ No newline at end of file diff --git a/tl/expanded-28-1/lesson-1/main.py b/tl/expanded-28-1/lesson-1/main.py new file mode 100644 index 0000000..d68c399 --- /dev/null +++ b/tl/expanded-28-1/lesson-1/main.py @@ -0,0 +1,3 @@ +def valid_score(value): + return type(value) is int and 0<=value<=100 +print([valid_score(x) for x in [-1,0,100,101,True]]) diff --git a/tl/expanded-28-1/lesson-2/lesson.html b/tl/expanded-28-1/lesson-2/lesson.html new file mode 100644 index 0000000..d74dc08 --- /dev/null +++ b/tl/expanded-28-1/lesson-2/lesson.html @@ -0,0 +1,7 @@ +Ihiwalay ang data sa instruction

      Ihiwalay ang data sa instruction

      15-minutong sesyon: magbasa nang 3 minuto, mag-trace nang 3, mag-eksperimento nang 7, at sagutan ang check nang 2. Maglaan ng dagdag na oras kung kailangan.

      Gumamit ng parameterized query sa database value at argument array sa process. Hindi ginagawang ligtas para sa SQL o shell ng HTML escaping ang string. Tukuyin ang interpreter sa bawat boundary at gamitin ang data interface. Hindi kailangang magpatakbo ng attack payload sa ibang service.

      Pagsasanay at ebidensiya: Hulaan ang halimbawa o iguhit ang pagbabago ng state. Baguhin ang isang palagay, subukan ang hangganan, at itala ang aktuwal na resulta. Ipaliwanag kung ano ang hindi napapatunayan ng maliit na modelo tungkol sa production system.

      import sqlite3
      +db=sqlite3.connect(":memory:")
      +db.execute("create table notes(value text)")
      +value="A student's note"
      +db.execute("insert into notes values (?)",(value,))
      +print(db.execute("select value from notes").fetchone()[0])
      +

      Inaasahang resulta: A student's note

      Pagsasanay at ebidensiya

      Itala ang hula, aktuwal na resulta, at dahilan ng pagtugma o pagkakaiba. Sinusukat ng completion check ang pag-unawa; hinahasa ng practice task ang kasanayan.

      \ No newline at end of file diff --git a/tl/expanded-28-1/lesson-2/main.py b/tl/expanded-28-1/lesson-2/main.py new file mode 100644 index 0000000..350944e --- /dev/null +++ b/tl/expanded-28-1/lesson-2/main.py @@ -0,0 +1,6 @@ +import sqlite3 +db=sqlite3.connect(":memory:") +db.execute("create table notes(value text)") +value="A student's note" +db.execute("insert into notes values (?)",(value,)) +print(db.execute("select value from notes").fetchone()[0]) diff --git a/tl/expanded-28-1/lesson-3/lesson.html b/tl/expanded-28-1/lesson-3/lesson.html new file mode 100644 index 0000000..ef47910 --- /dev/null +++ b/tl/expanded-28-1/lesson-3/lesson.html @@ -0,0 +1 @@ +Dapat hamunin ng regression test ang fix

      Dapat hamunin ng regression test ang fix

      15-minutong sesyon: magbasa nang 3 minuto, mag-trace nang 3, mag-eksperimento nang 7, at sagutan ang check nang 2. Maglaan ng dagdag na oras kung kailangan.

      Sumulat ng test na bagsak bago ang fix at pasado pagkatapos. Isama ang pinakamaliit na reproducer at katabing valid case. Panatilihin ang authorization, boundary, at error-path test; hindi sapat ang happy-path screenshot. Itala ang hindi napapatunayan at huwag sabihing wala nang anumang vulnerability.

      Pagsasanay at ebidensiya: Hulaan ang halimbawa o iguhit ang pagbabago ng state. Baguhin ang isang palagay, subukan ang hangganan, at itala ang aktuwal na resulta. Ipaliwanag kung ano ang hindi napapatunayan ng maliit na modelo tungkol sa production system.

      Pagsasanay at ebidensiya

      Itala ang hula, aktuwal na resulta, at dahilan ng pagtugma o pagkakaiba. Sinusukat ng completion check ang pag-unawa; hinahasa ng practice task ang kasanayan.

      \ No newline at end of file diff --git a/tl/expanded-29-1/README.md b/tl/expanded-29-1/README.md new file mode 100644 index 0000000..4d75c22 --- /dev/null +++ b/tl/expanded-29-1/README.md @@ -0,0 +1,9 @@ +# Networking at Protocol · 1 + +[Agila University track](https://edu.agilaos.com/track.php?track=29&lang=tl) + +Mga 15 minuto bawat aralin. Hulaan, patakbuhin, baguhin, ipaliwanag, at sagutan ang pagsusulit sa University. + +- [Lesson 1: Pangalan, address, connection, request](lesson-1/lesson.html) +- [Lesson 2: Kailangan ng framing ang byte stream](lesson-2/lesson.html) +- [Lesson 3: Timeout, retry, at idempotency](lesson-3/lesson.html) diff --git a/tl/expanded-29-1/lesson-1/lesson.html b/tl/expanded-29-1/lesson-1/lesson.html new file mode 100644 index 0000000..5db3ac9 --- /dev/null +++ b/tl/expanded-29-1/lesson-1/lesson.html @@ -0,0 +1 @@ +Pangalan, address, connection, request

      Pangalan, address, connection, request

      15-minutong sesyon: magbasa nang 3 minuto, mag-trace nang 3, mag-eksperimento nang 7, at sagutan ang check nang 2. Maglaan ng dagdag na oras kung kailangan.

      Nagre-resolve ng pangalan ang DNS; communication ang transport; authentication at encryption ang TLS; request at response ang HTTP. Huwag pagpalitin ang layer ng failure. Halimbawa ang DNS incident ng University: hindi matutulungan ng healthy server ang client na may cached failed lookup. Iguhit ang layers at test sa bawat isa.

      Pagsasanay at ebidensiya: Hulaan ang halimbawa o iguhit ang pagbabago ng state. Baguhin ang isang palagay, subukan ang hangganan, at itala ang aktuwal na resulta. Ipaliwanag kung ano ang hindi napapatunayan ng maliit na modelo tungkol sa production system.

      Pagsasanay at ebidensiya

      Itala ang hula, aktuwal na resulta, at dahilan ng pagtugma o pagkakaiba. Sinusukat ng completion check ang pag-unawa; hinahasa ng practice task ang kasanayan.

      \ No newline at end of file diff --git a/tl/expanded-29-1/lesson-2/lesson.html b/tl/expanded-29-1/lesson-2/lesson.html new file mode 100644 index 0000000..3f26b9f --- /dev/null +++ b/tl/expanded-29-1/lesson-2/lesson.html @@ -0,0 +1,5 @@ +Kailangan ng framing ang byte stream

      Kailangan ng framing ang byte stream

      15-minutong sesyon: magbasa nang 3 minuto, mag-trace nang 3, mag-eksperimento nang 7, at sagutan ang check nang 2. Maglaan ng dagdag na oras kung kailangan.

      Maaaring bahagi o maraming message ang ibalik ng TCP read. Magtakda ng framing gamit ang length, delimiter, o format. I-validate ang maximum length bago allocation at hawakan ang truncated input. Nagpa-parse ang modelo ng two-byte length prefix sa fixed bytes; walang network connection sa sandbox.

      Pagsasanay at ebidensiya: Hulaan ang halimbawa o iguhit ang pagbabago ng state. Baguhin ang isang palagay, subukan ang hangganan, at itala ang aktuwal na resulta. Ipaliwanag kung ano ang hindi napapatunayan ng maliit na modelo tungkol sa production system.

      packet=bytes([0,3])+b"cat"
      +length=int.from_bytes(packet[:2],"big")
      +assert length<=100 and len(packet)-2==length
      +print(packet[2:].decode())
      +

      Inaasahang resulta: cat

      Pagsasanay at ebidensiya

      Itala ang hula, aktuwal na resulta, at dahilan ng pagtugma o pagkakaiba. Sinusukat ng completion check ang pag-unawa; hinahasa ng practice task ang kasanayan.

      \ No newline at end of file diff --git a/tl/expanded-29-1/lesson-2/main.py b/tl/expanded-29-1/lesson-2/main.py new file mode 100644 index 0000000..065589a --- /dev/null +++ b/tl/expanded-29-1/lesson-2/main.py @@ -0,0 +1,4 @@ +packet=bytes([0,3])+b"cat" +length=int.from_bytes(packet[:2],"big") +assert length<=100 and len(packet)-2==length +print(packet[2:].decode()) diff --git a/tl/expanded-29-1/lesson-3/lesson.html b/tl/expanded-29-1/lesson-3/lesson.html new file mode 100644 index 0000000..8f368be --- /dev/null +++ b/tl/expanded-29-1/lesson-3/lesson.html @@ -0,0 +1,8 @@ +Timeout, retry, at idempotency

      Timeout, retry, at idempotency

      15-minutong sesyon: magbasa nang 3 minuto, mag-trace nang 3, mag-eksperimento nang 7, at sagutan ang check nang 2. Maglaan ng dagdag na oras kung kailangan.

      Hindi patunay ng walang nagawa ang timeout: maaaring natapos bago nawala ang response. Gumamit ng idempotency key sa operation na hindi dapat maulit. Limitahan ang retry at mag-backoff. Parehong stored result ang ibinabalik ng modelo sa repeated key sa halip na ulitin ang side effect.

      Pagsasanay at ebidensiya: Hulaan ang halimbawa o iguhit ang pagbabago ng state. Baguhin ang isang palagay, subukan ang hangganan, at itala ang aktuwal na resulta. Ipaliwanag kung ano ang hindi napapatunayan ng maliit na modelo tungkol sa production system.

      results={}
      +def complete(key):
      +    if key not in results:results[key]=len(results)+1
      +    return results[key]
      +print(complete("lesson-1"),complete("lesson-1"))
      +print(len(results))
      +

      Inaasahang resulta: 1 1 +1

      Pagsasanay at ebidensiya

      Itala ang hula, aktuwal na resulta, at dahilan ng pagtugma o pagkakaiba. Sinusukat ng completion check ang pag-unawa; hinahasa ng practice task ang kasanayan.

      \ No newline at end of file diff --git a/tl/expanded-29-1/lesson-3/main.py b/tl/expanded-29-1/lesson-3/main.py new file mode 100644 index 0000000..ffb99f8 --- /dev/null +++ b/tl/expanded-29-1/lesson-3/main.py @@ -0,0 +1,6 @@ +results={} +def complete(key): + if key not in results:results[key]=len(results)+1 + return results[key] +print(complete("lesson-1"),complete("lesson-1")) +print(len(results)) diff --git a/tl/expanded-30-1/README.md b/tl/expanded-30-1/README.md new file mode 100644 index 0000000..778e922 --- /dev/null +++ b/tl/expanded-30-1/README.md @@ -0,0 +1,9 @@ +# CPU/GPU Core at Memory Mapping · 1 + +[Agila University track](https://edu.agilaos.com/track.php?track=30&lang=tl) + +Mga 15 minuto bawat aralin. Hulaan, patakbuhin, baguhin, ipaliwanag, at sagutan ang pagsusulit sa University. + +- [Lesson 1: Imapa ang machine bago mag-schedule](lesson-1/lesson.html) +- [Lesson 2: Itugma ang gawain sa execution model](lesson-2/lesson.html) +- [Lesson 3: Affinity at migration](lesson-3/lesson.html) diff --git a/tl/expanded-30-1/lesson-1/lesson.html b/tl/expanded-30-1/lesson-1/lesson.html new file mode 100644 index 0000000..e810cb0 --- /dev/null +++ b/tl/expanded-30-1/lesson-1/lesson.html @@ -0,0 +1,5 @@ +Imapa ang machine bago mag-schedule

      Imapa ang machine bago mag-schedule

      15-minutong sesyon: magbasa nang 3 minuto, mag-trace nang 3, mag-eksperimento nang 7, at sagutan ang check nang 2. Maglaan ng dagdag na oras kung kailangan.

      Ihiwalay ang socket, physical core, logical CPU, at virtual CPU. Hindi patunay ng eksklusibong physical core ang cloud vCPU. Iba ang execution model ng GPU compute unit at lane. Itala ang nakikita sa environment at ang hindi alam. Isang vCPU at walang GPU ang droplet; kailangan ng ibang hardware para sa multi-core o GPU comparison.

      Pagsasanay at ebidensiya: Hulaan ang halimbawa o iguhit ang pagbabago ng state. Baguhin ang isang palagay, subukan ang hangganan, at itala ang aktuwal na resulta. Ipaliwanag kung ano ang hindi napapatunayan ng maliit na modelo tungkol sa production system.

      import os,platform
      +print("ISA:",platform.machine())
      +print("Visible logical CPUs:",os.cpu_count())
      +print("GPU: not measured by this program")
      +

      Pagsasanay at ebidensiya

      Itala ang hula, aktuwal na resulta, at dahilan ng pagtugma o pagkakaiba. Sinusukat ng completion check ang pag-unawa; hinahasa ng practice task ang kasanayan.

      Sanggunian sa wika: git.agilaos.com

      Sanggunian sa wika: docs.nvidia.com

      \ No newline at end of file diff --git a/tl/expanded-30-1/lesson-1/main.py b/tl/expanded-30-1/lesson-1/main.py new file mode 100644 index 0000000..d11b19e --- /dev/null +++ b/tl/expanded-30-1/lesson-1/main.py @@ -0,0 +1,4 @@ +import os,platform +print("ISA:",platform.machine()) +print("Visible logical CPUs:",os.cpu_count()) +print("GPU: not measured by this program") diff --git a/tl/expanded-30-1/lesson-2/lesson.html b/tl/expanded-30-1/lesson-2/lesson.html new file mode 100644 index 0000000..9c9d755 --- /dev/null +++ b/tl/expanded-30-1/lesson-2/lesson.html @@ -0,0 +1 @@ +Itugma ang gawain sa execution model

      Itugma ang gawain sa execution model

      15-minutong sesyon: magbasa nang 3 minuto, mag-trace nang 3, mag-eksperimento nang 7, at sagutan ang check nang 2. Maglaan ng dagdag na oras kung kailangan.

      May parallelism ang independent operation sa malaking array. Hindi nahahati ang serial dependency dahil lang may dagdag na core. Maaaring mas angkop ang CPU sa branch-heavy o maliit na job kapag kasama ang launch at transfer overhead. Hypothesis ito, hindi universal rule. Uriin ang parser, malaking matrix multiply, at maliit na request handler; sabihin ang susukatin.

      Pagsasanay at ebidensiya: Hulaan ang halimbawa o iguhit ang pagbabago ng state. Baguhin ang isang palagay, subukan ang hangganan, at itala ang aktuwal na resulta. Ipaliwanag kung ano ang hindi napapatunayan ng maliit na modelo tungkol sa production system.

      Pagsasanay at ebidensiya

      Itala ang hula, aktuwal na resulta, at dahilan ng pagtugma o pagkakaiba. Sinusukat ng completion check ang pag-unawa; hinahasa ng practice task ang kasanayan.

      Sanggunian sa wika: git.agilaos.com

      Sanggunian sa wika: docs.nvidia.com

      \ No newline at end of file diff --git a/tl/expanded-30-1/lesson-3/lesson.html b/tl/expanded-30-1/lesson-3/lesson.html new file mode 100644 index 0000000..8395616 --- /dev/null +++ b/tl/expanded-30-1/lesson-3/lesson.html @@ -0,0 +1,3 @@ +Affinity at migration

      Affinity at migration

      15-minutong sesyon: magbasa nang 3 minuto, mag-trace nang 3, mag-eksperimento nang 7, at sagutan ang check nang 2. Maglaan ng dagdag na oras kung kailangan.

      Nililimitahan ng CPU affinity kung saan maaaring tumakbo ang thread. Maaaring mabawasan ang migration o magkaroon ng contention. Hindi nagrereserba ng core ang pinning. Ihambing ang pinned at unpinned kung alam ang topology at policy. Itala ang affinity, load, frequency behavior, at sample count. Huwag baguhin ang scheduling ng production server para sa aralin.

      Pagsasanay at ebidensiya: Hulaan ang halimbawa o iguhit ang pagbabago ng state. Baguhin ang isang palagay, subukan ang hangganan, at itala ang aktuwal na resulta. Ipaliwanag kung ano ang hindi napapatunayan ng maliit na modelo tungkol sa production system.

      import os
      +print(sorted(os.sched_getaffinity(0)))
      +

      Pagsasanay at ebidensiya

      Itala ang hula, aktuwal na resulta, at dahilan ng pagtugma o pagkakaiba. Sinusukat ng completion check ang pag-unawa; hinahasa ng practice task ang kasanayan.

      Sanggunian sa wika: git.agilaos.com

      Sanggunian sa wika: docs.nvidia.com

      \ No newline at end of file diff --git a/tl/expanded-30-1/lesson-3/main.py b/tl/expanded-30-1/lesson-3/main.py new file mode 100644 index 0000000..95814c3 --- /dev/null +++ b/tl/expanded-30-1/lesson-3/main.py @@ -0,0 +1,2 @@ +import os +print(sorted(os.sched_getaffinity(0))) diff --git a/tl/expanded-30-2/README.md b/tl/expanded-30-2/README.md new file mode 100644 index 0000000..5e3c7f6 --- /dev/null +++ b/tl/expanded-30-2/README.md @@ -0,0 +1,9 @@ +# CPU/GPU Core at Memory Mapping · 2 + +[Agila University track](https://edu.agilaos.com/track.php?track=30&lang=tl) + +Mga 15 minuto bawat aralin. Hulaan, patakbuhin, baguhin, ipaliwanag, at sagutan ang pagsusulit sa University. + +- [Lesson 1: Virtual, physical, at device address](lesson-1/lesson.html) +- [Lesson 2: Cache, locality, at working set](lesson-2/lesson.html) +- [Lesson 3: NUMA placement at first touch](lesson-3/lesson.html) diff --git a/tl/expanded-30-2/lesson-1/lesson.html b/tl/expanded-30-2/lesson-1/lesson.html new file mode 100644 index 0000000..bfce3df --- /dev/null +++ b/tl/expanded-30-2/lesson-1/lesson.html @@ -0,0 +1 @@ +Virtual, physical, at device address

      Virtual, physical, at device address

      15-minutong sesyon: magbasa nang 3 minuto, mag-trace nang 3, mag-eksperimento nang 7, at sagutan ang check nang 2. Maglaan ng dagdag na oras kung kailangan.

      Virtual address ang gamit ng process. Tinutumbasan ito ng page table na may permission. Maaaring DMA/IOMMU mapping ang gamit ng device, hindi ang parehong address. Huwag basta gawing device address ang process pointer. Iguhit ang mapping, owner, permission, at lifetime ng buffer bago magdisenyo ng API.

      Pagsasanay at ebidensiya: Hulaan ang halimbawa o iguhit ang pagbabago ng state. Baguhin ang isang palagay, subukan ang hangganan, at itala ang aktuwal na resulta. Ipaliwanag kung ano ang hindi napapatunayan ng maliit na modelo tungkol sa production system.

      Pagsasanay at ebidensiya

      Itala ang hula, aktuwal na resulta, at dahilan ng pagtugma o pagkakaiba. Sinusukat ng completion check ang pag-unawa; hinahasa ng practice task ang kasanayan.

      Sanggunian sa wika: git.agilaos.com

      Sanggunian sa wika: docs.nvidia.com

      \ No newline at end of file diff --git a/tl/expanded-30-2/lesson-2/lesson.html b/tl/expanded-30-2/lesson-2/lesson.html new file mode 100644 index 0000000..bdb5e9f --- /dev/null +++ b/tl/expanded-30-2/lesson-2/lesson.html @@ -0,0 +1,5 @@ +Cache, locality, at working set

      Cache, locality, at working set

      15-minutong sesyon: magbasa nang 3 minuto, mag-trace nang 3, mag-eksperimento nang 7, at sagutan ang check nang 2. Maglaan ng dagdag na oras kung kailangan.

      Ang locality ay muling paggamit ng malapit o kamakailang data. Iba ang working set na kasya sa cache kaysa nag-i-stream sa RAM. Nakaaapekto ang stride, element size, prefetching, compiler optimization, at useful work. May interpreter overhead din ang Python loop kaya hindi nito naihihiwalay ang cache latency.

      Pagsasanay at ebidensiya: Hulaan ang halimbawa o iguhit ang pagbabago ng state. Baguhin ang isang palagay, subukan ang hangganan, at itala ang aktuwal na resulta. Ipaliwanag kung ano ang hindi napapatunayan ng maliit na modelo tungkol sa production system.

      data=list(range(16))
      +print(sum(data))
      +print(sum(data[::4]))
      +

      Inaasahang resulta: 120 +24

      Pagsasanay at ebidensiya

      Itala ang hula, aktuwal na resulta, at dahilan ng pagtugma o pagkakaiba. Sinusukat ng completion check ang pag-unawa; hinahasa ng practice task ang kasanayan.

      Sanggunian sa wika: git.agilaos.com

      Sanggunian sa wika: docs.nvidia.com

      \ No newline at end of file diff --git a/tl/expanded-30-2/lesson-2/main.py b/tl/expanded-30-2/lesson-2/main.py new file mode 100644 index 0000000..b9841e0 --- /dev/null +++ b/tl/expanded-30-2/lesson-2/main.py @@ -0,0 +1,3 @@ +data=list(range(16)) +print(sum(data)) +print(sum(data[::4])) diff --git a/tl/expanded-30-2/lesson-3/lesson.html b/tl/expanded-30-2/lesson-3/lesson.html new file mode 100644 index 0000000..8bf992d --- /dev/null +++ b/tl/expanded-30-2/lesson-3/lesson.html @@ -0,0 +1 @@ +NUMA placement at first touch

      NUMA placement at first touch

      15-minutong sesyon: magbasa nang 3 minuto, mag-trace nang 3, mag-eksperimento nang 7, at sagutan ang check nang 2. Maglaan ng dagdag na oras kung kailangan.

      Sa NUMA, maaaring nakadepende ang memory cost sa node ng page at lokasyon ng thread. Nakaaapekto ang allocation policy at first touch. Sukatin ang local at remote access sa tunay na multi-node system; hindi maipapakita ng single-node VM ang NUMA speedup. Itala at beripikahin ang placement sa halip na ipalagay mula sa code.

      Pagsasanay at ebidensiya: Hulaan ang halimbawa o iguhit ang pagbabago ng state. Baguhin ang isang palagay, subukan ang hangganan, at itala ang aktuwal na resulta. Ipaliwanag kung ano ang hindi napapatunayan ng maliit na modelo tungkol sa production system.

      Pagsasanay at ebidensiya

      Itala ang hula, aktuwal na resulta, at dahilan ng pagtugma o pagkakaiba. Sinusukat ng completion check ang pag-unawa; hinahasa ng practice task ang kasanayan.

      Sanggunian sa wika: git.agilaos.com

      Sanggunian sa wika: docs.nvidia.com

      \ No newline at end of file diff --git a/tl/expanded-30-3/README.md b/tl/expanded-30-3/README.md new file mode 100644 index 0000000..5195e3f --- /dev/null +++ b/tl/expanded-30-3/README.md @@ -0,0 +1,9 @@ +# CPU/GPU Core at Memory Mapping · 3 + +[Agila University track](https://edu.agilaos.com/track.php?track=30&lang=tl) + +Mga 15 minuto bawat aralin. Hulaan, patakbuhin, baguhin, ipaliwanag, at sagutan ang pagsusulit sa University. + +- [Lesson 1: GPU buffer at transfer cost](lesson-1/lesson.html) +- [Lesson 2: Coalescing at shared workgroup memory](lesson-2/lesson.html) +- [Lesson 3: Synchronization at buffer ownership](lesson-3/lesson.html) diff --git a/tl/expanded-30-3/lesson-1/lesson.html b/tl/expanded-30-3/lesson-1/lesson.html new file mode 100644 index 0000000..3a3cf2e --- /dev/null +++ b/tl/expanded-30-3/lesson-1/lesson.html @@ -0,0 +1,6 @@ +GPU buffer at transfer cost

      GPU buffer at transfer cost

      15-minutong sesyon: magbasa nang 3 minuto, mag-trace nang 3, mag-eksperimento nang 7, at sagutan ang check nang 2. Maglaan ng dagdag na oras kung kailangan.

      Madalas hiwalay ang device memory ng discrete GPU sa host RAM. Maaaring mas malaki ang upload, download, launch, at synchronization kaysa maliit na kernel. Iba ang API ng unified memory ngunit hindi libreng movement. Limitadong resource ang pinned host memory. Hypothetical ang timing sa sample; accounting ito, hindi hardware measurement.

      Pagsasanay at ebidensiya: Hulaan ang halimbawa o iguhit ang pagbabago ng state. Baguhin ang isang palagay, subukan ang hangganan, at itala ang aktuwal na resulta. Ipaliwanag kung ano ang hindi napapatunayan ng maliit na modelo tungkol sa production system.

      cpu_ms=8
      +upload_ms,kernel_ms,download_ms=5,2,4
      +print("Hypothetical GPU total:",upload_ms+kernel_ms+download_ms)
      +print("Hypothetical CPU total:",cpu_ms)
      +

      Inaasahang resulta: Hypothetical GPU total: 11 +Hypothetical CPU total: 8

      Pagsasanay at ebidensiya

      Itala ang hula, aktuwal na resulta, at dahilan ng pagtugma o pagkakaiba. Sinusukat ng completion check ang pag-unawa; hinahasa ng practice task ang kasanayan.

      Sanggunian sa wika: git.agilaos.com

      Sanggunian sa wika: docs.nvidia.com

      \ No newline at end of file diff --git a/tl/expanded-30-3/lesson-1/main.py b/tl/expanded-30-3/lesson-1/main.py new file mode 100644 index 0000000..89f5b3b --- /dev/null +++ b/tl/expanded-30-3/lesson-1/main.py @@ -0,0 +1,4 @@ +cpu_ms=8 +upload_ms,kernel_ms,download_ms=5,2,4 +print("Hypothetical GPU total:",upload_ms+kernel_ms+download_ms) +print("Hypothetical CPU total:",cpu_ms) diff --git a/tl/expanded-30-3/lesson-2/lesson.html b/tl/expanded-30-3/lesson-2/lesson.html new file mode 100644 index 0000000..63a34cf --- /dev/null +++ b/tl/expanded-30-3/lesson-2/lesson.html @@ -0,0 +1,7 @@ +Coalescing at shared workgroup memory

      Coalescing at shared workgroup memory

      15-minutong sesyon: magbasa nang 3 minuto, mag-trace nang 3, mag-eksperimento nang 7, at sagutan ang check nang 2. Maglaan ng dagdag na oras kung kailangan.

      Maaaring maging episyente ang memory transaction kapag magkatabing element ang ina-access ng GPU lane. Nakababawas ng global read ang shared workgroup memory ngunit limitado ito at kailangan ng synchronization. Iba ang detalye sa CUDA, Metal, Vulkan, at iba pa. Iguhit ang lane-to-element mapping at i-validate ang output pagkatapos ng bawat layout change.

      Pagsasanay at ebidensiya: Hulaan ang halimbawa o iguhit ang pagbabago ng state. Baguhin ang isang palagay, subukan ang hangganan, at itala ang aktuwal na resulta. Ipaliwanag kung ano ang hindi napapatunayan ng maliit na modelo tungkol sa production system.

      lanes=4
      +contiguous=[lane for lane in range(lanes)]
      +strided=[lane*16 for lane in range(lanes)]
      +print(contiguous)
      +print(strided)
      +

      Inaasahang resulta: [0, 1, 2, 3] +[0, 16, 32, 48]

      Pagsasanay at ebidensiya

      Itala ang hula, aktuwal na resulta, at dahilan ng pagtugma o pagkakaiba. Sinusukat ng completion check ang pag-unawa; hinahasa ng practice task ang kasanayan.

      Sanggunian sa wika: git.agilaos.com

      Sanggunian sa wika: docs.nvidia.com

      \ No newline at end of file diff --git a/tl/expanded-30-3/lesson-2/main.py b/tl/expanded-30-3/lesson-2/main.py new file mode 100644 index 0000000..4075806 --- /dev/null +++ b/tl/expanded-30-3/lesson-2/main.py @@ -0,0 +1,5 @@ +lanes=4 +contiguous=[lane for lane in range(lanes)] +strided=[lane*16 for lane in range(lanes)] +print(contiguous) +print(strided) diff --git a/tl/expanded-30-3/lesson-3/lesson.html b/tl/expanded-30-3/lesson-3/lesson.html new file mode 100644 index 0000000..9919c41 --- /dev/null +++ b/tl/expanded-30-3/lesson-3/lesson.html @@ -0,0 +1,7 @@ +Synchronization at buffer ownership

      Synchronization at buffer ownership

      15-minutong sesyon: magbasa nang 3 minuto, mag-trace nang 3, mag-eksperimento nang 7, at sagutan ang check nang 2. Maglaan ng dagdag na oras kung kailangan.

      Maaaring bumalik ang GPU submission bago matapos ang execution. Nakakasira ng resulta ang maagang reuse o free ng buffer. Imodelo ang allocated, uploaded, submitted, completed, at released. Kailangan ang completion bago reuse. May scope ang barrier; hindi awtomatikong global o host synchronization ang workgroup barrier.

      Pagsasanay at ebidensiya: Hulaan ang halimbawa o iguhit ang pagbabago ng state. Baguhin ang isang palagay, subukan ang hangganan, at itala ang aktuwal na resulta. Ipaliwanag kung ano ang hindi napapatunayan ng maliit na modelo tungkol sa production system.

      state="submitted"
      +def can_release(state): return state=="completed"
      +assert not can_release(state)
      +state="completed"
      +assert can_release(state)
      +print("Passed")
      +

      Inaasahang resulta: Passed

      Pagsasanay at ebidensiya

      Itala ang hula, aktuwal na resulta, at dahilan ng pagtugma o pagkakaiba. Sinusukat ng completion check ang pag-unawa; hinahasa ng practice task ang kasanayan.

      Sanggunian sa wika: git.agilaos.com

      Sanggunian sa wika: docs.nvidia.com

      \ No newline at end of file diff --git a/tl/expanded-30-3/lesson-3/main.py b/tl/expanded-30-3/lesson-3/main.py new file mode 100644 index 0000000..944f0fa --- /dev/null +++ b/tl/expanded-30-3/lesson-3/main.py @@ -0,0 +1,6 @@ +state="submitted" +def can_release(state): return state=="completed" +assert not can_release(state) +state="completed" +assert can_release(state) +print("Passed") diff --git a/tl/expanded-30-4/README.md b/tl/expanded-30-4/README.md new file mode 100644 index 0000000..0a79a5a --- /dev/null +++ b/tl/expanded-30-4/README.md @@ -0,0 +1,9 @@ +# CPU/GPU Core at Memory Mapping · 4 + +[Agila University track](https://edu.agilaos.com/track.php?track=30&lang=tl) + +Mga 15 minuto bawat aralin. Hulaan, patakbuhin, baguhin, ipaliwanag, at sagutan ang pagsusulit sa University. + +- [Lesson 1: Sukatin ang paulit-ulit na run gamit ang clock](lesson-1/lesson.html) +- [Lesson 2: Pumili ng backend batay sa ebidensiya](lesson-2/lesson.html) +- [Lesson 3: I-publish ang placement study na mauulit](lesson-3/lesson.html) diff --git a/tl/expanded-30-4/lesson-1/lesson.html b/tl/expanded-30-4/lesson-1/lesson.html new file mode 100644 index 0000000..652e6d2 --- /dev/null +++ b/tl/expanded-30-4/lesson-1/lesson.html @@ -0,0 +1,14 @@ +Sukatin ang paulit-ulit na run gamit ang clock

      Sukatin ang paulit-ulit na run gamit ang clock

      15-minutong sesyon: magbasa nang 3 minuto, mag-trace nang 3, mag-eksperimento nang 7, at sagutan ang check nang 2. Maglaan ng dagdag na oras kung kailangan.

      Gumamit ng monotonic high-resolution clock. Ihiwalay ang warmup, ulitin ang fixed workload, beripikahin ang checksum, at iulat ang median at spread. Itala ang unit, data size, environment, at runtime version. Python sum sa CPU ang sinusukat nito kasama ang runtime cost; hindi ito GPU o raw memory-bandwidth benchmark.

      Pagsasanay at ebidensiya: Hulaan ang halimbawa o iguhit ang pagbabago ng state. Baguhin ang isang palagay, subukan ang hangganan, at itala ang aktuwal na resulta. Ipaliwanag kung ano ang hindi napapatunayan ng maliit na modelo tungkol sa production system.

      import time,statistics,platform
      +data=list(range(100000))
      +expected=4999950000
      +assert sum(data)==expected
      +samples=[]
      +for _ in range(7):
      +    start=time.perf_counter_ns()
      +    result=sum(data)
      +    samples.append((time.perf_counter_ns()-start)/1e6)
      +    assert result==expected
      +print("CPU Python",platform.python_version(),platform.machine())
      +print("median_ms",round(statistics.median(samples),4))
      +print("min_ms",round(min(samples),4),"max_ms",round(max(samples),4))
      +

      Pagsasanay at ebidensiya

      Itala ang hula, aktuwal na resulta, at dahilan ng pagtugma o pagkakaiba. Sinusukat ng completion check ang pag-unawa; hinahasa ng practice task ang kasanayan.

      Sanggunian sa wika: git.agilaos.com

      Sanggunian sa wika: docs.nvidia.com

      \ No newline at end of file diff --git a/tl/expanded-30-4/lesson-1/main.py b/tl/expanded-30-4/lesson-1/main.py new file mode 100644 index 0000000..ff9edc3 --- /dev/null +++ b/tl/expanded-30-4/lesson-1/main.py @@ -0,0 +1,13 @@ +import time,statistics,platform +data=list(range(100000)) +expected=4999950000 +assert sum(data)==expected +samples=[] +for _ in range(7): + start=time.perf_counter_ns() + result=sum(data) + samples.append((time.perf_counter_ns()-start)/1e6) + assert result==expected +print("CPU Python",platform.python_version(),platform.machine()) +print("median_ms",round(statistics.median(samples),4)) +print("min_ms",round(min(samples),4),"max_ms",round(max(samples),4)) diff --git a/tl/expanded-30-4/lesson-2/lesson.html b/tl/expanded-30-4/lesson-2/lesson.html new file mode 100644 index 0000000..140ab3f --- /dev/null +++ b/tl/expanded-30-4/lesson-2/lesson.html @@ -0,0 +1,4 @@ +Pumili ng backend batay sa ebidensiya

      Pumili ng backend batay sa ebidensiya

      15-minutong sesyon: magbasa nang 3 minuto, mag-trace nang 3, mag-eksperimento nang 7, at sagutan ang check nang 2. Maglaan ng dagdag na oras kung kailangan.

      Salain ang candidate ayon sa capability, correctness, memory capacity, at constraint bago bilis. Gumamit ng representative size at isama ang transfer. Panatilihin ang fallback kapag walang device. Gawa-gawang demonstration result ang table; palitan lang ng validated real measurement. Huwag ibatay ang policy sa isang masuwerteng run.

      Pagsasanay at ebidensiya: Hulaan ang halimbawa o iguhit ang pagbabago ng state. Baguhin ang isang palagay, subukan ang hangganan, at itala ang aktuwal na resulta. Ipaliwanag kung ano ang hindi napapatunayan ng maliit na modelo tungkol sa production system.

      candidates=[{"name":"CPU demo","correct":True,"ms":8},{"name":"GPU demo","correct":True,"ms":11},{"name":"Broken demo","correct":False,"ms":1}]
      +valid=[c for c in candidates if c["correct"]]
      +print("Hypothetical winner:",min(valid,key=lambda c:c["ms"])["name"])
      +

      Inaasahang resulta: Hypothetical winner: CPU demo

      Pagsasanay at ebidensiya

      Itala ang hula, aktuwal na resulta, at dahilan ng pagtugma o pagkakaiba. Sinusukat ng completion check ang pag-unawa; hinahasa ng practice task ang kasanayan.

      Sanggunian sa wika: git.agilaos.com

      Sanggunian sa wika: docs.nvidia.com

      \ No newline at end of file diff --git a/tl/expanded-30-4/lesson-2/main.py b/tl/expanded-30-4/lesson-2/main.py new file mode 100644 index 0000000..1c313a7 --- /dev/null +++ b/tl/expanded-30-4/lesson-2/main.py @@ -0,0 +1,3 @@ +candidates=[{"name":"CPU demo","correct":True,"ms":8},{"name":"GPU demo","correct":True,"ms":11},{"name":"Broken demo","correct":False,"ms":1}] +valid=[c for c in candidates if c["correct"]] +print("Hypothetical winner:",min(valid,key=lambda c:c["ms"])["name"]) diff --git a/tl/expanded-30-4/lesson-3/lesson.html b/tl/expanded-30-4/lesson-3/lesson.html new file mode 100644 index 0000000..7de2d56 --- /dev/null +++ b/tl/expanded-30-4/lesson-3/lesson.html @@ -0,0 +1 @@ +I-publish ang placement study na mauulit

      I-publish ang placement study na mauulit

      15-minutong sesyon: magbasa nang 3 minuto, mag-trace nang 3, mag-eksperimento nang 7, at sagutan ang check nang 2. Maglaan ng dagdag na oras kung kailangan.

      Gumawa ng report para sa dalawang workload size. Isama ang source revision, topology, memory type at placement, affinity, seed, tolerance, repetitions, raw sample, at end-to-end cost. Ihiwalay ang measured, simulated, at untested. Ipaliwanag kung bakit maaaring magbago ang winner sa ibang machine. Isumite ang code at raw evidence sa Forge, hindi confidential credential.

      Pagsasanay at ebidensiya: Hulaan ang halimbawa o iguhit ang pagbabago ng state. Baguhin ang isang palagay, subukan ang hangganan, at itala ang aktuwal na resulta. Ipaliwanag kung ano ang hindi napapatunayan ng maliit na modelo tungkol sa production system.

      Pagsasanay at ebidensiya

      Itala ang hula, aktuwal na resulta, at dahilan ng pagtugma o pagkakaiba. Sinusukat ng completion check ang pag-unawa; hinahasa ng practice task ang kasanayan.

      Sanggunian sa wika: git.agilaos.com

      Sanggunian sa wika: docs.nvidia.com

      \ No newline at end of file diff --git a/tl/expanded-8-1/README.md b/tl/expanded-8-1/README.md new file mode 100644 index 0000000..a8fcd2f --- /dev/null +++ b/tl/expanded-8-1/README.md @@ -0,0 +1,9 @@ +# Web Development · 1 + +[Agila University track](https://edu.agilaos.com/track.php?track=8&lang=tl) + +Mga 15 minuto bawat aralin. Hulaan, patakbuhin, baguhin, ipaliwanag, at sagutan ang pagsusulit sa University. + +- [Lesson 1: Bigyan ng kahulugan ang pahina gamit ang HTML](lesson-1/lesson.html) +- [Lesson 2: Mag-style nang malinaw pa ring mabasa](lesson-2/lesson.html) +- [Lesson 3: Tumugon sa event](lesson-3/lesson.html) diff --git a/tl/expanded-8-1/lesson-1/lesson.html b/tl/expanded-8-1/lesson-1/lesson.html new file mode 100644 index 0000000..1dbb3aa --- /dev/null +++ b/tl/expanded-8-1/lesson-1/lesson.html @@ -0,0 +1,5 @@ +Bigyan ng kahulugan ang pahina gamit ang HTML

      Bigyan ng kahulugan ang pahina gamit ang HTML

      15-minutong sesyon: magbasa nang 3 minuto, mag-trace nang 3, mag-eksperimento nang 7, at sagutan ang check nang 2. Maglaan ng dagdag na oras kung kailangan.

      Inilalarawan ng HTML ang content. Nilalagyan ng pamagat ng heading ang section; pinagsasama ng list ang magkakaugnay na item. Buksan ang preview, palitan ang pamagat, at magdagdag ng ikatlong task. Ipaliwanag kung bakit mas makahulugan ang heading kaysa malaking bold na paragraph. Maglagay ng malinaw na pangunahing heading at tamang document language.

      <!doctype html>
      +<html lang="en"><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1">
      +<title>Agila study</title>
      +<main><h1>My study plan</h1><p>I will explain what I build.</p><ul><li>Read</li><li>Test</li></ul></main>
      +</html>

      Pagsasanay at ebidensiya

      Itala ang hula, aktuwal na resulta, at dahilan ng pagtugma o pagkakaiba. Sinusukat ng completion check ang pag-unawa; hinahasa ng practice task ang kasanayan.

      \ No newline at end of file diff --git a/tl/expanded-8-1/lesson-1/main.html b/tl/expanded-8-1/lesson-1/main.html new file mode 100644 index 0000000..b8b2f86 --- /dev/null +++ b/tl/expanded-8-1/lesson-1/main.html @@ -0,0 +1,5 @@ + + +Agila study +

      My study plan

      I will explain what I build.

      • Read
      • Test
      + \ No newline at end of file diff --git a/tl/expanded-8-1/lesson-2/lesson.html b/tl/expanded-8-1/lesson-2/lesson.html new file mode 100644 index 0000000..0409b02 --- /dev/null +++ b/tl/expanded-8-1/lesson-2/lesson.html @@ -0,0 +1,5 @@ +Mag-style nang malinaw pa ring mabasa

      Mag-style nang malinaw pa ring mabasa

      15-minutong sesyon: magbasa nang 3 minuto, mag-trace nang 3, mag-eksperimento nang 7, at sagutan ang check nang 2. Maglaan ng dagdag na oras kung kailangan.

      Pumipili ng element ang CSS selector at binabago ng declaration ang hitsura. Hulaan ang epekto ng padding sa loob ng card; ihambing sa margin sa labas ng border. Baguhin ang laki ng preview at panatilihing mababasa ang teksto nang walang horizontal scroll. Subukan ang keyboard focus. Huwag umasa sa kulay lang para sa pass o fail.

      <!doctype html>
      +<html lang="en"><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1">
      +<title>Agila study</title>
      +<style>body{font:1.1rem system-ui;margin:2rem;background:#f4f2fb;color:#21143e} main{max-width:40rem;margin:auto;padding:1.5rem;background:white;border:2px solid #56329a;border-radius:12px}button{padding:1rem}</style>
      +<main><h1>My study plan</h1><p>Resize the preview. Keep this text readable.</p><button>Start</button></main></html>

      Pagsasanay at ebidensiya

      Itala ang hula, aktuwal na resulta, at dahilan ng pagtugma o pagkakaiba. Sinusukat ng completion check ang pag-unawa; hinahasa ng practice task ang kasanayan.

      \ No newline at end of file diff --git a/tl/expanded-8-1/lesson-2/main.html b/tl/expanded-8-1/lesson-2/main.html new file mode 100644 index 0000000..de7c19f --- /dev/null +++ b/tl/expanded-8-1/lesson-2/main.html @@ -0,0 +1,5 @@ + + +Agila study + +

      My study plan

      Resize the preview. Keep this text readable.

      \ No newline at end of file diff --git a/tl/expanded-8-1/lesson-3/lesson.html b/tl/expanded-8-1/lesson-3/lesson.html new file mode 100644 index 0000000..f66db19 --- /dev/null +++ b/tl/expanded-8-1/lesson-3/lesson.html @@ -0,0 +1,5 @@ +Tumugon sa event

      Tumugon sa event

      15-minutong sesyon: magbasa nang 3 minuto, mag-trace nang 3, mag-eksperimento nang 7, at sagutan ang check nang 2. Maglaan ng dagdag na oras kung kailangan.

      Binabago ng JavaScript ang kilos. Naghihintay ng click ang listener, ina-update ang done, at ipinapakita ang bagong teksto. Hulaan ang display matapos ang tatlong click. Magdagdag ng reset na nag-a-update sa state at count. I-reload: nasa memory ng pahina ang counter, hindi saved account record.

      <!doctype html>
      +<html lang="en"><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1">
      +<title>Agila study</title>
      +<main><h1>Study counter</h1><button id="add">Complete one</button><p id="count" aria-live="polite">0</p></main>
      +<script>let done=0;document.getElementById("add").addEventListener("click",()=>{done+=1;document.getElementById("count").textContent=String(done);});</script></html>

      Pagsasanay at ebidensiya

      Itala ang hula, aktuwal na resulta, at dahilan ng pagtugma o pagkakaiba. Sinusukat ng completion check ang pag-unawa; hinahasa ng practice task ang kasanayan.

      \ No newline at end of file diff --git a/tl/expanded-8-1/lesson-3/main.html b/tl/expanded-8-1/lesson-3/main.html new file mode 100644 index 0000000..68b7607 --- /dev/null +++ b/tl/expanded-8-1/lesson-3/main.html @@ -0,0 +1,5 @@ + + +Agila study +

      Study counter

      0

      + \ No newline at end of file diff --git a/tl/expanded-8-2/README.md b/tl/expanded-8-2/README.md new file mode 100644 index 0000000..1b3de1d --- /dev/null +++ b/tl/expanded-8-2/README.md @@ -0,0 +1,9 @@ +# Web Development · 2 + +[Agila University track](https://edu.agilaos.com/track.php?track=8&lang=tl) + +Mga 15 minuto bawat aralin. Hulaan, patakbuhin, baguhin, ipaliwanag, at sagutan ang pagsusulit sa University. + +- [Lesson 1: I-validate ang input at lagyan ng label ang control](lesson-1/lesson.html) +- [Lesson 2: I-render ang data bilang teksto](lesson-2/lesson.html) +- [Lesson 3: Bumuo ng maliit na website na nasubukan](lesson-3/lesson.html) diff --git a/tl/expanded-8-2/lesson-1/lesson.html b/tl/expanded-8-2/lesson-1/lesson.html new file mode 100644 index 0000000..719cd8c --- /dev/null +++ b/tl/expanded-8-2/lesson-1/lesson.html @@ -0,0 +1,5 @@ +I-validate ang input at lagyan ng label ang control

      I-validate ang input at lagyan ng label ang control

      15-minutong sesyon: magbasa nang 3 minuto, mag-trace nang 3, mag-eksperimento nang 7, at sagutan ang check nang 2. Maglaan ng dagdag na oras kung kailangan.

      Ipinapaliwanag ng visible label ang input. Ikinokonekta ng for attribute ito sa id. Subukan ang empty, 0, 1, 60, 61, at 1.5. Nakakatulong ang HTML constraint ngunit dapat mag-validate muli ang server dahil nababago ang browser request. Walang data na isinusumite sa server ang preview na ito.

      <!doctype html>
      +<html lang="en"><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1">
      +<title>Agila study</title>
      +<main><h1>Study time</h1><label for="minutes">Minutes (1–60)</label><input id="minutes" type="number" min="1" max="60"><button id="check">Check</button><p id="result" role="status"></p></main>
      +<script>document.getElementById("check").onclick=()=>{const raw=document.getElementById("minutes").value;const n=Number(raw);document.getElementById("result").textContent=raw.trim()!==""&&Number.isInteger(n)&&n>=1&&n<=60?"Ready":"Use a whole number from 1 to 60";};</script></html>

      Pagsasanay at ebidensiya

      Itala ang hula, aktuwal na resulta, at dahilan ng pagtugma o pagkakaiba. Sinusukat ng completion check ang pag-unawa; hinahasa ng practice task ang kasanayan.

      \ No newline at end of file diff --git a/tl/expanded-8-2/lesson-1/main.html b/tl/expanded-8-2/lesson-1/main.html new file mode 100644 index 0000000..279f995 --- /dev/null +++ b/tl/expanded-8-2/lesson-1/main.html @@ -0,0 +1,5 @@ + + +Agila study +

      Study time

      + \ No newline at end of file diff --git a/tl/expanded-8-2/lesson-2/lesson.html b/tl/expanded-8-2/lesson-2/lesson.html new file mode 100644 index 0000000..6004fdd --- /dev/null +++ b/tl/expanded-8-2/lesson-2/lesson.html @@ -0,0 +1,5 @@ +I-render ang data bilang teksto

      I-render ang data bilang teksto

      15-minutong sesyon: magbasa nang 3 minuto, mag-trace nang 3, mag-eksperimento nang 7, at sagutan ang check nang 2. Maglaan ng dagdag na oras kung kailangan.

      Mukhang HTML ang ilang character sa ikatlong task. Ipinapakita ng textContent ang literal na teksto. Ini-interpret ng innerHTML ang markup at maaaring magdulot ng injection sa untrusted data. Magdagdag ng ampersand at angle brackets. Tiyaking literal ang ipinapakita.

      <!doctype html>
      +<html lang="en"><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1">
      +<title>Agila study</title>
      +<main><h1>Tasks</h1><ul id="tasks"></ul></main>
      +<script>const tasks=["Read","Test","<strong>Explain</strong>"];for(const text of tasks){const li=document.createElement("li");li.textContent=text;document.getElementById("tasks").append(li);}</script></html>

      Pagsasanay at ebidensiya

      Itala ang hula, aktuwal na resulta, at dahilan ng pagtugma o pagkakaiba. Sinusukat ng completion check ang pag-unawa; hinahasa ng practice task ang kasanayan.

      \ No newline at end of file diff --git a/tl/expanded-8-2/lesson-2/main.html b/tl/expanded-8-2/lesson-2/main.html new file mode 100644 index 0000000..106dc16 --- /dev/null +++ b/tl/expanded-8-2/lesson-2/main.html @@ -0,0 +1,5 @@ + + +Agila study +

      Tasks

        + \ No newline at end of file diff --git a/tl/expanded-8-2/lesson-3/lesson.html b/tl/expanded-8-2/lesson-3/lesson.html new file mode 100644 index 0000000..f19b9ca --- /dev/null +++ b/tl/expanded-8-2/lesson-3/lesson.html @@ -0,0 +1,5 @@ +Bumuo ng maliit na website na nasubukan

        Bumuo ng maliit na website na nasubukan

        15-minutong sesyon: magbasa nang 3 minuto, mag-trace nang 3, mag-eksperimento nang 7, at sagutan ang check nang 2. Maglaan ng dagdag na oras kung kailangan.

        Pagsamahin ang semantic page, responsive card, validated input, at counter bilang study planner. Function lang ng natitirang gawain ang tine-test ng sample. Magdagdag ng test para sa empty input at keyboard; sadyang sirain ang isang condition upang may mabigong test. I-save sa Forge. Kailangan ng host, domain, HTTPS, at rollback plan para mag-publish; workshop ang isolated preview.

        <!doctype html>
        +<html lang="en"><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1">
        +<title>Agila study</title>
        +<main><h1>Planner checks</h1><pre id="result"></pre></main>
        +<script>function remaining(total,done){return Math.max(0,total-done)}const cases=[[4,1,3],[4,4,0],[4,5,0],[0,0,0]];document.getElementById("result").textContent=cases.map(([t,d,want])=>`${t},${d}: ${remaining(t,d)===want?"PASS":"FAIL"}`).join("\n");</script></html>

        Pagsasanay at ebidensiya

        Itala ang hula, aktuwal na resulta, at dahilan ng pagtugma o pagkakaiba. Sinusukat ng completion check ang pag-unawa; hinahasa ng practice task ang kasanayan.

        \ No newline at end of file diff --git a/tl/expanded-8-2/lesson-3/main.html b/tl/expanded-8-2/lesson-3/main.html new file mode 100644 index 0000000..92c6980 --- /dev/null +++ b/tl/expanded-8-2/lesson-3/main.html @@ -0,0 +1,5 @@ + + +Agila study +

        Planner checks

        + \ No newline at end of file diff --git a/tl/objective-pascal-bridge-20261101/README.md b/tl/objective-pascal-bridge-20261101/README.md new file mode 100644 index 0000000..6540bb9 --- /dev/null +++ b/tl/objective-pascal-bridge-20261101/README.md @@ -0,0 +1,9 @@ +# Objective-Pascal interoperability + +[Agila University track](https://edu.agilaos.com/track.php?track=10&lang=tl) + +Mga 15 minuto bawat aralin. Hulaan, patakbuhin, baguhin, ipaliwanag, at sagutan ang pagsusulit sa University. + +- [Lesson 1: Sadyang paganahin ang Objective-Pascal](lesson-1/lesson.html) +- [Lesson 2: Message, selector, at runtime contract](lesson-2/lesson.html) +- [Lesson 3: Tapat na subukan ang platform bridge](lesson-3/lesson.html) diff --git a/tl/objective-pascal-bridge-20261101/lesson-1/lesson.html b/tl/objective-pascal-bridge-20261101/lesson-1/lesson.html new file mode 100644 index 0000000..2a545c5 --- /dev/null +++ b/tl/objective-pascal-bridge-20261101/lesson-1/lesson.html @@ -0,0 +1 @@ +Sadyang paganahin ang Objective-Pascal

        Sadyang paganahin ang Objective-Pascal

        15-minutong sesyon: magbasa nang 3 minuto, mag-trace nang 3, mag-eksperimento nang 7, at sagutan ang check nang 2. Maglaan ng dagdag na oras kung kailangan.

        Suporta ng Free Pascal sa Objective-C constructs ang Objective-Pascal, hindi ibang pangalan lang ng Object Pascal class. Pinapagana ng {$modeswitch objectivec1} at {$modeswitch objectivec2} ang feature. Nire-reset ng mas huling {$mode ...} ang mode switches kaya mahalaga ang ayos. Basahin ang Free Pascal reference at ipaliwanag ang source header. Object Pascal exercises ang tumatakbo sa Linux lab; wala rito ang Objective-Pascal Apple-framework runtime.

        Pagsasanay at ebidensiya

        Itala ang hula, aktuwal na resulta, at dahilan ng pagtugma o pagkakaiba. Sinusukat ng completion check ang pag-unawa; hinahasa ng practice task ang kasanayan.

        Sanggunian sa wika

        \ No newline at end of file diff --git a/tl/objective-pascal-bridge-20261101/lesson-2/lesson.html b/tl/objective-pascal-bridge-20261101/lesson-2/lesson.html new file mode 100644 index 0000000..a61768e --- /dev/null +++ b/tl/objective-pascal-bridge-20261101/lesson-2/lesson.html @@ -0,0 +1 @@ +Message, selector, at runtime contract

        Message, selector, at runtime contract

        15-minutong sesyon: magbasa nang 3 minuto, mag-trace nang 3, mag-eksperimento nang 7, at sagutan ang check nang 2. Maglaan ng dagdag na oras kung kailangan.

        Kailangan ng kasunduan sa class, selector, argument type, object lifetime, at runtime ABI para sa Objective-C interoperability. Hindi sapat ang magkahawig na syntax. Ihambing ang method sa Objective-C header at Pascal binding sa documented framework unit. Gumawa ng table ng receiver, selector, parameter, resulta, at ownership. Huwag mag-imbento ng binding batay sa pangalan lang. Gabay ito sa future Objective Ada design, hindi specification nito.

        Pagsasanay at ebidensiya

        Itala ang hula, aktuwal na resulta, at dahilan ng pagtugma o pagkakaiba. Sinusukat ng completion check ang pag-unawa; hinahasa ng practice task ang kasanayan.

        Sanggunian sa wika

        \ No newline at end of file diff --git a/tl/objective-pascal-bridge-20261101/lesson-3/lesson.html b/tl/objective-pascal-bridge-20261101/lesson-3/lesson.html new file mode 100644 index 0000000..a1ef53d --- /dev/null +++ b/tl/objective-pascal-bridge-20261101/lesson-3/lesson.html @@ -0,0 +1 @@ +Tapat na subukan ang platform bridge

        Tapat na subukan ang platform bridge

        15-minutong sesyon: magbasa nang 3 minuto, mag-trace nang 3, mag-eksperimento nang 7, at sagutan ang check nang 2. Maglaan ng dagdag na oras kung kailangan.

        Gumamit ng supported target compiler, framework header, at runtime; itala ang version. I-compile ang minimal binding, patakbuhin sa target, at suriin ang resulta at ownership. Hindi patunay ng Apple bridge ang Linux Object Pascal class test. Kung wala ang target, gawin ang design analysis at markahang untested ang execution. Ihiwalay ang portable core upang masubukan pa rin ang ibang bahagi.

        Pagsasanay at ebidensiya

        Itala ang hula, aktuwal na resulta, at dahilan ng pagtugma o pagkakaiba. Sinusukat ng completion check ang pag-unawa; hinahasa ng practice task ang kasanayan.

        Sanggunian sa wika

        \ No newline at end of file diff --git a/tl/objectivec-foundations-20261101/README.md b/tl/objectivec-foundations-20261101/README.md new file mode 100644 index 0000000..7a8d676 --- /dev/null +++ b/tl/objectivec-foundations-20261101/README.md @@ -0,0 +1,9 @@ +# Objective-C — mga unang hakbang + +[Agila University track](https://edu.agilaos.com/track.php?track=15&lang=tl) + +Mga 15 minuto bawat aralin. Hulaan, patakbuhin, baguhin, ipaliwanag, at sagutan ang pagsusulit sa University. + +- [Lesson 1: Ang unang programang kaya mong ipaliwanag](lesson-1/lesson.html) +- [Lesson 2: Mga value at desisyon](lesson-2/lesson.html) +- [Lesson 3: Function at malinaw na patakaran](lesson-3/lesson.html) diff --git a/tl/objectivec-foundations-20261101/lesson-1/lesson.html b/tl/objectivec-foundations-20261101/lesson-1/lesson.html new file mode 100644 index 0000000..7127291 --- /dev/null +++ b/tl/objectivec-foundations-20261101/lesson-1/lesson.html @@ -0,0 +1,12 @@ +Ang unang programang kaya mong ipaliwanag

        Ang unang programang kaya mong ipaliwanag

        15-minutong sesyon: magbasa nang 3 minuto, mag-trace nang 3, mag-eksperimento nang 7, at sagutan ang check nang 2. Maglaan ng dagdag na oras kung kailangan.

        Mga utos ang isang programa. Basahin mula sa entry point hanggang sa output statement. Data ang tekstong nasa panipi; utos ang output operation. Hulaan ang linyang lalabas bago patakbuhin. Baguhin lang ang mensahe, patakbuhin muli, at alisin ang isang kailangang bantas para basahin ang unang error. Ibalik ang gumaganang source.

        Nagpapadala ng message sa receiver ang square brackets: [plan completed]. Nagdedeklara ng method ang @interface; nagbibigay ng katawan ang @implementation. Explicit memory management ang GNUstep examples na ito, hindi Apple ARC.

        #import <Foundation/Foundation.h>
        +#include <stdio.h>
        +#include <assert.h>
        +
        +int main(void) {
        +    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
        +    NSString *message = @"Handa";
        +    puts([message UTF8String]);
        +    [pool drain];
        +    return 0;
        +}
        +

        Inaasahang resulta: Handa

        Pagsasanay at ebidensiya

        Itala ang hula, aktuwal na resulta, at dahilan ng pagtugma o pagkakaiba. Sinusukat ng completion check ang pag-unawa; hinahasa ng practice task ang kasanayan.

        Sanggunian sa wika

        \ No newline at end of file diff --git a/tl/objectivec-foundations-20261101/lesson-1/main.m b/tl/objectivec-foundations-20261101/lesson-1/main.m new file mode 100644 index 0000000..87fc48f --- /dev/null +++ b/tl/objectivec-foundations-20261101/lesson-1/main.m @@ -0,0 +1,11 @@ +#import +#include +#include + +int main(void) { + NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; + NSString *message = @"Handa"; + puts([message UTF8String]); + [pool drain]; + return 0; +} diff --git a/tl/objectivec-foundations-20261101/lesson-2/lesson.html b/tl/objectivec-foundations-20261101/lesson-2/lesson.html new file mode 100644 index 0000000..6261ade --- /dev/null +++ b/tl/objectivec-foundations-20261101/lesson-2/lesson.html @@ -0,0 +1,12 @@ +Mga value at desisyon

        Mga value at desisyon

        15-minutong sesyon: magbasa nang 3 minuto, mag-trace nang 3, mag-eksperimento nang 7, at sagutan ang check nang 2. Maglaan ng dagdag na oras kung kailangan.

        Pumipili ang desisyon kung aling statement ang tatakbo. Ang patakaran ay “handa sa 80 pataas.” Sundan ang 85, 79, 80, at 81 bago patakbuhin ang bawat kaso. Kasama ang 80 sa comparison. Maaaring tama sa 85 ngunit mali sa hangganan. Magdagdag ng hiwalay na check para tanggihan ang mas mababa sa 0 o lampas sa 100; magkaiba ang invalid at kailangang magsanay.

        Nagpapadala ng message sa receiver ang square brackets: [plan completed]. Nagdedeklara ng method ang @interface; nagbibigay ng katawan ang @implementation. Explicit memory management ang GNUstep examples na ito, hindi Apple ARC.

        #import <Foundation/Foundation.h>
        +#include <stdio.h>
        +#include <assert.h>
        +
        +int main(void) {
        +    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
        +    NSInteger score = 85;
        +    puts(score >= 80 ? "Handa" : "Magsanay");
        +    [pool drain];
        +    return 0;
        +}
        +

        Inaasahang resulta: Handa

        Pagsasanay at ebidensiya

        Itala ang hula, aktuwal na resulta, at dahilan ng pagtugma o pagkakaiba. Sinusukat ng completion check ang pag-unawa; hinahasa ng practice task ang kasanayan.

        Sanggunian sa wika

        \ No newline at end of file diff --git a/tl/objectivec-foundations-20261101/lesson-2/main.m b/tl/objectivec-foundations-20261101/lesson-2/main.m new file mode 100644 index 0000000..d35604d --- /dev/null +++ b/tl/objectivec-foundations-20261101/lesson-2/main.m @@ -0,0 +1,11 @@ +#import +#include +#include + +int main(void) { + NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; + NSInteger score = 85; + puts(score >= 80 ? "Handa" : "Magsanay"); + [pool drain]; + return 0; +} diff --git a/tl/objectivec-foundations-20261101/lesson-3/lesson.html b/tl/objectivec-foundations-20261101/lesson-3/lesson.html new file mode 100644 index 0000000..3a5fc7a --- /dev/null +++ b/tl/objectivec-foundations-20261101/lesson-3/lesson.html @@ -0,0 +1,11 @@ +Function at malinaw na patakaran

        Function at malinaw na patakaran

        15-minutong sesyon: magbasa nang 3 minuto, mag-trace nang 3, mag-eksperimento nang 7, at sagutan ang check nang 2. Maglaan ng dagdag na oras kung kailangan.

        Pinapangalanan ng function o subroutine ang calculation na magagamit muli. Tumatanggap ang patakaran ng nonnegative total at completed; zero ang sagot kapag umabot o lumampas ang completed sa total. Kung hindi, ibinabalik ang diperensiya. Sundan ang (4,1), (4,4), (4,5), at (0,0). Ihiwalay ang pagpi-print sa calculation. Ipaliwanag kung bakit wala sa saklaw ang negative input at magdisenyo ng pagtanggi bago tumanggap ng external input.

        Nagpapadala ng message sa receiver ang square brackets: [plan completed]. Nagdedeklara ng method ang @interface; nagbibigay ng katawan ang @implementation. Explicit memory management ang GNUstep examples na ito, hindi Apple ARC.

        #import <Foundation/Foundation.h>
        +#include <stdio.h>
        +#include <assert.h>
        +int remaining(int total, int done) { return done >= total ? 0 : total - done; }
        +int main(void) {
        +    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
        +    printf("%d\n", remaining(4,1));
        +    [pool drain];
        +    return 0;
        +}
        +

        Inaasahang resulta: 3

        Pagsasanay at ebidensiya

        Itala ang hula, aktuwal na resulta, at dahilan ng pagtugma o pagkakaiba. Sinusukat ng completion check ang pag-unawa; hinahasa ng practice task ang kasanayan.

        Sanggunian sa wika

        \ No newline at end of file diff --git a/tl/objectivec-foundations-20261101/lesson-3/main.m b/tl/objectivec-foundations-20261101/lesson-3/main.m new file mode 100644 index 0000000..980493c --- /dev/null +++ b/tl/objectivec-foundations-20261101/lesson-3/main.m @@ -0,0 +1,10 @@ +#import +#include +#include +int remaining(int total, int done) { return done >= total ? 0 : total - done; } +int main(void) { + NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; + printf("%d\n", remaining(4,1)); + [pool drain]; + return 0; +} diff --git a/tl/objectivec-practice-20261101/README.md b/tl/objectivec-practice-20261101/README.md new file mode 100644 index 0000000..7266a58 --- /dev/null +++ b/tl/objectivec-practice-20261101/README.md @@ -0,0 +1,9 @@ +# Objective-C — pagbuo at pagsubok + +[Agila University track](https://edu.agilaos.com/track.php?track=15&lang=tl) + +Mga 15 minuto bawat aralin. Hulaan, patakbuhin, baguhin, ipaliwanag, at sagutan ang pagsusulit sa University. + +- [Lesson 1: Collection at paulit-ulit na gawain](lesson-1/lesson.html) +- [Lesson 2: Isang mahalagang katangian ng wika](lesson-2/lesson.html) +- [Lesson 3: Bumuo, sirain, at subukan ang study planner](lesson-3/lesson.html) diff --git a/tl/objectivec-practice-20261101/lesson-1/lesson.html b/tl/objectivec-practice-20261101/lesson-1/lesson.html new file mode 100644 index 0000000..1c6d378 --- /dev/null +++ b/tl/objectivec-practice-20261101/lesson-1/lesson.html @@ -0,0 +1,15 @@ +Collection at paulit-ulit na gawain

        Collection at paulit-ulit na gawain

        15-minutong sesyon: magbasa nang 3 minuto, mag-trace nang 3, mag-eksperimento nang 7, at sagutan ang check nang 2. Maglaan ng dagdag na oras kung kailangan.

        Nag-iimbak ng magkakaugnay na value ang collection. Binibisita ng loop ang 1, 2, at 3; mula 0 ay nagiging 1, 3, at 6 ang total. Itala ang trace sa halip na manghula. Tukuyin ang una at huling valid na posisyon: maaaring 1-based ang Pascal array samantalang zero-based ang maraming ibang container. Magdagdag ng value at itama ang bounds. Ipaliwanag ang resulta para sa empty collection.

        Nagpapadala ng message sa receiver ang square brackets: [plan completed]. Nagdedeklara ng method ang @interface; nagbibigay ng katawan ang @implementation. Explicit memory management ang GNUstep examples na ito, hindi Apple ARC.

        #import <Foundation/Foundation.h>
        +#include <stdio.h>
        +#include <assert.h>
        +
        +int main(void) {
        +    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
        +    NSArray *minutes = [NSArray arrayWithObjects:
        +        [NSNumber numberWithInt:1], [NSNumber numberWithInt:2], [NSNumber numberWithInt:3], nil];
        +    int total = 0;
        +    for (NSNumber *value in minutes) total += [value intValue];
        +    printf("%d\n", total);
        +    [pool drain];
        +    return 0;
        +}
        +

        Inaasahang resulta: 6

        Pagsasanay at ebidensiya

        Itala ang hula, aktuwal na resulta, at dahilan ng pagtugma o pagkakaiba. Sinusukat ng completion check ang pag-unawa; hinahasa ng practice task ang kasanayan.

        Sanggunian sa wika

        \ No newline at end of file diff --git a/tl/objectivec-practice-20261101/lesson-1/main.m b/tl/objectivec-practice-20261101/lesson-1/main.m new file mode 100644 index 0000000..8d5b43c --- /dev/null +++ b/tl/objectivec-practice-20261101/lesson-1/main.m @@ -0,0 +1,14 @@ +#import +#include +#include + +int main(void) { + NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; + NSArray *minutes = [NSArray arrayWithObjects: + [NSNumber numberWithInt:1], [NSNumber numberWithInt:2], [NSNumber numberWithInt:3], nil]; + int total = 0; + for (NSNumber *value in minutes) total += [value intValue]; + printf("%d\n", total); + [pool drain]; + return 0; +} diff --git a/tl/objectivec-practice-20261101/lesson-2/lesson.html b/tl/objectivec-practice-20261101/lesson-2/lesson.html new file mode 100644 index 0000000..3c6ef40 --- /dev/null +++ b/tl/objectivec-practice-20261101/lesson-2/lesson.html @@ -0,0 +1,18 @@ +Isang mahalagang katangian ng wika

        Isang mahalagang katangian ng wika

        15-minutong sesyon: magbasa nang 3 minuto, mag-trace nang 3, mag-eksperimento nang 7, at sagutan ang check nang 2. Maglaan ng dagdag na oras kung kailangan.

        Gamitin ang tala sa wika sa ibaba upang ipaliwanag ang pagbabago ng state. Tukuyin kung ano ang kinokopya, pinagsasaluhan, maaaring mabigo, at inilalabas. Hindi lahat ng tanong ay naaangkop sa programang ito: sabihin kung alin. Gumawa ng isang pagbabago, hulaan ang epekto, at ihambing sa aktuwal na resulta. Maaaring iba ang patakaran ng pamilyar na operator sa ibang wika.

        Nagpapadala ng message sa receiver ang square brackets: [plan completed]. Nagdedeklara ng method ang @interface; nagbibigay ng katawan ang @implementation. Explicit memory management ang GNUstep examples na ito, hindi Apple ARC.

        #import <Foundation/Foundation.h>
        +#include <stdio.h>
        +#include <assert.h>
        +@interface StudyPlan : NSObject
        +- (int)completed;
        +@end
        +@implementation StudyPlan
        +- (int)completed { return 3; }
        +@end
        +int main(void) {
        +    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
        +    StudyPlan *plan = [[StudyPlan alloc] init];
        +    printf("%d\n", [plan completed]);
        +    [plan release];
        +    [pool drain];
        +    return 0;
        +}
        +

        Inaasahang resulta: 3

        Pagsasanay at ebidensiya

        Itala ang hula, aktuwal na resulta, at dahilan ng pagtugma o pagkakaiba. Sinusukat ng completion check ang pag-unawa; hinahasa ng practice task ang kasanayan.

        Sanggunian sa wika

        \ No newline at end of file diff --git a/tl/objectivec-practice-20261101/lesson-2/main.m b/tl/objectivec-practice-20261101/lesson-2/main.m new file mode 100644 index 0000000..0dde997 --- /dev/null +++ b/tl/objectivec-practice-20261101/lesson-2/main.m @@ -0,0 +1,17 @@ +#import +#include +#include +@interface StudyPlan : NSObject +- (int)completed; +@end +@implementation StudyPlan +- (int)completed { return 3; } +@end +int main(void) { + NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; + StudyPlan *plan = [[StudyPlan alloc] init]; + printf("%d\n", [plan completed]); + [plan release]; + [pool drain]; + return 0; +} diff --git a/tl/objectivec-practice-20261101/lesson-3/lesson.html b/tl/objectivec-practice-20261101/lesson-3/lesson.html new file mode 100644 index 0000000..b9283c4 --- /dev/null +++ b/tl/objectivec-practice-20261101/lesson-3/lesson.html @@ -0,0 +1,15 @@ +Bumuo, sirain, at subukan ang study planner

        Bumuo, sirain, at subukan ang study planner

        15-minutong sesyon: magbasa nang 3 minuto, mag-trace nang 3, mag-eksperimento nang 7, at sagutan ang check nang 2. Maglaan ng dagdag na oras kung kailangan.

        Inihahambing ng makabuluhang test ang resulta sa requirement. Hindi dapat maging negative ang natitirang gawain sa nonnegative input domain ng planner. Patakbuhin ang starter, sadyang alisin ang proteksiyon kapag lampas sa total ang completed, at tiyaking may check na mabibigo. Ibalik ito. Magdagdag ng dalawang study task, summary, at boundary cases. I-save ang source at ebidensiya sa Agila Forge. Ipaliwanag ang bawat linya, pati mungkahi ng AI.

        Nagpapadala ng message sa receiver ang square brackets: [plan completed]. Nagdedeklara ng method ang @interface; nagbibigay ng katawan ang @implementation. Explicit memory management ang GNUstep examples na ito, hindi Apple ARC.

        #import <Foundation/Foundation.h>
        +#include <stdio.h>
        +#include <assert.h>
        +int remaining(int total, int done) { return done >= total ? 0 : total - done; }
        +int main(void) {
        +    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
        +    assert(remaining(4,1)==3);
        +    assert(remaining(4,4)==0);
        +    assert(remaining(4,5)==0);
        +    assert(remaining(0,0)==0);
        +    puts("Pumasa");
        +    [pool drain];
        +    return 0;
        +}
        +

        Inaasahang resulta: Pumasa

        Pagsasanay at ebidensiya

        Itala ang hula, aktuwal na resulta, at dahilan ng pagtugma o pagkakaiba. Sinusukat ng completion check ang pag-unawa; hinahasa ng practice task ang kasanayan.

        Sanggunian sa wika

        \ No newline at end of file diff --git a/tl/objectivec-practice-20261101/lesson-3/main.m b/tl/objectivec-practice-20261101/lesson-3/main.m new file mode 100644 index 0000000..6d95de1 --- /dev/null +++ b/tl/objectivec-practice-20261101/lesson-3/main.m @@ -0,0 +1,14 @@ +#import +#include +#include +int remaining(int total, int done) { return done >= total ? 0 : total - done; } +int main(void) { + NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; + assert(remaining(4,1)==3); + assert(remaining(4,4)==0); + assert(remaining(4,5)==0); + assert(remaining(0,0)==0); + puts("Pumasa"); + [pool drain]; + return 0; +} diff --git a/tl/objectpascal-foundations-20261101/README.md b/tl/objectpascal-foundations-20261101/README.md new file mode 100644 index 0000000..5be91dd --- /dev/null +++ b/tl/objectpascal-foundations-20261101/README.md @@ -0,0 +1,9 @@ +# Object Pascal & Objective-Pascal — mga unang hakbang + +[Agila University track](https://edu.agilaos.com/track.php?track=10&lang=tl) + +Mga 15 minuto bawat aralin. Hulaan, patakbuhin, baguhin, ipaliwanag, at sagutan ang pagsusulit sa University. + +- [Lesson 1: Ang unang programang kaya mong ipaliwanag](lesson-1/lesson.html) +- [Lesson 2: Mga value at desisyon](lesson-2/lesson.html) +- [Lesson 3: Function at malinaw na patakaran](lesson-3/lesson.html) diff --git a/tl/objectpascal-foundations-20261101/lesson-1/lesson.html b/tl/objectpascal-foundations-20261101/lesson-1/lesson.html new file mode 100644 index 0000000..a921aff --- /dev/null +++ b/tl/objectpascal-foundations-20261101/lesson-1/lesson.html @@ -0,0 +1,8 @@ +Ang unang programang kaya mong ipaliwanag

        Ang unang programang kaya mong ipaliwanag

        15-minutong sesyon: magbasa nang 3 minuto, mag-trace nang 3, mag-eksperimento nang 7, at sagutan ang check nang 2. Maglaan ng dagdag na oras kung kailangan.

        Mga utos ang isang programa. Basahin mula sa entry point hanggang sa output statement. Data ang tekstong nasa panipi; utos ang output operation. Hulaan ang linyang lalabas bago patakbuhin. Baguhin lang ang mensahe, patakbuhin muli, at alisin ang isang kailangang bantas para basahin ang unang error. Ibalik ang gumaganang source.

        Magkaiba ang Object Pascal classes at Objective-Pascal. Unahin ang class, construction, at Free sa Linux lab. Nagdaragdag ng Objective-C interoperability ang Objective-Pascal sa pamamagitan ng mode switches; wala sa lab ang Apple runtime na iyon.

        program AgilaStudy;
        +{$mode objfpc}{$H+}{$assertions on}
        +
        +
        +begin
        +  writeln('Handa');
        +end.
        +

        Inaasahang resulta: Handa

        Pagsasanay at ebidensiya

        Itala ang hula, aktuwal na resulta, at dahilan ng pagtugma o pagkakaiba. Sinusukat ng completion check ang pag-unawa; hinahasa ng practice task ang kasanayan.

        Sanggunian sa wika

        \ No newline at end of file diff --git a/tl/objectpascal-foundations-20261101/lesson-1/main.pas b/tl/objectpascal-foundations-20261101/lesson-1/main.pas new file mode 100644 index 0000000..3ca01ef --- /dev/null +++ b/tl/objectpascal-foundations-20261101/lesson-1/main.pas @@ -0,0 +1,7 @@ +program AgilaStudy; +{$mode objfpc}{$H+}{$assertions on} + + +begin + writeln('Handa'); +end. diff --git a/tl/objectpascal-foundations-20261101/lesson-2/lesson.html b/tl/objectpascal-foundations-20261101/lesson-2/lesson.html new file mode 100644 index 0000000..6458d8d --- /dev/null +++ b/tl/objectpascal-foundations-20261101/lesson-2/lesson.html @@ -0,0 +1,9 @@ +Mga value at desisyon

        Mga value at desisyon

        15-minutong sesyon: magbasa nang 3 minuto, mag-trace nang 3, mag-eksperimento nang 7, at sagutan ang check nang 2. Maglaan ng dagdag na oras kung kailangan.

        Pumipili ang desisyon kung aling statement ang tatakbo. Ang patakaran ay “handa sa 80 pataas.” Sundan ang 85, 79, 80, at 81 bago patakbuhin ang bawat kaso. Kasama ang 80 sa comparison. Maaaring tama sa 85 ngunit mali sa hangganan. Magdagdag ng hiwalay na check para tanggihan ang mas mababa sa 0 o lampas sa 100; magkaiba ang invalid at kailangang magsanay.

        Magkaiba ang Object Pascal classes at Objective-Pascal. Unahin ang class, construction, at Free sa Linux lab. Nagdaragdag ng Objective-C interoperability ang Objective-Pascal sa pamamagitan ng mode switches; wala sa lab ang Apple runtime na iyon.

        program AgilaStudy;
        +{$mode objfpc}{$H+}{$assertions on}
        +
        +var Score: Integer;
        +begin
        +  Score := 85;
        +  if Score >= 80 then writeln('Handa') else writeln('Magsanay');
        +end.
        +

        Inaasahang resulta: Handa

        Pagsasanay at ebidensiya

        Itala ang hula, aktuwal na resulta, at dahilan ng pagtugma o pagkakaiba. Sinusukat ng completion check ang pag-unawa; hinahasa ng practice task ang kasanayan.

        Sanggunian sa wika

        \ No newline at end of file diff --git a/tl/objectpascal-foundations-20261101/lesson-2/main.pas b/tl/objectpascal-foundations-20261101/lesson-2/main.pas new file mode 100644 index 0000000..a94da45 --- /dev/null +++ b/tl/objectpascal-foundations-20261101/lesson-2/main.pas @@ -0,0 +1,8 @@ +program AgilaStudy; +{$mode objfpc}{$H+}{$assertions on} + +var Score: Integer; +begin + Score := 85; + if Score >= 80 then writeln('Handa') else writeln('Magsanay'); +end. diff --git a/tl/objectpascal-foundations-20261101/lesson-3/lesson.html b/tl/objectpascal-foundations-20261101/lesson-3/lesson.html new file mode 100644 index 0000000..c6ebdf0 --- /dev/null +++ b/tl/objectpascal-foundations-20261101/lesson-3/lesson.html @@ -0,0 +1,11 @@ +Function at malinaw na patakaran

        Function at malinaw na patakaran

        15-minutong sesyon: magbasa nang 3 minuto, mag-trace nang 3, mag-eksperimento nang 7, at sagutan ang check nang 2. Maglaan ng dagdag na oras kung kailangan.

        Pinapangalanan ng function o subroutine ang calculation na magagamit muli. Tumatanggap ang patakaran ng nonnegative total at completed; zero ang sagot kapag umabot o lumampas ang completed sa total. Kung hindi, ibinabalik ang diperensiya. Sundan ang (4,1), (4,4), (4,5), at (0,0). Ihiwalay ang pagpi-print sa calculation. Ipaliwanag kung bakit wala sa saklaw ang negative input at magdisenyo ng pagtanggi bago tumanggap ng external input.

        Magkaiba ang Object Pascal classes at Objective-Pascal. Unahin ang class, construction, at Free sa Linux lab. Nagdaragdag ng Objective-C interoperability ang Objective-Pascal sa pamamagitan ng mode switches; wala sa lab ang Apple runtime na iyon.

        program AgilaStudy;
        +{$mode objfpc}{$H+}{$assertions on}
        +function Remaining(Total, Done: Integer): Integer;
        +begin
        +  if Done >= Total then Result := 0 else Result := Total - Done;
        +end;
        +
        +begin
        +  writeln(Remaining(4, 1));
        +end.
        +

        Inaasahang resulta: 3

        Pagsasanay at ebidensiya

        Itala ang hula, aktuwal na resulta, at dahilan ng pagtugma o pagkakaiba. Sinusukat ng completion check ang pag-unawa; hinahasa ng practice task ang kasanayan.

        Sanggunian sa wika

        \ No newline at end of file diff --git a/tl/objectpascal-foundations-20261101/lesson-3/main.pas b/tl/objectpascal-foundations-20261101/lesson-3/main.pas new file mode 100644 index 0000000..ae28c77 --- /dev/null +++ b/tl/objectpascal-foundations-20261101/lesson-3/main.pas @@ -0,0 +1,10 @@ +program AgilaStudy; +{$mode objfpc}{$H+}{$assertions on} +function Remaining(Total, Done: Integer): Integer; +begin + if Done >= Total then Result := 0 else Result := Total - Done; +end; + +begin + writeln(Remaining(4, 1)); +end. diff --git a/tl/objectpascal-practice-20261101/README.md b/tl/objectpascal-practice-20261101/README.md new file mode 100644 index 0000000..24fa130 --- /dev/null +++ b/tl/objectpascal-practice-20261101/README.md @@ -0,0 +1,9 @@ +# Object Pascal & Objective-Pascal — pagbuo at pagsubok + +[Agila University track](https://edu.agilaos.com/track.php?track=10&lang=tl) + +Mga 15 minuto bawat aralin. Hulaan, patakbuhin, baguhin, ipaliwanag, at sagutan ang pagsusulit sa University. + +- [Lesson 1: Collection at paulit-ulit na gawain](lesson-1/lesson.html) +- [Lesson 2: Isang mahalagang katangian ng wika](lesson-2/lesson.html) +- [Lesson 3: Bumuo, sirain, at subukan ang study planner](lesson-3/lesson.html) diff --git a/tl/objectpascal-practice-20261101/lesson-1/lesson.html b/tl/objectpascal-practice-20261101/lesson-1/lesson.html new file mode 100644 index 0000000..3d9b1f2 --- /dev/null +++ b/tl/objectpascal-practice-20261101/lesson-1/lesson.html @@ -0,0 +1,11 @@ +Collection at paulit-ulit na gawain

        Collection at paulit-ulit na gawain

        15-minutong sesyon: magbasa nang 3 minuto, mag-trace nang 3, mag-eksperimento nang 7, at sagutan ang check nang 2. Maglaan ng dagdag na oras kung kailangan.

        Nag-iimbak ng magkakaugnay na value ang collection. Binibisita ng loop ang 1, 2, at 3; mula 0 ay nagiging 1, 3, at 6 ang total. Itala ang trace sa halip na manghula. Tukuyin ang una at huling valid na posisyon: maaaring 1-based ang Pascal array samantalang zero-based ang maraming ibang container. Magdagdag ng value at itama ang bounds. Ipaliwanag ang resulta para sa empty collection.

        Magkaiba ang Object Pascal classes at Objective-Pascal. Unahin ang class, construction, at Free sa Linux lab. Nagdaragdag ng Objective-C interoperability ang Objective-Pascal sa pamamagitan ng mode switches; wala sa lab ang Apple runtime na iyon.

        program AgilaStudy;
        +{$mode objfpc}{$H+}{$assertions on}
        +
        +var Minutes: array[1..3] of Integer; I, Total: Integer;
        +begin
        +  Minutes[1] := 1; Minutes[2] := 2; Minutes[3] := 3;
        +  Total := 0;
        +  for I := Low(Minutes) to High(Minutes) do Total := Total + Minutes[I];
        +  writeln(Total);
        +end.
        +

        Inaasahang resulta: 6

        Pagsasanay at ebidensiya

        Itala ang hula, aktuwal na resulta, at dahilan ng pagtugma o pagkakaiba. Sinusukat ng completion check ang pag-unawa; hinahasa ng practice task ang kasanayan.

        Sanggunian sa wika

        \ No newline at end of file diff --git a/tl/objectpascal-practice-20261101/lesson-1/main.pas b/tl/objectpascal-practice-20261101/lesson-1/main.pas new file mode 100644 index 0000000..f1c7b61 --- /dev/null +++ b/tl/objectpascal-practice-20261101/lesson-1/main.pas @@ -0,0 +1,10 @@ +program AgilaStudy; +{$mode objfpc}{$H+}{$assertions on} + +var Minutes: array[1..3] of Integer; I, Total: Integer; +begin + Minutes[1] := 1; Minutes[2] := 2; Minutes[3] := 3; + Total := 0; + for I := Low(Minutes) to High(Minutes) do Total := Total + Minutes[I]; + writeln(Total); +end. diff --git a/tl/objectpascal-practice-20261101/lesson-2/lesson.html b/tl/objectpascal-practice-20261101/lesson-2/lesson.html new file mode 100644 index 0000000..059ec11 --- /dev/null +++ b/tl/objectpascal-practice-20261101/lesson-2/lesson.html @@ -0,0 +1,17 @@ +Isang mahalagang katangian ng wika

        Isang mahalagang katangian ng wika

        15-minutong sesyon: magbasa nang 3 minuto, mag-trace nang 3, mag-eksperimento nang 7, at sagutan ang check nang 2. Maglaan ng dagdag na oras kung kailangan.

        Gamitin ang tala sa wika sa ibaba upang ipaliwanag ang pagbabago ng state. Tukuyin kung ano ang kinokopya, pinagsasaluhan, maaaring mabigo, at inilalabas. Hindi lahat ng tanong ay naaangkop sa programang ito: sabihin kung alin. Gumawa ng isang pagbabago, hulaan ang epekto, at ihambing sa aktuwal na resulta. Maaaring iba ang patakaran ng pamilyar na operator sa ibang wika.

        Magkaiba ang Object Pascal classes at Objective-Pascal. Unahin ang class, construction, at Free sa Linux lab. Nagdaragdag ng Objective-C interoperability ang Objective-Pascal sa pamamagitan ng mode switches; wala sa lab ang Apple runtime na iyon.

        program AgilaStudy;
        +{$mode objfpc}{$H+}{$assertions on}
        +
        +type TPlan = class
        +  public Done: Integer;
        +end;
        +var Plan: TPlan;
        +begin
        +  Plan := TPlan.Create;
        +  try
        +    Plan.Done := 3;
        +    writeln(Plan.Done);
        +  finally
        +    Plan.Free;
        +  end;
        +end.
        +

        Inaasahang resulta: 3

        Pagsasanay at ebidensiya

        Itala ang hula, aktuwal na resulta, at dahilan ng pagtugma o pagkakaiba. Sinusukat ng completion check ang pag-unawa; hinahasa ng practice task ang kasanayan.

        Sanggunian sa wika

        \ No newline at end of file diff --git a/tl/objectpascal-practice-20261101/lesson-2/main.pas b/tl/objectpascal-practice-20261101/lesson-2/main.pas new file mode 100644 index 0000000..f6eab3b --- /dev/null +++ b/tl/objectpascal-practice-20261101/lesson-2/main.pas @@ -0,0 +1,16 @@ +program AgilaStudy; +{$mode objfpc}{$H+}{$assertions on} + +type TPlan = class + public Done: Integer; +end; +var Plan: TPlan; +begin + Plan := TPlan.Create; + try + Plan.Done := 3; + writeln(Plan.Done); + finally + Plan.Free; + end; +end. diff --git a/tl/objectpascal-practice-20261101/lesson-3/lesson.html b/tl/objectpascal-practice-20261101/lesson-3/lesson.html new file mode 100644 index 0000000..1c8478c --- /dev/null +++ b/tl/objectpascal-practice-20261101/lesson-3/lesson.html @@ -0,0 +1,15 @@ +Bumuo, sirain, at subukan ang study planner

        Bumuo, sirain, at subukan ang study planner

        15-minutong sesyon: magbasa nang 3 minuto, mag-trace nang 3, mag-eksperimento nang 7, at sagutan ang check nang 2. Maglaan ng dagdag na oras kung kailangan.

        Inihahambing ng makabuluhang test ang resulta sa requirement. Hindi dapat maging negative ang natitirang gawain sa nonnegative input domain ng planner. Patakbuhin ang starter, sadyang alisin ang proteksiyon kapag lampas sa total ang completed, at tiyaking may check na mabibigo. Ibalik ito. Magdagdag ng dalawang study task, summary, at boundary cases. I-save ang source at ebidensiya sa Agila Forge. Ipaliwanag ang bawat linya, pati mungkahi ng AI.

        Magkaiba ang Object Pascal classes at Objective-Pascal. Unahin ang class, construction, at Free sa Linux lab. Nagdaragdag ng Objective-C interoperability ang Objective-Pascal sa pamamagitan ng mode switches; wala sa lab ang Apple runtime na iyon.

        program AgilaStudy;
        +{$mode objfpc}{$H+}{$assertions on}
        +function Remaining(Total, Done: Integer): Integer;
        +begin
        +  if Done >= Total then Result := 0 else Result := Total - Done;
        +end;
        +
        +begin
        +  Assert(Remaining(4,1)=3);
        +  Assert(Remaining(4,4)=0);
        +  Assert(Remaining(4,5)=0);
        +  Assert(Remaining(0,0)=0);
        +  writeln('Pumasa');
        +end.
        +

        Inaasahang resulta: Pumasa

        Pagsasanay at ebidensiya

        Itala ang hula, aktuwal na resulta, at dahilan ng pagtugma o pagkakaiba. Sinusukat ng completion check ang pag-unawa; hinahasa ng practice task ang kasanayan.

        Sanggunian sa wika

        \ No newline at end of file diff --git a/tl/objectpascal-practice-20261101/lesson-3/main.pas b/tl/objectpascal-practice-20261101/lesson-3/main.pas new file mode 100644 index 0000000..149250d --- /dev/null +++ b/tl/objectpascal-practice-20261101/lesson-3/main.pas @@ -0,0 +1,14 @@ +program AgilaStudy; +{$mode objfpc}{$H+}{$assertions on} +function Remaining(Total, Done: Integer): Integer; +begin + if Done >= Total then Result := 0 else Result := Total - Done; +end; + +begin + Assert(Remaining(4,1)=3); + Assert(Remaining(4,4)=0); + Assert(Remaining(4,5)=0); + Assert(Remaining(0,0)=0); + writeln('Pumasa'); +end. diff --git a/tl/pascal-foundations-20261101/README.md b/tl/pascal-foundations-20261101/README.md new file mode 100644 index 0000000..377a4c1 --- /dev/null +++ b/tl/pascal-foundations-20261101/README.md @@ -0,0 +1,9 @@ +# Pascal — mga unang hakbang + +[Agila University track](https://edu.agilaos.com/track.php?track=9&lang=tl) + +Mga 15 minuto bawat aralin. Hulaan, patakbuhin, baguhin, ipaliwanag, at sagutan ang pagsusulit sa University. + +- [Lesson 1: Ang unang programang kaya mong ipaliwanag](lesson-1/lesson.html) +- [Lesson 2: Mga value at desisyon](lesson-2/lesson.html) +- [Lesson 3: Function at malinaw na patakaran](lesson-3/lesson.html) diff --git a/tl/pascal-foundations-20261101/lesson-1/lesson.html b/tl/pascal-foundations-20261101/lesson-1/lesson.html new file mode 100644 index 0000000..814152f --- /dev/null +++ b/tl/pascal-foundations-20261101/lesson-1/lesson.html @@ -0,0 +1,8 @@ +Ang unang programang kaya mong ipaliwanag

        Ang unang programang kaya mong ipaliwanag

        15-minutong sesyon: magbasa nang 3 minuto, mag-trace nang 3, mag-eksperimento nang 7, at sagutan ang check nang 2. Maglaan ng dagdag na oras kung kailangan.

        Mga utos ang isang programa. Basahin mula sa entry point hanggang sa output statement. Data ang tekstong nasa panipi; utos ang output operation. Hulaan ang linyang lalabas bago patakbuhin. Baguhin lang ang mensahe, patakbuhin muli, at alisin ang isang kailangang bantas para basahin ang unang error. Ibalik ang gumaganang source.

        Nakapaloob sa begin at end ang mga statement. Assignment ang :=; comparison ang =. end. ang pagtatapos ng programa. Free Pascal sa Object Pascal mode ang gamit, mula sa procedural constructs.

        program AgilaStudy;
        +{$mode objfpc}{$H+}{$assertions on}
        +
        +
        +begin
        +  writeln('Handa');
        +end.
        +

        Inaasahang resulta: Handa

        Pagsasanay at ebidensiya

        Itala ang hula, aktuwal na resulta, at dahilan ng pagtugma o pagkakaiba. Sinusukat ng completion check ang pag-unawa; hinahasa ng practice task ang kasanayan.

        Sanggunian sa wika

        \ No newline at end of file diff --git a/tl/pascal-foundations-20261101/lesson-1/main.pas b/tl/pascal-foundations-20261101/lesson-1/main.pas new file mode 100644 index 0000000..3ca01ef --- /dev/null +++ b/tl/pascal-foundations-20261101/lesson-1/main.pas @@ -0,0 +1,7 @@ +program AgilaStudy; +{$mode objfpc}{$H+}{$assertions on} + + +begin + writeln('Handa'); +end. diff --git a/tl/pascal-foundations-20261101/lesson-2/lesson.html b/tl/pascal-foundations-20261101/lesson-2/lesson.html new file mode 100644 index 0000000..41f2577 --- /dev/null +++ b/tl/pascal-foundations-20261101/lesson-2/lesson.html @@ -0,0 +1,9 @@ +Mga value at desisyon

        Mga value at desisyon

        15-minutong sesyon: magbasa nang 3 minuto, mag-trace nang 3, mag-eksperimento nang 7, at sagutan ang check nang 2. Maglaan ng dagdag na oras kung kailangan.

        Pumipili ang desisyon kung aling statement ang tatakbo. Ang patakaran ay “handa sa 80 pataas.” Sundan ang 85, 79, 80, at 81 bago patakbuhin ang bawat kaso. Kasama ang 80 sa comparison. Maaaring tama sa 85 ngunit mali sa hangganan. Magdagdag ng hiwalay na check para tanggihan ang mas mababa sa 0 o lampas sa 100; magkaiba ang invalid at kailangang magsanay.

        Nakapaloob sa begin at end ang mga statement. Assignment ang :=; comparison ang =. end. ang pagtatapos ng programa. Free Pascal sa Object Pascal mode ang gamit, mula sa procedural constructs.

        program AgilaStudy;
        +{$mode objfpc}{$H+}{$assertions on}
        +
        +var Score: Integer;
        +begin
        +  Score := 85;
        +  if Score >= 80 then writeln('Handa') else writeln('Magsanay');
        +end.
        +

        Inaasahang resulta: Handa

        Pagsasanay at ebidensiya

        Itala ang hula, aktuwal na resulta, at dahilan ng pagtugma o pagkakaiba. Sinusukat ng completion check ang pag-unawa; hinahasa ng practice task ang kasanayan.

        Sanggunian sa wika

        \ No newline at end of file diff --git a/tl/pascal-foundations-20261101/lesson-2/main.pas b/tl/pascal-foundations-20261101/lesson-2/main.pas new file mode 100644 index 0000000..a94da45 --- /dev/null +++ b/tl/pascal-foundations-20261101/lesson-2/main.pas @@ -0,0 +1,8 @@ +program AgilaStudy; +{$mode objfpc}{$H+}{$assertions on} + +var Score: Integer; +begin + Score := 85; + if Score >= 80 then writeln('Handa') else writeln('Magsanay'); +end. diff --git a/tl/pascal-foundations-20261101/lesson-3/lesson.html b/tl/pascal-foundations-20261101/lesson-3/lesson.html new file mode 100644 index 0000000..94add83 --- /dev/null +++ b/tl/pascal-foundations-20261101/lesson-3/lesson.html @@ -0,0 +1,11 @@ +Function at malinaw na patakaran

        Function at malinaw na patakaran

        15-minutong sesyon: magbasa nang 3 minuto, mag-trace nang 3, mag-eksperimento nang 7, at sagutan ang check nang 2. Maglaan ng dagdag na oras kung kailangan.

        Pinapangalanan ng function o subroutine ang calculation na magagamit muli. Tumatanggap ang patakaran ng nonnegative total at completed; zero ang sagot kapag umabot o lumampas ang completed sa total. Kung hindi, ibinabalik ang diperensiya. Sundan ang (4,1), (4,4), (4,5), at (0,0). Ihiwalay ang pagpi-print sa calculation. Ipaliwanag kung bakit wala sa saklaw ang negative input at magdisenyo ng pagtanggi bago tumanggap ng external input.

        Nakapaloob sa begin at end ang mga statement. Assignment ang :=; comparison ang =. end. ang pagtatapos ng programa. Free Pascal sa Object Pascal mode ang gamit, mula sa procedural constructs.

        program AgilaStudy;
        +{$mode objfpc}{$H+}{$assertions on}
        +function Remaining(Total, Done: Integer): Integer;
        +begin
        +  if Done >= Total then Result := 0 else Result := Total - Done;
        +end;
        +
        +begin
        +  writeln(Remaining(4, 1));
        +end.
        +

        Inaasahang resulta: 3

        Pagsasanay at ebidensiya

        Itala ang hula, aktuwal na resulta, at dahilan ng pagtugma o pagkakaiba. Sinusukat ng completion check ang pag-unawa; hinahasa ng practice task ang kasanayan.

        Sanggunian sa wika

        \ No newline at end of file diff --git a/tl/pascal-foundations-20261101/lesson-3/main.pas b/tl/pascal-foundations-20261101/lesson-3/main.pas new file mode 100644 index 0000000..ae28c77 --- /dev/null +++ b/tl/pascal-foundations-20261101/lesson-3/main.pas @@ -0,0 +1,10 @@ +program AgilaStudy; +{$mode objfpc}{$H+}{$assertions on} +function Remaining(Total, Done: Integer): Integer; +begin + if Done >= Total then Result := 0 else Result := Total - Done; +end; + +begin + writeln(Remaining(4, 1)); +end. diff --git a/tl/pascal-practice-20261101/README.md b/tl/pascal-practice-20261101/README.md new file mode 100644 index 0000000..6eb8300 --- /dev/null +++ b/tl/pascal-practice-20261101/README.md @@ -0,0 +1,9 @@ +# Pascal — pagbuo at pagsubok + +[Agila University track](https://edu.agilaos.com/track.php?track=9&lang=tl) + +Mga 15 minuto bawat aralin. Hulaan, patakbuhin, baguhin, ipaliwanag, at sagutan ang pagsusulit sa University. + +- [Lesson 1: Collection at paulit-ulit na gawain](lesson-1/lesson.html) +- [Lesson 2: Isang mahalagang katangian ng wika](lesson-2/lesson.html) +- [Lesson 3: Bumuo, sirain, at subukan ang study planner](lesson-3/lesson.html) diff --git a/tl/pascal-practice-20261101/lesson-1/lesson.html b/tl/pascal-practice-20261101/lesson-1/lesson.html new file mode 100644 index 0000000..fc5a279 --- /dev/null +++ b/tl/pascal-practice-20261101/lesson-1/lesson.html @@ -0,0 +1,11 @@ +Collection at paulit-ulit na gawain

        Collection at paulit-ulit na gawain

        15-minutong sesyon: magbasa nang 3 minuto, mag-trace nang 3, mag-eksperimento nang 7, at sagutan ang check nang 2. Maglaan ng dagdag na oras kung kailangan.

        Nag-iimbak ng magkakaugnay na value ang collection. Binibisita ng loop ang 1, 2, at 3; mula 0 ay nagiging 1, 3, at 6 ang total. Itala ang trace sa halip na manghula. Tukuyin ang una at huling valid na posisyon: maaaring 1-based ang Pascal array samantalang zero-based ang maraming ibang container. Magdagdag ng value at itama ang bounds. Ipaliwanag ang resulta para sa empty collection.

        Nakapaloob sa begin at end ang mga statement. Assignment ang :=; comparison ang =. end. ang pagtatapos ng programa. Free Pascal sa Object Pascal mode ang gamit, mula sa procedural constructs.

        program AgilaStudy;
        +{$mode objfpc}{$H+}{$assertions on}
        +
        +var Minutes: array[1..3] of Integer; I, Total: Integer;
        +begin
        +  Minutes[1] := 1; Minutes[2] := 2; Minutes[3] := 3;
        +  Total := 0;
        +  for I := Low(Minutes) to High(Minutes) do Total := Total + Minutes[I];
        +  writeln(Total);
        +end.
        +

        Inaasahang resulta: 6

        Pagsasanay at ebidensiya

        Itala ang hula, aktuwal na resulta, at dahilan ng pagtugma o pagkakaiba. Sinusukat ng completion check ang pag-unawa; hinahasa ng practice task ang kasanayan.

        Sanggunian sa wika

        \ No newline at end of file diff --git a/tl/pascal-practice-20261101/lesson-1/main.pas b/tl/pascal-practice-20261101/lesson-1/main.pas new file mode 100644 index 0000000..f1c7b61 --- /dev/null +++ b/tl/pascal-practice-20261101/lesson-1/main.pas @@ -0,0 +1,10 @@ +program AgilaStudy; +{$mode objfpc}{$H+}{$assertions on} + +var Minutes: array[1..3] of Integer; I, Total: Integer; +begin + Minutes[1] := 1; Minutes[2] := 2; Minutes[3] := 3; + Total := 0; + for I := Low(Minutes) to High(Minutes) do Total := Total + Minutes[I]; + writeln(Total); +end. diff --git a/tl/pascal-practice-20261101/lesson-2/lesson.html b/tl/pascal-practice-20261101/lesson-2/lesson.html new file mode 100644 index 0000000..493be4b --- /dev/null +++ b/tl/pascal-practice-20261101/lesson-2/lesson.html @@ -0,0 +1,10 @@ +Isang mahalagang katangian ng wika

        Isang mahalagang katangian ng wika

        15-minutong sesyon: magbasa nang 3 minuto, mag-trace nang 3, mag-eksperimento nang 7, at sagutan ang check nang 2. Maglaan ng dagdag na oras kung kailangan.

        Gamitin ang tala sa wika sa ibaba upang ipaliwanag ang pagbabago ng state. Tukuyin kung ano ang kinokopya, pinagsasaluhan, maaaring mabigo, at inilalabas. Hindi lahat ng tanong ay naaangkop sa programang ito: sabihin kung alin. Gumawa ng isang pagbabago, hulaan ang epekto, at ihambing sa aktuwal na resulta. Maaaring iba ang patakaran ng pamilyar na operator sa ibang wika.

        Nakapaloob sa begin at end ang mga statement. Assignment ang :=; comparison ang =. end. ang pagtatapos ng programa. Free Pascal sa Object Pascal mode ang gamit, mula sa procedural constructs.

        program AgilaStudy;
        +{$mode objfpc}{$H+}{$assertions on}
        +
        +type StudyPlan = record Total, Done: Integer; end;
        +var Plan: StudyPlan;
        +begin
        +  Plan.Total := 4; Plan.Done := 1;
        +  writeln(Plan.Total - Plan.Done);
        +end.
        +

        Inaasahang resulta: 3

        Pagsasanay at ebidensiya

        Itala ang hula, aktuwal na resulta, at dahilan ng pagtugma o pagkakaiba. Sinusukat ng completion check ang pag-unawa; hinahasa ng practice task ang kasanayan.

        Sanggunian sa wika

        \ No newline at end of file diff --git a/tl/pascal-practice-20261101/lesson-2/main.pas b/tl/pascal-practice-20261101/lesson-2/main.pas new file mode 100644 index 0000000..9f80b6c --- /dev/null +++ b/tl/pascal-practice-20261101/lesson-2/main.pas @@ -0,0 +1,9 @@ +program AgilaStudy; +{$mode objfpc}{$H+}{$assertions on} + +type StudyPlan = record Total, Done: Integer; end; +var Plan: StudyPlan; +begin + Plan.Total := 4; Plan.Done := 1; + writeln(Plan.Total - Plan.Done); +end. diff --git a/tl/pascal-practice-20261101/lesson-3/lesson.html b/tl/pascal-practice-20261101/lesson-3/lesson.html new file mode 100644 index 0000000..becd131 --- /dev/null +++ b/tl/pascal-practice-20261101/lesson-3/lesson.html @@ -0,0 +1,15 @@ +Bumuo, sirain, at subukan ang study planner

        Bumuo, sirain, at subukan ang study planner

        15-minutong sesyon: magbasa nang 3 minuto, mag-trace nang 3, mag-eksperimento nang 7, at sagutan ang check nang 2. Maglaan ng dagdag na oras kung kailangan.

        Inihahambing ng makabuluhang test ang resulta sa requirement. Hindi dapat maging negative ang natitirang gawain sa nonnegative input domain ng planner. Patakbuhin ang starter, sadyang alisin ang proteksiyon kapag lampas sa total ang completed, at tiyaking may check na mabibigo. Ibalik ito. Magdagdag ng dalawang study task, summary, at boundary cases. I-save ang source at ebidensiya sa Agila Forge. Ipaliwanag ang bawat linya, pati mungkahi ng AI.

        Nakapaloob sa begin at end ang mga statement. Assignment ang :=; comparison ang =. end. ang pagtatapos ng programa. Free Pascal sa Object Pascal mode ang gamit, mula sa procedural constructs.

        program AgilaStudy;
        +{$mode objfpc}{$H+}{$assertions on}
        +function Remaining(Total, Done: Integer): Integer;
        +begin
        +  if Done >= Total then Result := 0 else Result := Total - Done;
        +end;
        +
        +begin
        +  Assert(Remaining(4,1)=3);
        +  Assert(Remaining(4,4)=0);
        +  Assert(Remaining(4,5)=0);
        +  Assert(Remaining(0,0)=0);
        +  writeln('Pumasa');
        +end.
        +

        Inaasahang resulta: Pumasa

        Pagsasanay at ebidensiya

        Itala ang hula, aktuwal na resulta, at dahilan ng pagtugma o pagkakaiba. Sinusukat ng completion check ang pag-unawa; hinahasa ng practice task ang kasanayan.

        Sanggunian sa wika

        \ No newline at end of file diff --git a/tl/pascal-practice-20261101/lesson-3/main.pas b/tl/pascal-practice-20261101/lesson-3/main.pas new file mode 100644 index 0000000..149250d --- /dev/null +++ b/tl/pascal-practice-20261101/lesson-3/main.pas @@ -0,0 +1,14 @@ +program AgilaStudy; +{$mode objfpc}{$H+}{$assertions on} +function Remaining(Total, Done: Integer): Integer; +begin + if Done >= Total then Result := 0 else Result := Total - Done; +end; + +begin + Assert(Remaining(4,1)=3); + Assert(Remaining(4,4)=0); + Assert(Remaining(4,5)=0); + Assert(Remaining(0,0)=0); + writeln('Pumasa'); +end. diff --git a/tl/python-foundations-20261101/README.md b/tl/python-foundations-20261101/README.md new file mode 100644 index 0000000..ae9363b --- /dev/null +++ b/tl/python-foundations-20261101/README.md @@ -0,0 +1,9 @@ +# Python — mga unang hakbang + +[Agila University track](https://edu.agilaos.com/track.php?track=18&lang=tl) + +Mga 15 minuto bawat aralin. Hulaan, patakbuhin, baguhin, ipaliwanag, at sagutan ang pagsusulit sa University. + +- [Lesson 1: Ang unang programang kaya mong ipaliwanag](lesson-1/lesson.html) +- [Lesson 2: Mga value at desisyon](lesson-2/lesson.html) +- [Lesson 3: Function at malinaw na patakaran](lesson-3/lesson.html) diff --git a/tl/python-foundations-20261101/lesson-1/lesson.html b/tl/python-foundations-20261101/lesson-1/lesson.html new file mode 100644 index 0000000..b988a95 --- /dev/null +++ b/tl/python-foundations-20261101/lesson-1/lesson.html @@ -0,0 +1,2 @@ +Ang unang programang kaya mong ipaliwanag

        Ang unang programang kaya mong ipaliwanag

        15-minutong sesyon: magbasa nang 3 minuto, mag-trace nang 3, mag-eksperimento nang 7, at sagutan ang check nang 2. Maglaan ng dagdag na oras kung kailangan.

        Mga utos ang isang programa. Basahin mula sa entry point hanggang sa output statement. Data ang tekstong nasa panipi; utos ang output operation. Hulaan ang linyang lalabas bago patakbuhin. Baguhin lang ang mensahe, patakbuhin muli, at alisin ang isang kailangang bantas para basahin ang unang error. Ibalik ang gumaganang source.

        Pinagpapangkat ng indentation ang mga statement. Gumagawa ng function ang def at nagbibigay ng resulta ang return. Iniuugnay ng dictionary ang key sa value. Standard library ang nasa isolated Python 3 lab; hindi nag-i-install ng package ang student code.

        print("Handa")
        +

        Inaasahang resulta: Handa

        Pagsasanay at ebidensiya

        Itala ang hula, aktuwal na resulta, at dahilan ng pagtugma o pagkakaiba. Sinusukat ng completion check ang pag-unawa; hinahasa ng practice task ang kasanayan.

        Sanggunian sa wika

        \ No newline at end of file diff --git a/tl/python-foundations-20261101/lesson-1/main.py b/tl/python-foundations-20261101/lesson-1/main.py new file mode 100644 index 0000000..a03cafd --- /dev/null +++ b/tl/python-foundations-20261101/lesson-1/main.py @@ -0,0 +1 @@ +print("Handa") diff --git a/tl/python-foundations-20261101/lesson-2/lesson.html b/tl/python-foundations-20261101/lesson-2/lesson.html new file mode 100644 index 0000000..3147082 --- /dev/null +++ b/tl/python-foundations-20261101/lesson-2/lesson.html @@ -0,0 +1,6 @@ +Mga value at desisyon

        Mga value at desisyon

        15-minutong sesyon: magbasa nang 3 minuto, mag-trace nang 3, mag-eksperimento nang 7, at sagutan ang check nang 2. Maglaan ng dagdag na oras kung kailangan.

        Pumipili ang desisyon kung aling statement ang tatakbo. Ang patakaran ay “handa sa 80 pataas.” Sundan ang 85, 79, 80, at 81 bago patakbuhin ang bawat kaso. Kasama ang 80 sa comparison. Maaaring tama sa 85 ngunit mali sa hangganan. Magdagdag ng hiwalay na check para tanggihan ang mas mababa sa 0 o lampas sa 100; magkaiba ang invalid at kailangang magsanay.

        Pinagpapangkat ng indentation ang mga statement. Gumagawa ng function ang def at nagbibigay ng resulta ang return. Iniuugnay ng dictionary ang key sa value. Standard library ang nasa isolated Python 3 lab; hindi nag-i-install ng package ang student code.

        score = 85
        +if score >= 80:
        +    print("Handa")
        +else:
        +    print("Magsanay")
        +

        Inaasahang resulta: Handa

        Pagsasanay at ebidensiya

        Itala ang hula, aktuwal na resulta, at dahilan ng pagtugma o pagkakaiba. Sinusukat ng completion check ang pag-unawa; hinahasa ng practice task ang kasanayan.

        Sanggunian sa wika

        \ No newline at end of file diff --git a/tl/python-foundations-20261101/lesson-2/main.py b/tl/python-foundations-20261101/lesson-2/main.py new file mode 100644 index 0000000..0dd8a6b --- /dev/null +++ b/tl/python-foundations-20261101/lesson-2/main.py @@ -0,0 +1,5 @@ +score = 85 +if score >= 80: + print("Handa") +else: + print("Magsanay") diff --git a/tl/python-foundations-20261101/lesson-3/lesson.html b/tl/python-foundations-20261101/lesson-3/lesson.html new file mode 100644 index 0000000..dc8afbc --- /dev/null +++ b/tl/python-foundations-20261101/lesson-3/lesson.html @@ -0,0 +1,5 @@ +Function at malinaw na patakaran

        Function at malinaw na patakaran

        15-minutong sesyon: magbasa nang 3 minuto, mag-trace nang 3, mag-eksperimento nang 7, at sagutan ang check nang 2. Maglaan ng dagdag na oras kung kailangan.

        Pinapangalanan ng function o subroutine ang calculation na magagamit muli. Tumatanggap ang patakaran ng nonnegative total at completed; zero ang sagot kapag umabot o lumampas ang completed sa total. Kung hindi, ibinabalik ang diperensiya. Sundan ang (4,1), (4,4), (4,5), at (0,0). Ihiwalay ang pagpi-print sa calculation. Ipaliwanag kung bakit wala sa saklaw ang negative input at magdisenyo ng pagtanggi bago tumanggap ng external input.

        Pinagpapangkat ng indentation ang mga statement. Gumagawa ng function ang def at nagbibigay ng resulta ang return. Iniuugnay ng dictionary ang key sa value. Standard library ang nasa isolated Python 3 lab; hindi nag-i-install ng package ang student code.

        def remaining(total, done):
        +    return max(0, total - done)
        +
        +print(remaining(4, 1))
        +

        Inaasahang resulta: 3

        Pagsasanay at ebidensiya

        Itala ang hula, aktuwal na resulta, at dahilan ng pagtugma o pagkakaiba. Sinusukat ng completion check ang pag-unawa; hinahasa ng practice task ang kasanayan.

        Sanggunian sa wika

        \ No newline at end of file diff --git a/tl/python-foundations-20261101/lesson-3/main.py b/tl/python-foundations-20261101/lesson-3/main.py new file mode 100644 index 0000000..54abaa7 --- /dev/null +++ b/tl/python-foundations-20261101/lesson-3/main.py @@ -0,0 +1,4 @@ +def remaining(total, done): + return max(0, total - done) + +print(remaining(4, 1)) diff --git a/tl/python-practice-20261101/README.md b/tl/python-practice-20261101/README.md new file mode 100644 index 0000000..ca38236 --- /dev/null +++ b/tl/python-practice-20261101/README.md @@ -0,0 +1,9 @@ +# Python — pagbuo at pagsubok + +[Agila University track](https://edu.agilaos.com/track.php?track=18&lang=tl) + +Mga 15 minuto bawat aralin. Hulaan, patakbuhin, baguhin, ipaliwanag, at sagutan ang pagsusulit sa University. + +- [Lesson 1: Collection at paulit-ulit na gawain](lesson-1/lesson.html) +- [Lesson 2: Isang mahalagang katangian ng wika](lesson-2/lesson.html) +- [Lesson 3: Bumuo, sirain, at subukan ang study planner](lesson-3/lesson.html) diff --git a/tl/python-practice-20261101/lesson-1/lesson.html b/tl/python-practice-20261101/lesson-1/lesson.html new file mode 100644 index 0000000..1f6d81e --- /dev/null +++ b/tl/python-practice-20261101/lesson-1/lesson.html @@ -0,0 +1,6 @@ +Collection at paulit-ulit na gawain

        Collection at paulit-ulit na gawain

        15-minutong sesyon: magbasa nang 3 minuto, mag-trace nang 3, mag-eksperimento nang 7, at sagutan ang check nang 2. Maglaan ng dagdag na oras kung kailangan.

        Nag-iimbak ng magkakaugnay na value ang collection. Binibisita ng loop ang 1, 2, at 3; mula 0 ay nagiging 1, 3, at 6 ang total. Itala ang trace sa halip na manghula. Tukuyin ang una at huling valid na posisyon: maaaring 1-based ang Pascal array samantalang zero-based ang maraming ibang container. Magdagdag ng value at itama ang bounds. Ipaliwanag ang resulta para sa empty collection.

        Pinagpapangkat ng indentation ang mga statement. Gumagawa ng function ang def at nagbibigay ng resulta ang return. Iniuugnay ng dictionary ang key sa value. Standard library ang nasa isolated Python 3 lab; hindi nag-i-install ng package ang student code.

        minutes = [1, 2, 3]
        +total = 0
        +for value in minutes:
        +    total += value
        +print(total)
        +

        Inaasahang resulta: 6

        Pagsasanay at ebidensiya

        Itala ang hula, aktuwal na resulta, at dahilan ng pagtugma o pagkakaiba. Sinusukat ng completion check ang pag-unawa; hinahasa ng practice task ang kasanayan.

        Sanggunian sa wika

        \ No newline at end of file diff --git a/tl/python-practice-20261101/lesson-1/main.py b/tl/python-practice-20261101/lesson-1/main.py new file mode 100644 index 0000000..d801278 --- /dev/null +++ b/tl/python-practice-20261101/lesson-1/main.py @@ -0,0 +1,5 @@ +minutes = [1, 2, 3] +total = 0 +for value in minutes: + total += value +print(total) diff --git a/tl/python-practice-20261101/lesson-2/lesson.html b/tl/python-practice-20261101/lesson-2/lesson.html new file mode 100644 index 0000000..0bbfc4b --- /dev/null +++ b/tl/python-practice-20261101/lesson-2/lesson.html @@ -0,0 +1,3 @@ +Isang mahalagang katangian ng wika

        Isang mahalagang katangian ng wika

        15-minutong sesyon: magbasa nang 3 minuto, mag-trace nang 3, mag-eksperimento nang 7, at sagutan ang check nang 2. Maglaan ng dagdag na oras kung kailangan.

        Gamitin ang tala sa wika sa ibaba upang ipaliwanag ang pagbabago ng state. Tukuyin kung ano ang kinokopya, pinagsasaluhan, maaaring mabigo, at inilalabas. Hindi lahat ng tanong ay naaangkop sa programang ito: sabihin kung alin. Gumawa ng isang pagbabago, hulaan ang epekto, at ihambing sa aktuwal na resulta. Maaaring iba ang patakaran ng pamilyar na operator sa ibang wika.

        Pinagpapangkat ng indentation ang mga statement. Gumagawa ng function ang def at nagbibigay ng resulta ang return. Iniuugnay ng dictionary ang key sa value. Standard library ang nasa isolated Python 3 lab; hindi nag-i-install ng package ang student code.

        plan = {"total": 4, "done": 1}
        +print(plan["total"] - plan["done"])
        +

        Inaasahang resulta: 3

        Pagsasanay at ebidensiya

        Itala ang hula, aktuwal na resulta, at dahilan ng pagtugma o pagkakaiba. Sinusukat ng completion check ang pag-unawa; hinahasa ng practice task ang kasanayan.

        Sanggunian sa wika

        \ No newline at end of file diff --git a/tl/python-practice-20261101/lesson-2/main.py b/tl/python-practice-20261101/lesson-2/main.py new file mode 100644 index 0000000..f1ef02c --- /dev/null +++ b/tl/python-practice-20261101/lesson-2/main.py @@ -0,0 +1,2 @@ +plan = {"total": 4, "done": 1} +print(plan["total"] - plan["done"]) diff --git a/tl/python-practice-20261101/lesson-3/lesson.html b/tl/python-practice-20261101/lesson-3/lesson.html new file mode 100644 index 0000000..72e2b9e --- /dev/null +++ b/tl/python-practice-20261101/lesson-3/lesson.html @@ -0,0 +1,9 @@ +Bumuo, sirain, at subukan ang study planner

        Bumuo, sirain, at subukan ang study planner

        15-minutong sesyon: magbasa nang 3 minuto, mag-trace nang 3, mag-eksperimento nang 7, at sagutan ang check nang 2. Maglaan ng dagdag na oras kung kailangan.

        Inihahambing ng makabuluhang test ang resulta sa requirement. Hindi dapat maging negative ang natitirang gawain sa nonnegative input domain ng planner. Patakbuhin ang starter, sadyang alisin ang proteksiyon kapag lampas sa total ang completed, at tiyaking may check na mabibigo. Ibalik ito. Magdagdag ng dalawang study task, summary, at boundary cases. I-save ang source at ebidensiya sa Agila Forge. Ipaliwanag ang bawat linya, pati mungkahi ng AI.

        Pinagpapangkat ng indentation ang mga statement. Gumagawa ng function ang def at nagbibigay ng resulta ang return. Iniuugnay ng dictionary ang key sa value. Standard library ang nasa isolated Python 3 lab; hindi nag-i-install ng package ang student code.

        def remaining(total, done):
        +    return max(0, total - done)
        +
        +assert remaining(4,1) == 3
        +assert remaining(4,4) == 0
        +assert remaining(4,5) == 0
        +assert remaining(0,0) == 0
        +print("Pumasa")
        +

        Inaasahang resulta: Pumasa

        Pagsasanay at ebidensiya

        Itala ang hula, aktuwal na resulta, at dahilan ng pagtugma o pagkakaiba. Sinusukat ng completion check ang pag-unawa; hinahasa ng practice task ang kasanayan.

        Sanggunian sa wika

        \ No newline at end of file diff --git a/tl/python-practice-20261101/lesson-3/main.py b/tl/python-practice-20261101/lesson-3/main.py new file mode 100644 index 0000000..9fd843b --- /dev/null +++ b/tl/python-practice-20261101/lesson-3/main.py @@ -0,0 +1,8 @@ +def remaining(total, done): + return max(0, total - done) + +assert remaining(4,1) == 3 +assert remaining(4,4) == 0 +assert remaining(4,5) == 0 +assert remaining(0,0) == 0 +print("Pumasa") diff --git a/tl/ruby-foundations-20261101/README.md b/tl/ruby-foundations-20261101/README.md new file mode 100644 index 0000000..4936e8d --- /dev/null +++ b/tl/ruby-foundations-20261101/README.md @@ -0,0 +1,9 @@ +# Ruby — mga unang hakbang + +[Agila University track](https://edu.agilaos.com/track.php?track=19&lang=tl) + +Mga 15 minuto bawat aralin. Hulaan, patakbuhin, baguhin, ipaliwanag, at sagutan ang pagsusulit sa University. + +- [Lesson 1: Ang unang programang kaya mong ipaliwanag](lesson-1/lesson.html) +- [Lesson 2: Mga value at desisyon](lesson-2/lesson.html) +- [Lesson 3: Function at malinaw na patakaran](lesson-3/lesson.html) diff --git a/tl/ruby-foundations-20261101/lesson-1/lesson.html b/tl/ruby-foundations-20261101/lesson-1/lesson.html new file mode 100644 index 0000000..8a9a5d3 --- /dev/null +++ b/tl/ruby-foundations-20261101/lesson-1/lesson.html @@ -0,0 +1,2 @@ +Ang unang programang kaya mong ipaliwanag

        Ang unang programang kaya mong ipaliwanag

        15-minutong sesyon: magbasa nang 3 minuto, mag-trace nang 3, mag-eksperimento nang 7, at sagutan ang check nang 2. Maglaan ng dagdag na oras kung kailangan.

        Mga utos ang isang programa. Basahin mula sa entry point hanggang sa output statement. Data ang tekstong nasa panipi; utos ang output operation. Hulaan ang linyang lalabas bago patakbuhin. Baguhin lang ang mensahe, patakbuhin muli, at alisin ang isang kailangang bantas para basahin ang unang error. Ibalik ang gumaganang source.

        Nagpi-print ng linya ang puts. Nililimitahan ng def at end ang method. Nagbibigay ng value sa block ang each. Pag-aari ng object ang variable na nagsisimula sa @; maaaring magkaiba ang value sa dalawang object.

        puts "Handa"
        +

        Inaasahang resulta: Handa

        Pagsasanay at ebidensiya

        Itala ang hula, aktuwal na resulta, at dahilan ng pagtugma o pagkakaiba. Sinusukat ng completion check ang pag-unawa; hinahasa ng practice task ang kasanayan.

        Sanggunian sa wika

        \ No newline at end of file diff --git a/tl/ruby-foundations-20261101/lesson-1/main.rb b/tl/ruby-foundations-20261101/lesson-1/main.rb new file mode 100644 index 0000000..5592419 --- /dev/null +++ b/tl/ruby-foundations-20261101/lesson-1/main.rb @@ -0,0 +1 @@ +puts "Handa" diff --git a/tl/ruby-foundations-20261101/lesson-2/lesson.html b/tl/ruby-foundations-20261101/lesson-2/lesson.html new file mode 100644 index 0000000..8cf0958 --- /dev/null +++ b/tl/ruby-foundations-20261101/lesson-2/lesson.html @@ -0,0 +1,7 @@ +Mga value at desisyon

        Mga value at desisyon

        15-minutong sesyon: magbasa nang 3 minuto, mag-trace nang 3, mag-eksperimento nang 7, at sagutan ang check nang 2. Maglaan ng dagdag na oras kung kailangan.

        Pumipili ang desisyon kung aling statement ang tatakbo. Ang patakaran ay “handa sa 80 pataas.” Sundan ang 85, 79, 80, at 81 bago patakbuhin ang bawat kaso. Kasama ang 80 sa comparison. Maaaring tama sa 85 ngunit mali sa hangganan. Magdagdag ng hiwalay na check para tanggihan ang mas mababa sa 0 o lampas sa 100; magkaiba ang invalid at kailangang magsanay.

        Nagpi-print ng linya ang puts. Nililimitahan ng def at end ang method. Nagbibigay ng value sa block ang each. Pag-aari ng object ang variable na nagsisimula sa @; maaaring magkaiba ang value sa dalawang object.

        score = 85
        +if score >= 80
        +  puts "Handa"
        +else
        +  puts "Magsanay"
        +end
        +

        Inaasahang resulta: Handa

        Pagsasanay at ebidensiya

        Itala ang hula, aktuwal na resulta, at dahilan ng pagtugma o pagkakaiba. Sinusukat ng completion check ang pag-unawa; hinahasa ng practice task ang kasanayan.

        Sanggunian sa wika

        \ No newline at end of file diff --git a/tl/ruby-foundations-20261101/lesson-2/main.rb b/tl/ruby-foundations-20261101/lesson-2/main.rb new file mode 100644 index 0000000..3104194 --- /dev/null +++ b/tl/ruby-foundations-20261101/lesson-2/main.rb @@ -0,0 +1,6 @@ +score = 85 +if score >= 80 + puts "Handa" +else + puts "Magsanay" +end diff --git a/tl/ruby-foundations-20261101/lesson-3/lesson.html b/tl/ruby-foundations-20261101/lesson-3/lesson.html new file mode 100644 index 0000000..2eaff8a --- /dev/null +++ b/tl/ruby-foundations-20261101/lesson-3/lesson.html @@ -0,0 +1,6 @@ +Function at malinaw na patakaran

        Function at malinaw na patakaran

        15-minutong sesyon: magbasa nang 3 minuto, mag-trace nang 3, mag-eksperimento nang 7, at sagutan ang check nang 2. Maglaan ng dagdag na oras kung kailangan.

        Pinapangalanan ng function o subroutine ang calculation na magagamit muli. Tumatanggap ang patakaran ng nonnegative total at completed; zero ang sagot kapag umabot o lumampas ang completed sa total. Kung hindi, ibinabalik ang diperensiya. Sundan ang (4,1), (4,4), (4,5), at (0,0). Ihiwalay ang pagpi-print sa calculation. Ipaliwanag kung bakit wala sa saklaw ang negative input at magdisenyo ng pagtanggi bago tumanggap ng external input.

        Nagpi-print ng linya ang puts. Nililimitahan ng def at end ang method. Nagbibigay ng value sa block ang each. Pag-aari ng object ang variable na nagsisimula sa @; maaaring magkaiba ang value sa dalawang object.

        def remaining(total, done)
        +  [0, total - done].max
        +end
        +
        +puts remaining(4, 1)
        +

        Inaasahang resulta: 3

        Pagsasanay at ebidensiya

        Itala ang hula, aktuwal na resulta, at dahilan ng pagtugma o pagkakaiba. Sinusukat ng completion check ang pag-unawa; hinahasa ng practice task ang kasanayan.

        Sanggunian sa wika

        \ No newline at end of file diff --git a/tl/ruby-foundations-20261101/lesson-3/main.rb b/tl/ruby-foundations-20261101/lesson-3/main.rb new file mode 100644 index 0000000..75643fd --- /dev/null +++ b/tl/ruby-foundations-20261101/lesson-3/main.rb @@ -0,0 +1,5 @@ +def remaining(total, done) + [0, total - done].max +end + +puts remaining(4, 1) diff --git a/tl/ruby-practice-20261101/README.md b/tl/ruby-practice-20261101/README.md new file mode 100644 index 0000000..a3b5d45 --- /dev/null +++ b/tl/ruby-practice-20261101/README.md @@ -0,0 +1,9 @@ +# Ruby — pagbuo at pagsubok + +[Agila University track](https://edu.agilaos.com/track.php?track=19&lang=tl) + +Mga 15 minuto bawat aralin. Hulaan, patakbuhin, baguhin, ipaliwanag, at sagutan ang pagsusulit sa University. + +- [Lesson 1: Collection at paulit-ulit na gawain](lesson-1/lesson.html) +- [Lesson 2: Isang mahalagang katangian ng wika](lesson-2/lesson.html) +- [Lesson 3: Bumuo, sirain, at subukan ang study planner](lesson-3/lesson.html) diff --git a/tl/ruby-practice-20261101/lesson-1/lesson.html b/tl/ruby-practice-20261101/lesson-1/lesson.html new file mode 100644 index 0000000..1bc2e47 --- /dev/null +++ b/tl/ruby-practice-20261101/lesson-1/lesson.html @@ -0,0 +1,5 @@ +Collection at paulit-ulit na gawain

        Collection at paulit-ulit na gawain

        15-minutong sesyon: magbasa nang 3 minuto, mag-trace nang 3, mag-eksperimento nang 7, at sagutan ang check nang 2. Maglaan ng dagdag na oras kung kailangan.

        Nag-iimbak ng magkakaugnay na value ang collection. Binibisita ng loop ang 1, 2, at 3; mula 0 ay nagiging 1, 3, at 6 ang total. Itala ang trace sa halip na manghula. Tukuyin ang una at huling valid na posisyon: maaaring 1-based ang Pascal array samantalang zero-based ang maraming ibang container. Magdagdag ng value at itama ang bounds. Ipaliwanag ang resulta para sa empty collection.

        Nagpi-print ng linya ang puts. Nililimitahan ng def at end ang method. Nagbibigay ng value sa block ang each. Pag-aari ng object ang variable na nagsisimula sa @; maaaring magkaiba ang value sa dalawang object.

        minutes = [1, 2, 3]
        +total = 0
        +minutes.each { |value| total += value }
        +puts total
        +

        Inaasahang resulta: 6

        Pagsasanay at ebidensiya

        Itala ang hula, aktuwal na resulta, at dahilan ng pagtugma o pagkakaiba. Sinusukat ng completion check ang pag-unawa; hinahasa ng practice task ang kasanayan.

        Sanggunian sa wika

        \ No newline at end of file diff --git a/tl/ruby-practice-20261101/lesson-1/main.rb b/tl/ruby-practice-20261101/lesson-1/main.rb new file mode 100644 index 0000000..b0cfae2 --- /dev/null +++ b/tl/ruby-practice-20261101/lesson-1/main.rb @@ -0,0 +1,4 @@ +minutes = [1, 2, 3] +total = 0 +minutes.each { |value| total += value } +puts total diff --git a/tl/ruby-practice-20261101/lesson-2/lesson.html b/tl/ruby-practice-20261101/lesson-2/lesson.html new file mode 100644 index 0000000..97e6217 --- /dev/null +++ b/tl/ruby-practice-20261101/lesson-2/lesson.html @@ -0,0 +1,10 @@ +Isang mahalagang katangian ng wika

        Isang mahalagang katangian ng wika

        15-minutong sesyon: magbasa nang 3 minuto, mag-trace nang 3, mag-eksperimento nang 7, at sagutan ang check nang 2. Maglaan ng dagdag na oras kung kailangan.

        Gamitin ang tala sa wika sa ibaba upang ipaliwanag ang pagbabago ng state. Tukuyin kung ano ang kinokopya, pinagsasaluhan, maaaring mabigo, at inilalabas. Hindi lahat ng tanong ay naaangkop sa programang ito: sabihin kung alin. Gumawa ng isang pagbabago, hulaan ang epekto, at ihambing sa aktuwal na resulta. Maaaring iba ang patakaran ng pamilyar na operator sa ibang wika.

        Nagpi-print ng linya ang puts. Nililimitahan ng def at end ang method. Nagbibigay ng value sa block ang each. Pag-aari ng object ang variable na nagsisimula sa @; maaaring magkaiba ang value sa dalawang object.

        class StudyPlan
        +  def initialize(done)
        +    @done = done
        +  end
        +  def completed
        +    @done
        +  end
        +end
        +puts StudyPlan.new(3).completed
        +

        Inaasahang resulta: 3

        Pagsasanay at ebidensiya

        Itala ang hula, aktuwal na resulta, at dahilan ng pagtugma o pagkakaiba. Sinusukat ng completion check ang pag-unawa; hinahasa ng practice task ang kasanayan.

        Sanggunian sa wika

        \ No newline at end of file diff --git a/tl/ruby-practice-20261101/lesson-2/main.rb b/tl/ruby-practice-20261101/lesson-2/main.rb new file mode 100644 index 0000000..2bdb21d --- /dev/null +++ b/tl/ruby-practice-20261101/lesson-2/main.rb @@ -0,0 +1,9 @@ +class StudyPlan + def initialize(done) + @done = done + end + def completed + @done + end +end +puts StudyPlan.new(3).completed diff --git a/tl/ruby-practice-20261101/lesson-3/lesson.html b/tl/ruby-practice-20261101/lesson-3/lesson.html new file mode 100644 index 0000000..e93ea0b --- /dev/null +++ b/tl/ruby-practice-20261101/lesson-3/lesson.html @@ -0,0 +1,7 @@ +Bumuo, sirain, at subukan ang study planner

        Bumuo, sirain, at subukan ang study planner

        15-minutong sesyon: magbasa nang 3 minuto, mag-trace nang 3, mag-eksperimento nang 7, at sagutan ang check nang 2. Maglaan ng dagdag na oras kung kailangan.

        Inihahambing ng makabuluhang test ang resulta sa requirement. Hindi dapat maging negative ang natitirang gawain sa nonnegative input domain ng planner. Patakbuhin ang starter, sadyang alisin ang proteksiyon kapag lampas sa total ang completed, at tiyaking may check na mabibigo. Ibalik ito. Magdagdag ng dalawang study task, summary, at boundary cases. I-save ang source at ebidensiya sa Agila Forge. Ipaliwanag ang bawat linya, pati mungkahi ng AI.

        Nagpi-print ng linya ang puts. Nililimitahan ng def at end ang method. Nagbibigay ng value sa block ang each. Pag-aari ng object ang variable na nagsisimula sa @; maaaring magkaiba ang value sa dalawang object.

        def remaining(total, done)
        +  [0, total - done].max
        +end
        +
        +raise "Test failed" unless remaining(4,1) == 3 && remaining(4,4) == 0 && remaining(4,5) == 0 && remaining(0,0) == 0
        +puts "Pumasa"
        +

        Inaasahang resulta: Pumasa

        Pagsasanay at ebidensiya

        Itala ang hula, aktuwal na resulta, at dahilan ng pagtugma o pagkakaiba. Sinusukat ng completion check ang pag-unawa; hinahasa ng practice task ang kasanayan.

        Sanggunian sa wika

        \ No newline at end of file diff --git a/tl/ruby-practice-20261101/lesson-3/main.rb b/tl/ruby-practice-20261101/lesson-3/main.rb new file mode 100644 index 0000000..51d89ae --- /dev/null +++ b/tl/ruby-practice-20261101/lesson-3/main.rb @@ -0,0 +1,6 @@ +def remaining(total, done) + [0, total - done].max +end + +raise "Test failed" unless remaining(4,1) == 3 && remaining(4,4) == 0 && remaining(4,5) == 0 && remaining(0,0) == 0 +puts "Pumasa" diff --git a/tl/rust-foundations-20261101/README.md b/tl/rust-foundations-20261101/README.md new file mode 100644 index 0000000..66eb89e --- /dev/null +++ b/tl/rust-foundations-20261101/README.md @@ -0,0 +1,9 @@ +# Rust — mga unang hakbang + +[Agila University track](https://edu.agilaos.com/track.php?track=11&lang=tl) + +Mga 15 minuto bawat aralin. Hulaan, patakbuhin, baguhin, ipaliwanag, at sagutan ang pagsusulit sa University. + +- [Lesson 1: Ang unang programang kaya mong ipaliwanag](lesson-1/lesson.html) +- [Lesson 2: Mga value at desisyon](lesson-2/lesson.html) +- [Lesson 3: Function at malinaw na patakaran](lesson-3/lesson.html) diff --git a/tl/rust-foundations-20261101/lesson-1/lesson.html b/tl/rust-foundations-20261101/lesson-1/lesson.html new file mode 100644 index 0000000..536bf46 --- /dev/null +++ b/tl/rust-foundations-20261101/lesson-1/lesson.html @@ -0,0 +1,5 @@ +Ang unang programang kaya mong ipaliwanag

        Ang unang programang kaya mong ipaliwanag

        15-minutong sesyon: magbasa nang 3 minuto, mag-trace nang 3, mag-eksperimento nang 7, at sagutan ang check nang 2. Maglaan ng dagdag na oras kung kailangan.

        Mga utos ang isang programa. Basahin mula sa entry point hanggang sa output statement. Data ang tekstong nasa panipi; utos ang output operation. Hulaan ang linyang lalabas bago patakbuhin. Baguhin lang ang mensahe, patakbuhin muli, at alisin ang isang kailangang bantas para basahin ang unang error. Ibalik ang gumaganang source.

        Ang fn main ang entry point. Gumagawa ng binding ang let; pinapayagan ng mut ang reassignment. Macro ang println!. Nanghihiram ang reference na &plan sa halip na ilipat ang ownership.

        
        +fn main() {
        +    println!("Handa");
        +}
        +

        Inaasahang resulta: Handa

        Pagsasanay at ebidensiya

        Itala ang hula, aktuwal na resulta, at dahilan ng pagtugma o pagkakaiba. Sinusukat ng completion check ang pag-unawa; hinahasa ng practice task ang kasanayan.

        Sanggunian sa wika

        \ No newline at end of file diff --git a/tl/rust-foundations-20261101/lesson-1/main.rs b/tl/rust-foundations-20261101/lesson-1/main.rs new file mode 100644 index 0000000..2b9da66 --- /dev/null +++ b/tl/rust-foundations-20261101/lesson-1/main.rs @@ -0,0 +1,4 @@ + +fn main() { + println!("Handa"); +} diff --git a/tl/rust-foundations-20261101/lesson-2/lesson.html b/tl/rust-foundations-20261101/lesson-2/lesson.html new file mode 100644 index 0000000..0848ca3 --- /dev/null +++ b/tl/rust-foundations-20261101/lesson-2/lesson.html @@ -0,0 +1,6 @@ +Mga value at desisyon

        Mga value at desisyon

        15-minutong sesyon: magbasa nang 3 minuto, mag-trace nang 3, mag-eksperimento nang 7, at sagutan ang check nang 2. Maglaan ng dagdag na oras kung kailangan.

        Pumipili ang desisyon kung aling statement ang tatakbo. Ang patakaran ay “handa sa 80 pataas.” Sundan ang 85, 79, 80, at 81 bago patakbuhin ang bawat kaso. Kasama ang 80 sa comparison. Maaaring tama sa 85 ngunit mali sa hangganan. Magdagdag ng hiwalay na check para tanggihan ang mas mababa sa 0 o lampas sa 100; magkaiba ang invalid at kailangang magsanay.

        Ang fn main ang entry point. Gumagawa ng binding ang let; pinapayagan ng mut ang reassignment. Macro ang println!. Nanghihiram ang reference na &plan sa halip na ilipat ang ownership.

        
        +fn main() {
        +    let score = 85;
        +    if score >= 80 { println!("Handa"); } else { println!("Magsanay"); }
        +}
        +

        Inaasahang resulta: Handa

        Pagsasanay at ebidensiya

        Itala ang hula, aktuwal na resulta, at dahilan ng pagtugma o pagkakaiba. Sinusukat ng completion check ang pag-unawa; hinahasa ng practice task ang kasanayan.

        Sanggunian sa wika

        \ No newline at end of file diff --git a/tl/rust-foundations-20261101/lesson-2/main.rs b/tl/rust-foundations-20261101/lesson-2/main.rs new file mode 100644 index 0000000..d68f2b1 --- /dev/null +++ b/tl/rust-foundations-20261101/lesson-2/main.rs @@ -0,0 +1,5 @@ + +fn main() { + let score = 85; + if score >= 80 { println!("Handa"); } else { println!("Magsanay"); } +} diff --git a/tl/rust-foundations-20261101/lesson-3/lesson.html b/tl/rust-foundations-20261101/lesson-3/lesson.html new file mode 100644 index 0000000..92ff5b7 --- /dev/null +++ b/tl/rust-foundations-20261101/lesson-3/lesson.html @@ -0,0 +1,5 @@ +Function at malinaw na patakaran

        Function at malinaw na patakaran

        15-minutong sesyon: magbasa nang 3 minuto, mag-trace nang 3, mag-eksperimento nang 7, at sagutan ang check nang 2. Maglaan ng dagdag na oras kung kailangan.

        Pinapangalanan ng function o subroutine ang calculation na magagamit muli. Tumatanggap ang patakaran ng nonnegative total at completed; zero ang sagot kapag umabot o lumampas ang completed sa total. Kung hindi, ibinabalik ang diperensiya. Sundan ang (4,1), (4,4), (4,5), at (0,0). Ihiwalay ang pagpi-print sa calculation. Ipaliwanag kung bakit wala sa saklaw ang negative input at magdisenyo ng pagtanggi bago tumanggap ng external input.

        Ang fn main ang entry point. Gumagawa ng binding ang let; pinapayagan ng mut ang reassignment. Macro ang println!. Nanghihiram ang reference na &plan sa halip na ilipat ang ownership.

        fn remaining(total: u32, done: u32) -> u32 { total.saturating_sub(done) }
        +fn main() {
        +    println!("{}", remaining(4, 1));
        +}
        +

        Inaasahang resulta: 3

        Pagsasanay at ebidensiya

        Itala ang hula, aktuwal na resulta, at dahilan ng pagtugma o pagkakaiba. Sinusukat ng completion check ang pag-unawa; hinahasa ng practice task ang kasanayan.

        Sanggunian sa wika

        \ No newline at end of file diff --git a/tl/rust-foundations-20261101/lesson-3/main.rs b/tl/rust-foundations-20261101/lesson-3/main.rs new file mode 100644 index 0000000..87fa80b --- /dev/null +++ b/tl/rust-foundations-20261101/lesson-3/main.rs @@ -0,0 +1,4 @@ +fn remaining(total: u32, done: u32) -> u32 { total.saturating_sub(done) } +fn main() { + println!("{}", remaining(4, 1)); +} diff --git a/tl/rust-practice-20261101/README.md b/tl/rust-practice-20261101/README.md new file mode 100644 index 0000000..96e2a14 --- /dev/null +++ b/tl/rust-practice-20261101/README.md @@ -0,0 +1,9 @@ +# Rust — pagbuo at pagsubok + +[Agila University track](https://edu.agilaos.com/track.php?track=11&lang=tl) + +Mga 15 minuto bawat aralin. Hulaan, patakbuhin, baguhin, ipaliwanag, at sagutan ang pagsusulit sa University. + +- [Lesson 1: Collection at paulit-ulit na gawain](lesson-1/lesson.html) +- [Lesson 2: Isang mahalagang katangian ng wika](lesson-2/lesson.html) +- [Lesson 3: Bumuo, sirain, at subukan ang study planner](lesson-3/lesson.html) diff --git a/tl/rust-practice-20261101/lesson-1/lesson.html b/tl/rust-practice-20261101/lesson-1/lesson.html new file mode 100644 index 0000000..e53b040 --- /dev/null +++ b/tl/rust-practice-20261101/lesson-1/lesson.html @@ -0,0 +1,8 @@ +Collection at paulit-ulit na gawain

        Collection at paulit-ulit na gawain

        15-minutong sesyon: magbasa nang 3 minuto, mag-trace nang 3, mag-eksperimento nang 7, at sagutan ang check nang 2. Maglaan ng dagdag na oras kung kailangan.

        Nag-iimbak ng magkakaugnay na value ang collection. Binibisita ng loop ang 1, 2, at 3; mula 0 ay nagiging 1, 3, at 6 ang total. Itala ang trace sa halip na manghula. Tukuyin ang una at huling valid na posisyon: maaaring 1-based ang Pascal array samantalang zero-based ang maraming ibang container. Magdagdag ng value at itama ang bounds. Ipaliwanag ang resulta para sa empty collection.

        Ang fn main ang entry point. Gumagawa ng binding ang let; pinapayagan ng mut ang reassignment. Macro ang println!. Nanghihiram ang reference na &plan sa halip na ilipat ang ownership.

        
        +fn main() {
        +    let minutes = [1, 2, 3];
        +    let mut total = 0;
        +    for value in minutes { total += value; }
        +    println!("{}", total);
        +}
        +

        Inaasahang resulta: 6

        Pagsasanay at ebidensiya

        Itala ang hula, aktuwal na resulta, at dahilan ng pagtugma o pagkakaiba. Sinusukat ng completion check ang pag-unawa; hinahasa ng practice task ang kasanayan.

        Sanggunian sa wika

        \ No newline at end of file diff --git a/tl/rust-practice-20261101/lesson-1/main.rs b/tl/rust-practice-20261101/lesson-1/main.rs new file mode 100644 index 0000000..1a422ab --- /dev/null +++ b/tl/rust-practice-20261101/lesson-1/main.rs @@ -0,0 +1,7 @@ + +fn main() { + let minutes = [1, 2, 3]; + let mut total = 0; + for value in minutes { total += value; } + println!("{}", total); +} diff --git a/tl/rust-practice-20261101/lesson-2/lesson.html b/tl/rust-practice-20261101/lesson-2/lesson.html new file mode 100644 index 0000000..047a998 --- /dev/null +++ b/tl/rust-practice-20261101/lesson-2/lesson.html @@ -0,0 +1,9 @@ +Isang mahalagang katangian ng wika

        Isang mahalagang katangian ng wika

        15-minutong sesyon: magbasa nang 3 minuto, mag-trace nang 3, mag-eksperimento nang 7, at sagutan ang check nang 2. Maglaan ng dagdag na oras kung kailangan.

        Gamitin ang tala sa wika sa ibaba upang ipaliwanag ang pagbabago ng state. Tukuyin kung ano ang kinokopya, pinagsasaluhan, maaaring mabigo, at inilalabas. Hindi lahat ng tanong ay naaangkop sa programang ito: sabihin kung alin. Gumawa ng isang pagbabago, hulaan ang epekto, at ihambing sa aktuwal na resulta. Maaaring iba ang patakaran ng pamilyar na operator sa ibang wika.

        Ang fn main ang entry point. Gumagawa ng binding ang let; pinapayagan ng mut ang reassignment. Macro ang println!. Nanghihiram ang reference na &plan sa halip na ilipat ang ownership.

        
        +fn main() {
        +    let plan = String::from("Read");
        +    let view = &plan;
        +    println!("{}", view);
        +    println!("{}", plan);
        +}
        +

        Inaasahang resulta: Read +Read

        Pagsasanay at ebidensiya

        Itala ang hula, aktuwal na resulta, at dahilan ng pagtugma o pagkakaiba. Sinusukat ng completion check ang pag-unawa; hinahasa ng practice task ang kasanayan.

        Sanggunian sa wika

        \ No newline at end of file diff --git a/tl/rust-practice-20261101/lesson-2/main.rs b/tl/rust-practice-20261101/lesson-2/main.rs new file mode 100644 index 0000000..de73df2 --- /dev/null +++ b/tl/rust-practice-20261101/lesson-2/main.rs @@ -0,0 +1,7 @@ + +fn main() { + let plan = String::from("Read"); + let view = &plan; + println!("{}", view); + println!("{}", plan); +} diff --git a/tl/rust-practice-20261101/lesson-3/lesson.html b/tl/rust-practice-20261101/lesson-3/lesson.html new file mode 100644 index 0000000..6f002ba --- /dev/null +++ b/tl/rust-practice-20261101/lesson-3/lesson.html @@ -0,0 +1,9 @@ +Bumuo, sirain, at subukan ang study planner

        Bumuo, sirain, at subukan ang study planner

        15-minutong sesyon: magbasa nang 3 minuto, mag-trace nang 3, mag-eksperimento nang 7, at sagutan ang check nang 2. Maglaan ng dagdag na oras kung kailangan.

        Inihahambing ng makabuluhang test ang resulta sa requirement. Hindi dapat maging negative ang natitirang gawain sa nonnegative input domain ng planner. Patakbuhin ang starter, sadyang alisin ang proteksiyon kapag lampas sa total ang completed, at tiyaking may check na mabibigo. Ibalik ito. Magdagdag ng dalawang study task, summary, at boundary cases. I-save ang source at ebidensiya sa Agila Forge. Ipaliwanag ang bawat linya, pati mungkahi ng AI.

        Ang fn main ang entry point. Gumagawa ng binding ang let; pinapayagan ng mut ang reassignment. Macro ang println!. Nanghihiram ang reference na &plan sa halip na ilipat ang ownership.

        fn remaining(total: u32, done: u32) -> u32 { total.saturating_sub(done) }
        +fn main() {
        +    assert_eq!(remaining(4,1),3);
        +    assert_eq!(remaining(4,4),0);
        +    assert_eq!(remaining(4,5),0);
        +    assert_eq!(remaining(0,0),0);
        +    println!("Pumasa");
        +}
        +

        Inaasahang resulta: Pumasa

        Pagsasanay at ebidensiya

        Itala ang hula, aktuwal na resulta, at dahilan ng pagtugma o pagkakaiba. Sinusukat ng completion check ang pag-unawa; hinahasa ng practice task ang kasanayan.

        Sanggunian sa wika

        \ No newline at end of file diff --git a/tl/rust-practice-20261101/lesson-3/main.rs b/tl/rust-practice-20261101/lesson-3/main.rs new file mode 100644 index 0000000..187f614 --- /dev/null +++ b/tl/rust-practice-20261101/lesson-3/main.rs @@ -0,0 +1,8 @@ +fn remaining(total: u32, done: u32) -> u32 { total.saturating_sub(done) } +fn main() { + assert_eq!(remaining(4,1),3); + assert_eq!(remaining(4,4),0); + assert_eq!(remaining(4,5),0); + assert_eq!(remaining(0,0),0); + println!("Pumasa"); +} diff --git a/tl/swift-foundations-20261101/README.md b/tl/swift-foundations-20261101/README.md new file mode 100644 index 0000000..3be168c --- /dev/null +++ b/tl/swift-foundations-20261101/README.md @@ -0,0 +1,9 @@ +# Swift — mga unang hakbang + +[Agila University track](https://edu.agilaos.com/track.php?track=17&lang=tl) + +Mga 15 minuto bawat aralin. Hulaan, patakbuhin, baguhin, ipaliwanag, at sagutan ang pagsusulit sa University. + +- [Lesson 1: Ang unang programang kaya mong ipaliwanag](lesson-1/lesson.html) +- [Lesson 2: Mga value at desisyon](lesson-2/lesson.html) +- [Lesson 3: Function at malinaw na patakaran](lesson-3/lesson.html) diff --git a/tl/swift-foundations-20261101/lesson-1/lesson.html b/tl/swift-foundations-20261101/lesson-1/lesson.html new file mode 100644 index 0000000..55c3aea --- /dev/null +++ b/tl/swift-foundations-20261101/lesson-1/lesson.html @@ -0,0 +1,2 @@ +Ang unang programang kaya mong ipaliwanag

        Ang unang programang kaya mong ipaliwanag

        15-minutong sesyon: magbasa nang 3 minuto, mag-trace nang 3, mag-eksperimento nang 7, at sagutan ang check nang 2. Maglaan ng dagdag na oras kung kailangan.

        Mga utos ang isang programa. Basahin mula sa entry point hanggang sa output statement. Data ang tekstong nasa panipi; utos ang output operation. Hulaan ang linyang lalabas bago patakbuhin. Baguhin lang ang mensahe, patakbuhin muli, at alisin ang isang kailangang bantas para basahin ang unang error. Ibalik ang gumaganang source.

        Immutable binding ang let at mutable ang var. Maaaring nil ang Int(raw). Kinukuha ng if let ang umiiral na value nang hindi pinipilit ang nawawalang data.

        print("Handa")
        +

        Inaasahang resulta: Handa

        Pagsasanay at ebidensiya

        Itala ang hula, aktuwal na resulta, at dahilan ng pagtugma o pagkakaiba. Sinusukat ng completion check ang pag-unawa; hinahasa ng practice task ang kasanayan.

        Sanggunian sa wika

        \ No newline at end of file diff --git a/tl/swift-foundations-20261101/lesson-1/main.swift b/tl/swift-foundations-20261101/lesson-1/main.swift new file mode 100644 index 0000000..a03cafd --- /dev/null +++ b/tl/swift-foundations-20261101/lesson-1/main.swift @@ -0,0 +1 @@ +print("Handa") diff --git a/tl/swift-foundations-20261101/lesson-2/lesson.html b/tl/swift-foundations-20261101/lesson-2/lesson.html new file mode 100644 index 0000000..6fcf01f --- /dev/null +++ b/tl/swift-foundations-20261101/lesson-2/lesson.html @@ -0,0 +1,3 @@ +Mga value at desisyon

        Mga value at desisyon

        15-minutong sesyon: magbasa nang 3 minuto, mag-trace nang 3, mag-eksperimento nang 7, at sagutan ang check nang 2. Maglaan ng dagdag na oras kung kailangan.

        Pumipili ang desisyon kung aling statement ang tatakbo. Ang patakaran ay “handa sa 80 pataas.” Sundan ang 85, 79, 80, at 81 bago patakbuhin ang bawat kaso. Kasama ang 80 sa comparison. Maaaring tama sa 85 ngunit mali sa hangganan. Magdagdag ng hiwalay na check para tanggihan ang mas mababa sa 0 o lampas sa 100; magkaiba ang invalid at kailangang magsanay.

        Immutable binding ang let at mutable ang var. Maaaring nil ang Int(raw). Kinukuha ng if let ang umiiral na value nang hindi pinipilit ang nawawalang data.

        let score = 85
        +if score >= 80 { print("Handa") } else { print("Magsanay") }
        +

        Inaasahang resulta: Handa

        Pagsasanay at ebidensiya

        Itala ang hula, aktuwal na resulta, at dahilan ng pagtugma o pagkakaiba. Sinusukat ng completion check ang pag-unawa; hinahasa ng practice task ang kasanayan.

        Sanggunian sa wika

        \ No newline at end of file diff --git a/tl/swift-foundations-20261101/lesson-2/main.swift b/tl/swift-foundations-20261101/lesson-2/main.swift new file mode 100644 index 0000000..c6f9221 --- /dev/null +++ b/tl/swift-foundations-20261101/lesson-2/main.swift @@ -0,0 +1,2 @@ +let score = 85 +if score >= 80 { print("Handa") } else { print("Magsanay") } diff --git a/tl/swift-foundations-20261101/lesson-3/lesson.html b/tl/swift-foundations-20261101/lesson-3/lesson.html new file mode 100644 index 0000000..ceda017 --- /dev/null +++ b/tl/swift-foundations-20261101/lesson-3/lesson.html @@ -0,0 +1,6 @@ +Function at malinaw na patakaran

        Function at malinaw na patakaran

        15-minutong sesyon: magbasa nang 3 minuto, mag-trace nang 3, mag-eksperimento nang 7, at sagutan ang check nang 2. Maglaan ng dagdag na oras kung kailangan.

        Pinapangalanan ng function o subroutine ang calculation na magagamit muli. Tumatanggap ang patakaran ng nonnegative total at completed; zero ang sagot kapag umabot o lumampas ang completed sa total. Kung hindi, ibinabalik ang diperensiya. Sundan ang (4,1), (4,4), (4,5), at (0,0). Ihiwalay ang pagpi-print sa calculation. Ipaliwanag kung bakit wala sa saklaw ang negative input at magdisenyo ng pagtanggi bago tumanggap ng external input.

        Immutable binding ang let at mutable ang var. Maaaring nil ang Int(raw). Kinukuha ng if let ang umiiral na value nang hindi pinipilit ang nawawalang data.

        func remaining(_ total: Int, _ done: Int) -> Int {
        +    return max(0, total - done)
        +}
        +
        +print(remaining(4, 1))
        +

        Inaasahang resulta: 3

        Pagsasanay at ebidensiya

        Itala ang hula, aktuwal na resulta, at dahilan ng pagtugma o pagkakaiba. Sinusukat ng completion check ang pag-unawa; hinahasa ng practice task ang kasanayan.

        Sanggunian sa wika

        \ No newline at end of file diff --git a/tl/swift-foundations-20261101/lesson-3/main.swift b/tl/swift-foundations-20261101/lesson-3/main.swift new file mode 100644 index 0000000..d06d8dd --- /dev/null +++ b/tl/swift-foundations-20261101/lesson-3/main.swift @@ -0,0 +1,5 @@ +func remaining(_ total: Int, _ done: Int) -> Int { + return max(0, total - done) +} + +print(remaining(4, 1)) diff --git a/tl/swift-practice-20261101/README.md b/tl/swift-practice-20261101/README.md new file mode 100644 index 0000000..1603383 --- /dev/null +++ b/tl/swift-practice-20261101/README.md @@ -0,0 +1,9 @@ +# Swift — pagbuo at pagsubok + +[Agila University track](https://edu.agilaos.com/track.php?track=17&lang=tl) + +Mga 15 minuto bawat aralin. Hulaan, patakbuhin, baguhin, ipaliwanag, at sagutan ang pagsusulit sa University. + +- [Lesson 1: Collection at paulit-ulit na gawain](lesson-1/lesson.html) +- [Lesson 2: Isang mahalagang katangian ng wika](lesson-2/lesson.html) +- [Lesson 3: Bumuo, sirain, at subukan ang study planner](lesson-3/lesson.html) diff --git a/tl/swift-practice-20261101/lesson-1/lesson.html b/tl/swift-practice-20261101/lesson-1/lesson.html new file mode 100644 index 0000000..de8b3f3 --- /dev/null +++ b/tl/swift-practice-20261101/lesson-1/lesson.html @@ -0,0 +1,5 @@ +Collection at paulit-ulit na gawain

        Collection at paulit-ulit na gawain

        15-minutong sesyon: magbasa nang 3 minuto, mag-trace nang 3, mag-eksperimento nang 7, at sagutan ang check nang 2. Maglaan ng dagdag na oras kung kailangan.

        Nag-iimbak ng magkakaugnay na value ang collection. Binibisita ng loop ang 1, 2, at 3; mula 0 ay nagiging 1, 3, at 6 ang total. Itala ang trace sa halip na manghula. Tukuyin ang una at huling valid na posisyon: maaaring 1-based ang Pascal array samantalang zero-based ang maraming ibang container. Magdagdag ng value at itama ang bounds. Ipaliwanag ang resulta para sa empty collection.

        Immutable binding ang let at mutable ang var. Maaaring nil ang Int(raw). Kinukuha ng if let ang umiiral na value nang hindi pinipilit ang nawawalang data.

        let minutes = [1, 2, 3]
        +var total = 0
        +for value in minutes { total += value }
        +print(total)
        +

        Inaasahang resulta: 6

        Pagsasanay at ebidensiya

        Itala ang hula, aktuwal na resulta, at dahilan ng pagtugma o pagkakaiba. Sinusukat ng completion check ang pag-unawa; hinahasa ng practice task ang kasanayan.

        Sanggunian sa wika

        \ No newline at end of file diff --git a/tl/swift-practice-20261101/lesson-1/main.swift b/tl/swift-practice-20261101/lesson-1/main.swift new file mode 100644 index 0000000..c64a1f8 --- /dev/null +++ b/tl/swift-practice-20261101/lesson-1/main.swift @@ -0,0 +1,4 @@ +let minutes = [1, 2, 3] +var total = 0 +for value in minutes { total += value } +print(total) diff --git a/tl/swift-practice-20261101/lesson-2/lesson.html b/tl/swift-practice-20261101/lesson-2/lesson.html new file mode 100644 index 0000000..d142d38 --- /dev/null +++ b/tl/swift-practice-20261101/lesson-2/lesson.html @@ -0,0 +1,7 @@ +Isang mahalagang katangian ng wika

        Isang mahalagang katangian ng wika

        15-minutong sesyon: magbasa nang 3 minuto, mag-trace nang 3, mag-eksperimento nang 7, at sagutan ang check nang 2. Maglaan ng dagdag na oras kung kailangan.

        Gamitin ang tala sa wika sa ibaba upang ipaliwanag ang pagbabago ng state. Tukuyin kung ano ang kinokopya, pinagsasaluhan, maaaring mabigo, at inilalabas. Hindi lahat ng tanong ay naaangkop sa programang ito: sabihin kung alin. Gumawa ng isang pagbabago, hulaan ang epekto, at ihambing sa aktuwal na resulta. Maaaring iba ang patakaran ng pamilyar na operator sa ibang wika.

        Immutable binding ang let at mutable ang var. Maaaring nil ang Int(raw). Kinukuha ng if let ang umiiral na value nang hindi pinipilit ang nawawalang data.

        let raw = "three"
        +if let count = Int(raw) {
        +    print(count)
        +} else {
        +    print("Magsanay")
        +}
        +

        Inaasahang resulta: Magsanay

        Pagsasanay at ebidensiya

        Itala ang hula, aktuwal na resulta, at dahilan ng pagtugma o pagkakaiba. Sinusukat ng completion check ang pag-unawa; hinahasa ng practice task ang kasanayan.

        Sanggunian sa wika

        \ No newline at end of file diff --git a/tl/swift-practice-20261101/lesson-2/main.swift b/tl/swift-practice-20261101/lesson-2/main.swift new file mode 100644 index 0000000..87a773c --- /dev/null +++ b/tl/swift-practice-20261101/lesson-2/main.swift @@ -0,0 +1,6 @@ +let raw = "three" +if let count = Int(raw) { + print(count) +} else { + print("Magsanay") +} diff --git a/tl/swift-practice-20261101/lesson-3/lesson.html b/tl/swift-practice-20261101/lesson-3/lesson.html new file mode 100644 index 0000000..24dc907 --- /dev/null +++ b/tl/swift-practice-20261101/lesson-3/lesson.html @@ -0,0 +1,10 @@ +Bumuo, sirain, at subukan ang study planner

        Bumuo, sirain, at subukan ang study planner

        15-minutong sesyon: magbasa nang 3 minuto, mag-trace nang 3, mag-eksperimento nang 7, at sagutan ang check nang 2. Maglaan ng dagdag na oras kung kailangan.

        Inihahambing ng makabuluhang test ang resulta sa requirement. Hindi dapat maging negative ang natitirang gawain sa nonnegative input domain ng planner. Patakbuhin ang starter, sadyang alisin ang proteksiyon kapag lampas sa total ang completed, at tiyaking may check na mabibigo. Ibalik ito. Magdagdag ng dalawang study task, summary, at boundary cases. I-save ang source at ebidensiya sa Agila Forge. Ipaliwanag ang bawat linya, pati mungkahi ng AI.

        Immutable binding ang let at mutable ang var. Maaaring nil ang Int(raw). Kinukuha ng if let ang umiiral na value nang hindi pinipilit ang nawawalang data.

        func remaining(_ total: Int, _ done: Int) -> Int {
        +    return max(0, total - done)
        +}
        +
        +precondition(remaining(4,1) == 3)
        +precondition(remaining(4,4) == 0)
        +precondition(remaining(4,5) == 0)
        +precondition(remaining(0,0) == 0)
        +print("Pumasa")
        +

        Inaasahang resulta: Pumasa

        Pagsasanay at ebidensiya

        Itala ang hula, aktuwal na resulta, at dahilan ng pagtugma o pagkakaiba. Sinusukat ng completion check ang pag-unawa; hinahasa ng practice task ang kasanayan.

        Sanggunian sa wika

        \ No newline at end of file diff --git a/tl/swift-practice-20261101/lesson-3/main.swift b/tl/swift-practice-20261101/lesson-3/main.swift new file mode 100644 index 0000000..767ff03 --- /dev/null +++ b/tl/swift-practice-20261101/lesson-3/main.swift @@ -0,0 +1,9 @@ +func remaining(_ total: Int, _ done: Int) -> Int { + return max(0, total - done) +} + +precondition(remaining(4,1) == 3) +precondition(remaining(4,4) == 0) +precondition(remaining(4,5) == 0) +precondition(remaining(0,0) == 0) +print("Pumasa") diff --git a/tl/vlang-foundations-20261101/README.md b/tl/vlang-foundations-20261101/README.md new file mode 100644 index 0000000..c370bae --- /dev/null +++ b/tl/vlang-foundations-20261101/README.md @@ -0,0 +1,9 @@ +# V (Vlang) — mga unang hakbang + +[Agila University track](https://edu.agilaos.com/track.php?track=16&lang=tl) + +Mga 15 minuto bawat aralin. Hulaan, patakbuhin, baguhin, ipaliwanag, at sagutan ang pagsusulit sa University. + +- [Lesson 1: Ang unang programang kaya mong ipaliwanag](lesson-1/lesson.html) +- [Lesson 2: Mga value at desisyon](lesson-2/lesson.html) +- [Lesson 3: Function at malinaw na patakaran](lesson-3/lesson.html) diff --git a/tl/vlang-foundations-20261101/lesson-1/lesson.html b/tl/vlang-foundations-20261101/lesson-1/lesson.html new file mode 100644 index 0000000..c2c5bc0 --- /dev/null +++ b/tl/vlang-foundations-20261101/lesson-1/lesson.html @@ -0,0 +1,5 @@ +Ang unang programang kaya mong ipaliwanag

        Ang unang programang kaya mong ipaliwanag

        15-minutong sesyon: magbasa nang 3 minuto, mag-trace nang 3, mag-eksperimento nang 7, at sagutan ang check nang 2. Maglaan ng dagdag na oras kung kailangan.

        Mga utos ang isang programa. Basahin mula sa entry point hanggang sa output statement. Data ang tekstong nasa panipi; utos ang output operation. Hulaan ang linyang lalabas bago patakbuhin. Baguhin lang ang mensahe, patakbuhin muli, at alisin ang isang kailangang bantas para basahin ang unang error. Ibalik ang gumaganang source.

        Nagdedeklara ng value ang :=. Gamitin lang ang mut kung babaguhin ito. Resultang maaaring mabigo ang !int; hinahawakan ng caller ang error sa or block. Hindi nag-i-import ng Agila SDK ang standard V examples.

        
        +fn main() {
        +    println('Handa')
        +}
        +

        Inaasahang resulta: Handa

        Pagsasanay at ebidensiya

        Itala ang hula, aktuwal na resulta, at dahilan ng pagtugma o pagkakaiba. Sinusukat ng completion check ang pag-unawa; hinahasa ng practice task ang kasanayan.

        Sanggunian sa wika

        \ No newline at end of file diff --git a/tl/vlang-foundations-20261101/lesson-1/main.v b/tl/vlang-foundations-20261101/lesson-1/main.v new file mode 100644 index 0000000..979412e --- /dev/null +++ b/tl/vlang-foundations-20261101/lesson-1/main.v @@ -0,0 +1,4 @@ + +fn main() { + println('Handa') +} diff --git a/tl/vlang-foundations-20261101/lesson-2/lesson.html b/tl/vlang-foundations-20261101/lesson-2/lesson.html new file mode 100644 index 0000000..65ad8e0 --- /dev/null +++ b/tl/vlang-foundations-20261101/lesson-2/lesson.html @@ -0,0 +1,6 @@ +Mga value at desisyon

        Mga value at desisyon

        15-minutong sesyon: magbasa nang 3 minuto, mag-trace nang 3, mag-eksperimento nang 7, at sagutan ang check nang 2. Maglaan ng dagdag na oras kung kailangan.

        Pumipili ang desisyon kung aling statement ang tatakbo. Ang patakaran ay “handa sa 80 pataas.” Sundan ang 85, 79, 80, at 81 bago patakbuhin ang bawat kaso. Kasama ang 80 sa comparison. Maaaring tama sa 85 ngunit mali sa hangganan. Magdagdag ng hiwalay na check para tanggihan ang mas mababa sa 0 o lampas sa 100; magkaiba ang invalid at kailangang magsanay.

        Nagdedeklara ng value ang :=. Gamitin lang ang mut kung babaguhin ito. Resultang maaaring mabigo ang !int; hinahawakan ng caller ang error sa or block. Hindi nag-i-import ng Agila SDK ang standard V examples.

        
        +fn main() {
        +    score := 85
        +    if score >= 80 { println('Handa') } else { println('Magsanay') }
        +}
        +

        Inaasahang resulta: Handa

        Pagsasanay at ebidensiya

        Itala ang hula, aktuwal na resulta, at dahilan ng pagtugma o pagkakaiba. Sinusukat ng completion check ang pag-unawa; hinahasa ng practice task ang kasanayan.

        Sanggunian sa wika

        \ No newline at end of file diff --git a/tl/vlang-foundations-20261101/lesson-2/main.v b/tl/vlang-foundations-20261101/lesson-2/main.v new file mode 100644 index 0000000..1fa313a --- /dev/null +++ b/tl/vlang-foundations-20261101/lesson-2/main.v @@ -0,0 +1,5 @@ + +fn main() { + score := 85 + if score >= 80 { println('Handa') } else { println('Magsanay') } +} diff --git a/tl/vlang-foundations-20261101/lesson-3/lesson.html b/tl/vlang-foundations-20261101/lesson-3/lesson.html new file mode 100644 index 0000000..052105d --- /dev/null +++ b/tl/vlang-foundations-20261101/lesson-3/lesson.html @@ -0,0 +1,8 @@ +Function at malinaw na patakaran

        Function at malinaw na patakaran

        15-minutong sesyon: magbasa nang 3 minuto, mag-trace nang 3, mag-eksperimento nang 7, at sagutan ang check nang 2. Maglaan ng dagdag na oras kung kailangan.

        Pinapangalanan ng function o subroutine ang calculation na magagamit muli. Tumatanggap ang patakaran ng nonnegative total at completed; zero ang sagot kapag umabot o lumampas ang completed sa total. Kung hindi, ibinabalik ang diperensiya. Sundan ang (4,1), (4,4), (4,5), at (0,0). Ihiwalay ang pagpi-print sa calculation. Ipaliwanag kung bakit wala sa saklaw ang negative input at magdisenyo ng pagtanggi bago tumanggap ng external input.

        Nagdedeklara ng value ang :=. Gamitin lang ang mut kung babaguhin ito. Resultang maaaring mabigo ang !int; hinahawakan ng caller ang error sa or block. Hindi nag-i-import ng Agila SDK ang standard V examples.

        fn remaining(total int, done int) int {
        +    if done >= total { return 0 }
        +    return total - done
        +}
        +fn main() {
        +    println(remaining(4, 1))
        +}
        +

        Inaasahang resulta: 3

        Pagsasanay at ebidensiya

        Itala ang hula, aktuwal na resulta, at dahilan ng pagtugma o pagkakaiba. Sinusukat ng completion check ang pag-unawa; hinahasa ng practice task ang kasanayan.

        Sanggunian sa wika

        \ No newline at end of file diff --git a/tl/vlang-foundations-20261101/lesson-3/main.v b/tl/vlang-foundations-20261101/lesson-3/main.v new file mode 100644 index 0000000..d429bf6 --- /dev/null +++ b/tl/vlang-foundations-20261101/lesson-3/main.v @@ -0,0 +1,7 @@ +fn remaining(total int, done int) int { + if done >= total { return 0 } + return total - done +} +fn main() { + println(remaining(4, 1)) +} diff --git a/tl/vlang-practice-20261101/README.md b/tl/vlang-practice-20261101/README.md new file mode 100644 index 0000000..749872e --- /dev/null +++ b/tl/vlang-practice-20261101/README.md @@ -0,0 +1,9 @@ +# V (Vlang) — pagbuo at pagsubok + +[Agila University track](https://edu.agilaos.com/track.php?track=16&lang=tl) + +Mga 15 minuto bawat aralin. Hulaan, patakbuhin, baguhin, ipaliwanag, at sagutan ang pagsusulit sa University. + +- [Lesson 1: Collection at paulit-ulit na gawain](lesson-1/lesson.html) +- [Lesson 2: Isang mahalagang katangian ng wika](lesson-2/lesson.html) +- [Lesson 3: Bumuo, sirain, at subukan ang study planner](lesson-3/lesson.html) diff --git a/tl/vlang-practice-20261101/lesson-1/lesson.html b/tl/vlang-practice-20261101/lesson-1/lesson.html new file mode 100644 index 0000000..4cab357 --- /dev/null +++ b/tl/vlang-practice-20261101/lesson-1/lesson.html @@ -0,0 +1,8 @@ +Collection at paulit-ulit na gawain

        Collection at paulit-ulit na gawain

        15-minutong sesyon: magbasa nang 3 minuto, mag-trace nang 3, mag-eksperimento nang 7, at sagutan ang check nang 2. Maglaan ng dagdag na oras kung kailangan.

        Nag-iimbak ng magkakaugnay na value ang collection. Binibisita ng loop ang 1, 2, at 3; mula 0 ay nagiging 1, 3, at 6 ang total. Itala ang trace sa halip na manghula. Tukuyin ang una at huling valid na posisyon: maaaring 1-based ang Pascal array samantalang zero-based ang maraming ibang container. Magdagdag ng value at itama ang bounds. Ipaliwanag ang resulta para sa empty collection.

        Nagdedeklara ng value ang :=. Gamitin lang ang mut kung babaguhin ito. Resultang maaaring mabigo ang !int; hinahawakan ng caller ang error sa or block. Hindi nag-i-import ng Agila SDK ang standard V examples.

        
        +fn main() {
        +    minutes := [1, 2, 3]
        +    mut total := 0
        +    for value in minutes { total += value }
        +    println(total)
        +}
        +

        Inaasahang resulta: 6

        Pagsasanay at ebidensiya

        Itala ang hula, aktuwal na resulta, at dahilan ng pagtugma o pagkakaiba. Sinusukat ng completion check ang pag-unawa; hinahasa ng practice task ang kasanayan.

        Sanggunian sa wika

        \ No newline at end of file diff --git a/tl/vlang-practice-20261101/lesson-1/main.v b/tl/vlang-practice-20261101/lesson-1/main.v new file mode 100644 index 0000000..6f31717 --- /dev/null +++ b/tl/vlang-practice-20261101/lesson-1/main.v @@ -0,0 +1,7 @@ + +fn main() { + minutes := [1, 2, 3] + mut total := 0 + for value in minutes { total += value } + println(total) +} diff --git a/tl/vlang-practice-20261101/lesson-2/lesson.html b/tl/vlang-practice-20261101/lesson-2/lesson.html new file mode 100644 index 0000000..22d759a --- /dev/null +++ b/tl/vlang-practice-20261101/lesson-2/lesson.html @@ -0,0 +1,12 @@ +Isang mahalagang katangian ng wika

        Isang mahalagang katangian ng wika

        15-minutong sesyon: magbasa nang 3 minuto, mag-trace nang 3, mag-eksperimento nang 7, at sagutan ang check nang 2. Maglaan ng dagdag na oras kung kailangan.

        Gamitin ang tala sa wika sa ibaba upang ipaliwanag ang pagbabago ng state. Tukuyin kung ano ang kinokopya, pinagsasaluhan, maaaring mabigo, at inilalabas. Hindi lahat ng tanong ay naaangkop sa programang ito: sabihin kung alin. Gumawa ng isang pagbabago, hulaan ang epekto, at ihambing sa aktuwal na resulta. Maaaring iba ang patakaran ng pamilyar na operator sa ibang wika.

        Nagdedeklara ng value ang :=. Gamitin lang ang mut kung babaguhin ito. Resultang maaaring mabigo ang !int; hinahawakan ng caller ang error sa or block. Hindi nag-i-import ng Agila SDK ang standard V examples.

        fn checked_score(value int) !int {
        +    if value < 0 || value > 100 { return error('Invalid score') }
        +    return value
        +}
        +fn main() {
        +    result := checked_score(101) or {
        +        println('Magsanay')
        +        return
        +    }
        +    println(result)
        +}
        +

        Inaasahang resulta: Magsanay

        Pagsasanay at ebidensiya

        Itala ang hula, aktuwal na resulta, at dahilan ng pagtugma o pagkakaiba. Sinusukat ng completion check ang pag-unawa; hinahasa ng practice task ang kasanayan.

        Sanggunian sa wika

        \ No newline at end of file diff --git a/tl/vlang-practice-20261101/lesson-2/main.v b/tl/vlang-practice-20261101/lesson-2/main.v new file mode 100644 index 0000000..53bd099 --- /dev/null +++ b/tl/vlang-practice-20261101/lesson-2/main.v @@ -0,0 +1,11 @@ +fn checked_score(value int) !int { + if value < 0 || value > 100 { return error('Invalid score') } + return value +} +fn main() { + result := checked_score(101) or { + println('Magsanay') + return + } + println(result) +} diff --git a/tl/vlang-practice-20261101/lesson-3/lesson.html b/tl/vlang-practice-20261101/lesson-3/lesson.html new file mode 100644 index 0000000..6a0f117 --- /dev/null +++ b/tl/vlang-practice-20261101/lesson-3/lesson.html @@ -0,0 +1,12 @@ +Bumuo, sirain, at subukan ang study planner

        Bumuo, sirain, at subukan ang study planner

        15-minutong sesyon: magbasa nang 3 minuto, mag-trace nang 3, mag-eksperimento nang 7, at sagutan ang check nang 2. Maglaan ng dagdag na oras kung kailangan.

        Inihahambing ng makabuluhang test ang resulta sa requirement. Hindi dapat maging negative ang natitirang gawain sa nonnegative input domain ng planner. Patakbuhin ang starter, sadyang alisin ang proteksiyon kapag lampas sa total ang completed, at tiyaking may check na mabibigo. Ibalik ito. Magdagdag ng dalawang study task, summary, at boundary cases. I-save ang source at ebidensiya sa Agila Forge. Ipaliwanag ang bawat linya, pati mungkahi ng AI.

        Nagdedeklara ng value ang :=. Gamitin lang ang mut kung babaguhin ito. Resultang maaaring mabigo ang !int; hinahawakan ng caller ang error sa or block. Hindi nag-i-import ng Agila SDK ang standard V examples.

        fn remaining(total int, done int) int {
        +    if done >= total { return 0 }
        +    return total - done
        +}
        +fn main() {
        +    assert remaining(4,1)==3
        +    assert remaining(4,4)==0
        +    assert remaining(4,5)==0
        +    assert remaining(0,0)==0
        +    println('Pumasa')
        +}
        +

        Inaasahang resulta: Pumasa

        Pagsasanay at ebidensiya

        Itala ang hula, aktuwal na resulta, at dahilan ng pagtugma o pagkakaiba. Sinusukat ng completion check ang pag-unawa; hinahasa ng practice task ang kasanayan.

        Sanggunian sa wika

        \ No newline at end of file diff --git a/tl/vlang-practice-20261101/lesson-3/main.v b/tl/vlang-practice-20261101/lesson-3/main.v new file mode 100644 index 0000000..3497e3b --- /dev/null +++ b/tl/vlang-practice-20261101/lesson-3/main.v @@ -0,0 +1,11 @@ +fn remaining(total int, done int) int { + if done >= total { return 0 } + return total - done +} +fn main() { + assert remaining(4,1)==3 + assert remaining(4,4)==0 + assert remaining(4,5)==0 + assert remaining(0,0)==0 + println('Pumasa') +}