Informatyka w ogólnym zarysie - ebook
Informatyka w ogólnym zarysie - ebook
Informatyka w ogólnym zarysie to kultowy podręcznik przeznaczony dla studentów informatyki. Autorzy przedstawiają w nim najważniejsze zagadnienia z dziedziny informatyki. Omawiają: • architekturę komputerów, • oprogramowanie (systemy operacyjne, algorytmy, języki, paradygmaty programowania, problemy związane z inżynierią oprogramowania) i • organizację danych (struktury danych, struktury plikowe, bazy danych). • możliwości dzisiejszych komputerów. W książce znalazły się też takie tematy jak: sztuczna inteligencja, sieci neuronowe, algorytmy genetyczne, złożoność obliczeniowa i kryptografia. Bardzo atrakcyjnym elementem książki są wyróżnione bloki, zawierające ciekawe informacje uzupełniające. Autorzy wskazują w nich, czym żyje dzisiejsza społeczność informatyczna, przedstawiają różne nowinki i poruszają zagadnienia dotyczące etyki współczesnego informatyka i prywatności informacji w kontekście rozwoju sieci komputerowych. W książce znajdują się liczne zadania i problemy do samodzielnego rozwiązania. Publikacja jest przeznaczona dla studentów pierwszych lat studiów informatycznych, a także dla studentów innych kierunków, którzy powinni poznać podstawy informatyki, by móc w życiu zawodowym korzystać z opisanych w niej narzędzi. Nowe, 13. wydanie zostało w całości zaktualizowane i wzbogacone o ponad tysiąc nowych problemów do rozwiązania.
Kategoria: | Informatyka |
Zabezpieczenie: |
Watermark
|
ISBN: | 978-83-01-22296-3 |
Rozmiar pliku: | 10 MB |
FRAGMENT KSIĄŻKI
Ta książka stanowi ogólny przegląd informatyki. Dotyczy obszernego zakresu tej dziedziny, jednocześnie oferując wystarczającą szczegółowość, by umożliwić zrozumienie analizowanych tematów.
Odbiorcy
Tekst ten napisaliśmy z myślą o studentach informatyki oraz innych dyscyplin. Jeśli chodzi o studentów informatyki, większość rozpoczyna studia z iluzją, że informatyka to programowanie, przeglądanie stron internetowych i udostępnianie plików w Internecie, bo w zasadzie jest to wszystko, co widzieli. Jednak informatyka to znacznie więcej. Początkujący studenci informatyki muszą zapoznać się z szerokim zakresem przedmiotu, w którym planują zdobyć specjalizację. Zapewnienie tej wiedzy jest tematem niniejszej książki. Da ona studentom przegląd informatyki – podstawę, dzięki której mogą zrozumieć znaczenie i wzajemne powiązania przyszłych kursów w tej dziedzinie. To podejście do nauki modelem stosowanym w praktyce na kursach wprowadzających w naukach przyrodniczych.
To szerokie tło jest również tym, czego potrzebują studenci z innych dyscyplin, jeśli mają należeć do społeczeństwa technicznego, w którym żyją. Kurs informatyki dla tej grupy odbiorców powinien zapewnić praktyczne, realistyczne zrozumienie całej dziedziny, a nie jedynie wprowadzenie do korzystania z Internetu lub szkolenie w zakresie korzystania z niektórych popularnych pakietów oprogramowania. Oczywiście jest miejsce na tego typu szkolenia, natomiast ten tekst dotyczy edukacji.
Podczas pisania poprzednich wydań tej książki głównym celem było zachowanie jej przystępności dla studentów nietechnicznych. W rezultacie książka była z powodzeniem wykorzystywana na kursach dla studentów z różnych dyscyplin i na różnych poziomach edukacji, od szkół średnich po kursy dla absolwentów. To, 13 wydanie, jest opracowane tak, by kontynuować tę tradycję.
Nowości w wydaniu 13.
Głównym celem podczas opracowywania tego 13. Wydania było podkreślenie wspólnych obszarów z nowym egzaminem College Board Advanced Placement® Computer Science Principles („CSP”). Ten obszerny podręcznik w zakresie wprowadzenia do informatyki zawierał wiele głównych pojęć i praktyk obliczeniowych skodyfikowanych w ramach CSP na długo przed pojawieniem się tego egzaminu. Wcześniejsze wydania książki zostały wykorzystane w pilotażowych wersjach kursów CSP oraz jako źródło rozwoju zawodowego dla nauczycieli przygotowujących się do nauczania w tym zakresie na poziomie szkół średnich. Chociaż książka ta jest przeznaczona głównie do kursów wprowadzających na poziomie szkoły wyższej, to wydanie wyraźnie zawiera wiele punktów wspólnych z treściami CSP, aby lepiej pomóc studentom i instruktorom przygotowującym się do egzaminu AP® CSP lub uczęszczającym na kurs na poziomie szkoły wyższej, który odpowiada programowi CSP.
W wydaniu 13. nadal korzystamy z przykładów kodu w Pythonie i pseudokodu podobnego do Pythona przyjętych w wydaniu 12. Wprowadziliśmy tę zmianę z kilku powodów. Przede wszystkim tekst zawierał już sporo kodu w różnych językach, a w kilku rozdziałach także w postaci szczegółowego pseudokodu. W zakresie, w jakim czytelnicy już przyswajają sporą ilość składni, właściwe jest użycie tej składni w języku, na który mogą faktycznie trafić w kolejnym kursie. Co ważniejsze, coraz większa liczba instruktorów, którzy korzystają z tej publikacji, stwierdziła, że nawet w szerokim wprowadzeniu do informatyki studentom trudno jest opanować wiele tematów, jeśli brakuje narzędzi programistycznych do eksploracji i eksperymentowania.
Ale dlaczego Python? Wybór języka jest zawsze kwestią sporną, a każdy wybór z pewnością zdenerwuje co najmniej tyle osób, ilu się spodoba. Python to doskonały wybór z następujących powodów:
• przejrzysta, łatwa do opanowania składnia,
• proste typy pierwotne we/wy,
• typy danych i struktury sterujące, które ściśle odpowiadają typom pierwotnym w pseudokodzie używanym we wcześniejszych wydaniach, oraz
• obsługa wielu paradygmatów programowania.
Jest to dojrzały język z aktywną społecznością programistyczną i bogatymi zasobami online do dalszej nauki. W pewnych kategoriach Python pozostaje jednym z pięciu najczęściej używanych języków w branży i obserwuje się gwałtowny wzrost jego wykorzystania na kursach wprowadzających do informatyki. Jest szczególnie popularny w przypadku kursów wprowadzających na kierunkach niespecjalistycznych i jest szeroko akceptowany w innych dziedzinach nauki, technologii, inżynierii i matematyki, takich jak fizyka i biologia, oraz jako język z wyboru w przypadku zastosowań w naukach obliczeniowych.
Niemniej jednak tekst nadal koncentruje się na różnych pojęciach z zakresu informatyki. Dodatki w Pythonie mają dać czytelnikom głębszy smak programowania w stosunku do poprzednich wydań, ale nie służyć jako pełnoprawne wprowadzenie do programowania. Omawiane tematy w Pythonie są związane z istniejącą strukturą tekstu. Tak więc rozdział 1 omawia składnię Pythona do przedstawiania danych – liczb całkowitych, zmiennoprzecinkowych, ASCII i łańcuchów Unicode. Rozdział 2 dotyczy operacji Pythona, które ściśle odzwierciedlają podstawowe operacje maszynowe omówione w dalszej części rozdziału. Warunki, pętle i funkcje zostały wprowadzone w rozdziale 5, gdzie te konstrukcje są potrzebne do utworzenia kompletnego pseudokodu do opisywania algorytmów. Krótko mówiąc, konstrukcje Pythona służą do podkreślania pojęć informatycznych, a nie odwracania uwagi od tematu dyskusji.
Każdy rozdział został zmieniony, zaktualizowany i poprawiony w stosunku do poprzednich wydań.
Układ książki
Tematy w niniejszej książce są ułożone od najbardziej elementarnych do bardziej złożonych, od konkretów do uogólnień – taki układ stanowi solidną pedagogiczną prezentację, w której każdy temat prowadzi do następnego. Zaczyna się od podstaw kodowania informacji, przechowywania danych i architektury komputerowej (rozdziały 1 i 2); przechodzi do analizy systemów operacyjnych (rozdział 3) i sieci komputerowych (rozdział 4); zajmuje się tematyką algorytmów, języków programowania i tworzenia oprogramowania (rozdziały od 5 do 7); analizuje techniki zwiększania dostępności informacji (rozdziały 8 i 9); rozważa kilka głównych zastosowań technologii komputerowej poprzez grafikę (rozdział 10) i sztuczną inteligencję (rozdział 11) i kończy się wprowadzeniem do ogólnej teorii obliczeń (rozdział 12).
Mimo że zawartość książki jest zgodna z tym naturalnym zagłębianiem się w tematykę, poszczególne rozdziały i podrozdziały są zaskakująco niezależne i zwykle można je czytać jako pojedyncze jednostki lub przestawiać w celu utworzenia alternatywnych sekwencji studiów. W rzeczywistości książka ta jest często używana jako podstawa do kursów, które obejmują materiał w różnej kolejności. Jedna z tych alternatyw zaczyna się od materiału z rozdziałów 5 i 6 („Algorytmy” i „Języki programowania”) i w zależności od potrzeb odwołuje się do wcześniejszych rozdziałów. Znamy również jeden kurs, który zaczyna się od materiału z rozdziału 12 na temat obliczalności. W jeszcze innych przypadkach test ten był używany w kursach będących zwieńczeniem pewnego obszaru wiedzy, gdzie służył jako szkielet, z którego można było przejść do projektów w różnych obszarach. Kursy dla mniej zorientowanych technicznie odbiorców mogą koncentrować się na rozdziałach 4 („Sieć i Internet”), 9 („Systemy baz danych”), 10 („Grafika komputerowa”) i 11 („Sztuczna inteligencja”).
Na pierwszej stronie każdego rozdziału użyliśmy gwiazdek, aby oznaczyć niektóre podrozdziały jako opcjonalne. Są to podrozdziały, które omawiają tematy w bardziej konkretnym kontekście lub po prostu omawiają je bardziej szczegółowo. Naszą intencją w książce jest jedynie zasugerowanie alternatywnych ścieżek lektury. Są oczywiście i inne możliwości. W szczególności, jeśli chcesz szybko zapoznać się z tematyką, proponujemy następującą kolejność:
Podrozdział Temat
1.1–1.4 Podstawy zapisu i przechowywania danych
2.1–2.3 Architektura maszyny i język maszynowy
3.1–3.3 Systemy operacyjne
4.1–4.3 Sieć i Internet
5.1–5.4 Algorytmy i projektowanie algorytmów
6.1–6.4 Języki programowania
7.1–7.2 Inżynieria oprogramowania
8.1–8.3 Abstrakcje danych
9.1–9.2 Systemy baz danych
10.1–10.2 Grafika komputerowa
11.1–11.3 Sztuczna inteligencja
12.1–12.2 Teoria obliczalności
W tekście przewija się kilka wątków. Jednym z nich jest to, że informatyka jest dynamiczna. Książka wielokrotnie przedstawia tematy w ujęciu historycznym, omawia aktualny stan rzeczy oraz wskazuje kierunki badań. Kolejnym wątkiem jest rola abstrakcji i sposób, w jaki abstrakcyjne narzędzia są wykorzystywane do kontrolowania złożoności. Temat ten został przedstawiony w rozdziale 0, a następnie powtórzony w kontekście architektury systemu operacyjnego, sieci, opracowywania algorytmów, projektowania języków programowania, inżynierii oprogramowania, organizacji danych i grafiki komputerowej.
Do prowadzących szkolenia
W tej książce znajduje się więcej materiału, niż studenci mogą normalnie przerobić w ciągu jednego semestru, zatem nie należy się wahać, przy czy pominąć tematy, które nie pasują do celów kursu, lub zmienić kolejność według własnego uznania. Można przekonać się, że chociaż tekst podąża za ustaloną fabułą, tematy są poruszane w sposób w dużej mierze niezależny, co pozwala na ich wybranie według własnego uznania. Książka jest przeznaczona do wykorzystania jako zasób dla kursu, a nie jako definicja kursu. Sugerujemy, aby zachęcać studentów do czytania materiałów, które nie zostały w pełni uwzględnione w naszych własnych kursach. Nie docenimy ich, jeśli założymy, że musimy wszystko wyjaśnić na zajęciach. Powinniśmy wspierać ich w samodzielnej nauce.
Czujemy się w obowiązku powiedzieć kilka słów o układzie tekstu – od zagadnień najbardziej elementarnych po bardziej złożone oraz od konkretów do uogólnień. Jako nauczyciele akademiccy zbyt często zakładamy, że studenci docenią naszą perspektywę przedmiotu – często taką, którą wypracowaliśmy przez wiele lat pracy w danej dziedzinie. Jako nauczyciele uważamy, że radzimy sobie lepiej, prezentując materiał z perspektywy studenta. Dlatego książka rozpoczyna się od reprezentacji i przechowywania danych, architektury maszyn, systemów operacyjnych i sieci. Są to tematy, które studenci bez trudu kojarzą – najprawdopodobniej słyszeli takie terminy, jak JPEG i MP3; zapewne nagrywali dane na płytach DVD i pendrive’ach; mieli do czynienia z systemem operacyjnym i codziennie korzystają z Internetu i smartfonów. Rozpoczynając kurs od tych tematów, studenci poznają odpowiedzi na wiele pytań „dlaczego”, które zadają sobie od lat, i uczą się postrzegać kurs jako praktyczny, a nie teoretyczny. Od tego momentu naturalne jest przejście do bardziej abstrakcyjnych zagadnień związanych z algorytmami, strukturami w algorytmach, językami programowania, metodologią tworzenia oprogramowania, obliczeń i złożoności, które niektórzy z nas postrzegają jako główne tematy w tej nauce. Jak już wspomniano, tematy są przedstawione w sposób, który nie zmusza do trzymania się takiej kolejności tematów, natomiast zachęcamy do jej wypróbowania.
Wszyscy zdajemy sobie sprawę, że studenci uczą się o wiele więcej, niż my uczymy ich bezpośrednio, a nauka zdobywana pośrednio jest często lepiej przyswajana niż ta zdobywana bezpośrednio. Jest to istotne, jeśli chodzi o „nauczanie” rozwiązywania problemów. Studenci nie stają się osobami rozwiązującymi problemy, studiując metodologie rozwiązywania problemów. Staną się nimi, rozwiązując problemy – a nie tylko precyzyjnie postawione „zadania podręcznikowe”. Z tego powodu ta książka zawiera wiele zadań, z których kilka jest celowo niejasnych – co oznacza, że niekoniecznie istnieje jedno poprawne podejście lub jedna poprawna odpowiedź. Zachęcamy do korzystania z nich i rozwijania się na ich podstawie.
Inne zagadnienia z kategorii „uczenia się niebezpośredniego” to profesjonalizm, etyka i odpowiedzialność społeczna. Nie uważamy, że powinno to być przedstawiane jako odosobnione kwestie, które są po prostu dołączone do kursu. Zamiast tego powinny stanowić integralną część materiału i pojawiać się wtedy, gdy jest to istotne. Takie podejście jest stosowane w niniejszej książce. Podrozdziały 3.5, 4.6, 7.9, 9.7 i 11.7 prezentują tematy, takie jak bezpieczeństwo, prywatność, odpowiedzialność i świadomość społeczna w kontekście systemów operacyjnych, sieci, inżynierii oprogramowania, systemów baz danych i sztucznej inteligencji. Każdy rozdział zawiera również zestaw pytań zatytułowanych „Kwestie społeczne”, które zachęcają studentów do zastanowienia się nad związkiem między materiałem zawartym w tekście a społeczeństwem, w którym żyją.
Dziękujemy za skorzystanie z naszej książki w waszym szkoleniu. Niezależnie od tego, czy zdecydujecie, że jest ona właściwa w waszej sytuacji, czy nie, mamy nadzieję, że uznacie ją za wkład w literaturę edukacyjną z zakresu informatyki.
Funkcje pedagogiczne
Ta książka jest owocem wielu lat nauczania. Dzięki temu jest bogata w pomoce pedagogiczne. Najważniejszymi z nich jest obfitość problemów, które mogą pomóc zwiększyć zaangażowanie studentów – ponad tysiąc w tym 13. wydaniu. Są one oznaczone jako pytania i ćwiczenia, problemy przekrojowe i kwestie społeczne. Pytania oraz ćwiczenia pojawiają się na końcu każdego podrozdziału (z wyjątkiem rozdziału wprowadzającego). Dotyczą właśnie omówionego materiału, rozszerzają wcześniejszą dyskusję lub wskazują powiązane zagadnienia, które zostaną omówione później. Odpowiedzi na te pytania znajdują się w dodatku F.
Na końcu każdego rozdziału (z wyjątkiem rozdziału wprowadzającego) pojawiają się problemy przekrojowe. Mogą one służyć jako „zadania domowe”, ponieważ obejmują materiał z całego rozdziału i w książce nie ma do nich odpowiedzi.
Ponadto, na końcu każdego rozdziału znajdują się pytania z kategorii „Kwestie społeczne”. Są one przeznaczone do przemyślenia i dyskusji. Wiele z nich można wykorzystać do realizacji zadań badawczych zakończonych krótkimi raportami pisemnymi lub ustnymi.
Każdy rozdział kończy się również listą o nazwie „Dodatkowe materiały”, która zawiera odniesienia do innych źródeł związanych z tematem rozdziału. Dobrymi miejscami do szukania powiązanych materiałów są również witryny wskazane w tej przedmowie, w tekście oraz w specjalnie wydzielonych wstawkach w tekście.
Dodatkowe materiały
Różne materiały uzupełniające są dostępne na stronie internetowej towarzyszącej książce: www.pearsonhighered.com/brookshear. Wszyscy czytelnicy mogą skorzystać z:
• ćwiczeń dla każdego rozdziału, które poszerzają tematy zawarte w tekście i dają możliwość poznania powiązanych tematów;
• „autotestów” dla każdego rozdziału, które pomagają czytelnikom przemyśleć materiał zawarty w tekście;
• zadań, które uczą podstaw Pythona w pedagogicznej kolejności zgodnej z tekstem.
Ponadto, w Instructor Resource Center w Pearson Education, dostępne są poniższe dodatki dla wykwalifikowanych szkoleniowców. Odwiedź stronę www.pearsonhighered.com lub skontaktuj się z przedstawicielem handlowym Pearson, aby uzyskać informacje o tym, jak zdobyć do nich dostęp:
• przewodnik instruktora z odpowiedziami do zadań powtórzeniowych do rozdziałów,
• slajdy w PowerPoint z wykładami,
• bank testów
Errata do tej książki (jeśli jakaś się pojawi) będzie dostępna pod adresem http://www.mscs.mu.edu/~brylow/errata/.
Do studentów
Glenn Brookshear jest trochę nonkonformistą (niektórzy jego przyjaciele powiedzieliby, że więcej niż trochę), kiedy zatem przystąpił do pisania tego tekstu, nie zawsze stosował się do otrzymanych rad. W szczególności wielu twierdziło, że niektóre materiały są zbyt zaawansowane dla początkujących studentów. Uważamy jednak, że jeśli temat jest istotny, to jest on istotny, nawet jeśli społeczność akademicka uważa go za „temat zaawansowany”. Zasługujesz na tekst, który przedstawia pełny obraz informatyki, a nie na rozwodnioną wersję zawierającą sztucznie uproszczone prezentacje tylko tych tematów, które zostały uznane za odpowiednie dla początkujących studentów. Nie pomijaliśmy więc tematów, lecz szukaliśmy lepszych wyjaśnień. Staraliśmy się zapewnić wystarczającą szczegółowość, aby dać uczciwy obraz tego, czym jest informatyka. Podobnie jak w przypadku przypraw w przepisie, możesz pominąć niektóre tematy na kolejnych stronach, ale jeśli chcesz, to możesz ich spróbować – i zachęcamy do tego.
Zwracamy również uwagę, że jak w każdym kursie dotyczącym technologii, szczegóły, których uczymy się dzisiaj, mogą nie być szczegółami, które będziemy musieli znać jutro. Dziedzina jest dynamiczna – to daje emocje. Ta książka daje aktualny obraz tematu, a także perspektywę historyczną. Mając takie podstawy, będziecie przygotowani do rozwijania się wraz z technologią. Zachęcamy do rozpoczęcia procesu rozwoju już teraz poprzez wyjście poza tę książkę. Uczcie się uczyć.
Dziękujemy za zaufanie, jakim nas obdarzyliście, decydując się na lekturę naszej książki. Jako autorzy mamy obowiązek stworzyć rękopis, który jest wart waszego czasu. Mamy nadzieję, że okaże się, że spełniliśmy to zobowiązanie.
Podziękowania
Przede wszystkim dziękuję Glennowi Brookshearowi, który prowadził tę książkę, „swoje dziecko”, przez 11 poprzednich wydań obejmujących ponad ćwierć wieku szybkiego rozwoju i burzliwych zmian w dziedzinie informatyki. Chociaż jest to drugie wydanie, w którym pozwolił współautorowi nadzorować wszystkie zmiany, strony tego 13. wydania pozostają w dużej mierze głosem Glenna i, mam nadzieję, że są też zgodne z jego wizją. Wszelkie nowe niedociągnięcia są moje, a eleganckie ramy są jego autorstwa.
Przyłączam się do podziękowań Glenna dla tych z Was, którzy wspierali tę książkę, czytając ją i korzystając z jej poprzednich wydań. Jesteśmy zaszczyceni. Trzynaście wydań podręcznika do informatyki? Musimy być blisko jakiegoś rekordu.
Andrew Kuemmel (Madison West) był nieocenionym doradcą, gdy pracowaliśmy nad ustaleniem części wspólnych 13. wydania i CSP. Jest jedyną znaną mi osobą, która z powodzeniem prowadziła wiele kursów CSP zarówno na poziomie szkoły średniej, jak i uniwersytetu, a jego niestrudzone wsparcie dla nauczycieli informatyki w moim rodzinnym stanie Wisconsin było naprawdę inspirujące.
David T. Smith (Indiana University of Pennsylvania) odegrał znaczącą rolę jako współautor poprawek do 11. wydania, z których wiele jest nadal widocznych w niniejszym 13. wydaniu. Jego uważna lektura poprzednich wydań i dbałość o materiały uzupełniające były niemiernie istotne. Andrew Kuemmel (Madison West), George Corliss (Marquette) i Chris Mayfield (James Madison) dostarczyli cennych uwag, pomysłów i/lub zachęty do pracy nad projektami tego lub poprzednich wydań, a James E. Ames (Virginia Commonwealth), Stephanie E. August (Loyola), Yoonsuck Choe (Texas A&M), Melanie Feinberg (UT-Austin), Eric D. Hanley (Drake), Sudharsan R. Iyengar (Winona State), Ravi Mukkamala (Old Dominion) i Edward Pryor (Wake Forest) przedstawili cenne opinie odnośnie do poprawek dotyczących Pythona w 12. wydaniu.
Inne oosby, który wniosły wkład w to lub poprzednie wydania, to: J.M. Adams, C.M. Allen, D.C.S. Allison, E. Angel, R. Ashmore, B. Auernheimer, P. Bankston, M. Barnard, P. Bender, K. Bowyer, P.W. Brashear, C.M. Brown, H.M. Brown, B. Calloni, J. Carpinelli, M. Clancy, R.T. Close, D.H. Cooley, L.D. Cornell, M.J. Crowley, F. Deek, M. Dickerson, M.J. Duncan, S. Ezekiel, C. Fox, S. Fox, N.E. Gibbs, J.D. Harris, D. Hascom, L. Heath, P.B. Henderson, L. Hunt, M. Hutchenreuther, L.A. Jehn, K.K. Kolberg, K. Korb, G. Krenz, J. Kurose, J. Liu, T.J. Long, C. May, J.J. McConnell, W. McCown, S. J. Merrill, K. Messersmith, J.C. Moyer, M. Murphy, J.P. Myers, Jr., D.S. Noonan, G. Nutt, W.W. Oblitey, S. Olariu, G. Riccardi, G. Rice, N. Rickert, C. Riedesel, J.B. Rogers, G. Saito, W. Savitch, R. Schlafly, J.C. Schlimmer, S. Sells, Z. Shen, G. Sheppard, J.C. Simms, M.C. Slattery, J. Slimick, J.A. Slomka, J. Solderitsch, R. Steigerwald, L. Steinberg, C.A. Struble, C.L. Struble, W.J. Taffe, J. Talburt, P. Tonellato, P. Tromovitch, P.H. Winston, E.D. Winter, E. Wright, M. Ziegler i jedna osoba anonimowa. Wszystkim im szczerze dziękujemy.
Diane Christie zaprojektowała podręczniki Java i C++ dla witryny towarzyszącej poprzedniemu wydaniu, z której pochodzą nasze nowe zasoby w Pythonie. Dziękuję, Diane. Kolejne podziękowania kierujemy do Rogera Eastmana, który był siłą twórczą zadań towarzyszących poprzednim wydaniom tej książki, którego DNA wciąż można znaleźć w zadaniach na stronie towarzyszącej aktualnemu wydaniu.
Dziękuję dobrym ludziom z Pearson, którzy wsparli ten projekt. Tracy Johnson, Erin Ault, Carole Snyder i Scott Disanno wnieśli do książki swoją mądrość i wiele ulepszeń w trakcie całego procesu.
Na koniec dziękuję mojej żonie, Petrze, która zajmowała naszą trójkę dzieci przez długie popołudnia i wieczory podczas mojej pracy nad tym wydaniem. Ona jest moją opoką.
D.W.B.
Uniwersytet Marquette
1 stycznia 2018ZWIĄZEK 13. WYDANIA KSIĄŻKI INFORMATYKA W OGÓLNYM ZARYSIE ORAZ WYDANIA AP® Z AP® COMPUTER SCIENCE PRINCIPLES CURRICULUM FRAMEWORK
AP® jest znakiem towarowym zarejestrowanym i/lub należącym do College Board, który nie był zaangażowany w produkcję i nie promuje tego produktu.
Rozumienie kluczowych kwestii (Enduring Understandings, EU) i efekty kształcenia (Learning Outcomes, LO) z AP® CSP Curriculum Framework zostały odwzorowane na poniższe rozdziały i podrozdziały tego podręcznika. Kilka z performatywnych efektów kształcenia nie zostało wyraźnie omówionych w tej książce, ale można je znaleźć w dodatkowych zasobach i ćwiczeniach dostępnych na stronie internetowej towarzyszącej książce: www.pearsonhighered.com/brookshear. Aby uzyskać pełne informacje o programie nauczania, odwiedź stronę https://apcentral.collegeboard.org.
1.1. Kreatywny rozwój może być istotnym procesem tworzenia artefaktów obliczeniowych.
1.1.1
Zastosowanie kreatywnego procesu rozwoju podczas tworzenia artefaktów obliczeniowych.
5.3
1.2. Informatyka umożliwia ludziom wykorzystanie kreatywnych procesów rozwoju do tworzenia artefaktów obliczeniowych w celu twórczej ekspresji lub rozwiązywania problemów.
1.2.1
Utworzenie artefaktu obliczeniowego w celu twórczej ekspresji.
1.0
1.2.3
Utworzenie nowego artefaktu obliczeniowego poprzez połączenie lub modyfikację istniejących artefaktów.
10.6
1.3. Informatyka może rozszerzyć tradycyjne formy ludzkiej ekspresji i doświadczenia.
1.3.1
Użycie narzędzi i technik informatycznych do twórczej ekspresji.
10.1
2.1. Do reprezentowania wszystkich danych cyfrowych można użyć różnych abstrakcji zbudowanych na sekwencjach binarnych.
2.1.1
Opisanie różnorodnych abstrakcji używanych do reprezentowania danych.
1.1, 1.4, 2.1
2.1.2
Wyjaśnienie, w jaki sposób sekwencje binarne są używane do reprezentowania danych cyfrowych.
1.6, 2.6, 6.1, 6.4
2.2. Do pisania programów lub tworzenia innych artefaktów obliczeniowych używa się wielu poziomów abstrakcji.
2.2.1
Utworzenie abstrakcji podczas pisania programu lub tworzenia innych artefaktów obliczeniowych.
6.3
2.2.2
Użycie wielu poziomów abstrakcji do pisania programów.
6.2
2.2.3
Określenie różnych poziomów abstrakcji używanych podczas pisania programów.
1.1, 2.6, 6.1, 6.4
2.3. Modele i symulacje wykorzystują abstrakcję do generowania nowego pojmowania i wiedzy.
2.3.1
Zastosowanie modeli i symulacji do reprezentowania zjawisk.
10.3, 10.4, 10.6
2.3.2
Użycie modeli i symulacji do formułowania, udoskonalania i testowania hipotez.
10.4
3.1. Ludzie używają programów komputerowych do przetwarzania informacji w celu uzyskania wnikliwości i wiedzy.
3.1.1
Znajdowanie wzorców i testowanie hipotez dotyczących informacji przetworzonych cyfrowo w celu uzyskania wglądu i wiedzy.
9.1, 9.6
3.2. Informatyka ułatwia eksplorację i odkrywanie powiązań w informacjach.
3.2.1
Pozyskiwanie informacji z danych w celu odkrywania i wyjaśniania powiązań lub trendów.
9.1, 11.4
3.2.2
Określenie, jak duże zbiory danych wpływają na wykorzystanie procesów obliczeniowych do odkrywania informacji i wiedzy.
9.0, 9.1, 9.4
3.3. Przedstawianie informacji jako danych cyfrowych wymaga kompromisów.
3.3.1
Analizowanie, w jaki sposób reprezentowanie, przechowywanie, bezpieczeństwo i transmisja danych wiążą się z obliczeniową manipulacją informacjami.
1.3, 1.9, 4.4, 4.5, 9.7
4.1. Algorytmy to precyzyjne sekwencje instrukcji dla procesów, które mogą być wykonywane przez komputer i są implementowane przy użyciu języków programowania.
4.1.1
Opracowanie algorytmu w celu implementacji w postaci programu.
5.1, 5.2, 5.4, 6.3
4.1.2
Wyrażenie algorytmu z użyciem języka.
5.2, 6.1
4.2. Algorytmy mogą rozwiązać wiele, ale nie wszystkie problemy obliczeniowe.
4.2.1
Wyjaśnienie różnicy między algorytmami, które działają w akceptowanym czasie, a tymi, które nie działają w akceptowanym czasie.
12.5
4.2.2
Wyjaśnienie różnicy między rozwiązywalnymi i nierozwiązywalnymi problemami w informatyce.
11.3, 12.5
4.2.3
Wyjaśnienie istnienia nierozstrzygalnych problemów w informatyce.
12.1, 12.4
4.2.4
Analityczna i empiryczna ocena algorytmów pod kątem wydajności, poprawności i przejrzystości.
5.6, 12.5
5.1. Programy mogą być opracowywane w celu twórczej ekspresji, zaspokojenia osobistej ciekawości, tworzenia nowej wiedzy lub rozwiązywania problemów (aby pomóc ludziom, organizacjom lub społeczeństwu).
5.1.1
Opracowanie programu w celu kreatywnej ekspresji, zaspokojenia osobistej ciekawości lub zdobycia nowej wiedzy.
10
5.1.2
Opracowanie właściwego programu w celu rozwiązywania problemów.
6.2, 7.2, 7.3, 7.4, 7.7
5.1.3
Współpraca w celu opracowania programu.
5.1, 7.1, 7.6
5.2. Ludzie piszą programy w celu wykonywania algorytmów.
5.2.1
Wyjaśnienie, jak programy implementują algorytmy.
2.6, 6.2
5.3. Programowanie ułatwiają odpowiednie abstrakcje.
5.3.1
Użycie abstrakcji do zarządzania złożonością programów.
1.8, 2.6, 6.3, 6.5, 8.1, 8.5
5.4. Programy są tworzone, utrzymywane i używane przez ludzi do różnych celów.
5.4.1
Ocena poprawności programu.
1.8, 7.5
5.5. Programowanie wykorzystuje pojęcia matematyczne i logiczne.
5.5.1
Zastosowanie odpowiednich pojęć matematycznych i logicznych w programowaniu.
1.1, 1.6, 1.7, 1.8, 8.1
6.1. Internet to sieć systemów autonomicznych.
6.1.1
Wyjaśnienie abstrakcji w Internecie i tego, jak działa Internet.
4.1, 4.2, 4.4
6.2. Cechy Internetu wpływają na budowane w nim systemy.
6.2.1
Wyjaśnienie charakterystyki Internetu i budowanych w nim systemów.
4.2, 4.4
6.2.2
Wyjaśnienie, w jaki sposób cechy Internetu wpływają na budowane w nim systemy.
1.3, 4.1, 4.2, 4.4, 4.6
6.3. Cyberbezpieczeństwo jest ważnym problemem dla Internetu i budowanych w nim systemów.
6.3.1
Wskazanie istniejących problemów związanych z cyberbezpieczeństwem oraz możliwości rozwiązania tych problemów w Internecie i budowanych w nim systemach.
4.6
7.1. Informatyka usprawnia komunikację, interakcję i poznawanie.
7.1.1
Wyjaśnienie, w jaki sposób innowacje komputerowe wpływają na komunikację, interakcję i poznawanie.
4
7.2. Informatyka umożliwia wprowadzanie innowacji w niemal każdej dziedzinie.
7.2.1
Wyjaśnienie, w jaki sposób informatyka wpłynęła na innowacje w innych dziedzinach.
9.6, 10.6
7.3. Informatyka ma globalny wpływ – zarówno korzystny, jak i szkodliwy – na ludzi i społeczeństwo.
7.3.1
Przeanalizowanie korzystnych i szkodliwych skutków informatyki.
4.6, 9.7, 11.7
7.4. Innowacje informatyczne wpływają na konteksty gospodarcze, społeczne i kulturowe, w których są projektowane i wykorzystywane.
7.4.1
Wyjaśnienie powiązania między informatyką a kontekstami świata rzeczywistego, w tym kontekstami ekonomicznymi, społecznymi i kulturowymi.
4.2