Skip to content
Browse files

Add rake task to create IFPR Palmas courses.

Course#code ceases to be :required.
  • Loading branch information...
1 parent ad26a2a commit 1d676dab9944b848c0893e9b4cada61a66093093 @andlima andlima committed Apr 13, 2011
Showing with 117 additions and 2 deletions.
  1. +2 −2 app/models/course.rb
  2. +44 −0 data/ifpr_ementario_si_matriz_2009.csv
  3. +71 −0 lib/tasks/ifpr_palmas_import.rake
View
4 app/models/course.rb
@@ -1,7 +1,7 @@
class Course < Topic
include MongoMapper::Document
- key :code, String, :length => 15, :index => true, :required => true
+ key :code, String, :length => 15, :index => true
key :name, String, :length => 500, :index => true, :required => true
key :summary, String
key :undergrad, Boolean, :default => true
@@ -20,5 +20,5 @@ def allow_question_lists
true
end
- validates_uniqueness_of :code, :scope => :university_id
+ validates_uniqueness_of :code, :scope => :university_id, :allow_blank => true
end
View
44 data/ifpr_ementario_si_matriz_2009.csv
@@ -0,0 +1,44 @@
+Período|Disciplina|CH Teo.|CH Prat.|Créd.|CH Total|Núcleo|Curso|Ementa
+1|Algoritmos|51|34|5|85|NE|Sistemas de Informação|Estudo das formas para representação do pensamento lógico através das técnicas de desenvolvimento de algoritmos. Representação e manipulação de dados. Construções de algoritmos seqüenciais, condicionais e com estruturas de repetição. Manipulação de estruturas de dados homogêneas e heterogêneas e utilização de sub-rotinas.
+1|Introdução a Arquitetura de Computadores|0|68|4|68|NE|Sistemas de Informação|Breve história da computação. Evolução e classificação dos computadores. Elementos de hardware e software. Conceitos básicos de representação e processamento da informação. Sistemas de numeração. Utilização de ferramentas: sistemas operacionais, aplicativos e Internet. Softwares Especialistas.
+1|Sistemas de Informação|34|17|3|51|NE|Sistemas de Informação|Bases conceituais e filosóficas da área de sistemas de informação. Os conceitos, os objetivos e componentes de sistemas de informação. Os tipos de sistemas de informação. Áreas de pesquisa em sistemas de informação. Profissionais da Informática.
+1|Lógica e Matemática Discreta|51|0|3|51|NE|Sistemas de Informação|Lógica para computação. Cálculo Proposicional e de Primeira Ordem. Álgebra Booleana. Teoria dos Conjuntos. Relações e Funções. Noções de modelos abstratos de computação.
+1|Pré - Cálculo|68|0|4|68|NI|Sistemas de Informação / Matemática / Química / Engenharia Civil / Agronomia / Administração / Ciências Contábeis|Produtos notáveis; fatoração; divisão de polinômios; equações; plano cartesiano; distância entre dois pontos; coeficiente angular; equação da reta e da circunferência; funções: lineares, quadráticas, modulares, exponenciais, logarítmicas e aplicações.
+2|Programação Estruturada|0|68|4|68|NE|Sistemas de Informação|Implementação de algoritmos que empreguem tipos estruturados de dados, modularização e manipulação de arquivos através do uso de uma linguagem de programação do paradigma imperativo.
+2|Arquitetura e Organização de Computadores|68|0|4|68|NE|Sistemas de Informação|Aritmética Binária e Decimal; Aplicações de álgebra booleana; Portas Lógicas e suas representações; Circuitos Lógicos e Digitais; Minimização e implementação de funções lógicas; Mapas de Karnaugh; Noções básicas de arquitetura e organização de computadores; Conjunto de instruções; Modos de endereçamento; Noções de linguagem de máquina; Organização Funcional; Pipeline; Tipos de computadores e ambientes.
+2|Metodologia da Pesquisa|68|0|4|68|NB|TODOS|Noções básicas dos princípios da construção do conhecimento científico. Noções gerais sobre as técnicas de investigação científica. Formas de trabalhos científicos. Planejamento, execução e apresentação da pesquisa. Elementos normativos de acordo com a ABNT.
+2|CDI I|85|0|5|85|NI|Sistemas de Informação / Matemática / Química / Engenharia Civil / Agronomia|Limites: noção intuitiva de limites, definição; propriedades; técnicas para determinar limites, limites que envolvam o inifnito; indeterminações; limites fundamentais; continuidade de funções; derivadas: definição; propriedades, regras de derivação; derivadas de ordem superior; regra de L'Hopital, regra da cadeia, derivada de funções implícitas; Aplicações das derivadas, pontos extremos; teorema do valor médio; variações de funções; concavidades e pontos de inflexão e aplicações.
+2|Sistemas Operacionais I|17|34|3|51|NE|Sistemas de Informação|Histórico de Sistemas Operacionais; Tipos de Sistemas Operacionais; Estrutura de um Sistema Operacional; Gerência de memória; Gerência de E/S; Sistemas de Arquivo.
+3|Estrutura de Dados I|34|34|4|68|NE|Sistemas de Informação|Representação dos dados. Estrutura de dados lineares: a lista e suas variantes (alocação seqüencial e encadeada). Pilhas. Filas. Estruturas auto-ajustáveis. Algoritmos recursivos.
+3|Paradigmas de Linguagens de Programação|51|0|3|51|NE|Sistemas de Informação|Conceitos, características e princípios de paradigmas de Linguagens de Programação. Aplicações.
+3|Filosofia e Ética|34|0|2|34|NB|TODOS|Filosofia. Conceito, origem, historicidade. Atitude filosófica como questionamento das evidências do cotidiano. A Filosofia como ciência e reflexão ao longo da história do pensamento ocidental. Ética. Definição, origem e historicidade. Ética e Moral. Desafios Éticos na contemporaneidade: Ciência, Globalização e Ecologia.
+3|Sistemas Operacionais II|17|34|3|51|NE|Sistemas de Informação|Gerência de processos: Processos, Threads, escalonamento de CPU; Introdução à programação concorrente: Sincronização e Comunicação entre processos; Semáforos e Monitores; Deadlocks. Estudo de casos.
+3|Programação de Computadores I|0|68|4|68|NE|Sistemas de Informação|Uso de uma segunda linguagem de programação, aprofundando os conhecimentos de dados estruturados (vetores, matrizes, registros) e variáveis dinâmicas. Subprogramas. Parâmetros. Refinamentos sucessivos. Manipulação de arquivos.
+3|Práticas de texto: Leitura e Escrita|68|0|4|68|NB|TODOS|Texto: definição, oralidade e escrita. Os modos e os tipos textuais. O texto dissertativo. Os fatores da textualidade. Coerência, coesão e os meios lingüísticos. Argumentação. Ambigüidade. Análise e produção de diferentes textos.
+4|Estrutura de Dados II|34|34|4|68|NE|Sistemas de Informação|Árvores, árvores binárias, árvores B, grafos, aplicações nas diversas áreas da computação. Métodos de ordenação.
+4|Probabilidade e Estatística|68|0|4|68|NI|Sistemas de Informação / Administração / Ciências Contábeis|Introdução do estudo da Estatística; Estatística descritiva; Modelos probabilísticos; Estimativas, correlação regressão e inferências estatísticas.
+4|Banco de Dados|68|0|4|68|NE|Sistemas de Informação|Conceitos de banco de dados. Sistemas Gerenciadores de Banco de Dados (SGDBs). Modelagem de dados. Abordagem relacional: domínios, chaves, restrições de integridade, dependências funcionais, visões, álgebra relacional, cálculo relacional, SQL e normalização. Gerência de Transações. Segurança e autorização de acesso.
+4|Redes de Computadores|34|34|4|68|NE|Sistemas de Informação|Evolução e organização das redes de computadores. Conceitos, classificação e topologias das Redes. Modelos de Referência: OSI e TCP/IP. Padrões e Protocolos de Comunicação. Equipamentos de conectividade. Projeto de redes. Redes de longa distância. Qualidade de Serviço em redes de computadores. Administração de redes de computadores. Gerência de redes de computadores.
+4|Estudo do Homem Contemporâneo|34|0|2|34|NB|TODOS|Contextualização: neoliberalismo, globalização, crise ecológica, a crise das grandes tradições religiosas; relação homem/natureza/sagrado: paradigmas mitológico, teocentrico, antropocêntrico, cosmocentrico; fundamentos doutrinais do cristianismo: monoteísmo, ética, antropologia: Deus-homem, dimensão social/política, desenvolvimento histórico.
+4|Programação de Computadores II|0|68|4|68|NE|Sistemas de Informação|Programação orientada a objetos: Implementação de classe-objetos, herança, polimorfismo, encapsulamento, comunicação e associação. Implementação de interface humana e de armazenamento de dados orientados a objetos. Uso de linguagem de programação orientada a objetos, com ênfase em C++ e Java.
+5|Fundamentos de Administração|68|0|4|68|NI|Sistemas de Informação / Administração|Origem da administração como ciência. As funções administrativas: planejamento, organização, coordenação, comando e controle.
+5|Programação WEB I|0|68|4|68|NE|Sistemas de Informação|Origens, estrutura e administração da Internet. Principais serviços e protocolos de aplicação. Arquitetura da World Wide Web: clientes, servidores, domínios, DNS. Páginas estáticas e dinâmicas. Linguagem de marcação HTML. Folhas de estilos CSS. Conceitos de aplicações para a Web. Linguagens client-side e server-side. Configuração de servidores Web. Desenvolvimento de aplicações para a Web.
+5|Tópicos Avançados em Banco de Dados|34|0|2|34|NE|Sistemas de Informação|Controle de concorrência e recuperação de falhas. Procedimentos e Gatilhos. Projeto e administração de banco de dados. Bancos de dados distribuídos. Bancos de dados de apoio à decisão. Bancos de dados não convencionais. Tecnologias emergentes.
+5|Sistemas Distribuídos|34|34|4|68|NE|Sistemas de Informação|Conceitos e modelos de Sistemas Distribuídos. Sincronização em Sistemas Distribuídos. Algortimos distribuídos. Sistemas Distribuídos tolerantes a falhas. Programação de aplicações cliente/servidor em uma redes de computadores com sockets e TCP/IP. Objetos distribuídos. Web-services.
+5|Linguagem de Programação I|0|68|4|68|NE|Sistemas de Informação|Utilização e prática de uma linguagem de programação para o ambiente windows, a ser definida sempre no início do semestre letivo.
+5|Engenharia de Software|51|17|3|68|NE|Sistemas de Informação|Visão geral e princípios fundamentais da Engenharia de Software. Modelos de processo de desenvolvimento de software. Modelos de ciclo de vida de software. Análise de requisitos, planejamento do projeto de software, implementação de software, gerenciamento de software, qualidade de software e métricas. Reusabilidade. Técnicas e Estratégias de Teste. Utilização de ferramentas de apoio ao desenvolvimento e documentação de sistemas.
+6|Análise e Projeto de Sistemas|51|17|4|68|NE|Sistemas de Informação|Conceitos e metodologias para análise e projeto de software orientado a objetos, utilizando a UML como linguagem de modelagem do sistema. Ferramentas CASE.
+6|Programação WEB II|0|68|4|68|NE|Sistemas de Informação|Desenvolvimento de aplicações Web com acesso a bancos de dados. Gerenciamento do estado da aplicação. Aspectos de segurança. Administração de sites na Internet. Intranets. XML. Javascript, DHTML e Ajax.
+6|Gerência de Projetos de Software|51|0|3|51|NE|Sistemas de Informação|O conceito e os objetivos da gerência de projetos. Abertura e definição do escopo de um projeto. Planejamento de um projeto. Execução, acompanhamento e controle de um projeto. Revisão e avaliação de um projeto. Fechamento de um projeto. Metodologias, técnicas e ferramentas da gerência de projetos.
+6|Sistemas Inteligentes|51|17|4|68|NE|Sistemas de Informação|Estudos dos conceitos, modelos, métodos, técnicas e aplicações da Inteligência Artificial.
+6|Linguagem de Programação II|0|68|4|68|NE|Sistemas de Informação|Utilização e prática de uma linguagem de programação para o ambiente windows, a ser definida sempre no início do semestre letivo.
+7|Projeto Final I|85|0|5|85|NE|Sistemas de Informação|Orientação para a fase inicial de um projeto de pesquisa ou desenvolvimento, fundamentado nos conteúdos estudados nas disciplinas do curso. Produção de uma monografia de acordo com o regulamento e normas do curso.
+7|Contabilidade Geral|0|68|4|68|NI|Sistemas de Informação / Administração / Ciências Contábeis|Noções Preliminares de Contabilidade. O Patrimônio. Atos e Fatos Administrativo/Contábeis. A Escrituração Contábil. Contas. Constituição de Empresas: Noções Básicas. Prática Contábil: Registro de Operações Típicas. O Balancete de Verificação.
+7|Desenvolvimento de Novos Negócios e Empreendedorismo|0|68|4|68|NI|Sistemas de Informação / Administração|Responsabilidade Social. Regimes Tributários. Formas Societárias. Parcerias. Franquias. Terceirizações. Fusões. Incorporações. Diversificação. Ampliação. Plano de Negócios. Empreendedorismo.
+7|Design de Interfaces Humano-Computador|51|17|4|68|NE|Sistemas de Informação|Introdução a Interação Humano-Computador (IHC). Usabilidade. Fatores ergonômicos. Estilos de interação. Metodologias, técnicas e ferramentas de concepção, projeto e implementação de sistemas interativos. Avaliação de interfaces. Acessibilidade. Normas técnicas.
+7|Projeto Comunitário|0|34|2|34|NB|TODOS|Projeto: conceito, elaboração, execução. Atividades práticas de extensão comunitária nas diversas áreas do conhecimento. Formação acadêmica e inserção social. Exercício do voluntariado.
+8|Projeto Final II|0|85|5|85|NE|Sistemas de Informação|Orientação para a fase final do projeto de pesquisa ou desenvolvimento, envolvendo a implementação de um sistema, protótipo, experimento ou teste comparativo. Apresentação final do trabalho perante banca examinadora.
+8|Auditoria e Segurança de Sistemas de Informação|68|0|4|68|NE|Sistemas de Informação|Tipos de ameaças, riscos e vulnerabilidades dos sistemas de informação. O conceito e objetivos da segurança de informações. O planejamento, implementação e avaliação de políticas de segurança e de contingência de informações. Criptografia. Governança em TI. Auditoria de sistemas de informação. Técnicas de auditoria em sistemas de informação. Softwares de auditoria. Estrutura da função de auditoria de sistemas de informação nas organizações.
+8|Direito Aplicado a Informática|34|0|2|34|NE|Sistemas de Informação|Conceitos Básicos do Direito. Legislação específica para a área de computação e informática. Lei de Propriedades e Patentes. Leis de Proteção à propriedade intelectual e software.
+8|Eletiva|17|34|4|68|NE|Sistemas de Informação|Ementa variável - definida de acordo com a escolha das disciplinas eletivas ofertadas ao acadêmico a cada semestre letivo.
+8|Gestão de Sistemas de Informação|34|17|3|51|NE|Sistemas de Informação|Estrutura de CPD. Gerência de pessoal para Sistemas de Informação. Avaliação de sistemas e recursos computacionais. Relacionamento com usuários. Plano Diretor de Informática. Planejamento Estratégico de Sistemas de Informação. Contratos. Registro e homologação de software.
View
71 lib/tasks/ifpr_palmas_import.rake
@@ -0,0 +1,71 @@
+# -*- coding: utf-8 -*-
+
+namespace :ifpr_palmas do
+ desc "Create IFPR palmas courses from csv"
+ task :create_courses_from_csv => :environment do
+
+ # Working specifically with university IFPR.
+ UNI_NAME = "IFPR"
+ U_CAMPUS = "IFPR Palmas"
+ UNIVERSITY = University.find_by_short_name(UNI_NAME)
+ if UNIVERSITY.nil?
+ print "Could not process courses: university '#{U_CAMPUS}' not found."
+ return
+ end
+
+ course_count = ok_course_count = 0
+ filename = "data/ifpr_ementario_si_matriz_2009.csv"
+ if File.exists?(filename)
+ File.open(filename, "r") do |file|
+ header = file.gets.split("|").map(&:strip).map(&:downcase)
+ file.each do |line|
+ content = line.split("|").map(&:strip)
+
+ # hash will contain, among other keys, "disciplina" and "ementa"
+ hash = Hash[*header.zip(content).flatten]
+
+ name = hash['disciplina']
+ summary = hash['ementa']
+
+ t = Topic.find_by_title("#{name} (#{U_CAMPUS})")
+ next if t && t.type == Course && t.name
+
+ print "Processing course '#{name}'...\n"
+
+ if t.nil?
+ t = Course.new
+ t.title = "#{name} (#{U_CAMPUS})"
+ elsif t.type == Topic
+ Topic.set(t.id, :_type => "Course")
+ t = Course.find_by_id(t.id)
+ end
+
+ t.name = name
+ t.university = UNIVERSITY
+ t.summary = summary
+ t.description = "#{summary}\n\n" +
+ " - **Carga horária teórica**: #{hash['ch teo.']}\n" +
+ " - **Carga horária prática**: #{hash['ch prat.']}\n" +
+ " - **Carga horária total**: #{hash['ch total']}\n" +
+ " - **Créditos**: #{hash['créd.']}\n"
+ status = t.save!
+
+ ok_course_count += 1 if status
+ course_count += 1
+ end
+ end
+
+ if course_count > 0
+ print "Successfully processed #{ok_course_count}/"
+ print "#{course_count} of #{UNI_NAME} courses.\n"
+ else
+ print "No course needed to be created for #{UNI_NAME}.\n"
+ end
+ else
+ print "Could not process #{UNI_NAME} courses: "
+ print "file '#{filename}' not found.\n"
+ end
+
+ print "\n"
+ end
+end

0 comments on commit 1d676da

Please sign in to comment.
Something went wrong with that request. Please try again.