
Volume 1
1. Lógica de Programação e introdução ao Java
1.1 Algoritmia 1.1.1 Características de um algoritmo 1.1.2 Classificação de algoritmos 1.1.3 Estruturas chave na construção de algoritmos 1.1.4 Formas de representação de algoritmos Descrição narrativa Pseudocódigo Fluxograma Linguagem de Programação 1.2 Introdução ao Java 1.2.1 Criação do primeiro programa em Java (com e sem IDE) 1.2.2 Variáveis e constantes Tipos de dados Escopo Operadores Precedências de expressões e Associatividade 1.2.3 Estruturas de selecção (decisão) 1.2.4 Estruturas de repetição Alterando o número de repetições de um ciclo Labeled loops 1.2.5 Funções (Métodos) Invocação de métodos Sobrecarga de métodos Recursão (Recursão versus Iteração)
2. Programação Orientada à Objectos
2.1 Conceito de Classes e Objectos 2.1.1 Declaração de classes, instanciação de objectos e modificadores de acesso em Java 2.1.2 Encapsulamento de dados e da lógica de funcionamento na POO em Java 2.1.2.1 Pacotes 2.1.3 Métodos constructores e sobrecarga de métodos 2.1.4 Objectos Array 2.2 Relacionamentos entre classes 2.2.1 Composição 2.2.2 Herança 2.2.2.1 Classes e métodos abstractos 2.2.2.2 Interfaces 2.3 Polimorfismo 2.4 Classes internas Classes Aninhadas, Instanciadas, Membro, Locais e Anónimas 2.5 Tratamento de erros e excepções em Java
3. Estruturas de Dados (Colecções)
3.1 Conceito de Estrutura de dados 3.2 Tipos de Estrutura de dados 3.2.1 Listas (simples e ligadas) 3.2.2 Pilhas 3.2.3 Filas 3.2.4 Conjuntos 3.2.5 Mapas (dicionários) e associações 3.2.6 Tabelas de espalhamento (dispersão) 3.2.7 Árvores (binárias e de pesquisa) 3.2.8 Heaps binários 3.2.9 Grafos 3.3 Colecções e hierarquia de estruturas de dados em Java 3.3.1 Genéricos em Java (Métodos e Classes) 3.3.2 Funções e Expressões Lambdas em Java 3.3.3 Streams (Fluxos) em Java 3.4 Performance de algoritmos 3.4.1 Modelo detalhado 3.4.2 Modelo simplificado 3.4.3 Notação assintótica 3.5 Pesquisas em colecções 3.6. Ordenação e classificação de colecções BubbleSort, SelectionSort, InsertionSort, MergeSort, QuickSort, RadixSort
Apêndices
A. Cronologia e milestones da linguagem Java B. Palavras-chave e reservadas em Java C. Sistemas de representação (codificação) de caracteres Tabela ASCII Unicode UTF-8

Volume 2
4. Interfaces gráficas e manipulação de ficheiros
4.1 Diferenças entre CLI e GUI 4.1.1 Aplicações em camadas 4.1.2 Implantação de aplicações 4.1.3 Bibliotecas Java para GUI 4.2 Introdução ao Java Swing 4.2.1 Tratamento de eventos em GUIs 4.2.2 Containeres e Componentes Swing JFrame JLabel (Etiqueta) JTextField (Caixa de texto) JButton (Botão de comando) JTextArea (Área de Texto) JCheckBox (Caixa de verificação) JRadioButton (Botão de opção) JList (Lista) JComboBox (Caixa combinada) JSpinner (botão giratório) JSlider JProgressBar (barra de progresso) JTabbedPane (painel com abas) JSplitPane (painel dividido) JTree (árvore) JTable (tabela) Menus (JMenuBar, JMenu, JMenuItem e JPopupMenu) JToolBar (barra de ferramentas) JFileChooser JColorChooser Janela MDI (JDesktopPane e JInternalFrame) JWindow Janelas de diálogo JOptionPane Subclasse de JDialog 4.2.3 Arrumadores de layout FlowLayout BorderLayout GridLayout CardLayout BoxLayout GridBagLayout SpringLayout GroupLayout Posicionamento absoluto 4.2.4 Look-n-Feel 4.3 Introdução ao JavaFX 4.3.1 Estrutura de um programa JavaFX 4.3.2 Controlos para UI e manipulação de eventos Alert e TextInputDialog Button, CheckBox, ComboBox, Label, RadioButton e TextField PasswordField e ToolTip Accordion e TitledPane ListView DatePicker e Spinner Pagination ProgressBar, ProgressIndicator e Slider ImageView e ScrollPane FileChooser e DirectoryChooser Menu, MenuItem e MenuBar ContextMenu e ToolBar ChoiceBox, MenuButton e SplitMenuButton ColorPicker TabPane TableView TreeView TreeTableView Hyperlink e WebView HTMLEditor 4.3.3 Arrumadores de layout do JavaFX HBox VBox FlowPane BorderPane GridPane TilePane AnchorPane StackPane 4.3.4 Gráficos com JavaFX Gráfico circular (Pie chart) Gráfico de linha (Line chart) Gráfico de área (Area chart) Gráfico de barras (Bar chart) Gráfico de barras empilhadas (Stacked bar chart)
5. Input e Output (I/O) em Java
5.1 Manipulação de ficheiros 5.1.1 Ficheiros de texto com acesso sequencial 5.1.2 Ficheiros binários com acesso sequencial 5.1.3 Ficheiros de objectos com acesso sequencial 5.1.4 Ficheiros de acesso aleatório 5.2 Caso de Estudo – projecto de agenda de contactos com ficheiros
6. Manipulação de bases de dados e introdução ao SQL
6.1 Conceito de Base de Dados 6.2 Modelo Entidade-Relacionamento (bases de dados relacionais) 6.2.1 Tabelas, campos e registos 6.2.2 Chaves primárias e chaves estrangeiras 6.3 Normalização de bases de dados 6.4 Fundamentos de SQL 6.4.1 DDL/DCL com SQL @MySQL 6.4.2 DML (CRUD) com SQL @MySQL 6.4.2.1 INSERT 6.4.2.2 DELETE 6.4.2.3 UPDATE 6.4.2.4 SELECT 6.4.3 DTL com SQL @MySQL 6.4.4 Funções úteis em MySQL 6.4.5. Construindo a primeira base de dados com script SQL 6.5 Caso de Estudo: conectando uma base de dados com um programa Java
Apêndices
D. UML (Unified Modelling Language) Diagrama de classes Diagrama de caso de uso Diagrama de sequência Diagrama de colaboração Diagrama de estados Diagrama de actividades Diagrama de componentes Diagrama de implantação E. Processamento concorrente de tarefas (threads em Java)
