¿Cómo debe prepararse un estudiante de secundaria para especializarse en ciencias de la computación / ingeniería?

CLRS (visión general amplia de algoritmos) y SICP (conceptos de compsci) son los dos textos canónicos de pregrado CS. La teoría de la computación de Sipser es el texto de introducción canónico a la informática teórica, si está interesado.

Desarrollé un sentido decente para aplicar rápidamente algoritmos de las competencias de codificación de la escuela secundaria (USACO y TopCoder son buenos). No son para todos, pero si los disfrutas, la experiencia definitivamente facilitará las pruebas de algoritmos.

Una vez que comprenda los conceptos y las abstracciones, aprender nuevas tecnologías y lenguajes debería ser trivial. De todos modos, es bueno ser muy competente en unos pocos. Probablemente verá una gran cantidad de C ++ (tal vez Java) y Python en sus clases principales de laboratorio. Entrar con una comprensión sólida de un lenguaje OOP y un lenguaje de scripts te ayudará mucho.

La programación funcional es otro paradigma interesante para verificar. Si comienza a aprenderlo y se enamora instantáneamente de Haskell, puede ser un experto en matemáticas en secreto.

Habrá algunos proyectos que solo tomarán al menos X horas y no hay nada que pueda hacer al respecto, no importa cuán bueno sea (a menos que haga trampa, pero cuál es el punto). Como escribir un rastreador o un núcleo. Averigua cómo trabajas mejor. Escribe código limpio. Es útil cuando tienes mucho sueño y tienes una fecha límite en noventa minutos. Al amanecer.

Siempre que descubras un tema o problema interesante, ve a aprenderlo.

para cuando realmente llegas a la universidad

Haz muchos amigos en tu especialidad. Trabajar en colaboración. Pedir ayuda. Ayudar a otras personas. Explicar las cosas a los demás te obliga a entenderlas mejor.

algunas ideas para convertirse en un mejor codificador en general

Use StackOverflow.

Construye tu propio sitio web. Ahora hazlo más dinámico. Ahora agregue una tonelada de complementos jQuery y comience a compilar Sass y Haml. Ahora ejecútelo desde su propio servidor web. Ahora cree algo utilizando conjuntos de datos disponibles públicamente. ¡Sigue adelante! (excelentes recursos que son gratuitos hasta un límite razonable: Amazon EC2, github, Heroku).

Afronta un miniproyecto que mejore directamente tu propia vida. Automatiza todo lo que puedas. Conviértase en un motor de búsqueda personal, escriba una aplicación para registrar su ejercicio, configure un servidor y algunos servos que le permitan alimentar a su gato de forma remota, se le ocurre la idea.

Construye robots.

No tengas miedo a los circuitos.

No me preocuparía mucho por las clases o los antecedentes: incluso los mejores programas suponen que tienes poca o ninguna experiencia. Entré sin ninguno, aparte de los requisitos básicos de ingeniería: sin programación, sin cursos de CS durante la escuela secundaria. Me aseguraría de que seas sólido en inglés y matemáticas (cálculo). Poder escribir bien en el lugar de trabajo es una gran ventaja. Si tuviera que recomendar algo nuevo, aprendería un lenguaje de programación de nivel relativamente bajo (C / C ++ / C # / Java / lo que sea), estructuras de datos, lógica combinatoria y matemáticas discretas.

Personalmente, creo que una de las cosas más valiosas que puedes hacer es crear un contexto para lo que vas a aprender. Esto hará que sea más fácil para ti recordar lo que aprendes en la escuela y te ayudará a ampliar tu conocimiento en caso de que decidas hacer una investigación y estudios de posgrado. Algunos ejemplos:

  • La historia de la informática y de la tecnología electrónica en general: Babbage, ILLIAC y ENIAC, IBM en los primeros días, Microsoft, Apple, etc. Wikipedia hace esta tarea trivialmente fácil, al menos lo básico.
  • La economía de la informática. Es realmente sorprendente cuánto dinero, y los mecanismos para hacer dinero, algunas de estas compañías de las que no oyes ganar. Esta tarea tiene la ventaja de enseñarle negocios y economía, preparándolo para una startup si está interesado en eso. Por lo menos, te hará darte cuenta de que tu empresa es un barco que se hunde mucho antes que tus compañeros de trabajo.
  • Las biografías de las principales figuras de la informática. Wikipedia también es un comienzo aquí.

Finalmente, comience a pensar en lo que podría querer hacer, luego pruébelo lo antes posible para ver si realmente es algo que desea hacer. Hay personas que no se dan cuenta de que odian los trabajos de programación hasta después de la graduación. Ese es el momento equivocado para resolver eso. Afortunadamente, hay muchas otras opciones.

Creo que es extremadamente valioso, tal vez incluso esencial, pasar tiempo trabajando en sus propios proyectos en paralelo con las clases y los libros. Necesita una cierta cantidad de comprensión solo para poder elegir un proyecto que sea realmente posible, pero que llegará pronto.

Aprendí tanto por mi cuenta como en la escuela, y se complementaron muy bien. Una cosa es aprender acerca de un concepto abstracto, pero otra cosa es mirar un problema y darse cuenta, “oye, podría usar _____ para hacer esto …” y luego hacerlo realidad.

Algunas ideas aleatorias de mi pasado:

Escriba un protector de pantalla: encuentre un ejemplo repetitivo con una función de “dibujo” que pueda reescribir y juegue con él. Haz que las formas reboten alrededor de tu pantalla. Comience con puntos, luego líneas …

Piensa en algo que disfrutes, que no tiene nada que ver con las computadoras, y piensa en las matemáticas o la física de algún aspecto de él. Escriba un software que haga los cálculos para simularlo: trazar gráficos, imprimir tablas de números, tal vez escribir una calculadora que le permita ingresar algunos números y calcular un par de números más. Obtendrá información sobre la programación y sus pasatiempos de esta manera.

Encuentre la documentación para un formato de archivo de audio simple (no comprimido), como .WAV, por ejemplo. Escriba un programa que genere archivos que contengan ondas sinusoidales en varias frecuencias. Luego ondas triangulares u ondas cuadradas. Entonces prueba los acordes.

Si te encuentras haciendo algo repetitivo con una computadora, busca la manera de automatizarlo. Por lo general, hay una manera. A veces, descubrir qué herramientas existen para automatizar su tarea es el 90% de la lucha.

Configure su propia caja de Linux usando una computadora portátil decrépita o algo así. No necesitas mucho hardware para eso. Instala apache y crea un sitio web simple.

Luego escriba su propio servidor web (en Windows o Linux, o mejor aún ambos, usando diferentes idiomas en cada uno, por ejemplo, diga C # en Windows y Perl en Linux). Lea la especificación HTTP. Comience usando telnet para escribir comandos manualmente en apache. Cuando puede escribir los comandos para que un servidor ‘real’ le envíe una página web, está listo para implementar su propio servidor web; todo lo que necesita hacer es entregar archivos desde el disco. (Es más simple de lo que piensas).

Cuanto más escribes, más puedes escribir. Las cosas enumeradas anteriormente pueden sonar difíciles (o incomprensibles) al principio, pero se vuelven más fáciles con el tiempo y parecerán fáciles después de haber tenido más clases y más práctica.

More Interesting

¿Qué computadoras portátiles son buenas para comprar para un estudiante de ingeniería informática?

¿Los diseñadores de enfriadores de computadoras portátiles conocen el umbral de vibración de las computadoras portátiles?

¿Es la victoria de AlphaGo un salto fundamental para la IA, o es simplemente un testimonio de la supremacía que las computadoras tienen sobre los humanos en los juegos?

¿Es cierto que tiene que seguir estudiando después de graduarse de la carrera de Ingeniería en Computación para mantenerse al día con las nuevas tecnologías y lenguajes de programación cada año?

¿Por qué los juegos creados para consolas no pueden ejecutarse de forma nativa en PC?

¿Cuáles son las puertas lógicas digitales más inusuales o interesantes?

¿Cuál es la diferencia entre tener múltiples procesadores y un procesador multinúcleo?

¿Por dónde empiezo si quiero aprender temas de ingeniería informática durante el verano?

¿Cuál es el mejor libro que puede motivar a un principiante en el campo de la ingeniería informática y la electrónica? Quiero saber la historia de las computadoras desde el primer transistor y los cálculos.

Cómo decidir entre informática e ingeniería informática

¿Qué hago con un hacker destructivo persistente?

¿Quiénes son algunos astronautas que han tenido una especialización en ciencias de la computación o ingeniería informática?

¿Cuáles son las opciones disponibles para GATE AIR 1-500 en CS?

¿Qué tan buena es la Universidad de New Brunswick en Canadá para Ingeniería en Computación?

¿Los estudiantes de informática en promedio cobran menos que otros ingenieros?