Materials and tasks from courses that I have taught.

  1. Computer programming
  2. Data structure
  3. File structure
  4. Machine learning
  5. Introduction to computer graphics

Computer Programming

Classes will be held at Laboratory 1, UFMS.

(return to the top)

01Month

1.1 - Introduction and Overview

Computer programming, or coding, is to analyze a process and then write a sequence of instructions that can solve a problem. In this course, students will learn to code to arranging items in a sequence ordered by some criterion, that is, sorting values. The second part of this course students will be able to create their own data types and its data strucures, such as linked lists, queue and stacks.

1.2 - Pointers

- Single
- Double

https://www.cs.fsu.edu/~myers/c++/notes/pointers1.html

1.4 - Functions and Data Types

- Simple
- Composed

// minha primeira função em C
#include <stdlib.h>

int somaArg(int a, int b) {
   return (a + b);
}

int somaPtr(int *a, int *b) {
   return (*a + *b);
}

int main () {
   int varX, varY;
   scanf("%d",&varX,);
   scanf("%d",&varY,);
   
   printf("O valor da soma é: %d", somaArg(varX,varY));
   printf("O valor da soma é: %d", somaPtr(&varX,&varY));
       
   return 0;
}

1.5 - Linked Lists

- Insert
- Search
- Remove
- Print

02Month

2.1 - Stacks

- Insert
- Search
- Remove
- Print

2.2 - Queues

- Insert
- Search
- Remove
- Print

2.3 - Two-way Linked Lists

- Insert
- Search
- Remove
- Print

2.4 - Circular Linked Lists

- Insert
- Search
- Remove
- Print

2.5 - Advanced Data Structures

- Sparse Martix
- Trees

03Month

3.1 - Sorting Algorithms

3.2 - Bubble Sort

3.3 - Insertion Sort

3.4 - Selection Sort

04Month

4.1 - Merge Sort

4.2 - Quick Sort

4.3 - Heap Sort

4.4 - Radix and Bucket Sort

Data Structure

Classes will be held at Laboratory 1, UFMS.

(return to the top)

01Month

1.1 - Introduction and Overview

In computer programming, a data structure is a particular way of organizing and storing data so that it can be used efficiently to access, insert or remove elements. Although there are well-known data structures, new ones can be designed to organize data to suit specific purposes. Thus, a data structure may be selected or designed according to the problem.

1.3 - Abstract Data Types (ADTs)

- Simple
- Composed
- New Type

#include <stdlib.h>
                                            
typedef struct SNo{
    int chave;
    SNo *prox;
};

1.4 - Linked Lists

- Insert
- Search
- Remove
- Print

02Month

2.1 - Stacks

- Insert
- Search
- Remove
- Print

2.2 - Queues

- Insert
- Search
- Remove
- Print

2.3 - Two-way Linked Lists

- Insert
- Search
- Remove
- Print

2.4 - Circular Linked Lists

- Insert
- Search
- Remove
- Print

2.5 - Sparse Matrix

- Insert
- Search
- Remove
- Print

03Month

3.1 - Recursion

- Sequence of Fibonacci
- Factorial
- How to implement

int fibonacci(int n) {
  if (n == 0) //condição de parada
    return 0;
  if (n == 1) //condição de parada
    return 1;

  return fibonacci(n - 1) + fibonacci(n - 2);
}
                                        

3.2 - Binary Search Trees

- Insert
- Search
- Remove

3.3 - Tree Traversals

- Pre-Order
- In-Order
- Post-Order

3.4 - Size and Depth

- And other functions

04Month

4.1 - Balanced Binary Tree: AVL

- Insert
- Search
- Remove

4.2 - Rotations

- Left
- Right
- Left-Right
- Right-Left

File Structure

Classes will be held at Laboratory 1, UFMS.

(return to the top)

01Month

1.1 - Introduction and Overview

The permanent storage of data is done in secondary memory, such as magnetic disc. The cost for each access is very expensive, around 1 miliseconds (10^-3). If it is compared with primary memory, for example RAM memory, this time is reduced to (10^-9). Thereby, the main ideia of scientists was to improve the access to disc to bringing up the maximum of data or files to primary memory using specialized structures. In the begnning, a block of 512 bytes was used, then 2K and 4K were also buffered in the memory, according to the OS. File structure algorithms were then created in order to oraganize and to improve the access of data envolving readind and writing on disc.

1.2 - Review about Linked Lists

1.3 - Sparse Matrix

- Insert
- Search
- Remove
- Print

1.4 - Review about Trees

1.5 - KD-Tree

02Month

2.1 - B Tree

- Insert
- Search
- Remove
- Print

2.2 - B+ Tree

2.3 - B* Tree

2.4 - TRIE (Digital Tree)

03Month

3.1 - Hash Table

3.2 - Hash Functions

3.3 - Open Addressing

3.4 - Collision Resolution

3.5 - Universal Hashing

04Month

4.1 - String Matching

4.2 - Priority Queue and Heap

4.3 - Huffman Coding