Indice
Programming for Data Science A.Y. 2019/20
This is an introductory course to computer programming and related mathematical/logic background for students without a Bachelor in Computer Science or in Computer Engineering. The objective is to smoothly introduce the student to the programming concepts and tools needed for typical data processing and data analysis tasks. The course consists of lectures and practice in computer labs.
Starting from this year, the course is ANNUAL: so, classes will start in September and finish in May. Hence, the first exam date for students attending the course this year for the first time will be at the end of May.
Instructors
- Giuseppe Prencipe
- Università di Pisa
- Giulio Rossetti
- Università di Pisa
Classes
Day of Week | Hour | Room | Type |
---|---|---|---|
Thursday | 09:00 - 11:00 | <html><a href='https://meet.google.com/rqn-hqca-zep'>Remote lecture</a></html> | Remote lecture |
Friday | 09:00 - 11:00 | <html><a href='https://meet.google.com/rqn-hqca-zep'>Remote lecture</a></html> | Remote lecture |
<html> <span style=“color:red”> <b>NEWS:<br> </b> Google Meets link for remote lectures: <a href='https://meet.google.com/rqn-hqca-zep'>Join Class</a></b>.</span><br> </span></html>
Office hours
- Prof. Prencipe: by appointment, Department of Computer Science, room 327/DO.
- Prof. Rossetti: by appointment.
Text Books
- [T] Kenneth H. Rosen. Discrete Mathematics and Its Applications. Seventh Edition, MCGraw-Hill, 2012. Supplement material (including Errata-Corrige).
- [P] Pieter Spronck. The Coder’s Apprentice: Learning Programming with Python 3, 2017. Book and supplement material.
- [C] Brian W. Kernighan, Dennis M. Ritchie. C Programming Language. Second Edition, Prentice Hall, 1988.
- [A] David A. Patterson, John L. Hennessy. Computer Organization and Design. Fifth Edition, The Morgan Kaufmann Series in Computer Architecture and Design, 2014. MKComputerOrganizationAndDesign-1stChapter.pdf
- [O-it] Paolo Ancilotti, Maurelio Boari, Anna Ciampolini, Giuseppe Lipari. Sistemi Operativi. McGraw-Hill, 2008
- [O-en] Abraham Silberschatz, Peter B. Galvin, Greg Gagne. Operating System Concepts, 9th Edition International Student Version, 2013
Software
- Python programming: Anaconda distribution of Python 3. Computers at lab rooms include it both on Linux and Windows OS.
- C programming (Windows) Either DevC++ (already installed on LabMachines) or install CygWin (not on lab machines – on your PC) or install a Virtual Machine (such us VirtualBox) running any Linux distribution.
- Editor for C files on Windows Either use the DevC++ editor, or use Notepad++ .
- Unix Shell Either use Linux on lab machines, or install CygWin (on your PC).
- Python/C online including visualization of memory state PythonTutor.
- Jupyter Notebooks shown during theory classes GitHub
Preliminary program and calendar
Exams (rules valid also for COVID-19 emergency)
Exams is made out of two parts:
- Written part: solve programming exercises in both Python and C (45 minutes). If sufficient, this will give you access to the Oral part of the exam.
- Oral part: discussion on both the Written part and on ALL of the topics covered during the course.
Registration to exams is mandatory: register here
Virtual room for the Written part is the same as the one used for classes. Always check here for specific information on specific sessions.
<html> <span style=“color:red”> IMPORTANT: </span></html> To be able to solve the C exercises during the exam, you need to use either the Linux partition or DevC++ installed in the Windows partition of the computers' lab. Please, read carefully the instructions in the Software section above.
Day | Hour | Room | Type |
---|---|---|---|
01/06/2020 | 09:00 - | Virtual Room | I summer session |
22/06/2020 | 09:00 - | Virtual Room | II summer session |
13/07/2020 | 09:00 - | Virtual Room | III summer session |
25/08/2020 | 09:00 - | Virtual Room | fall session |
Students that passed Lab exam of the 16th of June, have to sign here for the oral part:
https://agende.unipi.it/eyy-wad-pxg
Sample exam texts: 1, 2, 3, 4,5,6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
Class calendar
Recordings of lessons are available, and are password protected. Ask the teachers for credentials.
Day | Room | Topic | Learning material | Recordings | Instructor | |
---|---|---|---|---|---|---|
1. | 16.9 11:00-13:00 | C1 | Introduction. Propositional logic. | [T: 1.1-1.3] | 20170918.flv20180917_en.mp4 | Prencipe |
2. | 19.9 09:00-11:00 | H-Lab | Algorithms and programming: notions, programming steps, states, expressions and assignment. Introduction to Python. Data types, expressions using numbers, variables. | [P: 1-4] | 20170920.mp420180920_en.mp4 | Prencipe |
3. | 23.9 11:00-13:00 | C1 | Exercises. Rules of inference for propositional logic. | [T: 1.6] | 20170919.flv20180918_en.mp4 | Prencipe |
4. | 26.9 09:00-11:00 | H-Lab | Exercises and programming practice. Simple functions, input, if-else, if-elif-else. | [P: 1-4] | Esercizi1.pdf 20180926_I_en.mp4 20180926_II_en.mp4 | Prencipe |
5. | 30.9 11:00-13:00 | C1 | while, for. | [P: 4-7] | Esercizi2.pdf 20170926.mp4 20180927_en.mp4 | Prencipe |
6. | 3.10 09:00-11:00 | H-Lab | Lab exercises. | Prencipe | ||
7. | 7.10 11:00-13:00 | C1 | Functions and recursion. | [P: 8-9] | 20171005.mp4 Esercizi3.pdf EserciziRecursion.pdf 20181004_I_en.mp4 20181004_II_en.mp4 | Prencipe |
8. | 10.10 09:00-11:00 | H-Lab | Lab exercises. | De Sensi | ||
9. | 14.10 11:00-13:00 | C1 | Strings, tuples, lists. | [P: 10-14] | 20171011.mp420181010_en.mp4 | Prencipe |
10. | 17.10 09:00-11:00 | H-Lab | Lab exercises. | Prencipe | ||
11. | 21.10 11:00-13:00 | C1 | Dictionaries and sets. | [P: 10-14] | Esercizi4.pdf20181011_en.mp4 | Prencipe |
12. | 24.10 09:00-11:00 | H-Lab | Lab exercises. | Prencipe | ||
13. | 28.10 11:00-13:00 | C1 | Selection sort and Mergesort, text files, exceptions. | [P: 15-19] | 20171018.mp420181017_en.mp4 | Prencipe |
14. | 31.10 09:00-11:00 | H-Lab | Lab exercises. | Prencipe | ||
15. | 04.11 11:00-13:00 | C1 | Binary files, bitwise operators, Debugging. | [P: 15-19] | 20171018.mp4 20181017_en.mp4 Debug.pdf Esercizi5.pdf 20181018_en.mp4 | Prencipe |
16. | 07.11 09:00-11:00 | H-Lab | Test. | Prencipe | ||
17. | 11.11 11:00-13:00 | C1 | Classes, Object and Overloading. | [P: 20-21] | 20171108.mp420181024_en.mp4 | Prencipe |
18. | 14.11 09:00-11:00 | H-Lab | Lab Exercises. | Rossetti | ||
19. | 18.11 11:00-12:00 | C1 | Lesson not held (city closed - flooding). | - | ||
20. | 21.11 09:00-11:00 | H-Lab | Lab Exercises. | Prencipe | ||
21. | 25.11 11:00-13:00 | C1 | First Order Logic: Predicates and Quantifiers, Rules of Inference | [T: 1.4-1.6] | 20180924_en.m4v | Rossetti |
22. | 28.11 09:00-11:00 | H-Lab | Lab Exercises. | Prencipe | ||
23. | 02.12 11:00-13:00 | C1 | Sets and Set Operations | [T: 2.1-2.2] | 20180925_en.m4v | Rossetti |
24. | 05.12 09:00-11:00 | H-Lab | Lab Exercises. | Esercizi6.pdf | Prencipe | |
25. | 09.12 11:00-13:00 | C1 | Inheritance, iterators and generators, command line processing. | [P: 22-24] | Esercizi7.pdf 20171122.mp4 20181025_en.mp4 | Prencipe |
26. | 12.12 09:00-11:00 | H-Lab | Lab Exercises. | Esercizi13-Classi.pdfEsercizi13-Classi-SketchOfSolutions.zip | Prencipe | |
27. | 27.02 09:00-11:00 | L1 | Exercises on Predicate Logic and Sets | 20181008_en.m4v | Rossetti | |
28. | 28.20 9:00-11:00 | L1 | Functions, Sequences, Set Cardinality, Matrices | [T: 2.3-2.6] | 20181009_en.m4v | Rossetti |
29. | 12.03 9:00-11:00 | Google Meet | Exercises on Functions, Sequences, Set Cardinality. High Order Functions. | 20181015_en.m4v | Rossetti | |
30. | 13.03 9:00-11:00 | Google Meet | Divisibility. Primes. Integer Representation. | [T: 4.1, 4.2, 4.3, 4.5] | 20181016_en.m4v | Rossetti |
31. | 19.03 9:00-11:00 | Google Meet | Exercises on Primes, Integer Representation, Divisibility. Induction. | [T: 5.1] | 20181022_en.m4v | Rossetti |
32. | 20.03 9:00-11:00 | Google Meet | Strong Induction, Recursion, Structural Induction. | [T: 5.2, 5.3, 5.4] | 20181023_en.m4v | Rossetti |
33. | 26.03 9:00-11:00 | Google Meet | Basic of counting: The Pigeonhole Principle, Permutations, Combinations, Binomial coefficient. | [T: 6.1, 6.2, 6.3, 6.4] | 20181105_en.m4v | Rossetti |
34. | 27.03 9:00-11:00 | Google Meet | Exercises on induction and recursive programming. | 20181106_en.m4v | Rossetti | |
35. | 02.04 9:00-11:00 | Google Meet | The Unix Shell. Introduction to C: pre-processor, compiler, linker. Structure of a C-program. | [P: 22-24][C: 1-5] | IntroUnix.pdf introUnix_en.pdf 8-ShellEx_en.pdf CLanguage-1.mp4 | Prencipe |
36. | 03.04 9:00-11:00 | Google Meet | Introduction to C: pre-processor, compiler, linker. Structure of a C-program, types, if-for, switch. | [C: 1-5] | intro-C_en.pdf9.1-Cex_en.pdf 9.2-Cex_en.pdf 20181108_en.mp4 CLanguage-2.mp4 | Prencipe |
37. | 09.04 09:00-11:00 | Google Meet | Introduction to C: arrays, functions, scope, pointers and memory. | [C: 1-5] | 20171129.mp4 20181114_en.mp4 20171130.mp4 20181115_en.mp4 CLanguage-3.mp4 Esercizi9_introC_en.zip | Prencipe |
38. | 16.04 09:00-11:00 | Google Meet | Introduction to C: dangling pointers, memory leaks, struct, lists. | [C: 6] | 20181122_en.mp4 20171206.mp4 20181128_en.mp4 CLanguage-4.mp4 Esercizi10_en.zip | Prencipe |
39. | 17.04 09:00-11:00 | Goole Meet | Relations, poset. | [T: 9.1, 9.3, 9.4, 9.6] | 20181112_en.m4v 20181113_en.m4v | Rossetti |
40. | 23.04 09:00-11:00 | Goole Meet | Inclusion-exclusion. Equivalence relations. | [T: 8.5,8.6] | 20181119_en.m4v | Rossetti |
41. | 24.04 09:00-11:00 | Goole Meet | Exercises on relations and posets. Relational operators in Python. | [T: 9.5] | 20181121_en.m4v | Rossetti |
42. | 30.04 09:00-11:00 | Goole Meet | Grammars. | [T: 13.1] | 20181126_en.m4v | Rossetti |
43. | 14.05 09:00-11:00 | Goole Meet | Introduction to C: libraries, strings | [C: 1-6] | 20181129_en.mp4 CLanguage-5 | Prencipe |
2018-2019
Day | Room | Topic | Learning material | Recordings | Instructor | |
---|---|---|---|---|---|---|
3. | 19.9 16:00-18:00 | M-Lab | Architectures and hardware design. | [A: 1] | 20171113.pdf20171114.mp420180919_en.mp4 | Prencipe |
6. | 03.10 09:00-11:00 | H-Lab | Concepts of Operating Systems I. | Lezione9_IntroduzioneOS.pdfLezione10_FileSystem.pdf20171207.mp4 | Prencipe | |
9.1 | 01.10 11:00-13:00 | C1 | Concepts of Operating Systems I. | Lezione9_IntroduzioneOS_en.pdfLezione10_FileSystem_en.pdf20181001_en.mp4 | Prencipe | |
–. | 02.10 09:00-11:00 | Lesson not held. | ||||
10 | 03.10 16:00-18:00 | M-Lab | Concepts of Operating Systems II. | 20181001_I_en.mp420181001_II_en.mp4 | Prencipe |
36. | 27.11 11:00-13:00 | N1 | Finite-state automata, regular expressions. | [T: 13.3, 13.4] | 20181127_en.m4v | Rossetti |
39. | 03.12 11:00-13:00 | C1 | Regular expressions in Python. Syntax and semantics of C expressions. | [P: 25] | Rossetti | |
40. | 04.12 11:00-13:00 | N1 | A Python interpreter of C expressions. Type checking. | Rossetti | ||
41. | 05.12 16:00-18:00 | M-Lab | Fake Test | 20181205-FakeTest.pdf20181205-FakeTestSoluzione.pdf | Prencipe | |
43. | 10.12 11:00-13:00 | C1 | A Python interpreter of C commands. | Rossetti | ||
44. | 11.12 11:00-13:00 | N1 | A Python interpreter of C commands. Wrap-up on programming languages. | Rossetti |