Description
Ce cours est une initiation rapide à la programmation C et Java. Il se décompose en deux parties: 6 semaines sur le langage C, suivie de 6 semaines sur le langage Java. La partie sur le langage C s’intéresse surtout à enseigner la programmation et l’algorithmique alors que la partie sur le langage Java met l’accent sur les concepts d’architecture logicielle et la structuration du code d’un logiciel.
Le but est de donner les clés nécessaires pour:
- Programmer seul ou en équipe sur des projets de moyenne envergure (quelques milliers de lignes de code);
- Maîtriser suffisamment la syntaxe des langages de programmation C et Java pour être autonome;
- Être capable de trouver ses propres bugs avec les outils du langage (C et Java);
- Gérer une base de code conséquente et être capable de se retrouver dedans (environnement de développement, build-system, base de tests logiciels, git, …);
- Mettre en place une méthodologie pour évaluer et améliorer les performances de son programme;
- Comprendre et réaliser des architectures logicielles simples (en C ou en Java).
Références
- The Art of UNIX Programming, by Eric. S. Raymond, 2003;
- Clean Code, by R. C. Martin, 2008;
- Code Reading, by D. Spinellis, 2003;
- C programming (in French) (Website, PDF), A. Canteau;
- The C Programming Language (2nd edition), by B. Kernighan and D. Ritchie, 1976;
- Practical C Programming (3rd edition), by Steve Oualline, 2011;
- Modern C (PDF), by Jens Gustedt, 2018.
- C11 Language Specifications (PDF), 2011;
- The Practice of Programming, by B. Kernighan and R Pike, 1999;
- The Tao of Programming (Website);
- Java Precisely (3rd edition), by P. Sestoft, 2016;
- Head First Java (2nd edition), by K Sierra, B Bates, 2003;
- Java Language Specifications;
- Java in a Nutshell (6th edition), by E. Flanagan, O’Reilly, 2014.
- Why Programs Fail: A Guide to Systematic Debugging (2nd edition), by A. Zeller, 2009;