 Welcome, Benvenidos, Onghi e Torri. I will speak here about the other structures, discipline with Python. I'm a computer-sized professor at FATEC. FATEC is a public university at Sao Paulo, Brazil. I love teaching. And that structures as a difficult discipline to teach is also a difficult discipline to students. It's also a difficult discipline for my university. My thesis is C-language as, as have a problem with syntax. I like C-language very much, but sometimes C have a bit of dangerous problems to students. I love that circuits because algorithms, algorithms have a lot of independence of operating systems and languages. For example, binary search, the number of steps or measure sorts are independent of operating systems and languages. The number of steps is the same in the Windows, Linux or in C or in Python. That structures at my university, FATEC. 2008 is a bad year for me because we have this number of students retain it. With Python, in this year, only 10% we have improvement with the change of the C-language to the Python language. In this talk, I will show improvements with some codes. The summary, 2008, retain it for students. When I submitted the talk, we have improvement of 12%. And now, when I finish my semester, we have two points of improvement. In Brazil, we have a national contest, a national one to five grade, my university receives the maximum. We have received the highest level of improvement contest programming first last year. And it's a good before the change to Python and 2009. Some details, in 2009, we moved all the classes to laboratory classes. We have four classes for week, no chalkboard classes, only laboratory classes. We have four lobby projects for semesters. All lobby are in Python. We introduce a strange name, Big Brother, and some students, best students, could help the other students as coaches. We maintain C-languages only for proposal to compare the algorithms, all the algorithms, are in two languages, C to show the details, and Python to show the essence, to show the essence of the algorithms. Both the students, the exercise are submitted in Python, the projects are submitted in Python. The C-languages only to show the details, why Python? The majority of the university in USA are using Python to introduction, courses of programming, because usability is a problem for introduction to programming. I think usability is a problem for data structure, courses also. Donald Knut in an interview of people of ACM, say the most common fault in computer class is to emphasize the rules of specific programming language instead of to emphasize the algorithms that are being expressed in those languages. Sometimes the teachers are struggling in syntax problems of C-languages or Java languages instead of teaching the algorithms. That's the most important. Talk is shipped, show me the code. I will show a lot of the code of my course. First, in Python variables are just names. All the variables are pointers, 42, a Python are pointers. If you have a list, if you have a segment, 42 to a index 0, a, b are pointers to the same list, so b changes to, because a and b are pointers to the same object. If you need a new object, you need to explicitly create a new object is good to a professor, to a teacher, to explicitly, explicitly create a new object is good to teaching. Python is cool, there are big integers. In Python, Python 3, there are natural division in C-languages. I think that's strange. One divided to zero. For beginners, it's a bit strange. There are cool things like multiple assignments. There are no need to a third variable, b, to swap for b. O, manipulate year, month, day, like this. O, the middle, like this list. O, phonies. Matsanori and put these phonies. It's a happiness to manipulate data with Python. Identation, the programming activity should be viewed as a process of creating work of literature, writing to be read. The C-language has some indentation problems, like this. If you put this, you print only one text. This is a problem also. It's a false indentation. This indentation confuses the students. It's not a problem only in education, but also in corporations like Apple. There's a code in Apple. Some guys go to fail. Who? Go to fail. It's a crazy. Go to fail, go to fail. Who? Go to fail. C-language has some problems that are very dangerous, not only for students, but for corporations. Recursion. When you understand the recursion, you must first understand the recursion. People not have a problem. People not recursive. We solve this using a dictionary, for example. With Python, we can also show this high level to students. Students create some solutions to debt-to-being problems because the dynamic aspect of the types. Linked lists. The implementation of linked lists in C-language have some details. For example, we need to have a head in order to avoid the special case to analyze the empty list, this head. We need to put the reverse order 3 to 1, the linked list. We don't need to do this in Python. Kills. We have this matrix, this node 3. We need to calculate the distances of the node 3 to the other nodes. Node 3 to node 4 have one point of the minimum distance. We calculated this in C-language by these algorithms. C-language have some issues, some problems because the int star that returned in these functions int star in C-language have two meanings. It's a pointer for one integer. On the other hand, it's a vector of a dynamic number of elements. Sometimes it's a bit confusing to students. In Python, it's a more clear algorithm. It's more direct and readable. Stacks. We need to see the well-formed expression. The equivalent of this C-language algorithm in Python, it's much more clear than the C-language. It's a direct way to see the essence, selection sort, the manipulation of the index to see the minimum of the vector and swap for the first. It's a bit more complex than this algorithm equivalent in Python. Of course, we need to see the complexity. If the complexity or the number of the steps is the same, it's better to use the more readable algorithm to students. Quick sort. The quick sort is a very difficult algorithm to teach if you see the C-language. You have a pivot. You need to put all the smaller elements to one side of the higher elements to the other sides. In Python language, we have a list comprehension. It's much more clear to the students the concept of the smaller, of the higher. We have a pivot. The smaller elements is at least the one side list. The higher elements is the other side. We solve the problem in a recursive manner with the smaller and the higher. In C-language, it's not clear the essence of the algorithm. In the Python, we see the essence of the algorithm. That is the most important. Some exercises like the word count. We have a text. We need to count how many occurrence of the word have in one text. In C-language, if you have to count the number of occurrence of Alice in Wonderland, it's a mess. We need to tokenize the memory allocation to have many pointers. It's a crazy to code this program in C-language. In Python, for a teacher, Python is good because all the code is put in one slide. The word count program in Python is an exercise in 10 minutes. We open the book Alice in Wonderland. We read, remove the special characters, and we use a dictionary to count the words. That's enough simple, direct, and explicit. Some projects. The first project that my students work is a comparison with MergeSort, QuickSort, SelectionSort, and NativSort, a Python NativSort, is a good practical project. The students like it very much because the time of the NativSort is so good. The TeamSort is a modification of MergeSort. The second practical project is a simplification of art or mailing games. We have some girls, some guys. We need to arrange a marriage of the girls to guys. We have kinites. We need to put the kinites in a table. The code to have made the numerations of the guides is a code to generate the sub-sequences, sub-sequences, lexical seconds of the youth operator to improvement is good to students to know the difference of the return of the youth. The third project is to detect the binary regions. This region is connected. This run is connected. It's a problem in simple to announce, but difficult to resolve. It's a cool project. And the last is a graph theory project. It has a risk to solve the minimum degree to maximum independent set problem. One, two, and six is the maximum independent set of this graph. The implementation of this problem in Python is not so hard. I will show is 20 lines of code. In C language is 500 lines of codes. Conclusions. There is a trade-off to choose a language to teach. C is good for optimization to see the details, the low level. But Python is also good to show the essence of the algorithms. The high level. But if the algorithm is the same, the number of steps, the complexity, parameter optimization is also in teaching data structures. Thank you. Thank you very much, Fernando. Do you have any questions? No questions? Thank you all very much.