Unterrichtsmaterial für den Informatikunterricht

Great Principles of Computing

Allzu oft wird Informatik mit Programmieren gleichgesetzt. Peter Denning greift dieses Problem in The Field of Programmers Myth [PDF] auf. In Great Principles of Computing [PDF] erklärt er sein Ziel: "stop hiding the enormous depth and breadth of our field". Wie seine Erfahrung mit der Entwicklung des ACM Computing Curriculum zeigte, sind Curricula Listen von Themen, die mit der Entwicklung der Informatik immer länger werden. Daher hat er als alternative Sichtweise auf die Informatik den Great Principles of Computing Curricula [PDF] entworfen, inspiriert von den Feynman Lectures in Physics. Die Principles sollen vollständig sein, aber nicht trennschaft; sie bieten vielmehr unterschiedliche Sichtweisen auf ein Thema.

Auf dieser Seite sind die sieben Great Principles gemäss der Publikationen von Denning und der Great Principles of Computing-Website zusammengefasst. Die SwissEduc-Informatik-Materialien und weitere Quellen sind den Prinzipien zugeordnet und bieten so eine alternative Struktur für SwissEduc-Informatik. Die Unterrichtsmaterialien, Anwendungsbeispiele und Hintergrundsinformationen sind exemplarisch und ohne Anspruch auf Vollständigkeit.

Automation
Overview
Principles
These principles concern finding efficient computational ways to perform human tasks. Tasks can be mental, such as doing arithmetic, playing chess, and planning schedules, or physical, such as running an assembly line, driving a car, controlling an airplane.
  • Physical automation maps hard computational tasks to physical systems that perform them acceptably well.
  • Artificial intelligence maps human cognitive tasks to physical systems that perform them acceptably well.
  • Artificial intelligence maps tasks to systems through models, search, deduction, induction, and collective intelligence.
  • Models represent processes by which intelligent beings generate their behavior.
  • Search finds the subsets of states of a complex system that must participate in the final outcome of a task.
  • Deduction locates the outcome of a task by applying rules of logic to move from axioms to provable statements.
  • Induction builds models by generalizing from data about a complex task's behavior.
  • Collective intelligence exploits large scale aggregation and coordination in networks to produce new knowledge
  Unterrichtsmaterial Anwendungsbeispiel Hintergrundsinformation
Modeling: Expert Systems, Fuzzy Logic, Neural networks, ... Kara: Programmieren mit endlichen Automaten, Corewars: Das Duell der Programme, Game Of Life - Simulationen entdecken, LogicTraffic: Aussagenlogik, Mechanische Computer, Rekursives Programmieren [SwissEduc]

Finite State Automata, The Turing Test, Intelligent Paper, Finite State Automata [CS Unplugged]
  Game of Life [Wikipedia]
Search, Sort: Heuristics, Genetic Algorithms, Page Rank, ... Puzzle: Sortierverfahren, Scheduling Algorithmen, Einführung in die künstliche Intelligenz (A*-Algorithmus), Einführung in die Spieltheorie, Programmieren des Spiels "Tic Tac Toe" in Java [SwissEduc]

Kürzest-Weg Algorithmus von Dijkstra (Kap. 1), Sortier-Algorithmen (Kap. 2) [Abenteuer Informatik]

Searching Algorithms, Sorting Algorithms, Sorting Networks [CS Unplugged]
  Spieltheorie, A*-Algorithmus [Wikipedia]
Deduction Einführung in Prolog und die logische Programmierung [SwissEduc]   Prolog (Programmiersprache) [Wikipedia]
Induction: Curve Fitting, Bayesian Inference, Reinforcement Kleinstquadrat-Methode [SwissEduc]    
Communication
Overview
Principles
These principles concern the transmission of data with reliable reception:
  • Information can be encoded into messages.
  • Data communication always takes place in a system consisting of a message source, an encoder, a channel, and a decoder.
  • Information in a message source places a hard lower bound on channel capacity for accurate reception (Shannon Capacity Theorem).
  • Messages corrupted during transmission can be recovered during reception (Error Correction).
  • Messages can be compressed.
  • Messages can hide information.
  Unterrichtsmaterial Anwendungsbeispiel Hintergrundsinformation
Information theory: Model of Communication Systems Information Theory [CS Unplugged]   Informationstheorie, Shannon-Hartley-Gesetz [Wikipedia]
Noisy Channels and Error Correction Fehlerkorrigierende Codes [SwissEduc]

Error detection [CS Unplugged]
  Hamming Codes [Wikipedia]
Compression Kompression [SwissEduc]

Text compression [CS Unplugged]

File Compression [How Stuff Works]

The 'magic' of MP3, Compressing Vicky Pollard [CS4FN]
GIF mit Lempel-Ziv-Welch-Algorithmus; PNG mit LZ77-Algorithmus, JPEG, ZIP, MP3 [Wikipedia] Shannon-Fano-Kodierung, Huffman Code, Datenkompression [Wikipedia]
Routing, Networks Routing Algorithmen, Einführung in Mobiltechnologie, Gruppenarbeit: Firewall [SwissEduc]

Routing and Deadlock [CS Unplugged]
   
Secret, Secure Communication Sicherheit im Internet, Streifzug durch die Geschichte der Kryptologie, Kryptografie und Kryptoanalyse, Public Key Cryptography, Digitale Unterschriften, Algebraischer Kartentrick, Chinese Remainder Theorem [SwissEduc]

Information Hiding, Cryptographic Protocols, Public Key Encryption [CS Unplugged]
SSH Secure Shell, SSL, PGP [Wikipedia] Verschlüsselung, RSA-Kryptosystem, Diffie-Hellman-Schlüsselaustausch [Wikipedia]
Computation
Overview
Principles
These principles address what processes, natural and artificial, are computational, what they can and cannot do, and how we cope with inherent and pervasive computational complexity:
  • Representations hold information.
  • Computation is a sequence of representations.
  • Representations can be compressed, but not too much.
  • Computations can be open or closed.
  • Computations have characteristic speeds of resolution.
  • Complexity measures the time or space essential to complete computations.
  • Finite representations of real processes always contain errors.
  Unterrichtsmaterial Anwendungsbeispiel Hintergrundsinformation
Representations, The Heart of Computing Analog und Digital, Analog/Digitalwandler, Digitale Bildformate, Grafikformate und ihre Anwendung, Faltung in der Bildverarbeitung, Diskrete Fourier Transformation, Graphische Repräsentation von Daten [SwissEduc]

Binary Numbers, Image Representation [CS Unplugged]
   
Representations of the Infinite Exorciser: Reguläre Sprachen, Kontextfreie Grammatiken, Markov Algorithmen, Einführung zu Parser [SwissEduc]    
Turing's Computability TuringKara: zweidimensionale Turing-Maschinen [SwissEduc],    
Tracktable vs. intracktable problems Schwierige Probleme in der Informatik, GraphBench: Lernumgebung für NP-Vollständigkeit, Heiratsproblem, Backtracking [SwissEduc]

Rucksackproblem (Kap 3.) [Abenteuer Informatik]

Graph Colouring, Steiner Trees, Minimal Spanning Trees, Dominating Sets [CS Unplugged]
  NP-Vollständigkeit, Knapsack problem, Stable marriage problem [Wikipedia]
Resolution Times Sortieren in n log n (Kap 2.) [Abenteuer Informatik]    
Coordination
Overview
Principles
These principles concern how autonomous entities work together toward a common result:
  • A coordination system is a set of agents interacting within a finite or infinite game toward a common objective.
  • Action loop is the foundational element of all coordination protocols.
  • Coordination tasks can be delegated to computational processes.
  • The protocols of coordination systems manage dependencies of flow, sharing, and fit among activities.
  • It is impossible to select one of several simultaneous or equally attractive alternatives within a preset deadline (Choice Uncertainty Principle).
  • All coordination systems depend on solutions to the concurrency control problems of arbitration, synchronization, serialization, determinacy, and deadlock.
  Unterrichtsmaterial Anwendungsbeispiel Hintergrundsinformation
A Model for Coordination Systems: Players, Objectives, Resources, Rules, Strategies QueueTraffic: Warteschlangen, DynaTraffic: Markov-Ketten und dynamische Verkehrsverteilung [SwissEduc]    
Action loops      
Levels of Delegation: Computer Supported Cooperative Work (CSCW)      
Levels of Delegation: Human Computer Interaction (HCI) Human Interface Design [CS Unplugged]    
Levels of Delegation: Concurrency Control (CC) MultiKara: Nebenläufige Programmierung [SwissEduc] Threads zB in Java [Wikipedia] Nebenläufigkeit / Concurrency [Wikipedia]
       
Design
Overview
Principles
These principles concern how to design software and computing systems that are dependable, reliable, usable, safe, and secure:
  • Design principles are conventions for planning and building correct, fast, fault tolerant, and fit software systems.
  • Error confinement and recovery are much harder in the virtual worlds of software than in the real world of physical objects.
  • The four base principles of software design are hierarchical aggregation, levels, virtual machines, and objects.
  • Abstraction, information hiding, and decomposition are complementary aspects of modularity.
  • Levels organize the functions of a system into hierarchies that allow downward invocations and upward replies.
  • Virtual machines organize software as simulations of computing machines.
  • Objects organize software into networks of shared entities that activate operations in each other by exchanging signals.
  • In a distributed system, it is more efficient to implement a function in the communicating applications than in the network itself (end-to-end principle).
  Unterrichtsmaterial Anwendungsbeispiel Hintergrundsinformation
Does it Work Correctly? Program verification, automated testing.      
Does it Keep Working (Resilience)? Mechanisms for error confinement.      
Driving Concerns: Simplicity, Performance, Evolvability, Security.      
Design Principles: Hierarchical Aggregation, Levels / Layers, Virtual Machines      
Design Principle: Object Orientation      
Evaluation
Overview
Principles

Answering the performance questions
These principles concern how computing systems perform under various computational loads and how much capacity they need to deliver their results on time:
  • The principal tools of evaluation are modeling, simulation, experiment, and statistical analysis of data.
  • Computing systems can be represented as sets of equations balancing transition flows among states.
  • Network of servers is a common, efficient representation of computing systems.
  • Network-of-server systems obey fundamental laws on their utilizations, throughputs, queueing, response times, and bottlenecks.
  • Resource sharing, when feasible, is always more efficient than partitioning.
  Unterrichtsmaterial Anwendungsbeispiel Hintergrundsinformation
Performance analysis: throughput, response times, peak performance, capacity planning      
Analytic Performance Model: Network of Servers Model (Erlang), Utilization Law, Little's Law, Forced Flow Law   Public switched telephone network [Wikipedia] Queueing theory, Agner Krarup Erlang, Little's law [Wikipedia]
Benchmarking   Standard Performance Evaluation Corporation, POV-Ray [Wikipedia] Benchmark (computing) [Wikipedia]
Simulation      
Recollection
Overview
Principles
These principles concern how computations store and recall information, and how data layout in the storage system affects their performance:
  • All computations take place in storage systems.
  • Storage systems comprise hierarchies with volatile (fast) storage at the top and persistent (slower) storage at the bottom.
  • The principle of locality dynamically identifies the most useful data, which can be cached at the top of the hierarchy.
  • Thrashing is a severe performance degradation caused when parallel computations overload the storage system.
  • Access to stored objects is controlled by dynamic bindings between names, handles, addresses, and locations.
  • Hierarchical naming systems allow local authorities to assign names that are globally unique in very large name spaces.
  • Handles enable sharing by providing unique-for-all-time object identifiers that are independent of all address spaces.
  • Data can be retrieved by name or by content.
  Unterrichtsmaterial Anwendungsbeispiel Hintergrundsinformation
Storage Mediums, Hierarchies      
Locality, Caching      
Thrashing      
Names and Addresses, Hierarchical Naming, Dynamic Bindings   FAT, Domain Name System, ISBN, URL [Wikipedia] Dateisystem [Wikipedia]
Retrieval, Databases Einführung in XML, Einführung in XML, DTD und XSL [SwissEduc]

OLAP (Online Analytical Processing) Einführung [SwissEduc]

Wellenreiten auf der Datenautobahn, Informationsbeschaffung im Internet, Erfolgreich Recherchieren, Suchmaschinen verstehen [SwissEduc]
MySQL [Wikipedia] Relationale Datenbank [Wikipedia]

Core Practices of Computing

Intro -

Programming Using programming languages to build software systems that meet specifications created in cooperation with the users of those systems. Computing professionals must be multilingual, facile with the numerous programming languages, each attuned to its own strategies for solving problems.
Unterrichtsmaterial Hintergrundsinformation
Java programmieren ([SwissEduc]): Java, JavaScript, Ruby, Python lernen mit Kara, Java, JavaScript, Ruby, Python lernen mit Turtles, Java lernen mit Turtle Grafik (online), Fünf-tägiger Kurs zu Java, Handy Programmierung mit Java, Programmieren des Spiels "Tic Tac Toe" in Java, Spielprogrammierung mit Java: Interaktive Lernumgebung

Weitere Themen ([SwissEduc]): Programmieren mit Scratch, Paradigmen von Programmiersprachen, Programmiersprachen gestern, heute, morgen, Esoterisch Programmieren: Brainfuck

Programming Languages [CS Unplugged]
 
Engineering Systems Designing and constructing systems of software and hardware components running on servers connected by networks. These practices include a design component concerned with organizing a system to produce valuable and tangible benefits for the users; and an engineering component concerned with the modules, abstractions, revisions, design decisions, and risks in the system; and an operations component concerned with configuration, management, and maintenance of the system. High levels of skill are needed for large programmed systems encompassing thousands of modules and millions of lines of code.
Unterrichtsmaterial Hintergrundsinformation
Datenmodellierung mit UML, Design mit UML: Aggregation, UML: Sequenzdiagramme, [SwissEduc] Peopleware von Tom DeMarco [Wikipedia]

Facts and Fallacies of Software Engineering, Software Creativity 2.0 [Robert Glass]

Software Fundamentals: Collected Papers by David L. Parnas [David Parnas]
Modeling and validation Building models of systems to make predictions about their behavior under various conditions; and designing experiments to validate algorithms and systems.
Unterrichtsmaterial Hintergrundsinformation
   
Innovating Bringing about lasting changes in the ways groups and communities operate by exercising technical leadership. Innovators watch for and analyze opportunities, listen to customers, formulate offers customers see as valuable, and manage commitments to deliver the promised results. Innovators are history-makers who have strong historical sensibilities.
Unterrichtsmaterial Hintergrundsinformation
  The Social Life of Innovation [Peter Denning, CACM, April 2004; PDF]

Innovation and Entrepreneurship [Peter Drucker, 1993]

Diffusion of innovations, Technology acceptance model, Hype cycle [Wikipedia]

Mehrfach referenzierte Quellen