Synthetic general description
The course introduces some fundamentals principles of Computer Scisnce but mostly focuses on an practical introduction to Programming using Python as reference language.
Focusing on the mosto common practices of Scientific computing imperative as well object oriented paradigm of programming will be considered. Some minor reference will be provided toward ad advanced use of spreadsheet computation models.
Elementary data structures (list, string, dataframes) will be introduced. Basic programing structures: conditional and case based control, iteration, recursion.
Functions and code factoring will be considered as well.
General educational objectives of teaching in terms of expected learning
Knowledge and understanding: the primary objective of the course is the students' acquisition of the "mind set" of programming, as well as an operative knowledge of Python and of some spreadsheet utilities.
Applying knowledge and understanding: it intends to provide the tools to achieve the following practical and professional skills:
- To analyze computational problems and to code algorithmic ideas for their resolution;
- To design, to describe, to implement and debug Python programs with professional tools;
- To use built-in data structures for data management in scientific computing;
- Understanding simple recursive algorithms;
- To use specific libraries for scientific calculation;
- To be able to read documentation of libraries.
- To use, modify and create efficient and interactive spreadsheets.
Making judgements: through the examination of code examples and numerous practice exercises, the learner will be able, both independently and in a cooperative manner, to analyze problems and design and implement related software solutions.
Communication skills: the student will acquire the necessary communication skills and expressive appropriateness in the use of technical verbal language in the context of computer programming.
Learning skills: the course aims to provide the learner with the necessary theoretical and practical methodologies to be used in professional contexts and, in particular, the ability to formulate and implement ad-hoc algorithms for solving new computational problems as well as the possibility of easily and quickly acquiring other programming languages.
The course will include:
a) frontal classes of mostly theoretical content (blackboard and slides) approx 10 hours;
b) interactive laboratory classes with exercise and direct experiencs (laptop projection, internet connection), students will be encouraged to use their own laptops (not mandatory) for approx 50 hours;
The classes will be held in presence (but different decisions of the authorities).
Hands-on learning and reference to typical case studies will be used through the full course.
Introduction to programming
The general structure of a digital computer.
Problems and Algorithms.
Flow chart, Structured linear notation, Böhm-Jacopini theorem.
Representation of information: integers and floating-point numbers, characters, strings.
"Turing-able" programming languages vs spreadsheets;
Basic cycle of computation in a spreadsheet: variables (value, format, dependencies)
Compilation and interpretation for traditional programming languages.
Installation of the development environment for the Python language. First program: Editing, Running, Debugging.
Constructs of Python language
Basic syntax, data types, predefined operators, I/O management.
Numbers and mathematical functions.
Flow control: consructs of selection and iterative.
Functions and recursion.
Built-in data structures in Python
Lists, Tuples, Dictionaries.
Object oriented programming in Python
Examples of simple objects and their usage;
Notable algorithms: Searching, Sorting, Merging. Basics of computational complexity.
Modules. Basic Python libraries for scientific computing and data analysis. Basic data visualization.
1) A.Downey, Think Python, 2nd Ed., Grean Tea Press (online available).
2) M.Lutz, Learning Python, 4th Ed., O'Reilly (online available).
3) D.Pine, Introduction to Python for Science and Engineering, SMTEBooks - CRC Press (online available).
4) Jessen Havill - Discovering Computer Science: Interdisciplinary Problems, Principles, and Python Programming Chapman and Hall/CRC; 1 edizione (14 settembre 2015)