**Objectives**

**Knowledge**

- The essential constructions of an imperative programming language.
- The tools of a software development system.
- Some fundamental notions of relational databases.

**Application**

- Decompose a problem into simpler problems.
- Design an algorithm and programs (in an imperative programming language) for solving a simple problem.
- Test a program in a given programming environment.
- Design a simple Relational database
- State a very simple SQL query.

**Soft-Skills**

- Ability to do a programming / database project.
- Skills in time management.

**Program**

- Introduction to MATLAB
- Basic Data Types
- Numeric, Boolean, Characters.

- Data Structures
- Arrays (Vectors, Matrices and Multi-arrays)
- Strings
- Strutures

- Basic Operations
- Numerical Expressions
- Array Operations (in MATLAB)
- Scripts

- Basic Data Types
- Programming (Imperative)
- Program Control
- Sequential Execution
- Conditional Execution (If)
- Cycles (For, While)

- Functions
- Nested and Recursive Functions

- Input-Output
- Operation Systems and File Types
- Text Files (Reading from / Writing to)
- Basic Text Processing

- Program Control
- Algorithms
- Search in Arrays
- Sequential (unsorted arrays)
- Bipartite (Sorted Arrays)
- Complexity Analysis

- Sorting algorithms
- Bubble, Insertion, Quick and Merge Sort
- Correctness and Complexity

- Simulation
- Random Variables and Processes
- Automata (State and Transitions)

- Graph Algorithms
- Test for Connectedness
- Minimum Spanning Trees (Prim)
- Shortest Distances (Floyd-Wrashall)
- Correctness and Complexity

- Search in Arrays
- Introduction to Databases
- Relational Databases
- Modelling and Design
- Normalisation
- Queries (SQL)(SQL)

**Bibliography**

- Allen B. Downey, Physical Modeling in MATLAB.