Soy un estudiante de la Universidad del Sur de Florida que está frustrado con el entorno educativo en el programa de Ciencias de la Computación. En este momento, estoy tomando "Diseño del programa". Debería aprender a organizar mi código fuente en funciones y módulos para que mis programas sean legibles y mantenibles; en cambio, estoy aprendiendo sobre las matrices y la recursividad en C. El próximo semestre, tengo que tomar "Diseño orientado a objetos", que se enseña a través de C ++ ( estremecimiento ).
Hace dos años, me enamoré de la programación, y he estado aprendiendo todo lo que pude desde entonces. La posibilidad de tomar otra clase de C ++ me aburre casi hasta las lágrimas. Por esa razón, pensé en comenzar un club de programación para conocer a estudiantes igualmente ambiciosos, aprender nuevos idiomas, discutir temas de desarrollo de software y trabajar con desarrolladores de otros estudiantes.
Sin embargo, estoy empezando a darme cuenta de que puede que no haya otros estudiantes que compartan mi experiencia de desarrollo de software. No se debe a la falta de motivación sino a la falta de oportunidades: solo conozco otra clase de programación ("Lenguajes de programación") y ninguna clase de desarrollo de software en el mundo real. Todos los demás solo tienen experiencia escribiendo scripts triviales en C y C ++.
Me he dado cuenta de que si quiero trabajar con otros desarrolladores de software para estudiantes, tendré que entrenarlos yo mismo. Ahora, estoy planeando hacer del club un campamento de desarrollo de software, que les enseñe a los miembros cómo desarrollar software con herramientas e idiomas modernos. Obviamente, comenzar un curso de desarrollo de software no oficial es una tarea monumental con muchos enfoques posibles. Mi pregunta para usted, querido lector, es
¿Cuál es mi plan de ataque?
Debería
- dar una conferencia al club yo mismo, tratando de equilibrar el trabajo del club con la tarea?
- ¿Solicitar a la facultad de CS que enseñe sobre temas dentro de su experiencia que pueden ser menos relevantes para los miembros?
- ¿Intento encontrar un desarrollador comprensivo y experimentado dentro o fuera de la escuela que pueda compartir mi carga de trabajo?
- mostrar video conferencias (de MIT OpenCourseWare , Google Tech Talks , etc.)?
- realizar talleres prácticos de programación?
- asignar tarea?
- ¿hacer algo más?
fuente
Respuestas:
Francamente, toda tu actitud me concierne. Ni siquiera has reunido al grupo y ya asumes que solo serás uno que tenga algún conocimiento para impartir y el que debería decidir qué hará el grupo.
La mejor opción es reunir al grupo inicial y, como grupo, hacer una lluvia de ideas sobre lo que quieren hacer. Lo que usted personalmente quiere hacer es irrelevante en términos de lo que el grupo quiere hacer. Decidiendo qué hacer sin el aporte de los otros miembros del grupo antes de la primera reunión, te encontrarás como un idiota arrogante con el que no me gustaría trabajar voluntariamente. Por lo tanto, matarías al grupo antes de que comenzara.
fuente
Como todos en tu club vienen voluntariamente, debes hacerlo interesante y motivador. Y la tarea no es exactamente motivadora.
Enseñar a alguien es difícil, pero ¿por qué no tratar de enseñar de una manera no manual con una meta al final? Esencialmente, al principio uno reúne a todos y elabora un proyecto grupal y un lenguaje. El proyecto debe ser interesante y poder mostrar un progreso visible pero no demasiado difícil. Una vez que tenga el idioma definido, les enseñará los conceptos básicos (sintaxis, paquetes / espacios de nombres, clases, escritura estática / dinámica, etc.). Luego les das recursos (libros, tutoriales en línea, documentación en línea), una manera fácil de contactarte y una parte específica del proyecto para trabajar. Luego, cada persona trabaja en el proyecto en su tiempo libre, consultando la documentación y a usted según sea necesario.
¿Cuál es la ventaja de este proceso?
La única forma de ver si funciona es probarlo.
fuente
Mirando el diagrama de flujo del curso para su especialidad , realmente está malentendido qué esperar en las diferentes clases de una especialización en Ciencias de la Computación.
Las clases de las que está hablando son clases introductorias que introdujeron a los estudiantes a varios conceptos básicos de codificación. Parece "Conceptos de programación" una introducción a la profesión con una visión general de 1 semana de todas las áreas básicas de la informática, sin codificación real. A partir de ahí, es NORMAL tener un curso introductorio en C, y otro curso introductorio en C ++ es NORMAL para una especialización en Informática. Es posible que ingrese al programa con algo de experiencia en codificación, pero la mayoría de las personas no. El programa tiene que enseñarconceptos como la recursividad, y cómo escribir clases, y sobrecarga de operadores, y plantillas y todo eso (sin mencionar la enseñanza sobre variables, bucles for, sentencias if, etc.), por lo que hay dos clases diseñadas básicamente para enseñarle a codificar en algún lenguaje de programación. Y generalmente tienen el tipo de nombres engañosos que tienen las clases de su universidad. Las clases que enseñan el nivel de organización que desea generalmente se denominan "Ingeniería de software" o "Patrones de diseño". El primero es típicamente un requisito, y el segundo es típicamente un curso electivo (tal vez a nivel de posgrado), pero ambos pueden ser optativos.
Existe un debate académico e industrial sobre si el plan de estudios de Ciencias de la Computación se enfoca en la organización del software tanto como debería, si la especialización debe reorganizarse y si la Ciencia de la Computación y la Ingeniería del Software son especializaciones diferentes, pero por ahora, su programa de Ciencias de la Computación es NORMAL .
(Y espere, en otro semestre o dos, llegará a clases más desafiantes que le enseñarán cosas que aún no ha enseñado).
fuente
¿Qué pasa con la programación de concursos? ¿Incluso algo como Perl Golf (o PHP Golf), donde tienes personas (o equipos) trabajando para resolver un problema usando la menor cantidad de código posible? Es una excelente manera de aprender más sobre idiomas y las competencias siempre hacen que las cosas sean interesantes.
Por supuesto, deberías ofrecer algo más que competencias, pero son bastante fáciles de organizar y siempre las he disfrutado.
fuente
Tienes razón en que necesitas algo de estructura; quieres forzarte a ti mismo y a los demás a aprender, y no solo sentarte a charlar sobre software / quejarse sobre la pésima selección de cursos. Pero no estoy seguro de que tratar esto como una clase contigo como su maestro sea el camino a seguir; aún no eres un experto, y también estás en esto para aprender algo.
¿Qué tal organizar el club en torno a proyectos de software? No algunos programas de tareas de juguete, sino algo que crees que realmente puedes encontrar útil. (Tenga en cuenta que "marginalmente útil" todavía califica como "útil"; está tratando de aprender haciendo, no encontró una startup. :-)) Si el club tiene suficientes personas para múltiples equipos, forme múltiples equipos. El equipo decide qué idioma quiere usar, cuáles son las especificaciones, cómo se debe dividir la mano de obra, etc., etc., y trabaja en forma individual en su propio tiempo. Luego, en su reunión semanal del club, discute cómo va cara a cara, dónde están los obstáculos, cosas interesantes que ha aprendido, etc.
También me gusta mucho la idea de traer profesores invitados, ya sean profesores, profesionales o videos que tú u otra persona piensan que vale la pena compartir. Entonces, podría organizar una reunión nocturna como esta:
Eso tomará una tarde y estará lleno de bondad para mejorar el conocimiento. Ojalá.
De todos modos, les deseo suerte con este proyecto. Cuando lo despegues, espero que vuelvas aquí y nos cuentes cómo está funcionando.
fuente
El proyecto grupal es una gran idea. Especialmente si el proyecto es algo que puede ayudar a la universidad, o sus compañeros de clase.
Me uní a un grupo en la universidad que trabajaba en proyectos para estudiantes.
El proyecto más popular fue un recorrido virtual de 360 grados por el campus.
Compramos el equipo necesario y comenzamos a tomar fotos alrededor del campus. Luego construimos un sitio web para albergar la gira, descubrimos el alojamiento y lo incluimos en el sitio web de la universidad para futuros estudiantes. Este proyecto abarcó más que solo tareas de programación, y también hizo que los no programadores se interesaran.
Intente identificar un nuevo sitio web o aplicación que no solo usaría, sino que a todos en el campus les gustaría usar. Creo que es más fácil y divertido aprender si tienes un objetivo en mente.
fuente
Si esto va a ser una actividad extracurricular, no hagas la tarea. Eso es simplemente cojo.
Probablemente podría obtener algo interesante simplemente iniciando un grupo github y publicando / enviando correos electrónicos en su escuela (¿supongo que los niños en estos días también usan Facebook y Twitter? Podría ser una buena idea también alcanzar esos puntos). Cuando consiga un grupo de 5-6 personas que estén realmente interesadas juntas, decida un proyecto y simplemente trabaje en él.
Si no hay interés, es ridículamente fácil unirse a un proyecto de código abierto si está razonablemente capacitado. Simple como bifurcar algo que le interesa en github y comenzar a hablar con los desarrolladores.
La ventaja que tiene que la generación anterior no tenía es que no es nada difícil conectarse con los programadores a su nivel y en su idioma, mientras que es muy geográficamente dispar. Y no me refiero solo a enviar un correo electrónico. Skype / iChat / Ventrilo facilitan las conferencias de voz, las herramientas como git / mercurial (y las páginas de proyectos asociadas en línea) facilitan la codificación como grupo, incluso si estás en lados opuestos del Atlántico. Realmente no hay razón para no codificar socialmente en estos días, si eso es lo que quieres hacer.
Finalmente, no tenga el hábito de juzgar a las personas por los idiomas que saben / quieren saber. Es una trampa fácil caer cuando eres el único Smalltalker en una manada de personas que piensan que C ++ representa el límite de la programación, pero no te dará muchos amigos y te dará un sesgo en contra de ciertas herramientas. Conocí hackers que están muy por delante de mí en habilidades y experiencia, que han usado LISP, Perl y C en el mismo proyecto . A las personas que están en la cima del grupo de desarrolladores profesionales no les importa mucho el nivel de sus herramientas, siempre y cuando hagan el trabajo.
fuente
Esto suena como una oportunidad para establecer contactos, estoy seguro de que hay varios estudiantes interesados en programar con un nivel similar de experiencia / capacitación ... simplemente no los encuentras ...
¿Has asistido a uno de los Campamentos de Código (capacitación gratuita para desarrolladores) en el área de Tampa Bay, o te has unido a uno de los grupos de usuarios de programación local?
Ambos recursos le proporcionarán oportunidades para establecer contactos. Y en lugar de sentir que tiene que capacitar a sus compañeros, podrá invitar a sus amigos junto con usted y luego discutir lo que se cubrió.
También obtendrá acceso a personas que están programando como una carrera y pueden tener una idea de qué tipo de situaciones es probable que surjan en "el mundo real".
Una vez que haya explorado estos recursos locales, aún puede encontrar oportunidades para compartir su conocimiento haciendo sus propias presentaciones, lo cual es genial. Compartir lo que ha aprendido con un grupo de usuarios o como orador de una presentación de campamento de código es una buena manera de obtener comentarios sobre lo que ha aprendido y también lo abre a aprender más.
Crecí en el área de Tampa Bay y asistí a muchos eventos gratuitos patrocinados por Microsoft, su grupo de usuarios local también debería tener información sobre cómo participar en esos eventos.
Bueno, esta fue una respuesta larga y sin aliento ...
El próximo Code Camp en Tampa es el 13 de noviembre de 2010 según el sitio web tampacodecamp.
Aquí hay un enlace a su grupo local de usuarios de INETA / programación:
http://www.tampadev.org/
(Soy nuevo en este grupo y solo pude incluir un enlace).
fuente
¿Qué tal encontrar un proyecto de código abierto (o más de uno) en el que su grupo esté interesado en contribuir?
Creo que el mayor desafío que probablemente enfrentarás es que si bien escribir código es divertido, es todo el administrador que lo rodea, etc., lo que puede convertirlo rápidamente en una experiencia dolorosa. Si puede encontrar un proyecto de código abierto existente, al menos debería tener parte del marco de soporte.
El código abierto lo llevará a algunos buenos hábitos, y aunque estará un poco mojado detrás de las orejas en comparación con algunos de los contribuyentes, tendrá una gran ventaja sobre otras personas: todos estarán en el mismo lugar y podrán mantenga conversaciones con los miembros de su equipo, que normalmente es uno de los mayores problemas con el trabajo comunitario de código abierto ...
fuente