Strumenti Utente

Strumenti Sito


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.



Day of Week Hour Room Type
Thursday 09:00 - 11:00 Remote lecture Remote lecture
Friday 09:00 - 11:00 Remote lecture Remote lecture

Google Meets link for remote lectures: Join Class.

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


  • Python programming: Anaconda distribution of Python 3. Computers at lab rooms include it both on Linux and Windows OS.
  • C programming (Linux): either gedit (or equivalent text editor) and gcc. If you do not have gcc on your machine, check next item. Gedit and gcc are available on computers at lab room (Linux only).
  • 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:

  1. 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.
  2. 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.

IMPORTANT: 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:

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
5. 30.9 11:00-13:00 C1 while, for. [P: 4-7] Esercizi2.pdf
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
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
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
26. 12.12 09:00-11:00 H-Lab Lab Exercises. 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
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
37. 09.04 09:00-11:00 Google Meet Introduction to C: arrays, functions, scope, pointers and memory. [C: 1-5] 20171129.mp4
38. 16.04 09:00-11:00 Google Meet Introduction to C: dangling pointers, memory leaks, struct, lists. [C: 6] 20181122_en.mp4
39. 17.04 09:00-11:00 Goole Meet Relations, poset. [T: 9.1, 9.3, 9.4, 9.6] 20181112_en.m4v
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


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

Previous years

mds/pds/2019.txt · Ultima modifica: 08/09/2020 alle 13:49 (7 mesi fa) da Giuseppe Prencipe