owned this note
owned this note
Published
Linked with GitHub
[TOC]
[IRI]: /WGbnTIrRSr21PUk3wI3cYQ
[FUN]: /n1cLwFbiQ5KmDeTlhJX6pw
[IDM]: /DoiTIssySf-ZBReMHKMxQw
[CFR]: /mymSQl5qRLGUMLSaKpVBuA
[CFR1]: /tDO3s1p3QhGk_9vd989lFw
[CFR2]: /EqTS3N2dRaiPFBcysOusCg
[IEA]: /JhQTQ-3UQBe2V8afrkgneQ
[MB]: /OEz9-7xNRMGjOYdJv7fUgQ
[ECP]: /SJuKuAHbSaWSvLaT_1Q2yQ
[CDI]: /Rsz0UzVkT8SAb5doFQA11Q
[SEM]: /53_BimjCSES58oSfY9JYiQ
[CAT]: /XqBjCm-RQ3GT9yPxCQ5_5g
[TAC]: /w4knRVnORGin6WR3mPgbRQ
[IPI]: /7YJDAo1KSM6MekKboQn-QQ
[ALGO]: /_gdX8nhWQ0y5A3O3DdztJQ
[post]: /cGaKxZ6vRrKsqsIh1ZQAUA
[relato]: /WFFUFB5RRtOVv9Aiywgsyw
----
# BTI: Proposta sobre as disciplinas obrigatórias de matemática
* **Veja também** o post relevante no forum do curso, [copiado aqui][post].
* [Meu relato sobre o resultado da votação.][relato]
## Atualmente (510h)
Semestre 1 (120h): ME (60h); AC (30h); GE (30h)
Semestre 2 (240h): FMC1 (90h); VGA (60h); Cálculo I (90h)
Semestre 3 (150h): FMC2 (90h); Probabilidade (60h)
## Proposta 2022 de Thanos (240h)
> [color=magenta]
>
> **Sobre a utilização de módulos de 30h.** A separação em módulos de 30h (que podem ser lecionados em metade de semestre cada, tendo aulas 4h/semana) permite aos alunos que foram aprovados em apenas um dos dois não precisar repetir ambos.
>
> Além disso **as dependências** dos módulos dos semestres seguintes são especificadas para permitir ao aluno que reprovou em um dos módulos conseguir cursar disciplinas dos próximos semestres sem ficar preso até aprovar nos outros módulos também.
>
> **Sobre pointers:** Disciplinas obrigatórias contêm *pointers para assuntos cobertos em optativas* para incetivar o interesse de alunos que normalmente sequer saberiam da existência de tais assuntos.
### Semestre 1 (90h)
* [**MB:** Matemática Básica][MB] (60h)
* [**ECP:** Elementos de contagem e probabilidade][ECP] (30h)
### Semestre 2 (60h)
* [**IDM:** Introdução à Demonstração Matemática][IDM] (60h)
* **IDMa:** Elementos da teoria dos números inteiros (30h)
> prereqs: MB
* **IDMb:** Elementos da teoria dos números reais (30h)
> prereqs: MB
### Semestre 3 (60h)
* [**IRI:** Introdução à Recursão e Indução][IRI] (30h)
> prereqs: MB
* [**CFR1:** Conjuntos e Funções][CFR1] (30h)
> prereqs: (IDMa **ou** IDMb)
### Semestre 4 (30h)
* [**CFR2:** Funções e Relações][CFR2] (30h)
> prereqs: (CFR1 **e** IRI **e** IDMa **e** IDMb)
----
### Optativas
Teremos oportunidades de oferecer mais optativas, mais freqüentemente, e com mais diversidade para os alunos interessados. Sendo optativas, *seu detalhamento fica fora desta proposta*.
> [color=magenta]
>
> #### Observações
>
> 1. Mesmo sendo optativas para o BTI, umas delas podem e devem ser obrigatórias para certas enfases.
> 1. Podemos definir **grupos de optativas** (por exemplo "teoria", "programação", "fundamentos", "data science", etc.) e ter como obrigatório cursar um mínimo de CH de cada grupo (não necessariamente o mesmo). Seria possível a mesma disciplina pertencer a mais que um grupo.
#### Optativas
Menciono algumas optativas aqui, como exemplos.
* [**IEA:** Introdução a Estruturas Algébricas][IEA] (30h)
> prereqs: (CFR1 **e** IDMa **e** IDMb)
* [**CDI:** Cálculo Diferencial e Integral][CDI] (60h)
> equiv: **IDMb** (30h) + **CDI** (60h) = **Cálculo I** (90h)
> prereqs: IDMb
* [**IPI:** Introdução à Probabilidade e Inferência][IPI] (60h)
> prereqs v1: (ECP **e** MB)
> prereqs v2: (ECP **e** Cálculo I)
> Poderia ser a própria **Elementos de Probabilidade e Inferência** criada e apresentada por Ismênia, *removendo o item 1 (Probabilidade) da sua ementa* (pois é coberto na [**ECP**][ECP]).
> [Veja o link][IPI] para mais detalhes.
* **VGA':** Vetores e Geometria Analítica
> prereqs: MB
* **AL':** Álgebra Linear (60h)
> prereqs: (IDMa **ou** IDMb)
* [**FUN:** Programação Funcional][FUN] (60h)
> prereqs: *nenhum!*
> (Esta disciplina já existe como optativa.)
* **SEM:** Semânticas de Linguagens de Programação (60h)
> prereqs: CFR2
* **CAT:** Teoria das Categorias para Computação (60h)
> prereqs: (CFR2 **ou** IEA)
* [**TAC:** Teoria Axiomática dos Conjuntos][TAC] (60h)
> prereqs: CFR2
* **LogMat:** Lógica Matemática (60h)
> prereqs: CFR2
* **LogComp:** Lógica Computacional (60h)
> prereqs: LogMat?
> disciplina atual: DIM0610
* **COMP:** Teoria da Computabilidade (60h)
> prereqs: CFR2
> disciplina atual: DIM0445?
* **LFA:** Linguagens Formais e Autômatos (60h)
> prereqs: CFR2
> disciplina atual: DIM0606
* **GRAF:** Teoria dos Grafos (60h)
> prereqs: CFR2
> disciplina atual: DIM0412
* **TT:** Teoria dos Tipos (30h)
> prereqs: CFR2
* **FORMAT:** Formalização de Matemática (30h)
> prereqs: TT
* [**ALGO:** Introdução aos Algoritmos][ALGO] (30h--60h)
> prereqs: (ECP **e** IDMa)
> ==Com as ementas/CHs atuais das EDB1 & EDB2, esta disciplina é excluída.==
> ([Veja o link][ALGO] para mais detalhes.)
----
## Sidenote sobre umas disciplinas de programação
#### Conceitos e Paradigmas de Linguagens de Programação
Defendo antes de qualquer outra disciplina, a inclusão duma disciplina desse foco como obrigatória para o aluno do BTI. Atualmente alunos estão se formando enganados que «programação é só isso; com várias roupas».
#### Programação Funcional
Proponho adicionar na grade do BTI *como disciplina obrigatória* uma disciplina de Programação Funcional---algo já de acordo com os as grades das universidades freqüentemente citadas em reuniões---para ser lecionada junto com a [**IRI**][IRI]: em paralelo, um semestre antes, ou um semestre depois.
* [**FUN**: Programação Funcional][FUN] (60h)
> prereqs: *nenhum!*
É inaceitável formar alunos no BTI que não tenham visto o mínimo fora dum paradigma só; ainda mais, evitando o funcional. Até as linguagens não-funcionais que o IMD está lecionando (Java, JavaScript, Python, etc.) têm incorporado muitas ferramentas e idéias do paradigma funcional. Por que nossos alunos são "protegidos" dessas idéias?
Além das "antigas" do mercado, o próprio mercado (sim até o brasileiro) tem visto um crescimento enorme em linguagens de Programação Funcional ou relacionadas: Clojure, Scala, Elixir, Rust, Haskell, F#, ...
#### LISP
Me parece também *bizarro* terminar este curso sem sequer ter visto ou usado pelo menos uma LISP. (Aviso: LISP ≠ programação funcional!) Hoje em dia a linguagem [Racket][racket] com todas as suas ferramentas educacionais---incluindo o livro [How to Design Programs (HtDP)][htdp]---parece ser a melhor opção, para atender os objetivos de aprendizagem de disciplinas do tipo «ITP» ou «Boas Práticas de Programação». Novamente, para o povo que gosta desse tipo de "argumentinho": [quais cursos usam Racket?][racket-courses]
A interoperabilidade da [Clojure][clojure-why] com Java a deixa uma boa opção para disciplinas mais focadas a aplicações.
#### "missing semester"
Sugiro também incluir bem no início do curso algo parecido com o [Missing Semester][missing] do MIT.
----
[racket]: http://racket-lang.org/
[htdp]: http://htdp.org/
[racket-courses]: https://github.com/racket/racket/wiki/Courses-using-Racket
[clojure-why]: https://clojure.org/about/rationale
[missing]: https://missing.csail.mit.edu/