Plano de Estudos

O Mestrado em Software de Código Aberto, também designado Mestrado em Open Source Software (MOSS), tem as seguintes Unidades Curriculares (UC):

  • Introdução ao Software de Código Aberto
  • Fundamentos de Sistemas Operativos de Código Aberto
  • Desenvolvimento de Software de Código Aberto
  • Disseminação de Software de Código Aberto
  • Modelos de Negócio e Economia do Software de Código Aberto
  • Seminário e Projeto em Software em Código Aberto
  • 3 Optativas
  • Dissertação em Software de Código Aberto

Introdução ao Software de Código Aberto

Objectivos

Nesta UC serão apresentados os aspectos específicos do software livre, com foco principalmente nos seus fundamentos,identificando as motivações e importância. Neste contexto serão definido os principais conceitos, bem como avaliados os impactos da sua utilização. Dar-se-á especial ênfase a situações concretas para ilustrar esta problemática

Programa

1. Introdução ao FOSS (Free software and Open Source – Software livre e de Código Aberto)
2. Um pouco de história
3. Aspectos Legais
4. Desenvolvimento em código aberto e motivações dos intervenientes
5. Dimensões Economia e sociais
6. Iniciativas Públicas
7. Engenharia de software Open Source
8. Ambientes de Desenvolvimento e tecnologias
9.Tendências Futuras

Processo de avaliação
Trabalho Prático – 40% Teste Escrito – 60 % Todos os elementos de avaliação deverão ter classificação igual ou superior a 8 valores e a média final deverá ser igual ou superior a 10 valores.

Processo de ensino-aprendizagem
Aulas teóricas e teórico-práticas. Nas aulas teóricas será apresentada a matéria. In theoretical-practical classes, cases will be discussed. Além da assiduidade às aulas (em especial às aulas práticas) espera-se do aluno um tempo de trabalho autónomo de cerca de 10 horas semanais para consulta da bibliografia, revisão de matéria dada, resolução de casos.

Fundamentos de Sistemas Operativos de Código Aberto

Objectivos
Transmitir os conceitos básicos de Sistemas Operativos recorrendo a um sistema operativo de Código Aberto, o Linux, para o ilustrar. No final do semestre, o aluno deverá conhecer principais conceitos sobre sistemas operativos e questões de implementação desses sistemas, de forma a poder utilizar esse conhecimento na sua área profissional. A abordagem teórica será complementada com a discussão de tópicos actuais e com a utilização de aulas práticas e laboratórios. As aulas práticas/laboratório tornarão possível uma utilização confortável da linha de comando, o desenvolvimento de scripts de média complexidade, e a compreensão de alguns mecanismos de implementação oferecidos pelo sistema operativo.
Programa

  • CP1: Introdução: historia e arquiteturas de sistemas operativos
  • CP2: Conceitos sobre sistemas operativos
  • CP3: Shell Processos e threads
  • CP4: – Conceitos
  • CP5: – Multiprocessamento
  • CP6: – Scheduling
  • CP7: – Comunicação entre processos. Concorrência Gestão de Memória
  • CP8: – Modelos de gestão de memória
  • CP9: – Memória Virtual
  • CP10: Entradas e Saídas
  • CP11: Sistema de Ficheiros
  • CP12: Administração e Segurança

Processo de avaliação
A nota final é obtida com base em 3 componentes de avaliação 1) Tópico de Investigação (25%) – É um trabalho de grupo, com 2 a 3 elementos, e inclui um relatório e uma apresentação de 15 minutos 2) Projecto de Shell Script (25%) – Trabalho individual 3) Teste (50%): com nota mínima de 7
Processo de ensino-aprendizagem
O processo de ensino / aprendizagem é orientado pelos seguintes princípios: – enfâse na compreensão dos conceitos base – Foco em temas actuais na área dos sistemas operativos – trabalho prático de desenvolvimento como meio de consolidação dos conhecimentos e competências e utilização desse conhecimento na sua área profissional

Disseminação de Software de Código Aberto

Objectivos
Proporcionar uma visão geral das implementações práticas do software open source. Saber analisar o enquadramento e impacto que o software de código aberto exerce sobre uma determinada organização. Saber enquadrar uma proposta de software aberto, tendo em conta vários tipos de software existente (nomeadamente software proprietário), analisando os aspectos tecnológicos, financeiros, humanos, sociais, económicos e jurídicos. Partilhar ideias no sentido trabalha-las colaborativamente com aulas práticas e apresentação de trabalhos.
Programa

1. Introdução à Disseminação
2. Factores de Adopção de Softare Livre e Open Source
3. Ambiente Externo
3.1. Estado e Regulamentação
3.2. Suporte Externo e Internacionalização / Localização
3.3. Estrutura Sectorial (modelo 5 forças de Porter, análise Pestel)
4. Organização
4.1. Estrutura Formal e Informal
4.2. Processos de comunicação
4.3. Dimensão
4.4. Gestão da Mudança
5. Tecnologia
5.1. Disponibilidade e Características
5.2. Desktop, Mobile e Servidores
5.3. Aplicações, Infraestruturas
5.4. Tendências nas tecnologias (NodeJS, NoSQL)
5. Casos de Estudo de Disseminação na Utilização
5.1. Sector Privado
5.2. ONG
5.3. Administração Pública Central
5.4. Autarquias Locais
5.5. Ensino

Processo de avaliação
Casos de Estudo – 40% Trabalho Final – 60 % Todos os elementos de avaliação deverão ter classificação igual ou superior a 8 valores e a média final deverá ser igual ou superior a 10 valores.
Processo de ensino-aprendizagem
Aulas teóricas e teórico-práticas. Nas aulas teóricas será apresentada a matéria. In theoretical-practical classes, cases will be discussed. Além da assiduidade às aulas (em especial às aulas práticas) espera-se do aluno um tempo de trabalho autónomo de cerca de 10 horas semanais para consulta da bibliografia, revisão de matéria dada, resolução de casos.

Seminário e Projecto em Software em Código Aberto

Objectivos
O Propósito desta Unidade Curricular consiste em ajudar no desenvolvimento da Dissertação. Um dos resultados produzidos deverá ser a clarificação dos objectivos e métodos do trabalho, bem como do estado da arte.
Programa

  • Informática como ciência Abordagens de Investigação qualitativas e quantitativas no Âmbito da Área Científica dos Sistemas de Informação
  • Objectivos da Investigação
  • Fontes de Informação Científica Avaliação de Artigo Científico Categorização das principais abordagens de investigação na no campo de Investigação em Estudo (circunscita a um conjunto de publicações)
  • Apresentação de Trabalhos.

Processo de avaliação
Relatório Final com apresentação
Processo de ensino-aprendizagem
A apresentação da matéria pelo professor deverá ser acompanhada de discussão. Sem prejuízo de resultados intermédios, no final deverá ser apresentado como resultado um trabalho que apresente com clareza os objectivos, a discussão metodológica e a revisão da literatura.

Introdução ao Desenvolvimento de Software de Código Aberto

Objectivos
Atingir um nível de programação que permita desenvolver aplicações de média escala em colaboração. Aprender os principais conceitos associados a linguagens de alto nível orientadas para objetos. Aprender o paradigma da programação concorrente. Conseguir desenhar e implementar aplicações gráficas e concorrentes de média escala. Conhecer os principais padrões de desenho de aplicações concorrentes. Aprender de uma forma introdutória os conceitos da programação distribuída bem como conseguir desenhar e implementar aplicações distribuídas simples.
Programa

  • P1. Introdução à Programação
  • P2. Programação estruturada
  • P3. Estruturas de Dados
  • P4. O paradigma de programação orientada por Objectos
  • P5. Swing e programação por eventos
  • P6. Programação Concorrente
  • P7. Programação em rede / Programação Distribuída

Processo de avaliação
Avaliação tipo básico: A avaliação será composta por um conjunto de 6 trabalhos (10% cada) e um projecto (40%). . Os alunos devem ainda defender os trabalhos e o projecto numa oral. Avaliação tipo avançada: A avaliação durante o período lectivo será composta por a elaboração do ensaio sobre um tema de programação avançado (20%) e de um trabalho final (80%). O tema escolhido tem de ser acertado com o docente.
Processo de ensino-aprendizagem
As aulas estão organizadas em teórico-práticas e de exercícios. As aulas teórico-práticas caracterizam-se por blocos de exposição da matéria teórica encadeados com exemplos e exercícios. Nas aulas de exercícios, os alunos devem resolver com o auxilio do docente um conjunto de problemas.
Modelos de Negócio e Economia do Software de Código Aberto

Objectivos
O aluno deverá poder realizar uma análise económica na sociedade da informação, com base na economia da inovação e das novas tecnologias. O aluno deverá também conhecer os diversos tipos de modelos de negócio aplicados ao Open Source.
Programa

  • Enquadramento institucional e estratégico do open source
  • Análise económica na sociedade da informação
  • Economia da inovação e da nova tecnologia
  • Técnicas de análise sectorial
  • A emergência da alternativa? Open source?
  • Modelos de Negócio
  • Empreendedorismo e open source
  •  Autarquias e Open Source

Processo de avaliação
Realização de dois trabalhos individuais com apresentação oral.
Processo de ensino-aprendizagem
Como metodologia de ensino, propõe-se que a matéria teórica seja complementada com exemplos práticos, de forma a garantir um maior aprofundamento e compreensão dos temas tratados.

 

Optativas 2013/2014:

Bases de Dados em Ambientes de Código Aberto

Objectivos
Pretende-se que os estudantes desenvolvam competências para identificar e caracterizar as fases do desenvolvimento de sistemas de informação, utilizar a linguagem UML para a análise de sistemas de informação, utilizar o modelo relacional para fazer o desenho lógico e implementar um sistema de informação simples utilizando um SGBD relacional de código aberto.
Programa
Os principais conteúdos programáticos a abordar são:

  • 1. Linguagem UML (Análise e desenho de Bases de Dados utilizando UML – Unified Modeling Language);
  • 2. Desenho de Bases de Dados (Tipos de Bases de Dados e de SGBD – Sistemas de Gestão de Bases de Dados);
  • 3. Modelo Relacional e Álgebra Relacional (Conceitos e regras de integridade; Transposição do diagrama de classes para o esquema relacional);
  • 4. Introdução aos SGBDs Relacionais de Código Aberto;
  • 5. Introdução à Linguagem SQL (Structured Query Language);
  • 6. Procedimentos SQL (Vistas, Store Procedures e Triggers);
  • 7. SQL avançado (Interrogações e Performance Tuning);
  • 8. Alta disponibilidade, MySQL Replication e MySQL Cluster;
  • 9. Migração de SGDB Relacional de Código Aberto.

Processo de avaliação
Avaliação Contínua: – Teste escrito individual (60%) ? teste teórico/prático individual sem consulta; – Trabalho prático (40%) ? trabalho em grupo. A média ponderada das notas dos elementos de avaliação (não inferior a 8 valores em cada um dos elementos de avaliação) constituirá a nota final deste regime. Exame Final: Os alunos vão a exame final caso tenham optado por este regime ou não tenham obtido nota positiva na avaliação contínua.
Processo de ensino-aprendizagem
Aulas teórico-práticas em laboratório (1 x 2 horas por semana). Nas aulas serão utilizadas as seguintes metodologias de ensino-aprendizagem (ME): 1. Expositivas, para apresentação dos quadros teóricos de referência; 2. Participativas, com análise e resolução de exercícios práticos; 3. Ativas, com realização de trabalhos individuais e de grupo. 4. Trabalho Autónomo: Além da assiduidade às aulas espera-se do aluno um tempo de trabalho autónomo de cerca de 10 horas semanais.

Desenvolvimento de Aplicações Web

Objectivos
As aplicações Web desempenham um papel relevante na vida do dia a dia. Nesse contexto, é necessário não só saber utiliza-las com maior eficácia e eficiência como ainda desenvolver competências para o seu desenvolvimento, conhecimento e capacidade de utilizar várias tecnologias.
Programa

  1. Cliente Web
  2. Web Server – Apache
  3. PHP e Desenvolvimento de aplicações Web
  4.  Ajax e RIA
  5. Web Services
  6. Gestão de Websites

Processo de avaliação
* Trabalho individual com apresentação (20%) * 4 Trabalhos de grupos (40%) * Apresentação de trabalho à escolha (40%)
Processo de ensino-aprendizagem
Nas aulas será feita exposição dos tópicos teóricos da matéria pelo professor. O trabalho em aula deverá ser acompanhado de um trabalho complementar, extra-aula com caracter de projecto. Esse trabalho extra-aula será sujeito a acompanhamento por porte do docente.

Segurança em Redes de Computadores

Objectivos
Esta UC visa introduzir a problemática da Segurança de Informação no contexto de redes de computadores, identificando as principais vulnerabilidades, ferramentas e medidas que permitem colmatar as principais ameaças de que estas redes são alvo. Os alunos deverão ser capazes de perceber o contexto da segurança de informação e de poderem indicar quais são as principais vulnerabilidades em termos de redes TCP/IP, e quais as medidas para corrigir e prevenir essas mesmas vulnerabilidades.
Programa

  • I. Ataques contra redes TCP/IP a. Segurança em redes TCP/IP b. Actividades prévias à realização de um ataque c. Escutas de rede d. Fragmentação IP e. Ataques de negação de serviço – DoS f. Deficiências de programação
  • II. Mecanismos de prevenção a. Firewalls b. Construção de sistemas seguros com firewalls c. DMZs d. Características adicionais das firewalls
  • III. Mecanismos de proteção a. Conceitos básicos de criptografia b. Sistemas de autenticação c. Proteção ao nível da rede: IPsec d. Proteção ao nível do transporte: SSL/TLS/WTLS e. Redes privadas virtuais: VPN
  • IV. Aplicações seguras a. O protocolo SSH b. Correio electrónico seguro
  • V. Mecanismos para a detecção de ataques ou intrusões a. Necessidade de mecanismos adicionais na prevenção e protecção b. Sistemas de detecção de intrusos c. Scaners de vulnerabilidades d. Sistemas de monitorização e. Prevenção de intrusos f. Detecção de ataques distribuídos.

Processo de avaliação
Avaliação Contínua: – Realização de projeto individual (40%) – Apresentação e discussão do projeto (20%) – Realização de um teste individual (40%) Exame Final: – Prova escrita (100%) Os alunos que reprovarem na avaliação contínua possuem duas épocas de exame (1ª e de recurso). A frequência de um número mínimo de aulas não é obrigatória em nenhum dos métodos de avaliação.
Processo de ensino-aprendizagem
Serão utilizadas as seguintes metodologias de ensino-aprendizagem (MEA): MEA.1: Expositivas, para apresentação do enquadramento teórico MEA.2: Ilustrativas, para exemplificação dos conceitos teóricos em contextos reais MEA.3: Argumentativas, com apresentação e discussão do trabalho de grupo