computer science - science - Si pudieras tomar un curso de informática ahora, ¿cuál sería?
computer science salary (30)
¡Cualquier clase de algoritmo de la edad moderna que utiliza lenguajes actualizados para enseñarle no solo los algoritmos sino también los idiomas!
Si tuviera la oportunidad de tomar un curso de informática ahora y, como resultado, aumentar significativamente su conocimiento en un área temática, ¿cuál sería? Nivel de pregrado o postgrado
¿Compiladores? ¿Algoritmos distribuidos? Teoría de concurrencia? Sistemas operativos avanzados?
Déjame saber por qué.
(Tenga en cuenta que aprecio que este no sea un escenario descabellado, pero el tiempo y la inercia podrían estar impidiendo que la gente tome el curso o lea el libro o lo que sea)
Algoritmos (de nuevo). Lamentablemente, no creo haber recogido tanto como debería haberlo hecho la primera vez. Mi segunda opción sería compiladores.
Compiladores
Así como aprender un idioma extranjero te obliga a considerar tu lengua materna más de cerca que nunca antes, creo que escribir compiladores te daría una gran idea de todo el código que escribes normalmente.
Diseño de interfaz de usuario, en un abrir y cerrar de ojos.
Aprendí mucho sobre cómo programar bien en la universidad, pero ni una sola vez se mencionó la experiencia del usuario. Después de haber estado en la fuerza laboral por más de una década, veo esa omisión como un criminal sin escrúpulos.
Me encantaría tomar un curso de programación de gráficos hardcore (como en John Carmack hardcore). Algo que cubre todo, desde el nivel de hardware hasta los algoritmos de rasterización y representación, y el acabado de la manipulación de datos en 3 dimensiones y las técnicas de almacenamiento de datos. El que se me ofreció cuando estaba en la universidad fue bastante mediocre.
Me interesaría tomar un curso de aprendizaje automático. Trabajo en estadística, y hay mucha superposición con el aprendizaje automático. Me encantaría ver una perspectiva diferente para resolver algunos de los mismos problemas.
Mis dos primeros (sistema operativo y compiladores) ya están tomados. Mi próxima elección sería un buen curso sobre diseño de bases de datos. Las bases de datos son una gran parte de cualquier proyecto web. Comprender cómo funcionan internamente hará que sea mucho más fácil trabajar con ellos más adelante.
O las redes de computadoras o la construcción del compilador: ambas eran optativas en mi escuela, y nunca tuve la oportunidad de hacerlo debido a conflictos en el cronograma.
(Técnicamente, varias de mis clases enseñaron varios elementos de la construcción del compilador - análisis, administración de tablas de símbolos, registros de activación - pero eran más acerca de la teoría de máquina / lenguaje que acerca de cómo construir un compilador).
Ojalá hubiera tomado un papel que enseñara un poco de Asamblea. Todos los documentos que hice estaban en idiomas de nivel superior.
También me gustaría llegar a las bases de datos mucho antes, solo comencé a tomar esos documentos en el segundo año. Así que nunca pude tomar los documentos avanzados sobre Hibernate, JDBC, etc.
Privacidad y anonimato (de hecho, acabo de auditar este, por lo que realmente no encaja exactamente en la pregunta). Una vez que descubra cuán fácilmente puede identificarse de manera única en la web con cantidades mínimas de información, será mucho más cuidadoso con la información que distribuye (como usuario) y con la información que recopila / muestra (como desarrollador). )
Programación genética?
Redes neuronales
AI en la práctica
Una introducción al lenguaje natural o procesamiento semántico.
Cualquiera de esos ... diablos, me encantaría hacer cualquiera de esos si tuviera tiempo.
Sin embargo, si amplió el alcance para cubrir cualquier curso, tendría que ir con un curso de contabilidad. Eso sería útil en todo tipo de formas.
Redes. (No redes sociales ... aunque podría ser una clase divertida para tomar de todos modos).
Regulación de tecnología de información
Cosas como SOX, PCI, HIPAA y otros requisitos legales de varias jurisdicciones, así como también las leyes de privacidad que pueden aplicarse al trabajar en el campo de TI. La piratería también puede estar cubierta en cierta medida aquí, ya que es una especie de cruce entre un curso de derecho y tecnología de la información que no necesariamente es informática para algunos.
Sistemas operativos. Saber cómo esa caja que está desarrollando en las garrapatas en un nivel inferior le ayuda a comprender todos los conceptos de nivel más alto más adelante, especialmente cuando algo sale mal.
También compiladores porque requieren eficiencia en tantas áreas, análisis sintáctico, coincidencia de patrones, análisis semántico, generación de código, etc.
aclamaciones
Todavía no he terminado mi tesis de maestría, por lo que todavía podría tomar cualquier curso de CS que me guste. Pero creo que puedo aprender las mismas cosas más fácilmente leyendo libros y haciendo algunos ejercicios, sin ir a los cursos (y obtener estrés de los ejercicios y exámenes). Otra opción sería simplemente escuchar las conferencias, pero sin participar oficialmente en el curso (al menos aquí en la Universidad de Helsinki las conferencias son públicas para que cualquiera las escuche).
Aquí están las cosas que me gustaría aprender a continuación: programación funcional, sistemas distribuidos. Los compiladores también serían un tema interesante, pero no necesito ese conocimiento en este momento.
Mi universidad tendría cursos sobre todos esos, pero ahora prefiero aprenderlos por mi cuenta. Descargaré el material del curso y los ejercicios del cálculo lambda y los cursos de Haskell, y leeré un libro o dos sobre sistemas distribuidos y algoritmos.
Tomaría un curso que cubre material que sé que tendré problemas para aprender por mi cuenta. Estoy completamente fascinado con la computación cuántica, por ejemplo, y me gustaría saber más al respecto, incluso si no me ayuda profesionalmente.
Este es un curso que puedo recomendar (es un curso de aprendizaje remoto).
Aprende sobre lógica, recursividad, árboles binarios / BST, tablas de verdad, eficiencia, definiciones formales de funciones. No necesita ningún fondo en matemáticas más allá del nivel escolar. Los temas básicos sobre manipulación de bits, conteo en binario, etc., están cubiertos en los módulos del año 1.
Aunque no utilizas Haskell, que he escuchado muchas Universidades, es un lenguaje funcional interpretado por Java.
"Licencias de software y leyes de copyright relacionadas" serán un éxito en los próximos años
Clase de algoritmos, sin dudas.
"Si quieres ser un programador de primer nivel, puedes programar todos los días durante diez años, o puedes programar todos los días durante dos años y tomar una clase de algoritmos". - Prof. Erik Demaine (MIT)
Aprender algoritmos de complejidad algorítmica, clasificación, fusión y búsqueda es extremadamente importante.
Aquí hay un enlace al video del que proviene la cita, los videos de la clase de algoritmos OpenCourseware de MIT.
Estoy sorprendido de que no veo a nadie buscando la teoría de la computación. Es el tema más friki que aprendí en la universidad. Seguramente alguien aquí comparte el mismo apetito conmigo. :-)
CS -> 1. Teoría de la computación, 2. Modelado computacional, 3. Lenguaje de programación
Me da una perspectiva mucho más abstracta sobre la resolución de problemas en general. Mi experiencia me dice que cuanto más abstracto voy, mejor solución puedo crear para un problema. :-)
El modelado es tan poderoso que la mayoría de la resolución de problemas se basa. Con él, resolvemos los problemas generalmente en una forma de bajo nivel. Por lo general, no es la mejor solución.
Es la interfaz de la computadora con un programador. Y estoy interesado en hacer que la programación sea más fácil para todos. Entonces, si la interfaz se puede mejorar, todos se beneficiarán.
Geometría Computacional. Me salgo con lo que recojo de los libros, pero me gustaría haber tenido un profundo entendimiento cuando tuve la oportunidad.
Programación Paralela. Realmente no creo que deba ser solo una programación funcional. Estoy tan interesado en asimilar el tema con idiomas no funcionales.
Programación extrema. Problemas de la programación de competiciones. Para codificar mucho Para codificar rápido. Para codificar eficientemente Uso del control de versiones incluido :)
Seguridad o criptografía
Sistemas operativos. Cualquier persona con conocimientos de sistemas operativos tiene una gran ventaja cuando se trata de unir los componentes / servicios en un sistema de software, planificar el rendimiento y diagnosticar / resolver los cuellos de botella del rendimiento.
Tipografía. Seguido por el diseño de la interfaz de usuario.
Creo que estas son las áreas en las que mis habilidades necesitan la mayor mejoría.
programación paralela / distribuida ya que las CPUs no van a ir mucho más rápido pronto; y multi-cores e Internet van a estar disponibles por un tiempo. un curso de pregrado ya que no tengo conocimiento previo.
Estructuras de datos y algoritmos: este curso te enseña cómo construir un código más eficiente y también te enseña enfoques comunes sobre cómo resolver problemas complejos. No soy el mejor en eso, pero creo que la forma en que este tipo de curso te enseña a pensar en problemas complejos puede ayudarte en muchos otros campos.