~misterio/BSI-Notas-2022-1

fa85f936c3756bbdd0c9ff53f075d8a837de5fcc — Gabriel Fontes 2 years ago
commit inicial
8 files changed, 285 insertions(+), 0 deletions(-)

A .gitignore
A flake.lock
A flake.nix
A src/ia.md
A src/lab-bd.md
A src/redes.md
A src/seminarios-i.md
A src/teste-e-validacao.md
A  => .gitignore +2 -0
@@ 1,2 @@
result
src/**/*.pdf

A  => flake.lock +43 -0
@@ 1,43 @@
{
  "nodes": {
    "flake-utils": {
      "locked": {
        "lastModified": 1648297722,
        "narHash": "sha256-W+qlPsiZd8F3XkzXOzAoR+mpFqzm3ekQkJNa+PIh1BQ=",
        "owner": "numtide",
        "repo": "flake-utils",
        "rev": "0f8662f1319ad6abf89b3380dd2722369fc51ade",
        "type": "github"
      },
      "original": {
        "owner": "numtide",
        "repo": "flake-utils",
        "type": "github"
      }
    },
    "nixpkgs": {
      "locked": {
        "lastModified": 1648390671,
        "narHash": "sha256-u69opCeHUx3CsdIerD0wVSR+DjfDQjnztObqfk9Trqc=",
        "owner": "NixOS",
        "repo": "nixpkgs",
        "rev": "ce8cbe3c01fd8ee2de526ccd84bbf9b82397a510",
        "type": "github"
      },
      "original": {
        "owner": "NixOS",
        "ref": "nixos-unstable",
        "repo": "nixpkgs",
        "type": "github"
      }
    },
    "root": {
      "inputs": {
        "flake-utils": "flake-utils",
        "nixpkgs": "nixpkgs"
      }
    }
  },
  "root": "root",
  "version": 7
}

A  => flake.nix +66 -0
@@ 1,66 @@
{
  description = "Notas de aula no BSI em 2022/1";

  inputs = {
    nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
    flake-utils.url = "github:numtide/flake-utils";
  };

  outputs = { self, nixpkgs, flake-utils }:
    let
      name = "notas-2022-1";
      overlay = final: prev:
        {
          ${name} = final.stdenv.mkDerivation {
            inherit name;
            src = ./.;
            buildInputs = with final; [ pandoc texlive.combined.scheme-small ];
            buildPhase = ''
              # Build markdowns into pdf
              for source in src/*.md; do
                pandoc "$source" -o "''${source%.*}.pdf"
              done
            '';
            installPhase = ''
              mkdir -p $out
              cp -r src/*.pdf $out
            '';
          };
        };
      overlays = [ overlay ];
    in
    {
      inherit overlay overlays;
    } //
    (flake-utils.lib.eachDefaultSystem
      (system:
        let
          pkgs = import nixpkgs { inherit system overlays; };
          watchdoc = pkgs.writeShellScriptBin "watchdoc" ''
            watch_file() {
              while true; do
                pandoc "$1" -o "$2"
                inotifywait -e modify "$1" &> /dev/null
              done
            }

            for source in src/*.md; do
              watch_file "$source" "''${source%.*}.pdf" &
            done

            wait
          '';
        in
        rec {
          # nix build
          packages.${name} = pkgs.${name};
          defaultPackage = packages.${name};

          # nix develop
          devShell =
            pkgs.mkShell {
              inputsFrom = [ defaultPackage ];
              buildInputs = [ watchdoc ];
            };
        }));
}

A  => src/ia.md +41 -0
@@ 1,41 @@
# SSC0530 - Inteligência Artificial (2022/1)
## Aula 1 - 22/03

### Objetivos da disciplina
- Prover entedimento de conceitos de auto nível envolvidos em programação declarativa (prolog)
- Conceitos de aquisição e representação de conhecimento
- Técnicas de desenvolvimento de algoritmos de busca cega e heurística
- Técnicas básicas simbólicas e conexionistas de IA

### Prolog
Baseada em fatos e regras. Declarações.

#### Fatos
```prolog
mulher(maria).
filho(joao, maria).
```

#### Regras
```prolog
mae(x, y) :- mulher(x), filho(y, x).
```

#### Queries
```prolog
?- mae(maria, x).
```
## Aula 2
Tópicos:
- IA no dia a dia
- O que é IA
- História da IA
- Inteligência e Aprendizazdo
- Engenharia de COnhecimento e SBC
- Aprendizazdo de Máquina
- Dado, Informação e Conheciento

Palavras chaves que lembro da aula:
- n-gram
- tokenização
- recente: deep learning

A  => src/lab-bd.md +16 -0
@@ 1,16 @@
# SSC0541 - Laboratório de Bases de Dados (2022/1)

## Aula 1 - 30/03

### Classificação dos Modelos de Dados
- Modelos Conceituais:
    - São empregados antes dos demais, durante o desenvolvimento de um sistema,
      pois destinam-se ao projeto sistema. São usados para produzir o Projeto
      Conceitual.
    - Modelo Entidade Relacionamento
- Modelos Físicos:
    - São concebidos para efetivamente executar as operações de acesso e
      manipulação de dados em um Sistema de Gerenciamento de Bases de Dados, e
      para que sobre eles possam ser implementadas as aplicações.
    - São usados para produzir o Projeto Lógico e o Projeto Físico


A  => src/redes.md +17 -0
@@ 1,17 @@
# SSC0540 - Redes de Computadores (2022/1)

## Aula 1 - 22/03

### Objetivos da Disciplina
- Conceitos de redes de computadores, incluindo:
    - Protocolos de aplicação, transporte, rede e enlace
    - Software e hardware de redes de computadores
    - Exercícios e laboratórios de redes
    - Fundamentos de redes de computadores:
        - Camada de aplicação
        - Camada de transporte
        - Camada de rede
        - Camada de enlace
    - O que é uma rede de computadores?
    - Como é que funciona a internet?
    - Qual é a estrutura da internet?

A  => src/seminarios-i.md +13 -0
@@ 1,13 @@
# SSC576 - Seminários em Computação I (2022/1)
## Aula 1 - 23/03

### Objetivos
- Apresentção de conteúdos de computação por meio de seminários.
- Despertar interesse dos alunos nas mais diversas áreas de atuação profissional
- Desenvolver capacidade de investigação de aprendizado de temas mais sofisticados
- Promover iniciativas para encaminhamento em atividades extra-curriculares

### Critérios de avaliação
- Artigo em formato científico
    - Formato IEEE, no máximo 10 páginas.
    - Tema escholido a partir de um ou mais seminários apresentado

A  => src/teste-e-validacao.md +87 -0
@@ 1,87 @@
# SSC0959 - Teste e Inspeção de Software

## Teste de Software: Conceitos básicos

### Conceitos básicos
- Verificação, Validação, Teste Software, Inspeção de Software
- Oráculo de Teste
- Técnica de Teste e critério de Teste
- Engano, defeito, bug, erro, falha
- Teste de unidade e de integração
- Teste de sistemas (maior que integração) e de aceitação
- Teste de regreção
- Correção coincidente


### Teste de software
- Atividade dinamica
- Verifica se o software apresenta o comportamento esperado
- Intenção de revelar defeitos novos

> "Teste é o processo de executar um programa ou sistema com a intenção de
> encontrar erros" (Myers, 1979)

### Verificação e Validação
- Validação
    - Estamos construindo o sistema correto?

    > "Processo de avaliar o software ao final do seu processo de
    > desenvolvimento para garantir que está de acordo com o pretendido"

- Verificação
    - Estamos construindo corretamente o sistema?

    > "Processo para determinar se os produtos de uma determinada fase de
    > desenvolvimento satisfazem os requisitos estabelecidos na fase anterior"

### Fases do Teste de Software: O que testar?
`Diagrama de desenvolvimento V aqui`

### Teste de Software: Como medir o progresso?
- **Técnicas** e **critérios** de teste sistematizam a atividade de teste
    - Ajudam a decidir - *quando parar de testar*
    - Oferecem uma **medida** de atividade

- Critérios de teste
    - Vinculados a uma determinada técnica de teste
    - Sistematizam a forma como os **requisitos de teste** devem ser produzidos
    a partir da fonte de informação
    - Ajudam a decidir quando parar os testes

- Técnicas de teste
    - Definida pelo tipo de informação utilizada para realizar o teste
    - Ex: Caixa-preta e Caixa-branca

- Técnicas e critérios de teste são complementares!
    - Utilizar mais de um para garantir maior abrangência do teste

### Limitações da atividade de teste
- Corretitude de programas
    - Nescessidade de um **oráculo** de teste
- Equivalência de programas
- Executabilidade
- Correção coincidente

### O que é um caso de teste?
- Par ordenado `(d; S(d))` no qual `d` é um elemento pertencente ao domínio de entrada de `D` e `S(d)` corresponde a sua respectiva saída esperada
- Ordem de execução é definida no projeto de casos de teste:
    - Casos de teste em cascata (especialmente casos de sistema)
    - Casos de teste independentes

### Terminologia
- Defeito X Erro X Falha
    - **Engano** -> introduz **Defeito** -> produz **Erro** -> propaga **Erro** e **Falha** (nem sempre)

- Defeito: Passo, processo ou definição de dados incorreto, incompleto, ausente, ou extra que, ao ser executado, **pode produzir um erro no programa**.
    - Defeito de omissão
        - Exemplo: Esquecer um comando
    - Defeito de comissão
        - Exemplo: Um comando que utiliza valor incorreto

- Erro: Ocorre quando um **defeito é executado** e um *estado incorreto* é atingido.
    - Qualquer estado na execução do programa que seja inconsistente com o esperado
        - Erro computacional
        - Erro de domínio
- Falha: Evento *notável* em que o sistema viola a sua especificação
    - Produção de uma *saída incorreta* em relação à especificação
    - Importante: **nem todo erro leva a uma falha**