20801684 - INTRODUCTION TO COMPUTER SCIENCE

Provide the basic elements of Computer Science, giving concepts, methods and tools to address the technological evolution and the large variety of applications.
Particular objectives are:
- introduce IT as a discipline for automatic problem solving;
- examine the basic concepts of computer programming using methods and tools, partly formal and partly pragmatic, and taking into account the qualitative aspects of efficiency and correctness;
- present the main data structures and algorithms.

At the end, students will be able to face a programming problem in all its parts, namely by:
- understanding, analyzing and formalizing the problem;
- designing a solution algorithm;
- implementing the algorithm in the Julia scientific language;
- carrying out correctness tests;
- critically judging the project in terms of code readability and efficiency, reusability, and maintainability.
teacher profile | teaching materials

Programme

Module 1 (6 credits)
1. Introduction to hw and sw of digital computers
2. User interfaces: GUI and terminal shell (linux install)
3. High- and low-level languages: JIT compilation, Julia
4. Intro to programming: simple types, variables and functions
5. Intro to programming: data types, control of execution flow
6. Structured data types: array, tuple, dictionary
7. Data structures: list, stack, queue, binary tree, graph
8. I/O and network: file formats, serialization, encodings
9. Main algorithms: merge, sort, intro to complexity10.
10. Linear algebra with vectors and matrices
11. Julia packages: timing and function visualization
12. Markup of documents: html, json, latex, pandoc
13. Intro to Python: differences with Julia


Core Documentation

1. Teaching materials from teacher (on Teams).
2. [Think Julia: How to Think Like a Computer Scientist](https://benlauwens.github.io/ThinkJulia.jl/latest/book.html)


Type of delivery of the course

Lectures are in traditional form (ex cathedra) with the help of slides, available in advance to the students. In each lecture at least 20 minutes are reserved for carrying out one or more programming exercises in class. The language used is Julia (https://julialang.org).

Attendance

The course must be attended in person. Attendance at lectures is strongly recommended.

Type of evaluation

The exam takes place in the traditional form, through a practical programming test, with a sufficient mark between 28 and 15 points. For those who have obtained the sufficiency, an oral exam takes place, through written questions of computer culture. The oral involves a possible increase from 1 to 5 points. The exam is passed and recorded starting from 18 points.