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)