Sou um estudante da Universidade do Sul da Flórida que está frustrado com o ambiente educacional no programa de Ciência da Computação. No momento, estou usando o "Design do programa". Eu deveria estar aprendendo a organizar meu código-fonte em funções e módulos para tornar meus programas legíveis e mantidos; em vez disso, estou aprendendo sobre matrizes e recursão em C. No próximo semestre, preciso fazer o "Design Orientado a Objetos", que é ensinado por C ++ ( shudder ).
Há dois anos, me apaixonei por programação e tenho aprendido o máximo que pude desde então. A perspectiva de fazer outra aula de C ++ me deixa quase às lágrimas. Por esse motivo, pensei em iniciar um clube de programação para conhecer alunos igualmente ambiciosos, aprender novos idiomas, discutir tópicos de desenvolvimento de software e trabalhar com outros desenvolvedores de estudantes.
No entanto, estou começando a perceber que talvez não haja outros estudantes que compartilhem minha experiência em desenvolvimento de software. Não é por falta de motivação, mas por falta de oportunidade: conheço apenas uma outra aula de programação ("Linguagens de Programação") e nenhuma aula sobre desenvolvimento de software no mundo real. Todo mundo só tem experiência em escrever scripts triviais em C e C ++.
Percebi que, se eu quiser trabalhar com outros desenvolvedores de software para estudantes, precisarei treiná-los. Agora, estou planejando tornar o clube um campo de treinamento em desenvolvimento de software, ensinando aos membros como desenvolver software com ferramentas e linguagens modernas. Obviamente, iniciar um curso não oficial de desenvolvimento de software é uma tarefa monumental com muitas abordagens possíveis. Minha pergunta para você, caro leitor, é
Qual é o meu plano de ataque?
Eu devo
- dar uma palestra no clube, tentando equilibrar o trabalho do clube com a lição de casa?
- pedir ao corpo docente do CS que ensine sobre tópicos de sua especialidade que podem ser menos relevantes para os membros?
- tenta encontrar um desenvolvedor experiente e simpático dentro ou fora da escola que possa compartilhar minha carga de trabalho?
- mostrar palestras em vídeo (do MIT OpenCourseWare , Google Tech Talks , etc)?
- realizar workshops práticos de programação?
- atribuir lição de casa?
- fazer outra coisa?
fonte
Respostas:
Francamente, toda a sua atitude me preocupa. Você nem reuniu o grupo e já supõe que será apenas aquele que tem algum conhecimento a transmitir e quem deve decidir o que o grupo fará.
A melhor aposta é reunir o grupo inicial e, como um grupo, debater o que eles querem fazer. O que você pessoalmente quer fazer é irrelevante em termos do que o grupo quer fazer. Decidindo o que fazer sem a participação dos outros membros do grupo antes da primeira reunião, você se parecerá com um idiota arrogante com o qual eu não gostaria de trabalhar voluntariamente. Assim, você mataria o grupo antes de começar.
fonte
Como todos no seu clube estão vindo voluntariamente, você precisa torná-lo interessante e motivador. E a lição de casa não é exatamente motivadora.
Ensinar alguém é difícil, mas por que não tentar ensinar de uma maneira diferente com um objetivo no final? Essencialmente, a princípio, você reúne todos e cria um projeto de grupo e um idioma. O projeto precisa ser interessante e ser capaz de mostrar progresso visível, mas não muito difícil. Depois de definir o idioma, você ensina o básico (sintaxe, pacotes / espaços para nome, classes, digitação estática / dinâmica, etc.). Você fornece a eles recursos (livros, tutoriais on-line, documentação on-line), uma maneira fácil de contatá-lo e uma parte específica do projeto para trabalhar. Cada pessoa trabalha no projeto em seu tempo livre, consultando a documentação e você, conforme necessário.
Qual é a vantagem desse processo?
A única maneira de ver se funciona é experimentá-lo.
fonte
Observando o fluxograma do curso para seu curso , você realmente está entendendo mal o que esperar em diferentes classes de um curso de Ciência da Computação.
As aulas de que você está falando são aulas introdutórias que apresentaram aos alunos vários conceitos básicos de codificação. Parece que "Conceitos de Programação" é uma introdução à profissão, com uma visão geral de uma semana de todas as áreas básicas da ciência da computação, sem codificação real. A partir daí, é NORMAL fazer um curso introdutório em C, e outro curso introdutório em C ++ é NORMAL para um curso de Ciência da Computação. Você pode estar entrando no programa com alguma experiência em codificação, mas a maioria das pessoas não. O programa tem que ensinarconceitos como recursão e como escrever classes, sobrecarga de operador, modelos e tudo mais (sem mencionar o ensino sobre variáveis, for-loops, if-etc, etc.), então existem duas classes basicamente projetadas para ensiná-lo a codificar em alguma linguagem de programação. E eles geralmente têm os tipos de nomes enganosos que as aulas da sua universidade fazem. As aulas que ensinam o nível de organização que você deseja geralmente são nomeadas "Engenharia de Software" ou "Padrões de Design". O primeiro é tipicamente um requisito, e o segundo é tipicamente um eletivo (talvez no nível de pós-graduação), mas ambos podem ser eletivos.
Há um debate acadêmico e do setor sobre se o currículo de Ciência da Computação se concentra na organização de software o quanto deveria, se o principal deve ser reorganizado e se a Ciência da Computação e a Engenharia de Software são diferentes, mas por enquanto, seu programa de Ciência da Computação é NORMAL .
(E fique aí - em mais um semestre ou dois, você terá aulas mais desafiadoras que ensinam coisas que você ainda não aprendeu.)
fonte
E as competições de programação? Até algo como o Perl Golf (ou PHP Golf), onde você tem pessoas (ou equipes) trabalhando para resolver um problema usando a menor quantidade de código possível? É uma ótima maneira de aprender mais sobre idiomas e competições sempre torna as coisas interessantes.
Claro que você deve oferecer mais do que apenas competições, mas elas são muito fáceis de montar e eu sempre gostei delas.
fonte
Você está certo que precisa de alguma estrutura; você quer forçar a si e aos outros a aprender, e não ficar apenas conversando sobre software / reclamações sobre a péssima seleção de cursos. Mas não tenho certeza de que tratar isso como uma aula com você como professor é o caminho a percorrer; você ainda não é um especialista e também está nessa para aprender algo.
Que tal organizar o clube em torno de projetos de software? Não são alguns programas de lição de casa de brinquedos, mas algo que você acha que pode ser útil. (Observe que "marginalmente útil" ainda se qualifica como "útil"; você está tentando aprender fazendo, não encontrou uma startup. :-)) Se o clube tiver pessoas suficientes para várias equipes, forme várias equipes. A equipe decide qual idioma deseja usar, quais são as especificações, como o trabalho deve ser dividido etc., etc., e trabalha nele individualmente, em seu próprio tempo. Em sua reunião semanal do clube, você discute como vai ficar cara a cara, onde estão os obstáculos, as coisas legais que você aprendeu etc.
Também gosto muito da idéia de trazer palestrantes convidados, sejam eles professores, profissionais ou vídeos que você ou outra pessoa acha que vale a pena compartilhar. Portanto, você pode organizar uma reunião noturna como esta:
Isso vai levar uma noite e enchê-la de bondade que aprimora o conhecimento. Esperançosamente.
Independentemente disso, desejo-lhe sorte com este projeto. Quando você começar do zero, espero que você volte aqui e nos conte como está funcionando.
fonte
O projeto do grupo é uma ótima idéia. Especialmente se o projeto for algo que possa ajudar a universidade ou seus colegas de classe.
Entrei para um grupo na faculdade que trabalhava em projetos para estudantes.
O projeto mais popular foi um tour virtual de 360 graus no campus.
Compramos o equipamento necessário e começamos a tirar fotos pelo campus. Em seguida, construímos um site para abrigar o passeio, descobrimos a hospedagem e o destacamos no site da universidade para futuros alunos. Este projeto abrangeu mais do que apenas tarefas de programação e também interessou não-programadores.
Tente identificar um novo site ou aplicativo que não apenas você usaria, mas todos no campus gostariam de usar. Eu acho que é mais fácil e mais divertido aprender se você tem um objetivo em mente.
fonte
Se isso for uma atividade extra-curricular, não faça a lição de casa. Isso é apenas coxo.
Você provavelmente poderia ter algo bacana apenas iniciando um grupo no Github e postando / enviando e-mails em sua escola (acho que hoje em dia as crianças também usam o Facebook e o Twitter? Pode ser uma boa idéia abordar esses pontos também). Quando você reunir um grupo de 5 a 6 pessoas realmente interessadas, decida um projeto e apenas trabalhe nele.
Se não houver interesse, é ridiculamente fácil ingressar em um projeto de código aberto se você for razoavelmente qualificado. Simples como digitar algo do seu interesse no github e começar a conversar com os desenvolvedores.
A vantagem que você tem da geração anterior não é que não é difícil conectar-se a programadores no seu nível e no seu idioma, embora seja muito geograficamente desigual. E não quero dizer apenas enviar um email. O Skype / iChat / Ventrilo facilita as conferências por voz, ferramentas como git / mercurial (e as páginas de projetos associadas on-line) facilitam a codificação como um grupo, mesmo se você estiver em lados opostos do Atlântico. Atualmente, não há realmente nenhuma razão para não codificar socialmente, se é isso que você deseja fazer.
Finalmente, não crie o hábito de julgar as pessoas pelas línguas que elas conhecem / desejam conhecer. É uma armadilha fácil de cair quando você é o único Smalltalker em um grupo de pessoas que pensam que o C ++ representa o limite da programação, mas isso não atrai muitos amigos e oferece uma tendência a certas ferramentas. Eu conheci hackers que estão muito à minha frente em habilidade e experiência, que usaram LISP, Perl e C no mesmo projeto . As pessoas no topo da pilha de desenvolvedores profissionais tendem a não se importar muito com o nível de suas ferramentas, desde que façam o trabalho.
fonte
Parece uma oportunidade de networking, tenho certeza de que há um número de estudantes interessados em programar com um nível semelhante de experiência / treinamento ... você simplesmente não os encontra ...
Você participou de um dos Code Camps (treinamento gratuito relacionado a desenvolvedores) na área de Tampa Bay ou ingressou em um dos grupos de usuários de programação local?
Esses dois recursos fornecerão oportunidades de rede. E, em vez de sentir que você precisa treinar seus colegas, poderá convidar seus amigos e discutir o que foi abordado.
Você também terá acesso a pessoas que estão programando uma carreira e poderá ter uma idéia de quais tipos de situações você provavelmente encontrará no "mundo real".
Depois de explorar esses recursos locais, você ainda encontrará oportunidades para compartilhar seu conhecimento fazendo suas próprias apresentações, o que é ótimo. Compartilhar o que você aprendeu com um grupo de usuários ou como orador de uma apresentação de campo de código é uma boa maneira de obter feedback sobre o que aprendeu e abrir para aprender mais.
Eu cresci na área de Tampa Bay e participei de muitos eventos gratuitos patrocinados pela Microsoft. Seu grupo de usuários local também deve ter informações sobre como se envolver nesses eventos.
Bem, essa foi uma resposta prolongada ...
O próximo Code Camp em Tampa será em 13 de novembro de 2010, de acordo com o site tampacodecamp.
Aqui está um link para o seu grupo local de usuários INETA / programação:
http://www.tampadev.org/
(Sou novo neste grupo e só consegui incluir um link.)
fonte
Que tal encontrar um projeto de código aberto (ou mais de um) no qual seu grupo esteja interessado em contribuir?
Eu acho que o maior desafio que você provavelmente enfrentará é que, embora escrever código seja divertido, é todo o administrador circundante etc. que pode transformá-lo rapidamente em uma experiência dolorosa. Se você pode encontrar um projeto de código aberto existente, deve ter pelo menos parte da estrutura de suporte.
O código aberto o levará a bons hábitos e, embora você fique um pouco molhado atrás dos ouvidos, em comparação com alguns dos colaboradores, você terá uma grande vantagem sobre outras pessoas - todos estarão no mesmo local e poderão mantenha conversas com os membros da sua equipe, o que normalmente é uma das maiores dificuldades do trabalho comunitário de código aberto ...
fonte