Thure Dührsen               Emacs powered

BACKUP!

Nachhilfe in Mathematik und Informatik  tdu@informatik.uni-kiel.de

Fun with gcc on steroids: International Obfuscated C Code Contest 2012, Yusuke Endoh

Peter Oestmann: Von Angesicht zu Angesicht (13.06.20)

SENSATION: Trigonometrische Gleichungen schwieriger als gedacht

BAMBERG, 3. Quartal 2020. Nach neuesten Erkenntnissen hat die Gleichung sin(x)=0,5  nicht ausschließlich rationale Vielfache von π zur Lösung. Die Lösung π/6  (im Gradmaß: 30°) ist lange bekannt; nun gesellt sich zu ihr auch die „Lösung“  210,3°. Den Nachweis, dass derjenige Winkel, den die Autoren vermutlich erhalten hätten, wenn sie die Taschenrechneranzeige nicht auf eine Nachkommastelle eingekürzt hätten, ein irrationales Vielfaches von π ist, führe ich hier nicht, sondern überlasse diese Aufgabe dem u.a. Herausgeber. Nur unwesentlich weniger schmerzt jedoch, dass der Sinus von 210° nicht 0,5, sondern -0,5 beträgt.

Einer der hier diskutierten Fehler ist sicherlich ein simpler Eingabefehler; aber der andere?
Wenn ich feststelle, dass die Autoren Mathematik hier ganz und gar nicht verstehen (oder die Schüler, die nach diesem Buch unterrichtet werden, nicht verstehen machen wollen), dann ist das kräftig aufgerundet...
Ist das hier ein Schulbuch oder doch eher eine Karikatur eines Schulbuchs? Ist das ein Versehen? Nein, vermute ich.

Quelle: mathe.delta Baden-Württemberg, hrsg. von Axel Goy, C.C.Buchner Verlag, Bamberg, 2020 (aus dem Teildruck, S. 38)
https://www.ccbuchner.de/titel-1-1/teildruck_mathe_delta_basisfach_11_12-7779/
abgerufen am 10. Juni 2020

Jochen Krautz, Matthias Burchardt: Das Digital-Mentalvirus breitet sich aus (05.06.20)

Aus dem Beschluss des Politbüros des ZK der SED und des Ministerrates der DDR vom 17. Dezember 1962

Die Intensität des Lernprozesses und die Effektivität des Unterrichts sind noch gering. Es werden nicht genügend solche Unterrichtsmethoden angewendet, die die Schüler zur Aktivität, zur Selbsttätigkeit sowie zum disziplinierten und freudigen Lernen führen; Festigung und Kontrolle des Wissens und Könnens werden vielfach vernachlässigt. Die Lehrpläne, Lehrbücher und andere Unterrichtsmaterialien enthalten eine Reihe Mängel und bestimmen nicht präzise genug Aufgabenstellung, Tiefe und Umfang der mathematischen Bildung auf den einzelnen Klassenstufen.

Obwohl in den letzten Jahren im Zusammenhang mit der Entwicklung des polytechnischen Unterrichts sich viele Lehrer bemühen, ihren Mathematikunterricht mit der Praxis zu verbinden, wird nicht selten nur eine oberflächliche und praktizistische Verbindung hergestellt. Dabei wird oft die Systematik des Mathematikunterrichts gestört, wertvolle Unterrichtszeit vertan und der Erwerb sicherer und anwendungsfähiger mathematischer Kenntnisse nicht gefördert.

Was hat sich hieran geändert, insbesondere nach den Bologna-Reformen?
(Man ersetze „Klassenstufen“ durch „Lehrveranstaltungen“ und nehme weitere passende Ersetzungen vor!)

Lernkarten Theoretische Informatik

Stochastik-Zusammenfassung (unfertig. Mitautoren gesucht)

Lernkarten C-Programmierung (unfertig. Mitautoren gesucht)

Was nicht in der Vorlesung an der Tafel steht (aber dort stehen sollte! Zumindest sollte es aber gesagt werden -- und zwar mindestens so ausführlich wie hier, damit Erstsemestrige eine Chance haben, mitzukommen)

Fun with gcc -- automatic indentation and error checking for C source code

Emacs-Screenshot (Textmodus)

Emacs-Screenshot (GUI)

Creative Commons Lizenzvertrag

Dieses Werk ist lizenziert unter einer Creative Commons Namensnennung - Weitergabe unter gleichen Bedingungen 4.0 International Lizenz.

Es wird gezeigt, wie man C-Quelltext auf Knopfdruck übersichtlich einrückt und danach den C-Compiler zur syntaktischen Prüfung des Quelltextes veranlasst, deren Ergebnis in der echo area des Emacs angezeigt wird, so dass man unmittelbar, ohne C-x o o.ä., mit der Fehlerbehebung beginnen kann.

Das Folgende ist bewusst einfach gehalten, weil es im Rahmen einer Umschulung, die nur die Grundlagen der Programmierung vermitteln soll, entstanden ist. Es werden nur C-Projekte unterstützt, die aus genau einer C-Datei bestehen -- genauer: es muss jede Quellcode-Datei einzeln einer Prüfung unterzogen werden; dies muss keinen prinzipiellen Nachteil bedeuten, wenn man qualitativ hochwertige Software schreiben will.

Dass die hier beschriebene Prozedur nur unter Linux (genauer: sie wurde unter Debian 10 "buster" getestet) funktioniert, muss erwähnt werden, wenn die Anpassung auf Windows-Systeme auch mit vertretbarem Aufwand machbar ist, wenn man auf die Ergebniskosmetik mittels der GNU coreutils verzichten kann

oder gleich auf CEDET o.ä. umsteigt. Für Hinweise auf eine halbwegs komfortable C-Entwicklung unter Windows bin ich immer dankbar; Erfahrungen mit Code::Blocks habe ich bisher nur aus zweiter Hand.

Der Gang der Handlung ist folgender:

  1. Installation benötigter Software
  2. Anpassen der Datei ~/.emacs
  3. Erstellen des Shellskripts ~/bin/gccy
Sodann wird der Zauber bei jedem manuellen Speichern (C-x C-s oder Klick auf Save) automatisch durchgeführt. Beim automatischen Speichern passiert nichts, weil hierzu ohnehin eine separate Datei genutzt wird.

Im Detail:

  1. Man installiere gcc, GNU emacs und GNU indent. (Das Vorhandensein der GNU coreutils wird vorausgesetzt.)
    https://packages.debian.org/buster/gcc
    https://packages.debian.org/buster/emacs
    https://packages.debian.org/buster/indent
    Eine Alternative zu GNU indent kann clang (ClangFormat) darstellen.
  2.  
  3. Man füge das Folgende an passender Stelle in die Datei ~/.emacs ein:
    ;; ------------------------------------------------------------------------
    ;; Zeilennummern automatisch
    (add-hook 'prog-mode-hook 'linum-mode)
    
    ;; ------------------------------------------------------------------------
    ;; beim Speichern von C-Quellcode soll automatisch
    ;; das Werkzeug "GNU indent" aufgerufen werden
    ;;
    ;; https://emacs.stackexchange.com/a/5777
    ;; https://emacs.stackexchange.com/a/4115
    ;; https://www.emacswiki.org/emacs/RevertBuffer
    ;; https://emacs.stackexchange.com/questions/17482/append-shell-command-output-to-named-buffer
    ;; Tue 21 Apr 2020
    
    (defun my-after-c-save-function()
    
      (run-indent-linux)
    
      (run-gcc-syntax-only)
    
      ;; place more code here if desired
    )
    
    
    (defun my-before-c-save-function()
      ;; place more code here if desired
    )
    
    
    (defun run-indent-linux()
      "Run GNU indent with Linux code conventions"
    
      (shell-command-to-string (
        format "indent %s -linux -as -nut -i4 -lp -bbo --line-length70" buffer-file-name))
      (revert-buffer-no-confirm)
    )
    
    
    (defun run-gcc-syntax-only()
      "Run GCC to perform syntax checks only"
    
      (message (shell-command-to-string (
          concat "~/bin/gccy " buffer-file-name)
      ))
      ;;
      ;; todo: use function window-max-chars-per-line to adapt gcc message length to width of minibuffer?
      ;;
      ;; https://www.gnu.org/software/emacs/manual/html_node/elisp/Window-Sizes.html
      ;;
      ;; append gcc output to buffer. might be useful.
      ;; TODO: "\n" is Linux-specific; replace it
      ;;
      ;; (goto-char (point-max))
      ;; (insert "\n\n")
      ;; (insert "/* ")
      ;; (insert (shell-command-to-string (concat "~/bin/gccy " buffer-file-name)))
      ;; (insert " */")
      ;; (insert "\n\n")
      ;; ;; (save-buffer) ;; infinite loop
    )
    
    
    (defun revert-buffer-no-confirm ()
      "Revert buffer without confirmation."
      (interactive)
      (revert-buffer t t)
    )
    
    
    (add-hook 'c-mode-common-hook
    ;; apply to current buffer only
              (lambda ()
                (add-hook 'before-save-hook 'my-before-c-save-function nil 'local)
                (add-hook 'after-save-hook  'my-after-c-save-function nil  'local))
    )
         
  4.  
  5. Man erstelle die Datei ~/bin/gccy mit dem folgenden Inhalt und mache sie ausführbar:
    #!/bin/bash
    
    # massage gcc's output for display in the Emacs echo area
    # tdu, 2020-04-25
    #
    # include debugging information
    # tdu, 2020-09-28
    #
    # TODO: support multi-file projects. Any volunteers?
    # TODO: add more libraries?
    # TODO: automated reminder to include "-lm" switch on compilation
    #       when including the standard math.h library
    
    sleep 0.2
    
    infile="$1"
    infile="$(readlink -e "$infile")"
    
    tmpd="$(mktemp -d)" # make temporary directory to work in
    
    cd "$tmpd" || { echo "error" ; exit 1 ; }
    
    # -fno-diagnostics-show-option: omit [-W...] hints from gcc output
    # add -Werror to taste
    #
    gcc -c -Wall -Wextra -ggdb3      \
        -Wunused -Wuninitialized     \
        -Wfatal-errors -Wconversion  \
        -fno-diagnostics-show-option \
        -std=c99 "$infile" -lm 2>&1  |
        grep '.[ch]:[^ ]'            |
        sed -e s+"$infile":++        |
        column -s':' -t              > out.txt
    
    if [ -s out.txt ]
    then
        # ensure no newline at end of file, desired in this case
        # command substitution removes final newline
        #
        printf '%s' "$(cat out.txt)" |
            # Emacs Lisp interprets escape sequences. counteract it.
            #
            sed -e 's+%+%%+g'    \
                -e 's+\\+\\\\+g' \
                # -e 's+?+\\?+g'
                # question marks unharmed by Emacs Lisp
    else
        printf 'gcc ok'
    fi
    
    cd "$(readlink -e "$tmpd"/../)" && rm -rf "$tmpd"
    

Wer dies vereinfachen oder auf Fehler überprüfen will, nehme bitte Kontakt mit mir auf.

More fun with gcc -- why does this work?

Please send electronic mail to tdu@informatik.uni-kiel.de if you can say why circular typedefs are allowed or want to collaborate in finding out.
      echo '

        #include <stdlib.h>
        #include <stdio.h>
      
        typedef int foo;
        typedef foo bar;
        typedef bar baz;
        typedef bar foo;
        typedef baz baz;
      
        int main(void) {
      
          int x = 6;
          foo y = 8;
          bar z = 10;
          baz v = 12;
      
          printf("%d\n", x+y+z+v);
      
          return 0;
      
        }

      ' | gcc -x c -ansi -Wall -Wextra -

    

Schritt 1: Ton stummschalten.
Schritt 2: Video anschauen.

Tierquälerei im Allgäu

https://www.youtube.com/watch?v=ytGhcMLAgog&has_verified=1
(9. Juli 2019)

Schritt 3? Diskutieren.   tdu@informatik...

Di-gi-ta-li-sie-rung

Franz Lemmermeyer: Früher MINT wagen

(27. Mai 2019)

Abitur und Bachelor für alle -- Wie ein Land seine Zukunft verspielt (24. Juni 2019)

TGI WS 2016/17

awesome_03.pdf
awesome_04.pdf

Serie 4, Seite 1
Serie 4, Seite 2
Serie 4, Seite 3
Serie 4, Seite 4
Serie 4, Seite 5
Serie 4, Seite 6
Serie 4, Seite 7
Serie 4, Seite 8
Serie 4, Seite 9
Serie 4, Seite 10
Serie 4, Seite 11

awesome_05.pdf
awesome_06.pdf
awesome_07.pdf
awesome_XMas.pdf
awesome_08.pdf
awesome_09.pdf
awesome_07-and-a-half.pdf

Wie man studiert? Wie man studieren sollte

(10. Mai 2019)

1947 eröffnete Schwanzer sein eigenes Atelier. Am Beginn seiner Tätigkeit als freischaffender Architekt waren die zu bearbeitenden Projekte bescheiden. Die Geschäftsportale und -einrichtungen sowie Ausstellungen, welche den Grundstock der Aufträge in den ersten Jahren darstellten, wurden jedoch, so klein die Aufgaben auch waren, mit einem enormen Aufwand an Energie, Fleiß und Ideenreichtum bearbeitet. Die Beteiligung an nationalen und internationalen Wettbewerben und der damit verbundene Erfolg brachten eine fortlaufende Vergrößerung des Ateliers und eine Vermehrung der Mitarbeiter mit sich. Die internationale Anerkennung des Büros basiert auf der Arbeitsweise und der Einstellung zur Architektur in diesem Büro, dessen Leitgedanke „Qualität geht vor Verdienst“ war. Mit dem Bestreben, das befriedigende Gelingen der Projekte über den eigenen wirtschaftlichen Erfolg zu stellen, gab er selbst bei den kleinsten Aufgaben die wesentlichen Impulse und überprüft[e] bei der weiteren Durcharbeitung die Einhaltung des von ihm geforderten qualitativen Niveaus. Die Bearbeitung eines Projektes stellte in seinem Atelier für jeden daran beteiligten Mitarbeiter eine Zerreißprobe dar. Schwanzer, immer auf der Suche nach dem Hundertprozentigen, schonte vom Eingang eines zu bearbeitenden Auftrages bis zur Fertigstellung weder die psychischen noch die physischen Kräfte seiner Mitarbeiter. Am Anfang einer gestellten Aufgabe steht der Wille nach einer neuen, originalen Idee in architektonischer wie in funktioneller Hinsicht. „Stunde um Stunde, Tag um Tag, und immer wieder auch in der Nacht wurde entworfen, diskutiert, geändert, verworfen und wieder von neuem begonnen.“

Wikipedia: Karl Schwanzer, abgerufen am 10. Mai 2019

Jugend will mitbestimmen -- und klagt über Gewalt (3. Juli 2019)

Ein Drittel der Jugendlichen offenbar egoistisch (26. Juni 2019)

Medienbericht: Millionenbetrug im Internet (3. Juli 2019)

Bachelorstudium: Keine Zeit für soziale Kompetenz (16. November 2012)

Sustainable Soil

www.yooweedoo.org/de/projekt/sustainable-soil

  7. Juni 2019: Möhren pflanzen
  24. Juni 2019: Möhren sprießen sehen
  28. Juni 2019: Vandalismus
  28. Juni 2019: noch mehr Sprösslinge
  2. Juli 2019: noch mehr

Blog: Aus Kaffee ward ein Theorem

Summe der ersten Quadratzahlen

Essen online bestellen mal anders (24. Januar 2019)

Learn how to draw! (24. Januar 2019)

How to think like a mathematician (19. Dezember 2018)

Softwaretests? Ja, aber bitte nicht mit Zertifikat. Eher mit gesundem Menschenverstand. (11. Juli 2018)

Fiasko statt Verbesserung? Wie erfolgreich war die Bologna-Reform wirklich? (16. August 2018)
“Wo bleibt im Bachelor- und Master-Studium das Verständnis für ein Gesamtbild der Physik, in dem Zusammenhänge vermittelt werden, die sich schlecht in Einzelfachprüfungen abhandeln lassen?

Wirklich wichtige Inhalte eines Studiums sind nicht mit ECTS-Punkten zu bemessen.”

   ― Prof. Dr. Ferdinand Schmidt-Kaler, Uni Mainz. In: Physik Journal 17 (2018) Nr. 8/9
Wird die Aussage falsch, wenn man “Physik“ durch “Informatik“ oder durch “Mathematik“ ersetzt?
Nein.

Mathe-Abitur 2016
(Hans-Jürgen Matschull, Lichtenberg-Gymnasium Cuxhaven, 19. August 2016)
Bitte lesen.

Stundenplan (29. August 2018 16:35)

Profil

Why do researchers need universities? (25. Dezember 2017)
“Even as a researcher, you want to be at an university or a research institute.
The possibility to bounce ideas off of other people and get hints on how to tackle problems is invaluable.
A considerable part of my research happens over lunch breaks.”
   ―  Attila Kinali (26. Dezember 2017)
“Notice also that, as explained by all answers here, research is a social activity which needs teams to be done.”
   ―  Basile Starynkevitch (26. Dezember 2017)
Warum braucht es für diese Erkenntnis eine Frage bei Stackexchange?
Wird die Aussage falsch, wenn man “research“ durch “undergraduate studying“ ersetzt?
Durch “developing software“?
Durch so gut wie alles?
Nein.

„Die einen [arbeiten] bis zum Umfallen, die anderen [haben] keine oder zu wenig Arbeit.“ (17. Dezember 2017)

„Es geht nicht mehr darum, die Grammatik zu beherrschen, sondern darum, sich ausdrücken zu können“ (22. März 2017)
Autsch.

Unternehmen „[brauchen] die Sicherheit, dass sie nicht gesetzeswidrig [handeln], wenn ein Angestellter abends an einer Telefonkonferenz [teilnimmt] und am nächsten Morgen beim Frühstück seine E-Mails [liest].“ (12. November 2017)
Ich sage dazu nur noch: Ein jedes Ding hat seine Zeit. Multitasking ist immer, immer, immer, immer eine Fiktion. Wer von mir verlangt, beim Frühstück meine E-Mails zu lesen, während der Bildschirmarbeit am Herd zu stehen oder Ähnliches, übernehme bitte sämtliche meiner Arztkosten oder, noch besser, stelle mich gar nicht erst ein.

Lammert für sprachliche Qualität seiner Reden geehrt (10. November 2017)

„Warum sollten die Länder den Lehrermangel nicht mit Seiten- und Quereinsteigern kompensieren? Irgendwer muss am Ende des Tages den Unterricht ja machen.“ (10. November 2017)

Diskussion um Abschaffung des NC für Medizinstudenten
„Eine Eins in allen Fächern? Das kann nicht gut sein“ (4. Oktober 2017)
Was haben Mathematik und Informatik mit Medizin zu tun? Eine Menge! Eine Menge Verantwortung übernimmt man. Und das gilt nicht nur für angehende Lehrer.

Installation des HP OfficeJet 6100 unter Debian

Einstieg in Python

Lernkarten Ordnungen, Verbände, Semantik

Matheklausur zu schlecht ausgefallen? Dann bewerten wir die Schüler doch einfach besser! (11. Januar 2017)

Präsident der Uni Hamburg hält Bologna-Reform für Fehlschlag (30. Oktober 2016)

Smartphones lenken so sehr ab, dass die Leistungen im Schnitt um ein Drittel schlechter ausfallen (28. Januar 2016)

Automatic Graph Drawing 2016

Kurven und Flächen 2016

Ordnungen und Verbände 2016

Tutorium Mathe C 2016

Logik 2015/16

Ebbe

Langzahlarithmetik in C

Numerik in C

Tutorium Mathe C 2015

TGI 2014/15

Mathe C 2014/15, Skizzen zu Aufgabe 4.3

Programmierpraktikum P2, 2014

Tutorium Mathe B 2014

Logikübungen 2014

Tutorium Mathe C 2014

Mathe C 2013/14, Aufgabe 5.2

Mathe C 2013/14, Aufgabe 7.2

Mathe C 2013/14, Aufgabe 7.3

Programmierpraktikum P2, 2010

LaTeX-Skriptschnipsel für Webseiten

C-Programmierung
Nochmal: C-Programmierung

Systems of linear equations; quadratic equations (letter paper)
Systems of linear equations; quadratic equations (A4 paper)

Matheaufgaben
Musterlösung zu Aufgabe 50 (g)

Beweis des 1. Strahlensatzes
Beweis des 2. Strahlensatzes
Anwendungen: Schwierig zu messende Entfernungen berechnen
Anwendungen: Daumensprung
Ähnlichkeitsabbildungen

Englischaufgaben

Mittlerer Schulabschluss: Abschlussarbeiten 2011
Sailing solo around the world + A summer job in Costa Rica