Sie sind auf Seite 1von 4

Jeremiah Blanchard

Operating Systems Knowledge Area (CS2013) – Q&A


i. What concepts, skills, or experiences in this class were the most valuable?

ii. What concepts, skills, or experiences in this class were the most challenging or wish they had been
taught better?

iii. How do they expect to/ have they use(d) the knowledge gain from this class in their careers or
subsequent courses?

iv. How do you think systems coursework can be made more relevant to you personally?

Student 1

i. What concepts, skills, or experiences in this class were the most valuable?

- becoming familiar, and subsequently extremely comfortable, working in the command line. the inner
workings of a file system, memory management, threading vs. processes

ii. What concepts, skills, or experiences in this class were the most challenging or wish they had been
taught better?

- semaphores, deadlock, honestly can’t remember

iii. How do they expect to/ have they use(d) the knowledge gain from this class in their careers or
subsequent courses?

- I took it for the hell of it/for the sake of knowledge, though I have found increasing use for the practical
skills learned along the way while working on the assignments.

iv. How do you think systems coursework can be made more relevant to you personally?

- more discussion on leveraging the operating system to help with software being built instead of OS in
the context of OS, so things like making use of kernel threads for rendering images or ways to leverage
the memory management system for data analysis…

Student 2

i. Conceptually, I felt the material covering processes and threads were the most interesting and
valuable. The projects were an excellent supplement to the material we covered in class. Additionally,
although this was not new to me, I really enjoyed having to work to learn more about the projects. Being
able to learn something on your own is a fundamental part of Computer Science in my opinion, so it is
disappointing to find students so keen on squeezing answers out of the Tas this semester. Although I
haven’t used it much personally, I think the locking material is important too. This is something that
must play a huge part in the finance side of Comp Sci. I’m sure students will appreciate the material at
some point in their careers.

ii. The most challenging part of this class was probably learning Linux and being proficient in searching
for relevant material online. Project 1 was the most difficult experience I had while taking the course
because there was so much information to learn in roughly 3 weeks that I wasn’t exactly sure where to
start and if I was doing anything correctly. After spending many, many hours researching to build
confidence and not being afraid to fail (break the kernel), I eventually learned what was right and wrong.
The mounting exercise was also the most challenge exercise because I had felt we didn’t cover much in
terms of implementation. Although, this class is more about conceptual material, so I didn’t think it was
something that was taught poorly.

iii. I’ve used the experiences I gained from this class already while working at FedEx. Learning Linux
was really important because I was the only intern capable of working with our Linux Sandbox and our
server (though I didn’t do much on the server end of things being an intern). We also used a little locking
logic with our application we developed, but not to the extent that we’ve covered with Semaphores, etc.
Like I mentioned earlier, I think the locking information will come into play more often in the finance
and banking world where you need accounts to be locked or make sure deposits or withdrawals only
modify the account 1 at a time. The networking knowledge we’ve covered was also helpful with regard
to TCP and UDP in Networking Fundamentals (currently taking this course). With how many classes I
have left, the likelihood that I have a systems related course is rather low (or so I think, I haven’t laid out
my last few semesters coursework exactly).

iv. I think a really good idea would be to place maybe more emphasis on patches and make it into a
project, or at least a harder exercise. At FedEx, if anything broke at the L1, L2, or L3 environment, the
teams working in the development environment would create a patch to fix the logic and send it to the
appropriate team. Plus, with almost every software update being applied from patch files, I think could
appreciate that material. Maybe having an exercise where the kernel is broken and their job is to make a
patch that fixes it or something could be enjoyable. Based off the friends I made at FedEx, it seems like a
lot of the stuff we covered is useful as a systems programmer, so I don’t think there needs to be any
changes to make it more relevant to me personally.

Student 3

i. One of the most valuable concepts in this class for me was overall knowledge about Linux. Working
with the Linux kernel and command line helped me immensely with understanding the various concepts
in OS. After working with them so closely, I felt a lot more comfortable with the material. The projects
were definitely the best experience in the class. I felt like I actually was able to apply conceptual material
in class to a real application, which was a great way to help me understand both.

ii. One thing in this class that I always felt was somewhat of a drag was the process scheduling and page
replacement algorithms. They are important to know, however, just reading and memorizing them
makes the topic fairly boring. I feel like maybe an exercise or making students implement one of them in
a project would make learning them more interesting. One of the most difficult concepts in the course is
probably mutual exclusive and process synchronization. Understanding all of the different methods and
requirements was pretty challenging for this section, and I remember it being pretty difficult overall.
Next to this, I think file systems was probably the most challenging concept in the course. File systems
are just a daunting topic with a lot of material. I feel like maybe a little more time could be spent on it.

iii. While studying OS, I feel that I have gained an overall better understanding of computers and how
they work. Since we touch a lot of topics, I feel like this overall knowledge will be useful in the future
and it other courses. For example, we went over networking which is now helping me in my networking
course. OS gave me a nice overview, which I am now going to more in depth. Also, learning the Linux
command line and getting comfortable with it has been extremely useful in my job as a software
development intern. I have been required to use it at work, and the skills I learned working with it in OS
made that much easier.

iv. I think the OS coursework is doing a good job at being relevant to students (and me). Professor
Blanchard does a great job of mentioning real life applications of the topics we cover, which helps
connect it to me. To make it more relevant, maybe just have a few more prepared examples of how
these topics are applied in practice. For example, with memory management, I think it is really cool to
see how developers had to manage their own memory developing games on the Gameboy, and why this
is such a great feature that operating systems provide. Also, the Android GUI projects I think are really
cool. Although the setup for students can be a pain, it is awesome to see something you wrote actually
run on a device. I think having students use the renegade board will make this even cooler, since we can
actually see an application running on a separate physical device. This can be compared to something
like a phone, which is a great way to connect concepts to real life application in my opinion.

Student 4

i. Learning how the operating system manages the resources of a computer, and the approaches that
have been taken to solve the problems that arise within this task. Also, learning concepts that are
applicable in real-world scenarios, such as synchronization between threads, and handling shared

ii. I think the class/professor does a good job covering the main concepts of an operating system,
especially given that this is an introduction to OS. Maybe some practical exercises could be added to the
course (now that there will be a board) where students can use in and code certain things, such as
setting up interrupts, having to actually use semaphores, mutexes or condition variables in code.

Exercise suggestions: Write a program to play ping pong with threads, where one thread prints "ping",
and the other thread prints "pong", and synchronize the threads so that they always print it in that

iii. I have used the knowledge gained in this class for several other classes, when building multi-threaded
applications, and handling limited resources in embedded firmware development. The concepts taught
here have also been useful in interview questions for engineering positions.

iv. There could be some assignments that are more involved, where making changes requires more than
adding a couple of things to the kernel or user-space applications, but implementing a small portion of a
utility within the OS, such as memory allocation, or memory management. Making the writing of a driver
for a device within the OS should be required, in my opinion, as this is an important skill that many
employers seek.

Student 5

i. The concept that was the most valuable was how processes functioned in the Operating System, since
it helped tie a lot of concepts together for me. Also this class taught me how to read documentation
which was extremely valuable.

ii. Understanding and the ability to use threads was something I wish was taught a bit better and I wish
the exercise for threads was a bit more practical, since I thought it was a challenging topic to grasp.

iii. This class provides a good introduction to the networking course, and helps tie concepts about
networking together with the Operating Systems of different hosts.

iv. I don’t have anything for this question.