Indice

Programming for Data Science A.Y. 2018/19

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.

Instructors

Classes

Day of Week Hour Room Type
Monday 11:00 - 13:00 Fib C1 Lectures
Tuesday 9:00 - 11:00 Fib N1 Lectures
Wednesday 16:00 - 18:00 Fib M-Lab Labs
Thursday 11:00 - 13:00 Fib M-Lab Labs

NEWS:
Class of 5th of December (Wednesday): Simulation of the exam.

Office hours

Text Books

Software

Preliminary program and calendar

Exams

Exams is made out of two parts:

  1. Written part, in Lab: solve programming exercises in both Python and C (using computers' labs)
  2. Oral part: discussion of all topics covered during the course

Registration to exams is mandatory: register here

IMPORTANT: To be able to solve the C exercises during the exam, you need to use DevC++ installed in the Windows partition of the computers' lab. Please, read carefully the instructions in the Software section above.

Day Hour Room Type
29.10.2018 14:00 - 16:00 I-Lab Reserved exam (working students)
19.12.2018 14:00 - 16:00 M-Lab Second Mid-Term
15.1.2019 9:00 - 13:00 H-Lab Regular Exam
15.2.2019 9:00 - 13:00 H-Lab Regular Exam

Mid-terms text and solutions: PDS_2017_midterm_1.zip and PDS_2017_midterm_2.zip

Sample exam texts: 1, 2, 3, 4,5,6

Class calendar

Recordings are password protected. Ask the teachers for credentials.

Day Room Topic Learning material Recordings Instructor
1. 17.9 11:00-13:00 C1 Introduction. Propositional logic. [T: 1.1-1.3] 20170918.flv20180917_en.mp4 Prencipe
2. 18.9 9:00-11:00 N1 Exercises. Rules of inference for propositional logic. [T: 1.6] 20170919.flv20180918_en.mp4 Prencipe
3. 19.9 16:00-18:00 M-Lab Architectures and hardware design. [A: 1] 20171113.pdf20171114.mp420180919_en.mp4 Prencipe
4. 20.9 11:00-13:00 M-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
5. 24.9 11:00-13:00 C1 First Order Logic: Predicates and Quantifiers, Rules of Inference [T: 1.4-1.6] 20180924_en.m4v Rossetti
6. 25.9 9:00-11:00 N1 Sets and Set Operations [T: 2.1-2.2] 20180925_en.m4v Rossetti
7. 26.9 16:00-18:00 M-Lab Exercises and programming practice. Simple functions, input, if-else, if-elif-else. [P: 1-4] Esercizi1.pdf20180926_I_en.mp420180926_II_en.mp4 Prencipe
8. 27.9 11:00-13:00 M-Lab while, for. [P: 4-7] Esercizi2.pdf20170926.mp420180927_en.mp4 Prencipe
9. 01.10 11:00-13:00 C1 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
11. 4.10 11:00-13:00 M-Lab Functions and recursion. [P: 8-9] 20171005.mp4Esercizi3.pdfEsercizi3.pdf20181004_I_en.mp420181004_II_en.mp4 Prencipe
12. 8.10 11:00-13:00 C1 Exercises on Predicate Logic and Sets 20181008_en.m4v Rossetti
13. 9. 10 9:00-11:00 N1 Functions, Sequences, Set Cardinality, Matrices [T: 2.3-2.6] 20181009_en.m4v Rossetti
14. 10.10 16:00-18:00 M-Lab Strings, tuples, lists, dictionaries, sets. [P: 10-14] 20171011.mp420181010_en.mp4 Prencipe
15. 11.10 11:00-13:00 M-Lab Exercises on strings, tuples, lists, dictionaries and sets. [P: 10-14] Esercizi4.pdf20181011_en.mp4 Prencipe
16. 15.10 11:00-13:00 C1 Exercises on Functions, Sequences, Set Cardinality. High Order Functions. 20181015_en.m4v Rossetti
17. 16. 10 9:00-11:00 N1 Divisibility. Primes. Integer Representation. [T: 4.1, 4.2, 4.3, 4.5] 20181016_en.m4v Rossetti
18. 17.10 16:00-18:00 M-Lab Selection sort and Mergesort, text and binary files, exceptions, bitwise operators. [P: 15-19] 20171018.mp420181017_en.mp4 Prencipe
19. 18.10 11:00-13:00 M-Lab Debugging. Exercises on sorting, files, exceptions. [P: 15-19] Debug.pdfEsercizi5.pdf20181018_en.mp4 Prencipe
20. 22.10 11:00-13:00 C1 Exercises on Primes, Integer Representation, Divisibility. Induction. [T: 5.1] 20181022_en.m4v Rossetti
21. 23. 10 9:00-11:00 N1 Strong Induction, Recursion, Structural Induction. [T: 5.2, 5.3, 5.4] 20181023_en.m4v Rossetti
22. 24.10 16:00-18:00 M-Lab Classes, Object and Overloading. [P: 20-21] 20171108.mp420181024_en.mp4 Prencipe
23. 25.10 11:00-13:00 M-Lab Inheritance, iterators and generators, command line processing. Exercises on classes, objects and overloading. [P: 22-24] Esercizi6.pdf20171122.mp420181025_en.mp4 Prencipe
24. 5.11 11:00-13:00 C1 Exercises on induction and recursive programming. Basic of counting. The Pigeonhole Principle. Permutations. [T: 6.1-6.2] 20181105_en.m4v Rossetti
25. 6.11 9:00-11:00 N1 Combinations. Binomial coefficient. Exercises on recursive programming. [T: 6.3-6.4] 20181106_en.m4v Rossetti
26. 7.11 16:00-18:00 M-Lab The Unix Shell. Introduction to C: pre-processor, compiler, linker. Structure of a C-program. [P: 22-24][C: 1-5] IntroUnix.pdfintroUnix_en.pdfEsercizi7.pdf8-ShellEx_en.pdf20171123.mp4 Prencipe
27. 8.11 11:00-13:00 M-Lab 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.pdf9.2-Cex_en.pdf20181108_en.mp4 Prencipe
28. 12.11 11:00-13:00 C1 Exercises on counting. Relations. [T: 9.1] 20181112_en.m4v Rossetti
29. 13.11 11:00-13:00 N1 Relations, posets. [T: 9.3, 9.4, 9.6] 20181113_en.m4v Rossetti
30. 14.11 16:00-18:00 M-Lab Introduction to C: arrays, functions, scope. [C: 1-5] 20171129.mp420181114_en.mp4 Prencipe
31. 15.11 11:00-13:00 M-Lab Introduction to C: pointers and memory. Exercises on Python and C. [C: 1-5] 20171130.mp420181115_en.mp4Esercizi9_introC_en.zip Prencipe
32. 19.11 11:00-13:00 C1 Exercises on relations and posets. Inclusion-exclusion. [T: 8.5,8.6] 20181119_en.m4v Rossetti
33. 21.11 16:00-18:00 M-Lab Equivalence relations. Relational operators in Python. [T: 9.5] 20181121_en.m4v Rossetti
34. 22.11 11:00-13:00 M-Lab Introduction to C: dangling pointers and memory leaks. [C: 1-5] 20181122_en.mp4 Prencipe
35. 26.11 11:00-13:00 C1 Grammars. [T: 13.1] 20181126_en.m4v Rossetti
36. 27.11 11:00-13:00 N1 Finite-state automata, regular expressions. [T: 13.3, 13.4] 20181127_en.m4v Rossetti
37. 28.11 16:00-18:00 M-Lab Introduction to C: struct, lists [C: 6] 20171206.mp420181128_en.mp4Esercizi10_en.zip Prencipe
38. 29.11 16:00-18:00 M-Lab Introduction to C: libraries, strings [C: 1-6] 20181129_en.mp4 Prencipe
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
42. 06.12 11:00-13:00 M-Lab Exercises 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
45. 12.12 16:00-18:00 M-Lab Exercises Prencipe
46. 12.12 16:00-18:00 M-Lab Exercises Prencipe

Previous years