Domain: montana.edu
Stories and comments across the archive that link to montana.edu.
Comments · 103
-
Inner workings
I went through the computer classes that my high school offered (Pascal) as well as going through a CS program at Montana State University (started with C and Ada, OO concepts in C++, as well as assembly, and alot of theory, as well as some Java, Lisp, Perl...). After all that, here are my thoughts...
An introductory language should really give a good overview of control structures and data structures, as well as some (albeit high-level) overview of memory management and resource usage/allocation. Jumping into a full OO langage at this level is, in my opinion, a very bad idea. Java is a great language, and I use it every day at my job, but it's not a good first step. One of the things I was taught in college was to know how something (in this case yacc and lex) works, not just be able to use it. A foundation in procedural programming gives you a good starting point to learn assembly or OO, but I don't feel that OO is a good starting point to learn procedural or assembly. There's also a difference between using memory management and knowing how it works. If you don't understand how the memory is allocated, and how it is paged in and out, and the language's ordering of, say, multi-dimension arrays, you could write a program that loops through that array in an inefficient manner.
OO is a great tool in your toolbelt, but it isn't always the right tool for the job. In this case, I would say that an introductory course should give a good overview of the core of programming, which is control structures and data structures, with a high-level understanding of what's going on behind the scenes (pay no attention to the man behind the curtain). As far as higher education is concerned, the whole purpose of a degree in CS is to give you the knowledge foundation to go out and make intelligent decisions as to what you're going to write, how you're going to write it, what language you're going to use, what algorithms you're going to use, and WHY. The biggest piece is the WHY, because I have alot of friends that don't know WHY they do something, it's just the way they were taught.
Sorry if I rambled... -
The data cube.
The article referenced in this post is a bit short on information, but readers can get a more detailed view of the story from this article.
The technique involved is refered to as resonant hole burning. Rufus Cone and his optical group at MSU have been working on many applications of this technique for years, including optical storage and stabilization of diode lasers (how's 20Hz linewidth for stabilization of a diode laser?) highly accurate clocks, metrology and so forth. Cone has a link to a nice power-point presentaion on his web page.
Cone and his group have been using crystalline materials, while this Japanese group is using glass. The advantage of glass is that the storage medium can be tailored to a specific shape. This abstract, published by the Active Glass Project, indicates other interesting research, including the up-conversion of photons using glass.
-
Re:A less horrible introductory language..
I'm trying Python out right now trying to teach my 11 year old nephew programming. (Meanwhile, yes, at work, I struggle with C++ and hope to get it to "do what I mean" in a few months...sigh)
The nice thing about Python is that it's so easy and intuitive that I can teach it as I learn it, not being a proficient Python programmer by any stretch of the imagination, but having plenty of background in C.
There are two things I'd like to see, though:
- a nice fat stack of simple-minded viewgraphs that even an 11 year old can understand (the usual intro's are slanted towards folks with programming experience in another language, like C.) So far, the closest I found was Josh Cogliati's page
- a nice easy way to get some graphics done so I would not be limited to text applications. An earlier poster mentioned this as well - that
excitement(Basic, Atari, 1980) > excitement(Python,Windoze, 2K)
Like many kids, the games he plays on his computer these days are so flashy, boomy and interactive that his first attempts with a programming language can not hope to compete with "Joystick controlled maneuvering of a skateboarder with sound effects and moving, pseudo 3D scenery."
Any suggestions for addressing either of these 2 issues would be most appreciated.