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.
Day of Week | Hour | Room | Type |
---|---|---|---|
Monday | 11:00 - 13:00 | Fib C1 | Lectures |
Tuesday | 9:00 - 11:00 | Fib C1 | Lectures |
Wednesday | 16:00 - 18:00 | Fib M-Lab | Labs |
Thursday | 11:00 - 13:00 | Fib M-Lab | Labs |
Registration to exams and mid-terms is mandatory: register here
Next exam (reserved session) will be on Wednesday 4th of April, from 2pm to 6pm, Lab H.
<html> <span style=“color:red”> IMPORTANT: </span></html> 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 |
---|---|---|---|
30.10.2017 | 9:00 - 11:00 | M-Lab | First Mid-Term |
18.12.2017 | 11:00 - 13:00 | M-Lab | Second Mid-Term |
15.1.2018 | 9:00 - 13:00 | M-Lab | Regular Exam |
12.2.2018 | 9:00 - 13:00 | M-Lab | Regular Exam |
22.6.2018 | 14:00 - 16:00 | H-Lab | Regular Exam |
13.7.2018 | 14:00 - 16:00 | H-Lab | Regular Exam |
07.9.2018 | 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 and solutions: PDS_2017_1session.zip, PDS_2017_2session.zip
Recordings are password protected. Ask the teachers for credentials.
Day | Room | Topic | Learning material | Recordings | Instructor | |
---|---|---|---|---|---|---|
1. | 18.9 11:00-13:00 | C1 | Introduction. Propositional logic. | [T: 1.1-1.3] | 20170918.flv | Ruggieri |
2. | 19.9 9:00-11:00 | C1 | Exercises. Rules of inference for propositional logic. | [T: 1.6] | 20170919.flv | Ruggieri |
3. | 20.9 16:00-18: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.mp4 | Prencipe |
4. | 21.9 11:00-13:00 | M-Lab | Exercises and programming practice. | [P: 1-4] | Esercizi1.pdf | Prencipe |
5. | 25.9 11:00-13:00 | C1 | Predicate logic. | [T: 1.4-1.6] | 20170925.flv | Ruggieri |
6. | 26.9 9:00-11:00 | C1 | Simple functions, input, if-else, if-elif-else, while, for. | [P: 4-7] | 20170926.mp4 | Prencipe |
7. | 27.9 16:00-18:00 | M-Lab | Sets. Sets in Python. | [T: 2.1-2.2] | 20170927.flv | Ruggieri |
8. | 28.9 11:00-13:00 | M-Lab | Iterations and their use. | [P: 7] | Esercizi2.pdf | Prencipe |
9. | 2.10 11:00-13:00 | C1 | Exercises on predicate logic and sets. | 20171002.flv | Ruggieri | |
10. | 3.10 9:00-11:00 | C1 | Functions, sequences, cardinality, matrices. | [T: 2.3-2.6] | 20171003.flv | Ruggieri |
11. | 4.10 16:00-18:00 | M-Lab | Functions and recursion. | [P: 8-9] | 20171005.mp4 | Prencipe |
12. | 5.10 11:00-13:00 | M-Lab | Functions and recursion. | [P: 8-9] | Esercizi3.pdf | Prencipe |
13. | 9.10 11:00-13:00 | C1 | Exercises. Divisibility. | [T: 4.1] | 20171009.flv | Ruggieri |
14. | 10.10 9:00-11:00 | C1 | Primes. Integer representation. | [T: 4.2, 4.3, 4.5] | 20171010.flv | Ruggieri |
15. | 11.10 16:00-18:00 | M-Lab | Strings, tuples, lists, dictionaries, sets. | [P: 10-14] | 20171011.mp4 | Prencipe |
16. | 12.10 11:00-13:00 | M-Lab | Exercises on strings, tuples, lists, dictionaries and sets. | [P: 10-14] | Esercizi4.pdf | Prencipe |
17. | 16.10 11:00-13:00 | C1 | Exercises on divisibility and integer representation. Induction. | [T: 5.1] | 20171016.flv | Ruggieri |
18. | 17.10 9:00-11:00 | C1 | Strong induction. Recursive definitions. Structural induction. | [T: 5.2-5.4] | 20171017.flv | Ruggieri |
19. | 18.10 16:00-18:00 | M-Lab | Selection sort and Mergesort, text and binary files, exceptions, bitwise operators. | [P: 15-19] | 20171018.mp4 | Prencipe |
20. | 19.10 11:00-13:00 | M-Lab | Debugging. Exercises on sorting, files, exceptions. | [P: 15-19] | Debug.pdfEsercizi5.pdf | Prencipe |
21. | 23.10 11:00-13:00 | C1 | Exercises on induction and recursive programming. Basic of counting. The Pigeonhole Principle. | [T: 6.1-6.2] | 20171023.flv | Ruggieri |
22. | 24.10 9:00-11:00 | C1 | Permutations and combinations. Binomial coefficient. Exercises on recursive programming. | [T: 6.3-6.4] | 20171024.flv | Ruggieri |
23. | 25.10 16:00-18:00 | M-Lab | Fake exam (in preparation of Mid-Term exam). | [P: 1-19] | FakeMidTermExam.pdf | Prencipe |
24. | 26.10 11:00-13:00 | M-Lab | In preparation of Mid-Term exam. | [P: 1-19] | FakeMidTermExam.py.zip | Prencipe |
25. | 6.11 11:00-13:00 | C1 | Exercises on counting. Relations. | [T: 9.1] | 20171106.flv | Ruggieri |
26. | 7.11 9:00-11:00 | C1 | Relations, posets. | [T: 9.3, 9.4, 9.6] | 20171107.flv | Ruggieri |
27. | 8.11 16:00-18:00 | M-Lab | Classes, Object and Overloading. | [P: 20-21] | 20171108.mp4 | Prencipe |
28. | 9.11 11:00-13:00 | M-Lab | Exercises on classes, objects and overloading. | [P: 20-21] | Esercizi6.pdf | Prencipe |
–. | 13.11 11:00-13:00 | C1 | Lesson not held. | |||
29. | 14.11 9:00-11:00 | C1 | Architectures and hardware design. | [A: 1] | 20171113.pdf20171114.mp4 | Prencipe |
30. | 15.11 16:00-18:00 | M-Lab | Exercise: relational operators in Python. | ExRelationalOps.pdf | Ruggieri | |
31. | 16.11 11:00-13:00 | M-Lab | Exercise: relational operators in Python. | ExRelationalOps.py.zip | Ruggieri | |
32. | 20.11 11:00-13:00 | C1 | Exercises on relations and posets. Inclusion-exclusion. | [T: 8.5,8.6] | 20171120.flv | Ruggieri |
33. | 21.11 9:00-11:00 | C1 | Equivalence relations. Discussion of relational operators in Python. | [T: 9.5] | 20171121.flv | Ruggieri |
34. | 22.11 16:00-18:00 | M-Lab | Inheritance, iterators and generators, command line processing. The Unix Shell. | [P: 22-24] | 20171122.mp4IntroUnix.pdf | Prencipe |
35. | 23.11 11:00-13:00 | M-Lab | Introduction to C: pre-processor, compiler, linker. Structure of a C-program. Exercises on Inheritance and Unix Shell. | [C: 1-5] | Esercizi7.pdfEsercizi8_Shell.pdf20171123.mp4 | Prencipe |
36. | 27.11 11:00-13:00 | C1 | Grammars. | [T: 13.1] | 20171127.flv | Ruggieri |
37. | 28.11 9:00-11:00 | C1 | Finite-state automata (only deterministic), regular expressions. | [T: 13.3,13.4] | 20171128.flv | Ruggieri |
38. | 29.11 16:00-18:00 | M-Lab | Introduction to C: types, if-for-while, arrays, functions, scope. | [C: 1-5] | 20171129.mp4 | Prencipe |
39. | 30.11 11:00-13:00 | M-Lab | Introduction to C: pointers and memory. Exercises on Python and C. | [C: 1-5] | 20171130.mp4Esercizi9_introC.zip | Prencipe |
40. | 4.12 11:00-13:00 | C1 | Regular expressions in Python. Syntax and semantics of C expressions. | [P: 25] | rexpr.py.zip,parser12.py.zip,20171204.flv | Ruggieri |
41. | 5.12 9:00-11:00 | C1 | A Python interpreter of C expressions. Type checking. | Expressions.pdf,parser3.py.zip, interpreter123.py.zip,20171205.flv | Ruggieri | |
42. | 6.12 16:00-18:00 | M-Lab | Introduction to C: struct, libraries, strings | [C: 1-5] | 20171206.mp4Esercizi10_introC.zip | Prencipe |
43. | 7.12 11:00-13:00 | M-Lab | Concepts of Operating Systems I. Exercises on Python and C. | [C: 1-5] | Lezione9_IntroduzioneOS.pdfLezione10_FileSystem.pdf20171207.mp4 | Prencipe |
–. | 11.12 11:00-13:00 | Lesson not held due to adverse weather conditions. | ||||
44. | 12.12 9:00-11:00 | C1 | A Python interpreter of C commands. | parser4.py.zip,Commands.pdf,20171212.flv | Ruggieri | |
45. | 13.12 16:00-18:00 | M-Lab | Concept of Operating Systems II. | Lezione11_Periferiche.pdf20171213_1.mp4 | Prencipe | |
46. | 14.12 11:00-13:00 | M-Lab | Exercises. | Esercizi12.pdf20171213_2.mp4 | Prencipe | |
47. | 15.12 9:00-11:00 | M-Lab | A Python interpreter of C commands. Wrap-up on programming languages. | interpreter4.py.zip,20171215.flv | Ruggieri |