ERG::Code-2020-1
Introduction
Ce cours est destiné aux étudiant.e.s de BAC2. Cette année, nous nous concentrons sur le rapport du numérique au texte et du texte au numérique. Le code générateur de poésie, le code en tant que poésie, le code secret, le code caché. Nous serons amenés à créer des poésies algorithmiques, des générateurs de textes, des machines à plagier, des bots twitter. À travers différentes expérimentations menées en atelier, nous aborderons plusieurs langages de programmation, concepts informatiques et exemples dans les champs de l'art, du design, de l'histoire de l'informatique.
Pages des étudiant.e.s
Notes de cours
Cours du 23 novembre 2020
# -*- coding: utf-8 -*-
import time
#un programme qui demande à l'utilisateur le numero de la ligne qu'il n'aime pas, puis la supprime
with open('poyeme.txt') as fichier:
poyeme = fichier.read()
lignes = poyeme.splitlines()
print(lignes)
#1 demande quelle ligne
print ("Dites moi le numéro de la ligne que vous n'aimez pas ?")
numero = input ()
numero = int(numero)
lignes = poyeme.splitlines()
print (lignes [numero - 1])
ligne = lignes [numero - 1]
time.sleep(2)
print ("D'accord, je vais remédier à cela")
time.sleep(2)
#2 Remplacement de la ligne par du vide
poyeme = poyeme.replace(ligne + "\n","")
print(poyeme)
#Un programme qui supprime tous les "e"
with open('text.txt','r') as file:
text = file.read()
text = text.lower()
#text.replace("e","")
voldemort = 'e'
prophetie = ''
for bla in text :
if bla == voldemort:
prophetie = prophetie + "la lettre dont on ne prononce le son"
else :
prophetie = prophetie + bla
print(prophetie)
#un programme qui demande à l'utilisateur une lettre puis répértorie tout les mots commençant par celle-ci
with open("poyeme.txt" , 'r') as file :
poyeme = file.read()
print ('Choisis une lettre !')
lettres1 = input ()
listemots = poyeme.split()
for mot in listemots:
if mot[0] == lettres1:
print(mot)
#Un programme qui supprime toutes les voyelles
with open("poesie.txt" , 'r') as file :
poyeme = file.read()
voyelles = [ 'a', 'e', 'i', 'o', 'u' ]
for lettre in voyelles :
poyeme = poyeme.replace(lettre, '')
print (poyeme)
Cours du 16 novembre 2020
Le poème converti en texte:
J'aime la soupe pistou Le J c'est le s L'alcool!est!mort Je vais danser En Italie Calisse moi la Chien de la casse Je veux te voir tout nu youpi Quoi que je fusse,savon glissait. MESSAGE D'ALERTE, SORTEZ COUVERT! Dans ses deboires L'a=our d'un soir J'ai reve que J'avais un!GQSK. Mon plafond fuit, mauX dit,taudis Le chemin tour .Le pieton tombe Je taaJAIjAaSK$
with open('src.txt', 'r') as fichier:
poyeme = fichier.read()
#print(poyeme)
lignes = poyeme.splitlines()
print(lignes)
print(lignes[1])
import random
#changer les consonnes en voyelles de manière aléatoire
with open('src.txt', 'r') as fichier:
poyeme = fichier.read()
#1 on définit ce que sont les voyelles
voyelles = ['a', 'e', 'i', 'o', 'u']
poyeme_modifie = ''
#2 on parcourt chaque lettre du poème
for lettre in poyeme:
print(lettre)
#3 pour chaque lettre, on vérifie si elle est présente dans le tableau voyelles
if lettre not in voyelles:
#4 si elle n'est pas présente, alors on la remplace par une lettre au hasard du tableau voyelles
poyeme_modifie = poyeme_modifie + random.choice(voyelles)
else:
poyeme_modifie = poyeme_modifie + lettre
print(poyeme_modifie)
import random
#changer les consonnes en voyelles de manière aléatoire
with open('src.txt', 'r') as fichier:
poyeme = fichier.read()
poyeme = poyeme.lower()
#1 on définit ce que sont les voyelles
voyelles = ['a', 'e', 'i', 'o', 'u', 'y']
#2 on définit ce que sont les consonnes
consonnes = ['z','r','t','p','q','s','d','f','g','h','k','l','j', 'm','w','x','c','v','b','n']
#3 on parcourt le tableau de consonnes
for consonne in consonnes:
#4 pour chaque consonne, on la remplace dans le poyeme par une voyelle au hasard
poyeme = poyeme.replace(consonne, random.choice(voyelles))
print(poyeme)
#un programme qui demande à l'utilisateur le numero d'une ligne, puis qui mélange tous les mots de cette ligne
import time
import random
with open("poesie.txt" , 'r') as file :
poyeme = file.read()
print ('Donnez un numéro de ligne')
numero = input ()
numero = int(numero)
lignes = poyeme.splitlines()
print (lignes [numero - 1])
ligne = lignes [numero - 1]
print ('mélangeons tout ça')
mots = ligne.split()
random.shuffle(mots)
resultat = " ".join(mots)
print(resultat)
#Un programme qui rapporte le nombre de voyelle dans une ligne spécifiée par l'utilisateur
with open("poyeme.txt" , 'r') as file :
poyeme = file.read()
print ('Choisis un numéro de ligne!')
numero = input ()
numero = int(numero)
lignes = poyeme.splitlines()
ligne = lignes [numero - 1]
print (lignes [numero - 1])
compteur = 0
for lettre in ligne:
if lettre in voyelles:
compteur = compteur+1
print(compteur)
Cours du 19 octobre 2020
# -*- coding: utf-8 -*-
#un script qui épelle un prénom dans un sens puis dans un autre puis qui affiche les deux premières lettres puis la deuxième et la troisième lettre
import time
print("Qui est-ce?")
name = input()
#name = raw_input()
nameLength = len(name)
# 0 1 2
#['T'|'O'|'M']
#print(name[1])
for compteur in range(0, nameLength):
print("Donnez-moi un " + name[compteur])
time.sleep(1)
for compteur in range(nameLength-1, -1, -1):
print("Donnez-moi un " + name[compteur])
time.sleep(1)
print(name[0:1])
print(name[1:2])
print(name+"!")
Cours du 12 octobre 2020
age.py
# -*- coding: utf-8 -*-
print("Quel âge as-tu?")
age = input()
age = int(age)
#age = raw_input()
print("Le double de ton age c'est " + str(age * 2))
# < > <= >= == !=
if age < 10:
print("Oh ben t'es tout petit")
print("Mais c'est pas grave")
elif age < 20:
print("Oh ben t'es tout jeune")
elif age < 30:
print("Oh ben t'es presque tout vieux")
else:
print("Oh ben t'es presque mort")
chats.py
# -*- coding: utf-8 -*-
import time
print("Combien de petits chats?")
nbChats = input()
nbChats = int(nbChats)
for compteur in range(1, nbChats + 1):
print(str(compteur) + " petits chats")
time.sleep(1)
print("C'est fini")
Cours du 28 septembre 2020
Exercice : poésie binaire
Chaque étudiant.e écrit sur un pad commun au moins deux vers de 4 pieds en binaire en utilisant le tableau de conversion ASCII suivant:
Du code Morse à l'ASCII
Voir: slides 01: texte et code
1. INTERNATIONAL MORSE CODE, HAND SENDING - https://archive.org/details/gov.archives.arc.36813 Department of Defense. Department of the Army. Office of the Chief Signal Officer. (09/18/1947 - 02/28/1964)
- Le code morse, inventé par Samuel F. B. Morse en 1832.
- Directions pour tracer les lettres
- Les confusions possibles si l'opérateur fait une erreur de rythme
2. TM 11-459 International Morse Code (Instruction) - 1959 - https://archive.org/details/Tm11-4591957/page/n3
- Le télégraphe "a contribué plutôt à lier inextricablement la technologie et la place de l'humain" (K. Hayles - Lire et penser en milieux numériques p. 223)
3. Direct service guide for telegraphic cipher - 1939 - https://archive.org/details/directservicegui00sldu/page/20
- Premier objectif: la compression (pour des raisons économiques)
- 2e objectif: la discrétion
- 3e objectif: le controle des erreurs
4. Bentley's second phrase code - 1929 - https://archive.org/details/bentleyssecondph00bent/page/778
- Les codes ne sont plus liés au langage naturel
5. Idem
- Ici, un "tableau de mutilation" qui permet de corriger un code mal transmis (qui contient une erreur d'une lettre)
6. Teleprinter n°7 - Creed & Company - 1930
- Frederick G. Creed, inventeur du téléscripteur (vers 1910), ancien télégraphiste, canadien
7. Un exemple de téléscripteur - 1932, Londres
8. Code baudot - 1888
- Un encodage des caractères sur 5 chiffres, 5 bits
- Utilisé (dans des versions ultérieures) sur les premiers téléscripteurs
- Nécessité de définir une vitesse de modulation, "baudrate" en anglais, qui définit le nombre de symboles envoyés en 1 seconde -> la question du début et de la fin!
- Donald Murray adapte le code baudot en 1902 et attribue aux lettres les plus utilisées de l'alphabet les positions impliquant le moins de trous
- En 1924, adaptation du code baudot-Murray par l'organisme International Telegraph Union en International Telegraph Alphabet No. 2 (ITA2)
9. ASCII - American Standard Code for Information Interchange - 1963 - pré 1971
- sur 7 bits
Déroulement du cours
Le cours ne nécessite aucun prérequis si ce n'est une capacité d'attention pendant les séances. Cette attention implique qu'à certains moments, par exemple lors des moments de discussions ou de présentations, il sera demandé aux étudiant.e.s de fermer leur ordinateur, que l'usage des smartphones est interdit et que les étudiant.e.s doivent arriver à l'heure au cours (9h, le lundi matin).
Comme il s'agit d'un cours technique, les travaux se feront majoritairement en classe et il n'est pas absolument nécessaire de travailler en dehors du cours, à part pour documenter les travaux ou préparer leurs présentations (les cotations).
Le cours fonctionne en évaluation continue, ce qui signifie que chaque exercice réalisé en atelier aura une note attribuée. Pour réussir le cours, il faut essentiellement être présent.e.
À cette évaluation continue s'ajoute deux notes en décembre et en mai qui correspondent aux moments de cotations. Il est demandé pour ces cotations de présenter une sélection des travaux réalisés jusque là.
La difficulté technique, bien que présente, ne doit pas constituer une barrière pour assister au cours. Il ne sera pas demandé aux étudiant.e.s d'être performant.e.s mais plutôt de ne pas se braquer et d'accepter d'être inefficaces durant des périodes qui semblent parfois longues (voire trouver du plaisir dans ces périodes de recherches). L'entraide et le partage sont encouragés. Tout sera fait pour éviter des comportements de mise à distance du savoir entre celles et ceux "qui savent" et les "newbies".
Chaque étudiant.e a accès à ce wiki, qui servira durant toute l'année à documenter les travaux. La création des comptes pour le wiki se fait au début du deuxième cours (au moment de l'inscription au cours).