20 credit hours is the norm at my school, it's actually pretty manageable. (And if you think about it, you spend at least 20 hours a week in high school. Not as much time on homework or projects but actual butt-in-seat time seems greater.) If I only had to take 10-13 credits as is common for "full time" students at other schools, I think I'd blow my brains out from boredom. At least with 20 credit hours chances are you'll like most of the classes and the crappy/boring ones are swept under the rug. If you're only taking three classes though, and two of them are crap, I don't think the other one can make you happy no matter how good it is.
Anyway, here's a list of my classes and their descriptions according to the school catalog along with some of my own thoughts.
CS 381 - Machine Learning
This course deals with constructing computer programs that automatically improve with experience. Observed events are used to inductively construct decision trees, which can be used by computer-controlled game characters to change behaviors. Students will explore concept learning, partial ordering, reinforcement learning, conditional probability, Bayesian learning, the evaluation of hypotheses and instance-based learning. Types of neural networks examined include perceptrons, back-propagation, radial basis functions, and adaptive resonance theory. We demonstrate the effectiveness of genetic algorithms and show the power of a neuro-genetic approach. The class concludes by looking at inductive analytical learning.
Bayesian learning. 'Nuff said. (I'll be putting a post up in a few days on implementing Naive Bayes.) Well actually there's a CS 380 course I could have taken instead but that's called "Artificial Intelligence for Games" which isn't even close to actual AI and doesn't use real reasoning methods. (Not that neural networks are any good but they're still interesting, at least for what not to do these days.) I'm really optimistic about this course, I hope I'm not let down.
CS 365 - Software Engineering
This course covers a wide range of topics in software engineering from the practical standpoint. It encompasses project management issues as well as technical development principles and methods. Topics include system architecture, security, methodologies and notation, UML, object oriented analysis and design, requirements analysis, implementation, verification, validation, maintenance, and software engineering standards. Risk management and iterative design receive special emphasis. Student teams will apply acquired knowledge to a substantial project.
Practical my... if you're working for a company where this is useful, get out. Go join a startup. We're hiring! Sort of.
I'm actually a bit more optimistic about this course because the professor doing Machine Learning is also teaching this course, so I'm hopeful it's not just a bunch of "best-practices from the 90s" BS from a corporate shill whose only programming experience, while professional, is with COBOL in an enterprise environment...
They changed the professor on me, so I'd bet 75% it'd be a boring course. Anyway I'd rather take Fuzzy Logic.
ECE 300 - Embedded Microcontroller Systems
This class covers the remaining concepts needed to build the hardware and software for a hand-held gaming device. By this point, students will have studied many pieces needed in electronic systems and have worked with microprocessors. This class aims to bring together additional concepts and expand the understanding of a microprocessor or microcontroller system. Topics include Harvard architecture, microprocessor systems, analog/digital conversions, timing control, serial ports, peripheral access, and digital signal processor (DSP) applications to real-time audio processing. Students will emerge with a better understanding of system architecture and how the key components interact.
Rumor is I might be the only one taking this course... which will be interesting for sure! (Even if I'm not there are only three others who potentially will be taking it.) It's also being taught by Chris Clark, a former graduate, who is epic. There's no way they can pay him enough to teach. (And they probably don't since he doesn't have a Master's yet!) Anyway, this is pretty core to my CE degree, I'm looking forward to it.
ECE 310L - C.E. Project III: Gaming System
In this course, students will work in small teams to design, to build, to program, and to test a small gaming device. Students will integrate a microprocessor with storage, input, and display devices into a hand-held game platform. This project makes use of microprocessor and operating system concepts studied earlier. Students will also be shown effective techniques in collaborative engineering environments.
Teams may be as small as one. If the four of us can agree on a project, though, there might be more than one team member! And spring semester we get Freshman CE students as our minions to train and do grunt work for us.
The past couple projects I've witnessed have been interesting in that I think expectations are somewhat lowered depending on what we focus on. The Juniors during my Freshman year worked with the new Arm Cortex processor (I believe it's the same one used in the iPhone 4) which has a 3000+ page manual. They were designing a controller board for it with a wireless controller and installing Linux (that's where I helped out) to connect with a camera for image detection and a projector for projecting the game area on the floor or wall or wherever. (The image detection software amusingly suffered from the common problem of being racist, because it identified things as "skin" based on a white-boy color being detected...) Anyway, by the end of the year they had Linux kinda-sorta working enough to do some image detection and an openGL demo. Last year's Juniors did something with a touch device and got Linux installed, don't know how far they got though. What this has shown me is that the "gaming device" need only incidentally have a proof-of-concept "game" aspect in it.
My potential team hasn't decided on anything yet. I'd like to do something with holographs such as http://www.youtube.com/watch?v=He2QTpelAjE and http://www.youtube.com/watch?v=9af-aX-UDDM. But I'd really like to do something you can touch without losing fingers or hands, but that turns into a quantum computing problem really fast trying to get photons of certain energies where you want... Even the tech in the first two vids looks beyond my capabilities at the moment, and I'm not sure a team of 4 of us could pull off a copy. But who knows. (Random note: people like to think of light as a wave, but it's "really" a particle (really it's a mathematical object but I'll leave that for now). How is color explained from a particle perspective? "Color" is determined by the energy of a single photon, a particle of light. The brightness of that color is determined by how many photons of that energy there are. Which seems obvious if you think about it: more light particles, brighter light! An x-ray particle is more powerful than, say, green light (it can penetrate inside you after all), because a photon with the energy of an x-ray has more energy than a photon with the energy of "green light".)
Anyway, I'm rambling. Other ideas we've thrown out there have been taking apart a 3DS/Kinect and manipulating for our own purposes, or using fake-3D stuff somehow, and animal augmentation which might violate some rules of ethics somewhere.
MAT 225 - Calculus and Analytic Geometry III
This course extends the basic ideas of calculus to the context of functions of several variables and vector-valued functions. Topics include partial derivatives, tangent planes, and Lagrange multipliers. The study of curves in two- and three-space will focus on curvature, torsion, and the TNB-frame. Topics in vector analysis include multiple integrals, vector fields, Green's Theorem, the Divergence Theorem and Stokes' Theorem. Additionally, the course may cover the basics of differential equations.
Ooh, triple-integrals, scary! (I actually already took differential equations..) Not looking forward to this really, but it should be pretty easy. Most colleges only have 2 calc courses that go to this level. I got out of the first two.
MAT 399 - Combinatorics
Combinatorics is the science and art of counting. The hands-on approach in this class will make this probably one of the most fun math classes you will ever take. Most students have only been introduced to some combinations and permutations, but these only represent the tip the iceberg. Counting configurations of even relatively small size can be rather challenging and overwhelming in their complexities. In this course we will playfully discover the many techniques that allow us to deal with enumerative problems. Topics in combinatorics range from combinations, permutations, partitions, representations, distributions, configurations, codes, sets, multi-sets, cycles, recurrences, generating functions, principles of inclusion and exclusion, counting modulo symmetry, to trees and graphs. Combinatorics is not only an important tool in many areas such as e.g. computer science and statistics, but it is actually one of the most enjoyable areas of math to play in, filled with puzzles and problems that are easily stated but can be mindboggling to solve without the right tools. This class is a fun way to learn these tools!
399 is reserved as "special topic" courses that come up when requested or whatever. I'm looking forward to this math course mostly because it's taught by a great professor, but it should be interesting.
They canceled this which was a monkey wrench thrown into my perfectly timed schedule. So anyway, now I'm taking two more math courses instead. I guess I should go for a math minor or something.
MAT 300 - Curves and Surfaces
This course is an introduction to parametrized polynomial curves and surfaces with a view toward applications in computer graphics. It will discuss both the algebraic and constructive aspects of these topics. Algebraic aspects include vector spaces of functions, special polynomial and piecewise polynomial bases, polynomial interpolation, and polar forms. Constructive aspects include the de Casteljau algorithm and the de Boor algorithm. Other topics may include an introduction to parametric surfaces and multivariate splines.
So I thought this sounded interesting. I also figured out a way to do the project idea above with the volume-swept display. One version is basically just projecting a set of 3D coordinates up to the surface of a bounding sphere which is what is displayed. Each half-turn of the 'wheel' is a 'frame', and the controller has to change lights at different sections of the rotation to render the frame. I think this math would be useful for understanding that. Also splines are cool.
MAT 362 - Fuzzy Sets and Logic
This course introduces the basic theory of fuzzy sets and fuzzy logic and explores some of their applications. Topics covered include classical sets and their operations, fuzzy sets and their operations, membership functions, fuzzy relations, fuzzification/defuzzification, classical logic, multi-valued logic, fuzzy logic, fuzzy reasoning, fuzzy arithmetic, classical groups, and fuzz groups. Students will also explore a number of applications, including approximate reasoning, fuzzy control, fuzzy behavior, and interaction in computer games.
The professor listed for this is "TBA" but if it's the guy they were considering hiring last year, who gave a talk on fuzzy differential equations and the hukuhara difference (I like saying that), it'll be great. Anyway I've had a curiosity for fuzzy logic for some time now, but most introductions aren't very good. They either dive right into the graphical visualizations or start too slowly. Anyway, I'd like to interleave what I learn of fuzzy logic with what I learn in Bayesian probability theory. The main difference is that fuzzy logic signifies uncertainty in deductive "truth", whereas probability theory signifies uncertainty with events in the world which of course come inductively.
Posted on 2011-07-01 by Jach
Trackback URL: https://www.thejach.com/view/2011/7/fall_semester_classes