como ensinar engenharia de software sem que seus alunos durmam
TRANSCRIPT
Como Ensinar Engenharia de Software sem
que seus alunos durmam
1© 2013-2016 Armando Fox, David Patterson, modified by Fabio Kon
Fabio Kon Departamento de Ciência da Computação
IME-USP
http://twitter.com/FabioKon
Nossa experiência
• 16 turmas anuais de– Laboratório de Programação Extrema– Laboratório Avançado de Métodos Ágeis– Tópicos Avançados de Programação Orientada a Objetos
2
What is missing from our student’s dev skills?
Result from industrial research:
1. Legacy code2. Working with non-technical
customers3. Testing
3
What Makes a Great Software Engineer?P. Li, A. Ko, J. Zhu, Microsoft & U. of Washington, Proc. ICSE 2015
59 interviews with recognized SE experts at Microsoft
4
Always improvingPassionateTechnically open-mindedData-driven
Helps others understand by tailoring explanations to themCreates shared success possibly via personal compromisesCreates “safe haven” where others can learn from mistakesGives honest feedback
Knows people & organizationUpdates mental models when learn new skills/facts/contextConsider situation at multiple levels when making judgmentsCan reason about complex & intertwining ideas
Elegant solutionsCreative thinking when faced with limitations of current solutionsAnticipates technical needs based on prior experience
Personal Characteristics
Team Skills Technical Skills
Decision Making
Our Approach in 2 slides
5
Talk to customer
Lo-fi UI mockup
User stories & scenarios
Behavior-driven Design / user stories
RSpec
Test-first dev. (unit/funct.)
Measure Velocity
Deploy
Legacy Code
Design patterns
Principais problemas
• Professores nascidos em 1960->1990– Alunos nascidos após 1995– Gap conectivo nunca visto antes
• Geração Web– Leitura de hipertexto e não de texto linear
• Geração Mobile– Leitura de trechos desconexos de 140 chars,
memes• Noção de que a vida é fácil e não precisa se
dedicar/ralar/se esforçar 7
Principais soluções• Minimizar aulas expositivas• Diminuir leituras lineares (embora nem tanto)
– Lembrar de nosso papel educativo!• Problemas reais• Clientes reais• Exercícios semanais / Feedback imediato• Aprendizado em pares/grupos/social• Material para estudo assíncrono• Classe invertida
– teoria em casa, trabalhos na sala de aula8
Course Organization• Grading—approximate breakdown
– 15% homeworks– 20% in-lecture microquizzes (some build on HWs)– 30% three in-lecture ~40-minute quizzes– 35% project– Tiebreakers: Participation and Altruism
• A typical week– Monday aft/Tues morning: read stuff before lecture– Tues: 3:30-5:00 lecture – Weds 1pm: HW and/or project milestone due– Weds aft/Thurs morn: Section, read before lecture– Thurs 3:30-5:00 lecture with TA 9
Lecture Format: 5-10 minute elements
YPSIRLPLLCDRTN/MGTBYOBACHMµQ / Q
Your peers speakIn Real LifePeer LearningLive Coding DemoRead This Now/Mastergeek TheaterBring Your Own BugArmando’s Computer History MinuteMicro-quiz (5 min) or Quiz (40 min)
10
Frequent Quizzing:You’re Welcome
• Repeated cramming helps you on tomorrow’s quiz, but
• repeated quizzing helps long-term retentionhttp://www.samefacts.com/2014/07/learning/48279/
• Corollary: do readings/review right before lecture if possible!
11
Sleep is important
• New neuroscience results:– Sleeping at night is a way to store information in
long-term memory
• But students think that not-sleeping or sleeping very late is cool !
• We need to show them that this is not the case
13
RTN: Multitasking
bit.ly/cs169-multitasking
“Multitasking Damages Your Brain
And Career, New Studies Suggest”
14
The Myth of Multitasking• https://youtu.be/PriSFBu5CLs• Clifford Nass, Stanford• Allowing yourself to respond to distraction
(incoming email, IM, etc.) triggers small dopamine release
• Over time, you get addicted to it• Result: Multitaskers waste far more
brainpower than monotaskers when actually distracted
• Long-term effects can be hard to reverse 15
Peer Instruction Questions
• Increase real-time learning in lecture, test understanding of concepts vs. detailsmazur-www.harvard.edu/education/pi.phtml
• As complete a “segment” ask multiple choice question– <1 minute: decide yourself, vote– <2 minutes: discuss in pairs,
then team vote; flash card to pick answer• Try to convince partner; learn by teaching
• Mark and save flash cards1 2 3 4
Deixar que os próprios alunos escolham os seus projetos
Adotar Ruby on Rails como plataforma básica
Trabalhar em projetos reais, com clientes reais e testar o aprendizado em pequenos passos.
Ensinar vários frameworks produtivos☐
☐
☐
☐
18
O que devemos fazer para os alunos não dormirem
Textbook, SPOC, etc.
19
• http://br.saasbook.info
• eBook Kindle US$ 7• Impresso R$ 130.00
• Descontos para professores
• Cupom R$ 200 Locaweb
Online Resources
http://www.saasbook.info/students
• Online "get started" tutorials on ruby in case want to get feet wet before Ruby lectures
• Pointers to online HTML/CSS tutorials in in case want to get feet wet before Rails material
• Tutorials on other tools (GitHub, etc.)
http://www.saasbook.info/instructors
20
Para professores
• Livro e método usado na USP há 4 semestres e a experiência tem sido ótima, tanto para alunos quanto para professores.
• Quer adotar o livro?– Entre em contato com [email protected]– Podemos ajudar com material didático e dicas
21