As I am approaching the half-way point in my first semester of grad school, I thought I would jot down my impressions of the classes I am taking...
CS525 Advanced Database Organization
The semester long goal is to learn how to create a basic database engine in C/C++. After working in Ruby for the past couple years, going back to C++ was a kick in the head... Segmentation Faults and Bus Errors, pointer scope issues, lack of built in regular expression support... it took some time getting reacquainted. The class consists of three projects. The first project involved getting the system up and running: query processing and parsing, implementing a buffer manager using least-recently used replacement strategy, and implementing a storage manager that worked with 48-byte blocks. The second project was just announced and will add on B+ Tree indexing. Definitely a class worth taking to understand how and why databases work.
CS536 Science of Programming
This course focuses on reasoning about programs in a formally with rigid syntax and semantics. Basically, transform programs into a mathematical formula using propositional and predicate logic and correctness triples to ensure the program does what it says it will.
CS549 Cryptology and Network Security
So far, this class is a LOT of math. Number theory and modular arithmetic. We are starting to get into the history of cryptology, with mono- and poly-alphabetic ciphers, mechanical rotors, etc, the stuff I'm really interested in. Soon we will get into the details on why current methods work from message authentication to hash functions and secret sharing. Our programming project for this class is to implement either the RSA or DSA digital signature algorithm.
CS586 Software System Architecture
This class focuses on using high-level design pattern to better understand and analyze a system on a higher level of abstraction. Most of the class thus far has been on object-oriented programming and design talking about the observer pattern, state pattern, adapter pattern, etc. We have just begun talking about architectural patterns, starting off with one I am very familiar with, the MVC (Model-View-Controller) pattern.
So, that's what I'm taking this semester. I've been trying to be a better student than I was as an undergrad, going to and paying attention in all of my classes and trying not to procrastinate until the last minute. This mainly involves leaving my laptop turned off during class :-)