College Curriculum Changes

I was looking something up on the UCSD CSE website tonight for a form I was filling out…well, one thing led to another, and I ended up poking around on the CSE website and checking out what’s new in the department these days.

The less exciting things included such news as one of the professors I had in college had died, which wasn’t particularly surprising because he looked like he should have been long retired when I took his class…oh well, I guess the next generation of students won’t have him refusing to answer questions about whether or not they need a blue book for their midterm.

The tritonlink website (formerly studentlink) has been upgraded a bit. Now on the online course listings, they have a link that you can read the cape reviews for the last several years for a given class just by clicking a link next to the course title. No more having to buy CAPE books for a dollar off a pallet on library walk (or well, technically usually they were on the other side of price center by the ATMS…but whatever) that only included the most recent year. Of course, the online cape results don’t include the written descriptions of the most common written feedback, but they do show you the breakdown statistically of the professor’s rating in a bunch of specific areas. Professor Burkhard still gets amazingly low 43% ratings for his classes. Somehow I successfully managed to never take any of his classes, but one of my friends used to TA for him. But what’s interesting to note on his CAPE reviews is although his “overall” rating as a professor consistently scores low, in the individual categories they were asked to rate, almost everyone rated him with a neutral or positive rating. And 40% of the class was expecting an A, which was much higher than the percent expecting an A from better rated professors. And of course, there’s the impressive 9 or 17 students who turned in a cape form for a 90 person class…apparently a lot of people still never go to class.

But the bigger more impressive change was the curriculum changes. I’m kind of jealous because they pretty much got rid of every class that I hated and that seemed completely useless and replaced them with classes that fill some particular gaps the program previously had and just are genuinely interesting and useful material.

They demolished compilers B, and now compilers A is just compilers. They demolished ECE 53B, the brutal electrical engineering class where they threaten that you have to learn so much stuff so quickly because those “poor” computer engineering students will get dumped into ECE 101 and need to catch up on this stuff. They eliminated physics lab requirement, and replaced it with a programming lab. They removed the additional science course “elective” which I never really understood the point of in the first place. So what did they replace all those requirements with? A “tools and techniques” lab class where they learn how to debug; C++ for Java programmers, a much needed course on teaching the *language* of C++…it appears the way they got around the previous reasons they couldn’t have such a class by making it a 2 unit course; a “perspectives” seminar where you get indoctrination in and orientation to research opportunities, industry careers, and graduate study programs; and a course on “software engineering”, where they teach design/implement/test, IDEs, version control, test harnesses, etc…all that stuff that was among the stuff you learn in the first sixth months of being “in the real world” of a software engineering job. They also have a number of changes to the technical electives offerings, most of which are no surprise, they’re things that were offered as 199’s when I was in school, and some class on learning to read and write technical english that exists only on paper in the catalog as an approved class but isn’t offered.

But all in all, all those changes are really practical from a preparing you for a career in computer science. And they took out/condensed some of the things that have historically been the most brutal parts of the program that I personally didn’t find beneficial in preparing me for a computer science career. Like that “math/science elective”…and particularly ECE. The problem with the ECE program previously was it was just really intense trying to cram 3-6 quarters worth of electrical engineering material into 2 quarters for the computer engineering folks. Now, instead, computer science people only take one quarter of electrical engineering, and the computer engineering students take three quarters of lower division electrical engineering…in the same sequence as the electrical engineering majors take, slowed down enough that it would better prepare you for the upper division electrical engineering courses.

I mean, the thing is, if you’re really just interested in software programming, you really don’t need a strong background in analog circuits. And if you were really interested in doing embedded circuits and stuff, you’d be doing computer engineering or electrical engineering, not computer science.

And one other interesting side effect of all the curriculum changes is aside from having a shift in and toward the lower division requirements, suddenly physics becomes suggested as a course for sophomore year (which I think is more appropriate in terms of student preparedness/success in the class), instead of freshman year, because freshman year, you’re taking more hands on programming/computer science theory classes (and good for actually getting a good feel for the major early on), and it moves up the suggested time for cse 100 from fall of junior year to winter of sophomore year which really gives you a lot more freedom and flexibility in terms of planning for and taking the upper division electives you’re interested in…which also helps with the graduating on time thing.

But I’m still kind of jealous that if I were a freshman at UCSD now, I wouldn’t have had to take physics 2cl, ece 53b (and for that matter most of the material in 53a), bild 10, and cse 131b. Granted, I enjoyed compilers B, because I had Ord for it so it was like CSE 30 rehash + compilers A rehash + a bunch of homework, but reducing compilers from 2 to 1 quarter I think is quite good for students in terms of what other courses they have the opportunity to take as a result.

Blog Readers

Speaking of Blog Readers…

I switched from Google Reader to NewsGator/FeedDemon as my primary means of following all my non-LJ blogs and RSS feeds that I follow. I’m actually quite happy with FeedDemon the more I play with it, as it has a few features that I find rather helpful that make it one-up google reader

1) you can right click on a feed name to mark the feed as “read”. Now that doesn’t sound all that impressive, but it was one of my biggest gripes about google reader, that it was inefficient to “mark all as read” for a specific feed because you had to load the feed summary before you could mark them as read.

2) it supports synchronization with NewsGator’s web reader, and not simply synchronization, but selective sync, so when I log in from work it’ll show me updates from TechCrunch but not from Comics Curmudgeon, but when I get home, any Comics Curmudgeon updates will be waiting for me.

3) Using a native OS based reader software is significantly faster and more responsive than a web-based interface, particularly when you’re clicking over to the blog entry page itself to read comments without subscribing to comments.

4) Offline mode. You can download all the unread feeds with images to catch up on when you’re somewhere that doesn’t have net access. For the most part, this is something I rarely use, but when I need it, its extremely helpful to havel. How handy would it have been in Uganda to have been able to download blog posts as easily as email to read later when I’m not paying for net access by the minute? Or handy it might have been to download blog posts to read on those busy traveling days where you do a lot of hurry up and wait, such as sitting at the airport, or the other week when I was hanging out at the church patio for an hour between when Costco closed and service started. Yes, this has potential to be a useful perk.

Do any of you read blogs and feeds? How do you keep up on them? Do you use a blog reader? Do you check each page where there might be updates individually? Rely on email notifications of new content?

Poptray Subject Fix Proposal

The following is a post I made to the Poptray user/developer forum message board on August 20, 2008. I am archiving a copy of my message on my blog as well for historical purposes.

I have taken a look at the source code for PopTray and the RFC spec on email headers, and I believe the subject encoding problem is one that could easily be resolved without waiting for Indy components to do character set conversion. (I don’t actually have a Delphi compiler set up to write and test a patch, but here’s an outline of the proposal for a solution I’ve come up with so far:

In uMain.pas, there is a procedure ShowMailMessage(…). In particular, on line 1295, there is a line:
SubItems.Add(Accounts[num-1].Mail[i].Subject);
I believe at this point you need to “translate” the subject. The subject is interpreted by the Indy components as Ansi, which is correct based on the email header RFC. However, there’s some stuff that was added as an after-thought for how to accomodate international subjects in headers that only ascii is allowed in. So we can “undo” or fix the subject line at this point.
Maybe that line becomes:
SubItems.Add(FixEncoding(Accounts[num-1].Mail[i].Subject));
and you add a new procedure FixEncoding(subject:string) : string
that will “fix” the subject encoding into something more human readable.

According to the RFC, the format for specifying a non-ansi subject is:
“=?” charset “?” encoding “?” encoded-text “?=”
This should be simple enough format to tokenize using standard string tokenizing libraries. if the string does not follow this pattern, return the string as is. Otherwise, we have to process it and fix its encoding.

Encoding is either “Q” for Quoted-Printable or “B” for Base64. Those are the only two options, so not too complicated there, other than locating or creating a library function to decode those two encodings. Base64 allows for longer subjects with foriegn characters, but its not human readable, whereas quoted printable only changes spaces and non-ascii characters using escape codes. I haven’t researched this yet, but I would imagine a library or example code for how to decode Base64 and Quoted-Printable back to “normal text” is not difficult to find.

Charset slightly more complicated, in that there’s a larger list of choices that are possible. I don’t know how good Delphi’s built in support for doing charset conversion is, I’ve only done them in C++ and Java. In C++ everything had to be converted to Unicode instead of UTF-8 and displayed as “wide strings” which is a little weird at first, but doable, though it required a few format strings with %S conversions to change from ansi-unicode and vice versa. In Java its as simple as passing the string and a string with its encoding to a special library function and it auto-magically swaps the encoding. But if its particularly complicated, even just adding support for the most common one, UTF-8, would very much benefit users of pop-tray. UTF-8 to Unicode is a relatively simple conversion even if you have to code it manully. Getting the list component to display wide strings rather than ansi strings may be automatic, or might require a minor change somewhere, not sure.

I hope that is helpful! I’d be happy to discuss implementing this feature farther or do some more research if one of these steps turns out to be a hang-up…its a feature I’d very much like to see!

Mystery Solved

So that thing with my computer waking up?

Shortly before I started having the problem, on Wednesday, my new TV-tuner USB device arrived. On my lunch hour I was hooking it up and trying to get it configured. Windows Media Center is really difficult to configure despite the great lengths they went to in order to try to make it “user friendly” and nagivatable with a TV remote control.

To change the input source from coax (cable) in to RCA jack input, something I might want to do frequently, you have to re-run the entire “configure your tv tuner” setup including programming the remote and checking for updates online.

There’s also this setting about “automatically updating programming guide” which has the undocumented feature of waking the computer up from hibernate to do so at a non-configurable scheduled time, and not putting the computer back to sleep after. Aha. So now Windows Media Center is set to only download manually…and it didn’t wake up on me this morning.

Mysteries

The last two days in a row, my computer has come out of hibernate and woken itself up sometime between when I fell asleep and when I woke up in the morning. I woke up to computer fan humming and the computer sitting at the login screen in screen saver. No idea what the cause is.

Geek LoL of the Day

“Building log4cpp with MSVC++ 5 is not supported and will not be, unless someone can find a way to do so without mutilating the source code.”

My new favorite SVN command: blame

Aside from having an interesting name, it’s actually pretty useful… tells you who last edited (or created) each line of code (and when) in the file. So if you’re wondering where this [holds my mouth] code came from, there’s an easy way to tell.