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.
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
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 complexity
Module 2 (3 credits)
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
2. [Think Julia: How to Think Like a Computer Scientist](https://benlauwens.github.io/ThinkJulia.jl/latest/book.html)
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 complexity
Module 2 (3 credits)
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 GitHub).2. [Think Julia: How to Think Like a Computer Scientist](https://benlauwens.github.io/ThinkJulia.jl/latest/book.html)
Type of evaluation
Practical test Both written and oral tests