Estudar quais as preferências dos alunos de ciência da computação (UFCG) acerca do uso de linguagem de programação e seus demais contextos.
Foi criado um gform (https://forms.gle/BNiREzFTsuHckLk49) e enviado para todos os alunos de ciência da computação (UFCG) por meio de email eletrônio entre os dias 12/08/2021 - 21/08/2021, com o total de 40 respostas sobre as seguintes perguntas:
Buscamos verificar a partir das respostas as seguintes hipóteses:
Para cada pergunta iremos verificar as hipóteses ocorrem nos seguintes grupos:
Aqui estão algumas observações sobre os grupos
Das 40 respostas, 30 são “masculino”, 9 são “feminino” e somente 1 “outro”, por esse motivo, nesse estudo iremos ignorar o dado único pois não há amostras suficientes do grupo para verificarmos alguma hipótese. O grupo “feminino” reflete bem a realidade dos cursos de Ciência da Computação, no qual o percentual de homens é maior do que o das mulheres.
Das 40 respostas, houve representatividade nos 4 subgrupos de intervalos de périodos, portantos todos serão considerados no estudo.
Das 40 respostas, não houve respondentes que preferem as áres de infraestrutura e acadêmica, por esse motivo, nesse estudo iremos ignorar esses subgrupos.
Das 40 respostas, a grande maioria, 28 respondentes, possuem o Visual Studio Code como favorito, e 5 para IntelliJ, os outros grupos possuem somente 2, portanto iremos ignora-los.
Das 40 respostas, não houve respondentes que utilizam com maior frequência para o Android, e não houve amostra signficativa para o MacOS, portanto iremos ignorar esses subgrupos.
Carregando o arquivo csv de resposta do gform temos uma amostra que representa parte dos alunos (população), em nossos dados temos as seguintes colunas que representam:
responses = read_csv(
here::here(params$arquivo_dados),
col_types = cols(
genero = col_character(),
periodo = col_character(),
area_de_atuacao = col_character(),
editor_de_texto = col_character(),
sistema_operacional = col_character(),
ling_prog_ctx_ger = col_character(),
nota_ling_prog_ctx_ger = col_double(),
ling_prog_conhece = col_character(),
ling_prog_ctx_backend = col_character(),
nota_ling_prog_ctx_backend = col_double(),
tipo_bd = col_character(),
ling_prog_ctx_frontend = col_character(),
nota_ling_prog_ctx_frontend = col_double()
)
)
grupo_por_periodo = responses
grupo_por_area_de_atuacao = responses %>%
filter(area_de_atuacao != "Infraestrutura", area_de_atuacao != "Acadêmica")
grupo_por_sistema_operacional = responses %>%
filter(sistema_operacional != "Android", sistema_operacional != "MacOS")
grupo_por_editor_texto = responses %>%
filter(editor_de_texto %in% c("Visual Studio Code", "IntelliJ"))
glimpse(responses)
## Rows: 40
## Columns: 13
## $ genero <chr> "Masculino", "Masculino", "Masculino", "Fe…
## $ periodo <chr> "Entre 2019.1 e 2020.2", "Entre 2019.1 e 2…
## $ area_de_atuacao <chr> "Engenharia de Software", "Engenharia de S…
## $ editor_de_texto <chr> "Visual Studio Code", "Visual Studio Code"…
## $ sistema_operacional <chr> "Linux", "Linux", "Linux", "Windows", "Lin…
## $ ling_prog_ctx_ger <chr> "TypeScript", "TypeScript", "Python", "Jav…
## $ nota_ling_prog_ctx_ger <dbl> 4, 5, 4, 4, 4, 4, 5, 4, 5, 4, 5, 5, 5, 4, …
## $ ling_prog_conhece <chr> "C/C++, Go, Java, JavaScript, Python, Type…
## $ ling_prog_ctx_backend <chr> "Outra", "JavaScript", "JavaScript", "Java…
## $ nota_ling_prog_ctx_backend <dbl> 4, 5, 4, 4, 5, 4, 5, 5, 4, 5, 5, 5, 3, 4, …
## $ tipo_bd <chr> "Relacional", "Não relacional", "Relaciona…
## $ ling_prog_ctx_frontend <chr> "JavaScript", "TypeScript", "JavaScript", …
## $ nota_ling_prog_ctx_frontend <dbl> 4, 5, 4, 5, 3, 4, 5, 5, 4, 5, 5, 5, 5, 5, …
Analisemos em relação a preferência de área de atuação para verificarmos a hipótese A preferência de área de atuação é Engenharia de Software sobre alguns grupos (definidos no tópico de Grupos), como período, sistema operacional e editor de texto.
Observamos claramente que a área de atuação de preferência dos respondentes é Engenharia de Software, seguido de Análise de Dados. Na amostra tivemos que nossa hipótese foi validada no contexto geral.
grupo_por_periodo %>%
group_by(area_de_atuacao) %>%
count() %>%
ggplot(aes(x = n, y = reorder(area_de_atuacao, n))) +
geom_bar(stat='identity') +
labs(
title = "Preferência dos respondentes em relação a área de atuação",
x = "Quantidade de respondentes",
y = ""
) +
scale_x_continuous(breaks = seq(from = 0, to = 22, by = 2))
Observamos claramente que em todos os grupos de périodo, a área de atuação de preferência dos respondentes continua sendo Engenharia de Software, uma exceção a isso é durante o período de 2017.2 e 2018.2 em que houve um pico para a área de Análise de Dados.
grupo_por_periodo %>%
group_by(periodo, area_de_atuacao) %>%
count() %>%
ggplot(aes(y = area_de_atuacao, x = n)) +
facet_wrap(~ periodo) +
geom_bar(stat='identity') +
labs(
title = "Preferência dos respondentes em relação a área\nde atuação versus período de ingresso no curso",
x = "Quantidade de respondentes",
y = ""
)
Continuamos observando o mesmo comportamento visto anteriormente da dominância da área de Engenharia de software, seguido da área de Análise de dados.
grupo_por_sistema_operacional %>%
group_by(sistema_operacional, area_de_atuacao) %>%
count() %>%
ggplot(aes(y = reorder(area_de_atuacao, n), x = n)) +
facet_wrap(~ sistema_operacional, ncol = 1) +
geom_bar(stat='identity') +
labs(
title = "Preferência dos respondentes em relação a área\nde atuação versus sistema operacional",
x = "Quantidade de respondentes",
y = ""
) +
scale_x_continuous(breaks = seq(from = 0, to = 14, by = 2))
Continuamos observando o mesmo comportamento visto anteriormente da dominância da área de Engenharia de software, seguido da área de Análise de dados. Interessante que o Visual Studio Code é bem usado independente da área de atuação. Já o IntelliJ possui um foco maior em Engenharia de software.
grupo_por_editor_texto %>%
group_by(editor_de_texto, area_de_atuacao) %>%
count() %>%
ggplot(aes(y = reorder(area_de_atuacao, n), x = n)) +
facet_wrap(~ editor_de_texto, ncol = 1) +
geom_bar(stat='identity') +
labs(
title = "Preferência dos respondentes em relação a área\nde atuação versus editor de texto favorito",
x = "Quantidade de respondentes",
y = ""
) +
scale_x_continuous(breaks = seq(from = 0, to = 14, by = 2))
Analisemos em relação a preferência de linguagem de programação para verificarmos as hipóteses A linguagem de programação mais utilizada entre os novatos é Python e A linguagem de programação mais utilizada entre os veteranos/concluientes é Java sobre o período. Considere os periodos entre 2019.1 e 2020.2, como novatos, entre 2017.2 e 2018.2 como veteranos e o restante como concluientes
Observamos que entre os novatos e concluientes, a linguagem de programação Java domina, portanto nossa hipotese A linguagem de programação mais utilizada entre os novatos é Python, pensamos em Python pelo fato das disciplinas de P1/LP1, mas P2/LP2 e EDA/LEDA acabam puxam mais alunos para Java. Sobre a hipótese A linguagem de programação mais utilizada entre os veteranos/concluientes é Java em parte está correta para os concluintes, mas os veteranos preferem Python.
novatos_x_veteranos = responses %>%
mutate(class = periodo)
novatos_x_veteranos$class[novatos_x_veteranos$class == "Entre 2019.1 e 2020.2"] = "novatos"
novatos_x_veteranos$class[novatos_x_veteranos$class == "Entre 2017.2 e 2018.2"] = "veteranos"
novatos_x_veteranos$class[novatos_x_veteranos$class == "Entre 2016.1 e 2017.1"] = "concluientes"
novatos_x_veteranos$class[novatos_x_veteranos$class == "Anterior ou igual ao 2015.2"] = "concluientes"
novatos_x_veteranos %>%
group_by(class, ling_prog_ctx_ger) %>%
count() %>%
ggplot(aes(y = reorder(ling_prog_ctx_ger, n), x = n)) +
facet_grid(~class) +
geom_bar(stat='identity') +
labs(
title = "Preferência dos respondentes em relação a linguagem\n de programação no contexto geral versus tipo de aluno",
x = "Quantidade de respondentes",
y = ""
) +
scale_x_continuous(breaks = seq(from = 0, to = 7, by = 2))
Temos que nossa hipotese A melhor linguagem de programação para back-end é Go é totalmente incorreta, acreditavamos que Golang é uma linguagem de programação que vem crescendo e sendo adotada para o uso na programação back-end, mas em nossos alunos ainda continuam muito baixo em percentual. A maioria dos respondentes preferem Java ou Javascript, em nosso curso Javascript é visto em poucas disciplinas obrigatórias, mas ainda sim possui um grande percentual na amostra. Java porém uma linguagem de programação muito vista em todo o curso.
responses %>%
group_by(ling_prog_ctx_backend) %>%
count() %>%
ggplot(aes(y = reorder(ling_prog_ctx_backend, n), x = n)) +
geom_bar(stat='identity') +
labs(
title = "Preferência dos respondentes em relação a\nlinguagem de programação no contexto de back-end",
x = "Quantidade de respondentes",
y = ""
) +
scale_x_continuous(breaks = seq(from = 0, to = 20, by = 2))
Temos que nossa hipotese A melhor linguagem de programação para front-end é Javascript é correta, em nosso curso as unicas disciplinas que abordam bem front-end são Projeto de Software e Desenvolvimento Web, em que Javascript é adotado em ambas para essa função.
responses %>%
group_by(ling_prog_ctx_frontend) %>%
count() %>%
ggplot(aes(y = reorder(ling_prog_ctx_frontend, n), x = n)) +
geom_bar(stat='identity') +
labs(
title = "Preferência dos respondentes em relação a\nlinguagem de programação no contexto de front-end",
x = "Quantidade de respondentes",
y = ""
) +
scale_x_continuous(breaks = seq(from = 0, to = 24, by = 2))
Nossa hipótese de É melhor utilizar banco de dados não relacional está incorreta, na disciplina de Banco de dados vista no curso estamos muito modelo relacional, além de outras disciplinas como Projeto de Sofware fazerem uso.
responses %>%
group_by(tipo_bd) %>%
count() %>%
ggplot(aes(y = reorder(tipo_bd, n), x = n)) +
geom_bar(stat='identity') +
labs(
title = "Utilização dos respondentes em relação a banco\n de dados relacional ou não relacional",
x = "Quantidade de respondentes",
y = ""
) +
scale_x_continuous(breaks = seq(from = 0, to = 30, by = 2))
Nosso curso de Ciência da computação (UFCG) é muito voltado para as linguagens de programação Java e Javascript, que definem bem o mundo do back-end e front-end respectivamente. Muitas disciplinas adotam Java na sua metodologia, diferentemente de Javascript que é muito pouco vista mais ainda sim possui uma boa representatividade no curso definida pela amostra aleatória de 40 alunos participantes da survey. Um ponto crítico é que essa amostra de 40 alunos não espelham a população total dos alunos, notamos por exemplo que não houve muita participação dos gêneros além do “masculino” e “feminino”.