Professor: Lance Williams
Date Taken: Fall '99
Web Link: http://www.cs.unm.edu/~williams/cs257f00.html
Catalog Link: CS 257L -
Nonimperative Programming
This is a really fun class. Don't get me wrong, it's not easy, but it is fun. This class will teach you alot about recursion and Abstract Data Types. As a student who is just about to graduate, I can safely tell you that this is a very important class; don't take it lightly. The concepts you learn here will be applicable for the rest of your academic career.
If you don't have a clue about recursion, don't worry, this is where you will get the knowledge you need to make sense of it. I highly encourage you to take the time to think deeply about what recursion is and what its ramifications are. You will need that knowledge in future classes, primarily in CS351, CS361, CS461, but it is essential that you grasp these concepts in order to succeed in all future CS classes. I believed after completion of this class that there should be a second semester devoted to the functional paradigm, and I continue to hold this belief.
Keep in mind that this is a relatively low-level CS class, and is far easier than what you will be exposed to in the upper-level classes. The projects are relatively simple, and can generally be completed within just a few days to perhaps a week. Most of the projects we were given were interesting, and fun. Below you will find a synopsis of the projects we worked on, and some helpful hints.
One thing I did find particularly annoying was the creation of cartoon characters using plumbing graphics, it was a repetitive and mechanical process which requires little thought, but lots of time. If you have to do this project, I encourage you to keep it simple.
Projects:
The Abstract Data Type series was quite interesting, and will be of use in the future
when you need to abstract away the specifics of a problem in order to implement generic
operations. The following links give some pseudo-code that you may find helpful in
developing these ADT's.
ADT Integers
ADT Natural Numbers
ADT Rational Numbers
There are several projects in this course which require creation of graphic images.
Personally, I found the static images both boring and simplistic (the cartoons),
and they will not be presented here. However, the fractal graphics were very
interesting and my number one suggestion for students working on these projects is to
fully understand what the base form is, and to really think about the recursive nature of
fractal forms. I provide some incomplete code along with pictures of what you're
final image should look like in the following links. In addition, I highly encourage
students to read either/both Chaos (James Gleick), Fractal Geometry of Nature (Benoit
Mandelbrot).
Sirpinky
Arrow-Head
Peano-Gausper curve