Jak mogę uczyć informatyki bez korzystania z komputerów?

21

W niektórych miejscach na świecie ludzie zwykle nie mają dostępu do komputerów (a zatem i niewielkiej wiedzy na ich temat), a nawet jeśli mają, sprzęt i oprogramowanie są przestarzałe, a korzystanie z nich wiąże się z awarią zasilania i tym podobne. Brakuje też dostępu do (dobrych) książek. Jak mogę uczyć informatyki w takich okolicznościach?

Martwię się, że nie będąc w stanie eksperymentować i stosować tego, czego się uczą, wcale się nie nauczą (dobrze), mimo że są niesamowicie zmotywowani i poświęcają większość swojego czasu na to hobby. Czy można uczyć CS tylko teoretycznie?

Abhimanyu
źródło
13
Matematyka fascynuje ludzi od tysięcy lat. Nikt wtedy nie miał dostępu do komputera cyfrowego. W rzeczywistości, zazwyczaj na kursach teoretycznych, wcale nie potrzebujesz komputerów.
Juho,
3
Chciałbym zauważyć, że pierwszy program komputerowy został napisany około 100 lat przed zbudowaniem pierwszego komputera.
Gabe,
2
Spójrz na cstheory . Najprawdopodobniej ci faceci potrzebują tylko długopisu i kartki, a to może być najwyższy poziom informatyki (nie mam pojęcia, o czym rozmawiają przez większość czasu).
Trylks,
1
Byłoby to prawdopodobnie pomocne, gdybyś wskazał obszary CompSci, które zamierzasz objąć. Rzeczy takie jak dyskretna matematyka, a nawet struktury danych lub algorytmy można pokryć tylko pisakiem i papierem. Z drugiej strony inżynieria oprogramowania może być problematyczna.
NotMe
1
@abhimanyu Świetnie, pytanie zostało „zabezpieczone”, zanim mogłem opublikować swoją odpowiedź; Umieściłem to tutaj: pastebin.com/6tbMtVM8 (To długa odpowiedź, ponieważ możliwości powinny być oczywiste, ale wydaje się, że nie są. Jest tam wiele pomysłów i mam nadzieję, że znajdziesz coś przydatnego…)
nikt nie

Odpowiedzi:

24

Pytanie o to, jak można studiować informatykę bez komputerów jest trochę jak pytanie o to, jak można studiować kosmologię bez teleskopów. Jasne, miło jest patrzeć na rzeczy, których się uczysz, i często bardzo pomocne jest bawienie się nimi. Ale jest wiele rzeczy, które możesz zrobić bez dostępu do komputera: w ekstremalnych warunkach prawdopodobnie prawdopodobnie zrobiłbyś prawie cały kurs licencjacki bez komputerów.

W praktyce dostęp do komputerów pomaga wzmocnić wiele z wiedzy zdobytej na kursie informatyki. Kursy programowania są oczywiście znacznie bardziej naturalne z dostępem do komputera. Z drugiej strony bycie zmuszonym do pisania kodu na papierze zachęca ludzi do zastanowienia się nad swoim kodem i upewnienia się, że naprawdę działa, zamiast tylko ciągłego uruchamiania go przez kompilator, aż się skompiluje, a następnie powtarzania trywialnych przypadków testowych dopóki oczywiste błędy nie znikną.

Tematy najbardziej naturalne bez komputerów byłyby bardziej matematyczne. Cała matematyka podstawowa, taka jak kombinatoryka i prawdopodobieństwo. Obliczalność, języki formalne, logika, teoria złożoności, projektowanie i analiza algorytmów, teoria informacji i kodowania. Wszystko związane z obliczeniami kwantowymi!

David Richerby
źródło
11
+1 to rozróżnienie między CS a programowaniem jest kluczowe! Mój kurs licencjacki z CS miał minimalne wymagania do korzystania z komputera, poza dostępem do materiałów do czytania w Internecie, mogłem łatwo znaleźć w bibliotece martwe drzewo.
Kosmiczny Ossifrage,
4
@CosmicOssifrage Zgadzam się, ale chociaż CS nie programuje, programowanie jest bardzo przydatnym narzędziem dla informatyków. I dlatego tego uczymy.
David Richerby,
2
@Abhimanyu To zależy od twoich kwalifikacji. Jeśli masz wiedzę i umiejętności, są tylko tablicą z dala od umysłów uczniów.
Raphael
2
@vzn Nie, duża część programowania uczy się debugowania. To bardzo ważne. Ale to nie jest informatyka .
David Richerby
2
@vzn Jeśli zacytujesz mężczyznę, zrób to dobrze. Mówi o eksperymentach w czasie wykonywania w celu weryfikacji / obalenia (naukowych) hipotez, a nie debugowania. Nie sądzę, by Sedgewick kiedykolwiek twierdził, że testowanie / debugowanie eksperymentalnych implementacji było nauką .
Raphael
10

Istnieje oczywiste użycie papieru i ołówka. Kiedy nauczono mnie przetwarzania sygnałów, specjalny procesor sygnału nie był dla nas bezpośrednio dostępny i po prostu przekazaliśmy raporty papierowe.

Zwróć uwagę, że wielki informatyk Dijkstra najwyraźniej nie korzystał zbyt często z komputerów:

Prawie wszystkie artykuły z tej serii, które ukazały się po 1972 r., Są pisane ręcznie. Wynalazł wiele technologii oprogramowania i przez wiele dziesięcioleci Dijkstra unikał używania komputerów we własnej pracy. Nawet po tym, jak uległ zachętom kolegów z UT i nabył komputer Macintosh, używał go tylko do wysyłania e-maili i przeglądania Internetu.

Cytat z pomnika Disjkstry

To pokazuje, że możesz robić świetne informatyki bez komputera!

Oprócz informatyki papierowej i ołówkowej problemy można również rozwiązać „w realnym świecie”, np. Demonstracja algorytmów sortowania z użyciem kart lub - co bardziej niezwykłe - z tańcem wykonywana przez Uniwersytet Sapientia .

Finn Årup Nielsen
źródło
Wszelkie porady, jak skutecznie to zrobić? Nauczyciel mógł nie skorzystać z wykładu z kredy na dużym uniwersytecie.
Raphael
3
Wiele matematyki uczy się kredą. Podejrzewam, że podobnie robisz z informatyką.
Finn Årup Nielsen,
Jako przykład
podajemy
2
Osobiście zastosowałem swoje struktury danych i algorytmy wiedzy do pracy biurowej w pracy letniej. Użyłem sortowania radix na polach czeków i przeszedłem od jednego do dwóch rzędów wielkości szybciej niż ktokolwiek inny, kto to robił, do niedowierzania. Użyłem naturalnego sortowania scalonego na drukowanych kartach, które należało złożyć. w świecie rzeczywistym istnieją struktury danych i obliczenia .
JDługosz
8

Wiele teorii informatycznych ma charakter czysto teoretyczny i można je rozwiązać za pomocą pióra (cil) i papieru. Uzyskiwanie informacji o nich i przekazywanie ich światu zewnętrznemu wymaga komputera.

Dave Clarke
źródło
5
Uderza mnie to, że jestem bardziej komentarzem.
Raphael
7

Zobacz wspaniałe pomysły na http://csunplugged.org/ . Google jest jednym ze sponsorów.

Ze strony:

CS Unplugged to zbiór bezpłatnych zajęć edukacyjnych, które uczą informatyki poprzez angażowanie gier i łamigłówek, które wykorzystują karty, sznurki, kredki i wiele biegania.

Ćwiczenia wprowadzają uczniów w podstawowe pojęcia, takie jak liczby binarne, algorytmy i kompresja danych, oddzielone od rozproszeń i szczegółów technicznych, które zwykle widzimy na komputerach.

CS Unplugged jest odpowiedni dla osób w każdym wieku, od szkoły podstawowej po seniorów oraz z wielu krajów i środowisk. Unplugged jest używany na całym świecie od ponad dwudziestu lat, w salach lekcyjnych, centrach nauki, domach, a nawet na imprezach wakacyjnych w parku!

cdjc
źródło
Warunki są skomplikowane, ale warto spróbować, gdy pozwalają na to zasoby.
Abhimanyu
Zgadzam się, że wygląda to dobrze, ale aby uzyskać właściwą odpowiedź, musisz rozwiązać konkretne problemy przedstawione w pytaniu: jakie zasoby są potrzebne? Czy możemy spodziewać się ich np. W (wiejskiej?) Afryce?
Raphael
3

Możesz, to całkiem oczywiste, jak byś to zrobił. Nie jestem pewien, jak przydatny byłby dla ludzi, ale możesz.

Ale nawet nie wiem, jak nauczyciel informatyki mógłby zapytać, jak można uczyć informatyki bez komputera.

Ponieważ jeśli możesz uczyć informatyki, to wiesz, jak to zrobić.

Jeśli wiesz, że-

-Algorithms can be written on pen and paper, and traced on pen and paper.
-Flow charts are written on paper.

Badanie normalizacji, struktury tabel danych dla baz danych, można wykonać na papierze i długopisu. (Zrobiłem to tylko na papierze i długopisie, kiedy studiowałem relacyjne bazy danych)

Podręczniki informatyki nie wymagają komputera.

Gdybyś kiedykolwiek wziął podręcznik informatyki i studiował go w bibliotece, wiedziałbyś, że nie potrzebujesz komputera, aby go zrozumieć.

Ale powinieneś zdawać sobie sprawę, że każdy, kto uczestniczył w zajęciach z informatyki, może zobaczyć, że większość ludzi nie może programować, to po prostu poza nimi. Zbyt abstrakcyjne dla ludzi. Tak jest nawet na poziomie uniwersyteckim.

http://www.eis.mdx.ac.uk/research/PhDArea/saeed/paper1.pdf

Znaczna mniejszość studentów nie zdaje każdego kursu wprowadzającego na każdym uniwersytecie w Wielkiej Brytanii. Pomimo heroicznego wysiłku akademickiego odsetek ten wzrósł, a nie zmalał na przestrzeni lat. Pomimo wielu badań nad metodami nauczania i odpowiedziami uczniów, nie mamy pojęcia o przyczynie.

Dodałbym, że nazywanie go znaczną mniejszością jest niedopowiedzeniem. Jest to niewielka mniejszość, która może programować.

Chciałbym jednak zwrócić uwagę na przyczynę spadku, którego był świadkiem. Gdy komputery stały się bardziej popularne, np. W latach 2000–2010 (napisał to w połowie tej dekady), coraz więcej chuliganów było zainteresowanych studiowaniem „informatyki”. Do tego czasu zainteresowani byli tylko bardziej fanatyczni ludzie. A wcześniej korzystanie z komputerów było bardziej techniczne, ale ponieważ komputery stały się łatwiejsze w użyciu dla przeciętnego człowieka i bardziej wydajne w aplikacjach, które mogły uruchamiać, wtedy więcej ich używało i więcej osób zainteresowanych tylko tym, co mogą zrobić zamiast tego, jak to robią i jak to zrobić.

barlop
źródło
2
Co do cholery są „wollies”?
Nate Eldredge
1
@ Słownik miejski NateEldredge : «Jowialny termin dla kogoś, kto mówi lub robi coś głupiego / Ktoś, kto dodaje 2 i 2 i dostaje 5.„ Co za wilk ”»
Paul A. Clayton
@NateEldredge Normalnie pisane „wally”.
David Richerby,
2
Berating OP nie jest odpowiedzią.
Raphael
2

Mógłby być nauczany pojęć informatyki bez komputera. Oczywiście, bez dostępu do komputera, co naprawdę robi nauka informatyki?

Kiedy uczyłem się informatyki w liceum, nasze pierwsze kilka klas w ogóle nie obejmowało komputerów. Zamiast tego pracowaliśmy z książki o nazwie Karel ++ , która uczyła koncepcji obiektowych. Skompilowany język można dość łatwo „uruchomić” na tablicy lub tablicy, ponieważ cały kod wykonuje działania na wykresie. Nasze pierwsze zadania zostały napisane odręcznie, a profesor zademonstruje prawidłowe rozwiązanie na tablicy na początku następnej klasy.

Kiedy zaczęliśmy dyskutować o algorytmach, nasz profesor wezwał nas wszystkich na front pokoju i kazał stanąć w szeregu. Następnie zademonstrował kilka różnych algorytmów sortowania - zaczynając od czegoś głupiego, co nazywał „sortowaniem małp”, w którym losowo wymieniał nas dwoje, a następnie sprawdzał, czy jesteśmy sortowani przy każdej iteracji, a następnie wykonując sortowanie bąbelkowe i sortowanie powłoki - według „uruchamiając” je na nas.

Rysował schematy na tablicy, wyjaśniając podstawy działania pamięci komputera i stosu. Pokazał zmienne i wskaźniki (była to klasa C ++), a stamtąd do połączonych list i drzew ...

Prawdopodobnie mógłbym to dodać, gdybym przejrzał notatki, które trzymałem z tej klasy, ale to wszystko, co teraz pamiętam. Jeśli te sugestie są interesujące, mogę rozwinąć tę odpowiedź.

Czarny Jastrząb
źródło
1
Wydaje się, że mylisz programowanie (rzemiosło) z informatyką .
Raphael
@Raphael Rozumiem, że mechanika programowania w danym języku może nie być ważna dla części naukowej , ale ile naprawdę można oddzielić informatykę od programowania, zanim stanie się ona tak teoretyczna, że ​​będzie niezrozumiała dla studentów, którzy być może nie znają nawet jak obsługiwać komputer? Mógłbym zmienić swoją odpowiedź, aby rozdzielić te dwie rzeczy, ale obraz, który przychodzi mi do głowy w oparciu o pytania PO, to nie dorośli, którzy chcą dowiedzieć się o matematycznych podstawach teorii złożoności, ale uczniowie klas, którzy potrzebują wprowadzenia do zastosowań CS.
Blackhawk
@DavidRicherby Poprosiłem PO o wyjaśnienie, kim (wiek / doświadczenie z komputerami) będzie grupa docelowa studentów i jakiego materiału zamierza uczyć. Odpowiednio dostosuję swoją odpowiedź. Gdybym mógł, zasugerowałbym, że bardziej bezpośrednią analogią byłoby twórcze pisanie vs umiejętność używania alfabetów i słowników. Tyle że nawet ta analogia nie jest wystarczająca, ponieważ nauka języków programowania jest w rzeczywistości objęta informatyką.
Blackhawk
@Blackhawk Oczywiście żadna analogia nie jest idealna (prawie z definicji). Ale, podczas gdy konstrukcja języków programowania jest CS, po prostu ich użyciu nie jest.
David Richerby
1
@DavidRicherby Właśnie przeczytałem stronę przewodnika dla CS, a konkretnie „zapytaj o ...” i „NIE pytaj o ...” i mam wrażenie, że zbyt wiele osób zadaje / odpowiada na pytania na tej stronie, byłoby znacznie lepiej na SO ... przepraszam, jeśli włączyłem się w to. Czy możesz wskazać mi konkretne rzeczy, które mógłbym zmienić w tej odpowiedzi, aby dostosować ją do celów witryny? Podejrzewam, że powinienem przynajmniej usunąć odniesienia do „średników” i „C ++”, ale co z wykorzystaniem Karela ++ jako narzędzia do nauczania koncepcji języków zorientowanych obiektowo? Czy pamięć komputera?
Blackhawk
2

Zrobiłem stopień informatyki i pomyślałem, że nauczyliśmy się dużo programowania (w różnych językach), nauczyliśmy się również wielu aspektów matematycznych (a także sprzętu).

Części matematyczne były ważniejsze w pierwszym roku - pomyśl o matematyce matematycznej, która jest niezbędna w grafice 3d (jak obliczyć normalną powierzchnię do oświetlenia wierzchołka? ). Zrobiliśmy wiele statystyk - pomyśl o analizie przepustowości zadań, jaki wskaźnik zadań możesz przekazać do systemu, zanim się zatka? Jest to bardzo ważne dla wielu scentralizowanych systemów i sieci.

Możesz uczyć wielu algorytmów, wspomniany tutaj jeden plakat daje każdemu numer, a następnie każe im się posortować przy użyciu różnych algorytmów (aktywnych i informacyjnych). W ten sposób można nauczyć się dowolnego algorytmu, który można opisać na animowanym obrazie w Internecie . Podobnie podstawy obliczeń - licznik programów, akumulator i rejestrymożna uczyć w ten sam sposób lub na papierze. Co powiesz na wielowątkowość opartą na uczniach - ustaw grupę uczniów w grę karcianą ze stosem między nimi w klasycznym ćwiczeniu wielowątkowym (lub problem z 1 wspólną łyżką). Lub wzorce projektowe, myślę, że architektura tablicowa jest idealna dla studentów, aby dowiedzieć się, w jaki sposób można wdrożyć komunikację wieloprocesową, lub architekturę wielopoziomową opisaną jako rodzaj gry szeptem po chińsku lub maszyny o stanie skończonym odpowiadałyby uczniom działającym jako moduły w „żywym komputerze”. Możesz uczyć matematyki binarnej lub wykonywania na stosie (tj. Odwrotnego polerowania).

Oczywiście, jeśli masz dostęp do elektroniki, możesz zbudować komputer analogowy ze wzmacniaczy operacyjnych. Oni są fajni.

Niestety, wszystko to będzie bardziej przypominać matematykę niż informatykę, ale większość z nich pozostanie i pewnego dnia zrozumieją, dlaczego ich nauczono (zakładając, że zajmują się branżą komputerową). Pamiętaj, że wszystko, co może zrobić komputer, może zrobić dana osoba - osiągnięcie tego samego rezultatu zajmie mu znacznie więcej czasu i nudy. Musisz tylko podać proste przykłady, aby zademonstrować, co zrobiłby komputer, i wyobraźnię, aby opisać podstawy obliczeń w mniej suchy sposób, niż mnie nauczono, dawno temu :)

gbjbaanb
źródło
1

Pytanie o to, jak można studiować informatykę bez komputerów jest trochę jak pytanie o to, jak można studiować kosmologię bez teleskopów.

W większości odpowiadam tylko po to, aby zareagować na to oświadczenie i ponieważ zdecydowanie nie zgadzam się z innymi odpowiedziami. Prawidłowe porównanie byłoby moim zdaniem

Pytanie o to, jak można studiować informatykę bez komputerów jest trochę jak pytanie o to, jak można studiować kosmologię bez kosmosu .

Informatyka dotyczy komputerów, a nie tylko ich używania. To prawda, że ​​wiele informatyki opiera się na matematyce, więc części matematyczne można badać bez komputerów (więc uczysz matematyki), tak jak zamiast kosmologii możesz uczyć się fizyki, która będzie przydatna, gdy pojawi się kosmos (lub mieć dostęp do teleskopów), ale ostatecznie to, co studiujesz, to fizyka.

Otóż, wszyscy w odpowiedzi tutaj zwracają uwagę, że informatyka na poziomie licencjackim jest głównie teoretyczna i nie wymaga komputerów, a ludzie ci, IMHO, zapominają, że ci sami ludzie używali komputerów do tego momentu. Bez naturalnego zrozumienia bezpośrednie zagłębianie się w teorię teoretyczną spowoduje po prostu, że wielu studentów zrezygnuje lub będzie miało okropnie niedopasowane spojrzenie na informatykę. Naucz więc programowania, rozumiejąc, jakie komputery są pierwsze, a dopiero potem zajmij się teorią teoretyczną.

Na przykład, jeśli uczę w Afryce studentów, którzy nie znają się na komputerze poza wiedzą na poziomie ogólnym, ale którzy chcą uczyć się zaawansowanej informatyki i poświęcają większość swojego czasu na to hobby?

Zależy od budżetu:

  • Prawie brak budżetu Jeśli masz pieniądze na podróż do Afryki, weź kilka klonów arduino (istnieją funkcjonalne klony arduino za 13 USD, sprawdź na przykład tę listę ), niektóre komponenty wyjściowe (takie jak diody LED) i jeden laptop. Zacznij od podstawowego programowania, naucz go na papierze i wprowadź go na laptopie. To nie jest najskuteczniejszy sposób, ale nauczy ich przynajmniej podstawowej podstawowej wiedzy na temat tego, czym właściwie są komputery.
  • Niski budżet Kup $ 750 dolarów wart $ 50 android smartfony i klawiatury (klawisze microUSB lub Bluetooth klawiatury, sprawdź ebay.com lub aliexpress.com zarówno dla smartfonów i instrumenty klawiszowe). Tak, są gówniani na milion sposobów, nawet mi o tym nie mów. Nadal jednak możesz wprowadzać na nich dane (choć nawet nie rozważaj korzystania z klawiatur ekranowych) i istnieją proste aplikacje do kodowania dla Androida. Mieć wielu uczniów na jeden smartfon, co może działać całkiem dobrze.

Pozwólcie, że wyrażę się jasno, nie mówię, że informatyki nie można uczyć bez komputerów, po prostu trzeba się przyzwyczaić do komputerów i znać je dość dobrze, zanim zacznie się zastanawiać nad czymś takim.

David Mulder
źródło
Albo źle zrozumiałem twoją niezgodę z moją odpowiedzią, albo się z nią nie zgadzam. Gdybyśmy wiedzieli, że nie ma kosmosu, kosmologia byłaby całkowitym wymysłem. Gdybyśmy naprawdę wierzyli w istnienie kosmosu, kosmologia byłaby w najgorszym wypadku dobrze zmarnowanym marnotrawstwem zasobów. Ale tak naprawdę wiemy, że istnieje. Kosmologia bez teleskopów mówi: „Hej, nie mogę obserwować kosmosu w tym tygodniu, ale na pewno tam jest. CS bez komputerów mówi: „Hej, komputery zdecydowanie istnieją, więc mogę je teraz studiować, a później doświadczyć fizycznie”.
David Richerby
A nauczanie kogoś informatyki bez korzystania z niego lub praktycznego rozumienia, czym jest komputer, jest tak samo wymyślone. Nie wchodzisz w bezpośrednią interakcję z kosmosem za pomocą teleskopu, to tylko jeden z wielu sposobów na obserwację go. W nocy można go jeszcze zobaczyć i można go łatwo zrozumieć na podstawowym poziomie. To samo po prostu nie dotyczy komputerów.
David Mulder
Całkowicie nie zgadzam się z tym, że zmyśleniem jest uczyć kogoś czegoś, co naprawdę istnieje, ale czego nie doświadczył.
David Richerby
2
@DavidRicherby: Ty i inni tutaj jesteście tak głęboko zakorzenieni w przyzwyczajeniu się do komputerów, że trudno jest zrozumieć, co tak naprawdę oznacza próbę nauczenia kogoś informatyki bez podstaw z komputerami w pierwszej kolejności ... Znam kogoś, kto rzeczywiście prowadził kursy dla młodzieży, która nigdy nie używała komputerów z rzeczywistymi komputerami ... nawet nie próbował uczyć programowania lub informatyki i po prostu osiągnięcie podstawowego poziomu zrozumienia, czym jest komputer, jest zadaniem własnym, jeśli nie dorastałeś z komputerami. (ciąg dalszy)
David Mulder
2
W dzisiejszych czasach jest to stosunkowo łatwiejsze, ponieważ więcej młodych ludzi ma przynajmniej pewne doświadczenie, ale pytanie dotyczyło przypadków, w których nie mają żadnego doświadczenia. Ta sama osoba powiedziała mi, jak w kraju, w którym nauczał, był okres, w którym uczniowie ze szkoły średniej przybywali na kursy informatyki na uniwersytecie bez dotykania komputera, zanim ... nauczyli się tylko teorii w szkole średniej i jak większość (zdecydowanie nie wszystkie) przypadków, które kończą się źle. Problem / pomysł polega na tym, że zadania komputerowe dobrze się opłacają, więc chcą je zdobyć bez względu na wszystko ...
David Mulder
1

Informatyka dotyczy algorytmów, a nie (ściśle) komputerów (i elektroniki).

Jako takie, badanie algorytmów (nawet elementarnej arytmetyki) może przynieść zrozumienie informatyki i programowania. Pamiętaj, że nawet termin „algorytm” jest parafrazą autora książki arytmetycznej ( al-Khwārizmī , około 9 wieku n.e.).

Badanie algorytmów można przeprowadzić za pomocą elementarnych środków, ale powinno ono zapewnić wyjaśnienie, dlaczego algorytm działa, jak powstał i jak można faktycznie wykazać, że działa poprawnie.

Nie można nie doceniać historii ewolucji informatyki, algorytmów i programowania. Na przykład kalkulator Babbage / Ady, maszyna Enigma, deska Konrada Zuse'a , ENIAC itp.

Następnie można wprowadzić programowanie (i języki programowania) jako sposób sformalizowania algorytmów. Można to również zrobić (w dużym stopniu) za pomocą elementarnych środków.

Uwaga : niektóre badania wykazały, że programowanie uczenia się peole ma dwie główne trudności w zrozumieniu (związane z przeciążeniem symboli, na przykład testem przypisania vs testu równości i działaniem maszyny RAM).

  1. Konstrukcje pętli (np. For, while itp.) Wydają się trudne
  2. Testowanie przypisania a testowanie równości wydaje się również trudne.

Aby upewnić się, że są one zrozumiane i zrozumiane przez ludzi.

Co więcej, jeśli można uzyskać dostęp do dowolnego komputera (nawet kalkulatora, który można zaprogramować), można go użyć do dostarczenia przykładów aplikacji i praktycznego doświadczenia. W przeciwnym razie można użyć symulowanego komputera. Można to zrobić na różne sposoby, na przykład grupa ludzi może symulować części komputera, a klasa może projektować algorytmy w celu rozwiązania różnych problemów dla tego symulowanego komputera i zobaczyć, jak to działa. To może być postrzegane jako gra, bądź kreatywny i makijaż.

Następnie można wprowadzić niektóre (abstrakcyjne) modele obliczeniowe (na przykład Maszyny Turinga ) i powiązać je z poprzednim materiałem na temat algorytmów i formalizacji w języku (programistycznym).

Jeśli chcemy wprowadzić elektronikę rzeczywistego komputera, można to zrobić również w dwóch częściach.

Pamiętaj, że nawet na uniwersytetach niektóre kursy z elektroniki i architektury komputerowej są teoretyczne (w rzeczywistości nie ma się do czynienia z procesorem ani z projektowaniem).

Tak więc można wprowadzić pewne zasady działania elektroniki (i leżącej u jej podstaw fizyki) związane z architekturą komputerową ( półprzewodniki , strefy energii półprzewodnikowej , bramki p-np itp.).

Następnie można wykorzystać poprzedni materiał o programowaniu i algorytmach oraz wprowadzić (nowoczesne) techniki projektowania procesorów (i ich opis), które są stosowane w przemyśle ( bramki logiczne , flip-flops , układy FPGA , VHDL , CMOS itp.).

Można to szerzej zająć się problemami architektury projektowania procesora, takimi jak równoległość, potok, pamięć podręczna, adresowanie wektorów, mikroprogramowanie, DMA itp.

Cóż, ok, może to może być za dużo, ale dodane, aby odpowiedź była samodzielna.

Nikos M.
źródło
-1

Czy chcesz uczyć programowania?

Kiedy byłem dzieckiem, pojechaliśmy na wakacje na kemping i zabrałem ze sobą instrukcję obsługi komputera. Udało mi się napisać prostą grę, używając pióra i papieru.

To był mój pierwszy prawdziwy program, więc wymagało to dużo nauki. Wiedziałem, co chcę zrobić, ale zdarzyło mi się wiele fałszywych startów. Ale w końcu udało mi się napisać cały kod.

Myślę, że to, co mówię, to zacząć od pseudo kodu i \ lub schematów blokowych, aby zaplanować projekt, a następnie przełożyć na kod. Byłem w stanie debugować wiele mojego kodu, po prostu go czytając. Tutaj możesz również skorzystać z recenzji użytkowników.

Ricky
źródło
Zdecydowanie wybrałbym raczej pseudokod niż schematy blokowe.
David Richerby
To pytanie zasługuje na więcej niż jeden punkt danych doświadczenia na odpowiedź.
Raphael
-2

Aby powtórzyć poprzednie odpowiedzi: wiele można się nauczyć, czytając i wykonując ćwiczenia piórem i kartką. Jeśli potrafisz rozwiązać problem na papierze, masz trudną część. Chciałbym jednak również wspomnieć o istnieniu dość tanich sposobów narażania studentów na CS. Czy znasz projekt Raspberry Pi ? Nawet jeśli kilka osób musi się dzielić lub możesz sobie pozwolić tylko na 1 lub 2 jednostki, nadal warto rozważyć wykorzystanie ich jako technologii.

liko
źródło
To nie dodaje niczego w stosunku do istniejących odpowiedzi.
Raphael
1
@Raphael Prawda, choć zauważ, że inne odpowiedzi, które wspominają o tanich urządzeniach komputerowych, zostały opublikowane po tym.
David Richerby
-3

postaram się trochę poruszyć i „pomyśleć nieszablonowo”. komputery z pełną funkcjonalnością są naprawdę drogie, czasem wymagające zasobów i trudne w utrzymaniu. ale istnieje wiele niedrogich systemów elektronicznych, które naśladują pełne komputery, np. z ekranami LCD itp. i które można zastosować wiele podstawowych zasad programowania, wiele zasilanych bateryjnie. istnieje również ścisły związek zasad EE z obliczeniami, takimi jak budowanie binarnych obwodów logicznych itp .; także obecnie niektóre zabawki mają możliwości programowania.

  • programowalne kalkulatory . niektóre mają wbudowane całe języki programowania (nie tak wysoki poziom, ale bardziej języki asemblera). niektóre wspierałyby zaawansowane programy.

  • Raspberry pi minikomputer / mikrokontroler został opracowany w tym celu i działa w systemie Linux. w wielu przypadkach mniej niż 40 USD.

  • zestaw paralaksy STAMP mikrokontroler wymaga połączenia USB, ale może wystarczy Raspberry pi. patrz także mikrokontroler PIC

  • systemy robotyki. istnieje wiele niedrogich, które mają pewną programowalną logikę. Lego Robotics Mindstorms / NXT jest jednym z najlepszych i są tańsze modele.

  • niektóre gry konsolowe mają wbudowane zasady programowania. np. Little Big Planet ma wbudowane niesamowite funkcje programowania. istnieje kilka podręcznych wersji programowalnych gier. istnieje wiele filmów z youtube złożonych konstrukcji dla inspiracji.

  • smartfony to nowy świat programowania. mają przeglądarki obsługujące javascript i istnieje wiele aplikacji związanych z programowaniem, a nawet można przeglądać strony programistyczne z dostępem do Internetu (w tym Wi-Fi).

sugeruj także, jak w komentarzach, budowanie programów TM, np. w celu dodania itp. i próbowanie ich ręcznego śledzenia.

vzn
źródło
2
Podejrzewam, że ludzie, którzy nie mają dostępu do komputerów, również nie mają dostępu do Lego Mindstorms, konsoli do gier, smartfonów lub Wi-Fi.
David Richerby,
punkt słuszny / oczywisty / oczekiwany, ale nic nie zostało wyraźnie wykluczone w kryteriach pytania. nie wiadomo z pytania, czy uczniowie nie mają rzeczy, ponieważ jest np. drogi, a wszystko wymienione powyżej jest tańsze niż komputery stacjonarne jako punkt odniesienia. uczniowie lub szkoły, które mogą sobie pozwolić na podręczniki, mogą sobie pozwolić na powyższe (być może udostępniając je). a jeśli podręczniki nie są dostępne, to co jeszcze pozostało?
vzn
(zakres pytania fyi został znacząco zmieniony przez mod, odkąd napisano tę odpowiedź, dla mnie ta edycja pytania czyni główne założenia, których nigdzie nie zamierzał, i wolę oryginalną dwuznaczność jako cechę, a nie błąd)
vzn