FOUNDATIONS OF COMPUTER SCIENCE

INF/01 - 9 CFU - 1° Semester

Teaching Staff

TEACHER NOT YET ALLOCATED


Learning Objectives

Synthetic general description

The course presents the foundation of Computer Science and Programming.
The basic concepts of programming, logics and foundations of Computer Science in general, are presented without neglecting the use of specific libraries for scientific computing.

General educational objectives of teaching in terms of expected learning

  1. Knowledge and understanding: the primary objective of the course is the students' acquisition of the "philosophy" of structured programming, logics and basic notions of computer Science The course pays particular attention to the development of well-written and well-structured code using the basic techniques for software development in the imperative paradigm.

  2. 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 simpel scripts;
    - 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.

  3. 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.

  4. 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.

  5. 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,

Course Structure


All the material shown (slides and code fragments) is made available to students in the Studium website. Video projector is used for lectures in the classroom.
The slides are not intended to replace the reference texts but represent a precise guide to the course topics.

In order to pursue the educational objectives of the course set out in the descriptors 2) Applying knowledge and understanding and 3) Making judgments:



Detailed Course Content

  1. Introduction to programming
    1. Problems and Algorithms. Variables, Expressions and Assignments.
    2. Representation of information: integers and floating-point numbers, characters, strings, images and sounds (outline).
  2. Programming languages
    1. Programming languages: machine, assembly and high level.
    2. Translation problem: compilation and interpretation.
    3. Installation of the development environment for the Python language. First program: Editing, Running, Debugging.
  3. Constructs of Python language
    1. Basic syntax, data types, predefined operators, I/O management.
    2. Numbers and mathematical functions.
    3. Flow control: consructs of selection and iterative.
    4. Functions.
  4. Built-in data structures in Python
    1. Strings.
    2. Lists, Tuples, Dictionaries.
  5. Advanced topics
    1. Notable algorithms: Searching, Sorting, Merging. Basics of computational complexity.
    2. Recursive functions.


Textbook Information

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)




Open in PDF format Versione in italiano