CS 344 de la Universidad Estatal de Oregón: Sistemas operativos I
Este curso fue notorio por ser el punto donde las especialidades en Ciencias de la Computación declararon una especialidad diferente, retomaron una clase por primera vez o aprobaron. Y de acuerdo con los profesores del departamento que asistieron a diferentes universidades, este no fue un fenómeno exclusivo del estado de Oregon.
El primer curso en una serie típica de dos cursos, Sistemas operativos 1 tiene como objetivo educar a los estudiantes sobre varios principios de programación: llamadas al sistema, utilidades del sistema, hilos y comunicación entre procesos. Es posible que me falten uno o dos elementos clave (las sugerencias son bienvenidas), pero lo que acabo de enumerar es esencialmente el punto principal del curso.
No fue el curso conceptualmente más difícil que tomé; Introducción al análisis real, un curso de matemáticas de nivel junior para estudiantes de matemáticas, fue mucho, mucho más complejo. Pero fue el más desafiante por una variedad de razones. Tal vez pueda arrojar algo de información para cuando usted u otros se enfrentan a este curso. ¡Presta atención a mis errores para que no tengas que retomar la clase como lo hice yo! :]
- ¿La graduación es suficiente para descifrar el grado B de RBI?
- ¿Cómo solicitaría un inmigrante rumano una universidad de Sixth Form en Inglaterra?
- ¿Dónde residía Voldemort durante el quinto y sexto año de educación de Harry?
- ¿Cuáles son algunos consejos para volver a la rutina escolar después de un descanso?
- Cómo completar CCNA dentro de dos semanas y obtener la certificación
El lenguaje C : el curso fue (y típicamente es, según tengo entendido) completamente en C. C ++ fue lo que aprendí en mis cursos introductorios de ciencias de la computación, por lo que era con lo que estaba más familiarizado. Algunos de nuestros laboratorios en estos cursos de primer año nos familiarizaron con la programación integrada, por lo que tuvimos que aprender algo de C en el lateral. C y C ++ están lo suficientemente cerca como para que puedas salir bien, pero no subestimes sus diferencias. Parecerá trivial o sin importancia como un estudiante de primer año y segundo año, pero luego aprenderá que las diferencias son importantes . Ahora, C de ninguna manera es una parte significativa de la dificultad del curso, pero hace una diferencia notable si aún no conoce el idioma. Además, si eres como uno de los estudiantes que se transfirieron de otra universidad, es posible que te hayan enseñado Python o Java, lo que hará que sea aún más difícil no solo aprender los temas del curso, sino también estudiar todo nuevo lenguaje al mismo tiempo. Estoy bastante seguro de que todas las universidades con un programa de CS (informática) decente requieren al menos un curso en Sistemas Operativos, lo que significa que es muy probable que estés utilizando Linux; en consecuencia, se volverá MUY amigable con el lenguaje de programación C. Entonces, ¿ por qué las universidades enseñarían varios cursos introductorios de CS en algo que no sea C ++ o C cuando C va a ser claramente un lenguaje muy utilizado en un curso difícil más adelante en el plan de estudios? Bueno, eso está más allá de mí. Nuevamente, aprender un nuevo idioma no es un gran problema: era el entorno en el que tenía que aprender C; ese entorno es el curso riguroso y lento en sistemas operativos.
Dicho esto, tengo algunos consejos simples:
Aquí estoy yo y mi edición internacional abusada del clásico, El lenguaje de programación C de Brian Kernighan y Dennis Ritchie (científico informático estadounidense) (el libro se conoce más informalmente como K&R C. Consulte el libro así a un profesor o programador y inmediatamente te mostrarán un poco más de respeto). Entiendo lo que es ser un estudiante universitario en quiebra, pero la edición internacional es barata y fácil de encontrar. AL MENOS, pida prestada una copia o “encuentre” una versión digital y, si no le gusta, no la compre. Pero si lo hace, y lo hará, cómprelo. Es ligero, conciso, no detallado, pero lo suficientemente detallado como para que aprenda rápidamente lo que necesita saber. Confía en mí, consigue esto.
Utilizando el libro de texto del curso Y el profesor: Probablemente aquí es donde la mayoría de los estudiantes, como yo, fallaron. A diferencia de la carga de trabajo, que trataré más adelante, este tema en particular es muy crítico. Clasifico a los estudiantes como sobresalientes en una forma de aprendizaje u otra:
Lecture Learner : Esto significa que eres bastante experto en el aprendizaje auditivo. No solo puede tomar buenas notas de un profesor de conferencias, sino que también puede concentrarse en lo que está diciendo mientras toma dichas notas. Debido a las calificaciones satisfactorias, ha fortalecido en su cabeza que nunca ha usado los libros de texto antes, entonces, ¿por qué comenzar ahora? Las conferencias del profesor, las horas de oficina, sus notas y su ingenio solo lo han salvado antes y lo salvará nuevamente. (La mitad de ustedes probablemente sonríe lobunamente porque saben exactamente a qué me refiero)
Aprendiz de libro : ya sea por pereza o por aburrimiento, no asiste a conferencias. O no puedes levantarte lo suficientemente temprano como para llegar a clase o tu aburrimiento surge de no poder concentrarte en alguien dando una conferencia durante 50-120 minutos seguidos. Pero has llegado tan lejos en la universidad, y generalmente es porque tienes una capacidad bastante buena para leer libros de texto y utilizar Internet. Tus libros de texto o Stack Overflow siempre han contenido la información necesaria para que completes tu tarea y luego te vaya bien en los exámenes. Oye, puedes jugar a Angry Birds o dormir mientras estás en clase (o incluso no ir), y obtienes la calificación, así que ¿por qué cambiar las cosas ahora?
Aprenda a ser tanto aprendiz de clase como aprendiz de libro : el libro de texto para muchos cursos sobre sistemas operativos es el siguiente:
[Tomé prestada esta imagen de aquí]
Hubiera agregado una foto de mi propia copia de este libro y mi hermosa cara, pero en realidad no tengo esta a la mano en este momento, lamento decepcionarla. Ahora, aquí está la situación única con esta clase donde tanto los estudiantes de lectura como los estudiantes de libros se encuentran en problemas.
Los estudiantes de lectura no pueden leer el libro, o lo leen lo suficiente. El problema es que una GRAN porción de código que normalmente llevaría horas, si no días, para completar las asignaciones en realidad están en este libro. Los estudiantes de la conferencia también han aprendido cómo, si es necesario, hojear un texto de manera eficiente y encontrar lo que necesitan. El problema es que ESTE libro generalmente te hace unir las piezas del rompecabezas, por lo que realmente no puedes saltarte. El libro está bien escrito, pero la fuente es pequeña y hay MUCHO material. Para el momento en que los estudiantes de la Conferencia hayan descubierto esto, ya se han hundido demasiado para recuperarse; la amplitud de conocimiento es demasiado para ponerse al día, incluso si solo hay 2 semanas en el curso.
Los estudiantes de libros se preguntan por qué sienten que el código tarda tanto en escribirse. Han leído el libro, ¿qué se están perdiendo? Bueno, el libro está escrito de tal manera que asume que el lector no está tomando otras 3 clases y también hace malabares con la vida. Es MUCHA información a la vez, y está destinado a leerse lentamente mientras se realizan muchos ejercicios pequeños. Los profesores, entendiendo este hecho, en realidad resumen los capítulos de información en solo unas pocas conferencias y luego proporcionan un código fundamental durante la conferencia. Entonces, si no se presenta a clase o zona, por cualquier razón, va a escribir a mano el código que le tomó al profesor una hora, lo que probablemente le tomará 8 horas o más. No, copiar el código de las diapositivas de la conferencia NO será suficiente. El código para este curso es muy circunstancial y exige que sepas cómo aplicarlo a un nivel de detalle muy fino, por lo que generalmente debes prestar mucha atención a las palabras del profesor para aplicar el código correctamente.
Por lo tanto, si no sabe cómo combinar de manera efectiva las notas de clase y los consejos del profesor con el código fuente y los detalles de cómo funcionan las cosas del libro de texto , se encontrará en un montón de problemas. O apilar. Sin embargo usted quiere mirarlo.
Gestión del tiempo : de los estudiantes que obtuvieron una A en este curso, se reveló que, en promedio, pasaron al menos 20 horas a la semana en sus tareas. Puede pensar que también pasa 20 horas a la semana en tareas, pero estoy hablando 20 horas a la semana para UNA clase. Y esa es en realidad la advertencia que los profesores dan a los estudiantes durante el primer día de este curso (temido día del programa de estudios …) Aconsejan que si un estudiante está tomando otras clases técnicas (no electivas livianas), eviten este curso y tomen otro término. . Esa es una advertencia estándar del primer día para este curso.
Entonces, comience los proyectos para este curso de inmediato . No estoy bromeando. Si tienes tiempo libre entre clases, lee tu libro de texto. Si se desconecta en otras clases, comience a dibujar ideas de diseño para su proyecto para esta clase. Cuando llegues a casa y quieras comer primero, come mientras piensas para qué son exactamente los requisitos de la tarea y, uno por uno, cómo vas a resolverlos.
No eres tan bueno como crees que eres: no es que pases horas golpeándote la cabeza contra la pared porque estás atascado en tratar de descubrir cómo funcionan los punteros; es porque te golpeas la cabeza contra la pared tratando de descubrir por qué tu programa no funciona. Y termina sin funcionar porque no sabes cómo funcionan los punteros tan bien como crees que lo hiciste.
Ese es típicamente el caso con este curso. Más simplemente, su programa no se compila o no actúa adecuadamente porque hay algún principio fundamental de programación que realmente no comprende, pero no es consciente de ese hecho. No se trata de las nuevas llamadas al sistema de las que estás aprendiendo. Es porque en realidad eres un programador relativamente nuevo y tus prácticas de codificación son deficientes, y al escribir código para sistemas operativos, serás puesto a prueba.
Dicho esto, vaya al horario de oficina cuando su código no se compila. Vaya a un Asistente de enseñanza, amigo, Quora o Desbordamiento de pila. NO hagas lo que la mayoría de las personas con mentalidad de ingeniería hacemos, que es quemarte hasta el suelo pasando horas tratando de descubrir cómo romper un muro de ladrillos que has golpeado. Si te quedas quieto después de 30 minutos, ¡está bien! Como un buen programador, haga lo que sea más eficiente y busque la ayuda de alguien que sepa más que usted . Lo sé, es una píldora difícil de tragar, ¡pero cuanto antes lo aprendas, más fácil será en tu vida! :] Tengo una cabeza gruesa, así que me tomó mucho más tiempo aprender eso que la mayoría 😛
Declaración final : tuve una situación interesante que solo amplificó la dificultad de este curso. Mi profesor era un imbécil de la vieja escuela de Hewlett Packard (HP) que, en lugar de confiar en sus TA para asignar tareas, escribiría manualmente miles de líneas de scripts BASH para probar su código.
Lo has leído correctamente, jajaja. Donde normalmente tendrías la pena de un TA para ganar algunos puntos extra, o algunas veces obtendrías un TA que quisiera que aprendieras de los errores para que te pregunten por qué crees que tu código falló aquí o allá; Si te explicaras bien, normalmente ganarías algunos puntos. La mayoría de las veces, los TA no tienen más de 10-15 minutos por alumno para calificar, por lo que se saltan muchas cosas y te ahorras puntos. Pero oh no, no con este chico. Pasó horas de su tiempo libre escribiendo guiones que ejecutarían su código como lo haría un TA, pero lo haría sin problemas asegurándose de que NADA se pasara por alto. Fue MUY fácil perder puntos y además desanimarse.
Pero de todos modos, espero que alguien pueda aprender de algunos de mis propios errores y así evitarlos cuando tomen el curso. ¡Buena suerte!
Nota: me encantó este curso. No hacerlo me hizo aprender mucho sobre mí mismo; como estudiante, como programador y como ser humano. Aprendí mucho sobre informática e incluso sobre mí mismo, y eso solo es otra publicación o A2A por completo. No sé si realmente “reprobé” el curso, por mucho que lo dejé caer durante la octava semana porque simplemente no podía seguir el ritmo. De todos modos, no pude completarlo la primera vez, pero estoy de acuerdo con eso:]