This is a midterm summary of my academic activity. I should be doing more homework right now, but I love the sense of control that I get from expository writing.
In Logic Design, we're seeing how systems of gates become functional units. For example, why something like a programmable logic array (PLA) is important. It packages a framework within which gates are combined, and standardizes a method of associating them. In order to think about what drives something electronic, such as a clock radio display, one can think “PLA” and see a big piece of the picture. Obviously, no engineer goes to a store and buys a little AND gate. The logical units must come bundled together. I guess I’m saying that it’s satisfying to see and understand how.
In 411 we are covering transients. Inductors and capacitors are like wheels, in that they give a circuit a sort of rolling “momentum.” The Inductor is easier to visualize this way. It’s like a paddle wheel in the current. Even if the current suddenly stops, the paddle wheel keeps spinning, and for a while it will keep the current moving downstream. (The strange difference is that it spins perpendicularly to the direction of the current, not in line with it). A capacitor binds parallel branches of the stream. If several parallel streams have a capacitor among them, they are backed up in the event that their upstream source suddenly stops. The capacitor will attempt to maintain the driving force across all of the branches until it expends itself.
In M340L we’ve learned the basics of matrices. There is a conceptual leap between thinking of math as a way of manipulating individual numbers, and thinking of math as a way of grouping numbers. The class has felt a little bit dull, perhaps because we’re looking at things that simply exist rather than do. For example, a 3X3 matrix spans 3 dimensional space if it can be reduced to a diagonal row of ones, etc. etc.
In data structures, we’ve spent 6 weeks learning what all of the confusing C++ syntax is about. I think it’s ironic that the C++ language immediately exposes newcomers to its most difficult concepts, and that these concepts are intended to make the language easier to use. For example, function overloading is supposed to make it convenient for the audience (other programmers) to use symbols like “+” and “==” in ways like, “does this data == my mailing address.” This relatively modest gain (that benefits these “other programmers” not the human race at large) comes at the expense of a cumbersome syntax and many scary new punctuation marks. I've yet to find comprehensive examples that show how big O, big omega, and big theta can be applied to programs. The examples that I've seen give short incomplete explanations. There is an O'Reilly book written on this subject, Algorithms in C, which waters it down. More professional books give more thorough explanations. I recommend anything by a fellow named Skiena.