# Introduction to the **CS101 labs** at [MEC](http://www.mahindraecolecentrale.edu.in/contact.html)
> This is a really quick introduction to computer programming, CS and Python for the CS101 labs.
> * Any feedback, question, remark or improvement [is of course welcome](https://perso.crans.org/besson/contact/en)!
> * The introduction document is also (publicly) available on-line at [perso.crans.org/besson/cs101](https://perso.crans.org/besson/cs101/),
> * as a PDF at [perso.crans.org/besson/cs101/index.pdf](https://perso.crans.org/besson/cs101/index.pdf),
> * or as a simpler web-page at [perso.crans.org/besson/cs101/index.htm](https://perso.crans.org/besson/cs101/index.htm).
## 1) About CS101 labs
The CS101 course will be half time of lectures, and half time of labs, and many professors will be there for both lecturing and conducting the labs.
- Four different professors will be in charge of lecturing, and three will conduct labs.
- Two more professors will help for labs and projects.
- And four labs/computer assistants will help to keep the computer labs in order, and help for conducting labs and projects.
### Other aspects
1. **When?** The CS101 labs will be 2 hours of *weekly* computer lab, all being mandatory. Any absence without an real excuse will be punished.
2. **Where?** The labs will happen in the computer lab room (or the drawing (AutoCad) lab).
3. **Evaluation:** For the programming other half: 10% will be the first (small) project to do alone, 15% on all the labs (from January to April on various aspects), and 20% on the second project to do in small groups. *This could change*.
4. **Moodle** will mainly be used by us to upload some lectures notes or slides and the lab exercises and assignments. You will *have to use it* to give us back algorithmic homeworks and programming projects, on a very regular basis.
## 2) List of lab outlines (week by week)
- [First lab](./w01/),
- [Second lab](./w02/),
- [Lab #3](./w03/),
- [Lab #4](./w04/),
- [Lab #5](./w05/),
- [Lab #6](./w06/),
- [Lab #7](./w07/),
- [Lab #8](./w08/),
- [Lab #9](./w09/),
- (current lab) [Lab #10](./w10/),
- [Lab #11](./w11/),
- [Lab #12](./w12/),
- [Lab #13](./w13/),
- [Lab #14](./w14/),
- [Lab #15](./w15/),
- [Lab #16](./w16/),
- [Lab #17](./w17/),
- [Lab #18](./w18/),
- [Lab #19](./w19/).
## 3) Basic outline for the labs
> For an outline of the lectures, please [read this page](../overview.html).
This outline might change
This outline for the labs is a preliminary version, it might change.
If needed, please fill a bug report?
Links to each labs
Week by week, lab by lab, we will add one document for each lab, with the content, assignements and some examples of programs:
### First Part
> From January the 5th to February the 6th (5 weeks).
1. (1h first week) Introduction to:
- [an interpreted programming language](../intro/hellow_world.html) command line interpreter (`python`) and IDE (**Spyder**).
- Start to use Spyder on Windows (7 or 8) to run a 'Hello world' example program.
- Accessing the Python doc (online, locally or through Spyder).
2. (1h second week) [Basic contructions of Python](../intro/var_string_num.html): variables, assignment, computing with numbers, priting with the `print` function and dealing with strings. Limitation of the floating point arithmetics.
3. (1h second week) [Basic data types](../intro/list_tuples.html):
- integer, boolean, floating and complex numbers,
- strings and basic methods on strings,
- [lists and tuples](../intro/list_tuples.html). Basic methods on lists.
- Introducing Functions
- If Statements
- While Loops and Input
- Basic Terminal Apps
First Mid Term Exam: Un peu d'algorithmique. Structures de données de bases. Pseudo code. Exemple de bases.
### Second Part
> From February the 12th to March the 24th (6 weeks).
1. (1h first week) Explaination about the first (personnal) project (consign, details, basic ressources, rough shape of what they have to submit).
2. (2h first second week) Dictionaries (math concept, syntax, examples) and more about functions (?).
3. (1h second week) Handling exceptions (concept, syntax, interests and examples).
4. (2h third week) Abstract data types: trees and graphs, simple algorithms (graph traversals, etc)
5. (2h forth week) Importing modules, creating your own modules.
6. (1h fifth week) Writing documentation, bases with `pydoc`. More with [Sphinx](http://sphinx-doc.org/) (one entire example?)
7. (1h fifth week) Explainations about the second (group) project (team, consign, details, basic ressources, rough shape of what they have to submit)
### Third Part
> From March the 30th to May the 1st (5 weeks).
1. Algorithmiques plus avancées.
2. Introduction à des concepts plus techniques, et des modules plus spécialisés (NumPy et SciPy et MatPlotLib pour du numérique scientifique, Tk/Tcl pour du graphique),
3. Projet de groupe!
4. Problem solving: design of algorithms, analysis of algorithms efficiency, general principles (devide-and-conquer, greedy or dynamic programming, recursive vs imperative)
- Working with complex modules
- Collaborative programming
- Numerical and scientific computation with Python
- Bases of GUI programming
- Producing documentation with Sphinx and ReadTheDocs
## 4) Ideas for interesting labs
> See [also this page](../projects/) for interesting ideas for the programming projects.
## 5) Credits and License
### 5.1) Credits
This document has be written by [Lilian Besson](https://perso.crans.org/besson/) for the [Computer Science 101 course](http://www.mahindraecolecentrale.edu.in/portal/view.php?id=27) at [Mahindra École Centrale](http://www.mahindraecolecentrale.edu.in/contact.html), in November 2014.
Feel free to [contact me](https://perso.crans.org/besson/callme.en.html) for any reason, by email at ``CS101 at crans.org``, with that (anonymous) form at [perso.crans.org/besson/contact/en](https://perso.crans.org/besson/contact/en).
### 5.1) License
This document is publicly published, under the terms of the [GNU Public License v3](https://perso.crans.org/besson/LICENSE.html) (as will be every single resource produced for the CS 101 course).
All the quoted resources (websites, books, videos, etc) are **the properties of their respective authors**, and neither me (Lilian Besson) nor Mahindra École Centrale are affiliated to any of them.