self-evaluation: CSF

At TESC students write self-evaluations of their progress/work at the end of quarters. Here is my self-eval from June of 2009 for Computer Science Foundations, Evergreen's "CS 101"-type class.

I have had programming classes prior to taking this class, so I already had a modicum of experience with computer science coming into CSF. Even with this prior knowledge, I have learned a delightful amount of new concepts and skills in these two quarters. I think what is especially exciting is that this is merely an introductory class, meaning there is still so much more I can learn about this field. This was hardly an easy class; it demanded a significant investment of time and thought. I think, however, the fact that it was such a difficult class makes it all the more rewarding now that I have successfully completed it.

The class was quite well-balanced between theory and practice. The discrete math component was definitely the most theoretical. Although my success at some future programming job may not depend upon how well I can write a proof, the discrete math section was very useful in helping me to understand how computer science actually is just that: a science and not just another way of saying "computer programming". In the seminar section, we studied how computing technology interacted with the real world, both on the design-side by studying open source vs. closed source environments; and on the user-side, by considering how software affects society as a whole. I think it is quite helpful to be reminded that we actually do affect the rest of the world, that we are not cloistered in some ivory tower. The hardware component was probably the most challenging for me. I think it is useful to know how real-world computers function at low, unabstracted levels; but, I must admit that working at such low levels can sometimes be tedious. The Java component provided the most practical skills, in terms of what I assume my tasks at a future programming job would be. In this section, we began at such basic levels as loop structures, but very quickly progressed to more advanced topics, e.g. the various data structures and OOP paradigms. 

One particularly interesting project I worked on this quarter was an airport simulator written in Java. In fact, I ended up doing much more than was required. It began when early in the quarter my professors made off-hand references to it. I found it appealing in part because I have a somewhat nerdy obsession with transportation, whether it be planes, city buses or trains. Maybe a week later they gave some preliminary assignments, but I decided I'd start the entire project *right then*. So, I checked out some books, regarding civil engineering, from the library while doing Internet research on how airports are set up and run. I wanted this "simulation" to be a fairly accurate model of reality. Though some people may have regarded reading a bunch of engineering texts as a bore and a hassle, I thought it was a great opportunity to gain some domain knowledge. I sometimes wish there was a concept of a "liberal science major," like liberal arts major, except that you studied to be a generalist in science and engineering instead of the humanities--I love studying computation and making software, but there are so many other fields in science and technology I have studied little, and where I naturally want to sweep away my ignorance. 

No comments: