Fall 2023 wrapup

2023-12-18

My first semester at UMich is over, so here's my review.

Course review

EECS 370

Rating: 4.5 / 5

Theme: computer organization and (micro)architecture

Instructor (Mark Brehob)

Pros:

  • Tons of experience, both industrial and academic
  • Knows everything
  • Is furry-inclusive

Cons:

  • Talks too fast

Things I learned

  • How assembly is written
  • How assembly is executed
  • Assembler & linker
  • Processors
    • Single-cycle
    • Multi-cycle
    • Pipeline
  • Cache
  • Virtual memory

I had a headstart with the single-cycle processor thanks to nand2tetris but the pipeline really blew up my head. It explains why modern computers are so fast while not running into timing errors all the time.

Cache and virtual memory, however, are just book-keeping, and make up for the most boring exam questions. Virtual memory (in the scope of 370) involves a lot of handwaving. Like, I know what page tables look like. But who's managing it? Is the TLB part of the ISA? If I wanted to write a kernel how much work is on my side? So many questions that hopefully will be resolved in 482 (operating systems).

Projects

All projects are written in C.

  • p1
    • p1a: assembler (LC2K → binary)
    • p1s: simulator (simulates binary)
    • p1m: multiplication (write a program that calculates 6203×1429 in assembly)
  • p2
    • p2a: assembler (LC2K → object file)
    • p2l: linker (object files → binary)
  • p3: pipeline simulator
  • p4: cache simulator

Some argue p2l is the hardest part, but that isn't the case for me. I find p3 the most difficult in that (a) there's a lot of data shuffled around in the pipeline and (b) it's the only project I went to an office hour for.

Favorite moments

  • When Mark came in wearing a pointy hat he said was for "ease of identification in office hours"
  • When four people showed up in their fursuits on Halloween and Mark was like "hey cool can I take a photo afterwards"

EECS 281

Rating: 3.5 / 5

Theme: data structures and algorithms

Instructor (Marcus Darden)

Pros:

  • Pretty good at explaining things
  • Has a "lecture" playlist that he plays before lecture
  • You have to see how long his hair is

Cons:

  • Sometimes slow

Things I learned

  • How to use C++ STL efficiently
  • Big O notation
  • Common data structures and how they manage memory
    • Vectors & deques
    • Binary heaps
    • Hash tables
    • Graphs
  • Algorithms
    • Sorts
    • Backtracking & branch-and-bound
    • Dynamic programming

VG151 (intro to computer programming) made me hate C++, because what the fuck is polymorphism anyway. EECS 280 made me not hate it, and 281 made me kind of like it (for the job it is designed for). In the four projects I hardly ever inherited a class, or managed memory with new and delete.

My favorite topics are hash tables and dynamic programming. Imagine this: you've been forced to do your work on those pathetic flip-out-of-the-armrest desks, and suddenly someone gives you a huge table. This is what it feels to be given O(n²) space when all you've got so far is O(n), or worse, O(1).

Fun fact: Before I took this course, I did not believe hash tables worked like this. Like, seriously, why are you leaving more than half the buckets empty??

Projects

  • p1: puzzle solver with DFS (stack) and BFS (queue)
  • p2: priority queue
    • p2a: shooting zombies (with std::priority_queue)
    • p2b: implementing your own priority queue
  • p3: bank simulator (std::unordered_map)
  • p4: graphs
    • part a: maximum spanning tree with Prim's algorithm
    • part b: fast TSP (traveling salesman problem) at O(n²)
    • part c: optimal TSP at O(n!)

Note: p4b does not require a certain algorithm and is the only open-ended "optimization", graded on how close your result is to the instructors'. The instructors don't have an optimal answer either, because that would be O(n!) and take forever.

My favorite project is p3, and it is the only project that I got 100/100. Reason: it's the only project that is something you'd use in real life applications. Managing a database sort of stuff.

Project 4 is easier for me than p1 and p2 actually. There's a lot of nitty-bitty in the latter two. Like output formats and ambiguous specification. My solution leaves room for improvement, but the 3% or 4% deduction barely justifies the extra work, so I didn't even bother. If the projects were better I'd give the course a 4 / 5.

Favorite moment

  • When I wrote a Tampermonkey script that plays Bad Apple!! on the autograder, shared a video on Piazza, and got 28 "good note"s

Piazza note titled "why my autograder playing bad apple" with a video of
Bad Apple!! playing on a 20×20 table, in cells colored red and
green

GERMAN 103

Rating: 5 / 5

Theme: elementary German

GERMAN 103 is 101 and 102 condensed in one semester, and so it is f a s t. That didn't stop me from slaying it though.

Instructor (Laura Okkema)

Absolute legend. If you disregard her competence at teaching German (which she has a lot of), she:

  • is super patient and responsible
  • uses postcards, her paintings, or her son's toys to divide class in teams
  • had a dog and a cat when semester began
  • saw a dog abandoned on the street and went "oh I'll take her"
  • now has two dogs and a cat
  • enjoys melodic death metal
  • gave us precious feedback regarding profanity usage in German (see § Rollenspiel

The only negative things I have to say about this course:

  • We had to write an essay (~10 sentences long) and memorize it for every test, which is in my opinion not a productive way to design a test
  • Feedback on Aufsätze is often as slow as a week (it's useful though)
  • The textbook is hella expensive and MindTap has a pretty bad user experience

Assignments

  • MindTap (online homework thing which I forgot more than once)
  • Arbeitsblätter (worksheets for each chapter)
  • 3 Aufsätze (essays)
  • Wiederholungsblätter (test reviews)
  • Summary of the book »Oh, wie schön ist Panama« by Janosch

The Aufsätze is one of the only things where I have total creative freedom, so I abused this privilege. In the first two I wrote about:

  • Das Beamermännchen (little man named Greg who lives in a projector)
  • Die Hexe (a witch named Melissa who cast a storm-repelling spell on a flight)

My instructor liked the first one so much she printed it out and hung it on the bulletin board :)

Rollenspiel (roleplay)

This section is primarily for my own archival purposes. It is not intended for a general audience, but it's not top secret either.

tl;dr: My team performed a roleplay and won $200

Warning: MASSIVE infodump

The third Aufsatz is a group project, intended to be played out on stage. I knew immediately what I wanted.

In the book »Oh wie schön«, on their way to Panama, the bear and the tiger meet a fox, who "wanted to celebrate his birthday with a goose". (Janosch 18) Innocent as this sounds, an illustration shows the goose lying in the fox's lap, next to a pot and silverware. The popular belief is that the goose is the fox's dinner. (Myllynen 26)

I refuse to believe it, so in my headcanon the fox is not going to eat the goose. Instead he and the goose are a married couple, having an argument. They verbally abuse each other in front of the tiger and bear, triggering a dispute between the latter two (who, in my headcanon, are a gay couple).

I pitched my idea to my groupmates, and we went with it. The problem was I had no way to end it, but Ava suggested we could give life to the Tigerente (tiger-duck, which the tiger carries with him all the time like a baby but doesn't talk) and let him settle the argument.

Now, with a beginning and an end, all we need to do is find a trivial dispute that could tear not one but two relationships apart. There is zero description of the fox and goose's life, but there was a lot about the tiger and bear. The bear goes fishing, and the tiger picks mushrooms. At the end of the day the bear for both of them. The trivial dispute is then:

  • Tiger is sick of eating fish and mushrooms every day
  • Bear is the one who cooks

Extrapolate this a bit, and we came up with

  • Goose is sick of eating lettuce and potatoes every day
  • Fox is the one who cooks

I believe this is very — almost too realistic. I'm sure food related breakups happen routinely. What makes this even better is the fact that it was the fox's birthday, which makes eating the same kind of food more ridiculous.

However, we put a fundamental difference between the two duos as well:

  • Bear and tiger are traveling to Panama
  • Fox and goose have stayed home for 20 years, despite fox's promise on their wedding to travel around the world

Which ends in the latter pair joining bear and tiger on their way to Panama.

Now that we have the plot, we churned out a script. We made sure to sprinkle in two types of humor:

  • Situational, such as the goose saying "I have no hands, I have wings" when asked why she never cooks";
  • Profanity.

Yes, vulgarity is how you want the audience to engage. The most famous German profanity — or perhaps word in general — is Scheiße (shit), but we didn't end up using it. (This was, however, the first word Laura heard as she entered the room we were rehearsing in, the moment I knocked over a soap dispenser.)

The profanity we used were "Wichser" (wanker) and "Hundesohn" (son of a bitch, or dog literally, which is anatomically not off base because foxes are somewhat dog-like).

One day on the lecture I asked Laura if it was OK to use these two words. You should see her face as I threw this question. She went through a phase of "seriously?" and then affirmed that yes, she's OK with it.

Later, as she wrote feedback for our first draft, she commented on our use of the two words again. She thinks we should reconsider these words, not because they're naughty, but because she has better alternatives.

She argues that Wichser is mostly used among teenage boys, and Hundesohn is kind of outdated, and used rarely in Germany. In addition, she left us a paper that discusses animal insults. Like a whole 13 page paper. I have a theory that, she downloaded this paper long ago and waited for this day.

She recommends the insult "dumme Gans" (dumb goose), but unfortunately the insult was actually directed toward the fox, and to call an animal a "dumb $animal" is like calling a human "dumb human", and weaken the insult.

We ended up keeping Wichser and Hundesohn, because incidentally bear and tiger are somewhat teenagers, and the fox is "old" according to the book. Also, these are pretty famous insults too. This seems to convince Laura.

We also learned that the best team (or two) would be nominated into a competition with the other German classes, and the winning team would receive $200 in reward. That said, I believe we had a pretty good chance.

Once we had the final script, we went on to do our first rehearsal. Thomas caught covid and had to join us over Zoom.

At the same time, I was working on the props. My inner child/engineer hybrid made this masterpiece:

Tigerente made out of cardboard

We had one more session of rehearsal before our class performance. We couldn't afford full costumes, so we just improvised as best as we could:

  • Ava (goose) brought a feather scarf or something
  • Thomas (bear) wore a brown jacket
  • I (tiger) wore a yellow T-shirt

Ryan also brought a butter knife. The guidelines forbid weapons, so it was plastic. We did our final rehearsal outside of the library.

On performance day, I brought my Tigerente. Realizing I don't have a string to pull him with, I used my USB microphone with a clip on one end.

The performance went smoothly. The other three groups also did a spectacular job. Their roleplays were:

  • Rotkäppchen-artig (the little red riding hood with a twist)
  • Geistjäger (ghostbusters)
  • Fortnite (featuring lines such as „Ach! Ich bin gestorben!“ and a sheet of paper that just said "GUN")

Personally I enjoyed Rotkäppchen-artig the most but somehow Geistjäger was nominated. Oh yeah our play was nominated too.

The competition was set two days later. That day I learned that the Geistjäger cast couldn't make it, so Rotkäppchen would be competing with us after all. The other two competitors were from 102, bringing »der Froschprinz« (the frog prince, which featured a talking piece of bread) and »der Urlaub« (the vacation, set in Switzerland, that somehow ended in a guy suffering diarrhea).

Right after our performance, I handed my Tigerente to Hartmut (the German department professor, who starred all the grammar videos) for his autograph. He agreed.

After all four groups have performed, we and the professors were asked to vote. We won, and Rotkäppchen came second. Tied third are the other two groups.

Absolutely wonderful.

Favorite moments

  • Rollenspiel of course
  • When Laura gave us a Kahoot quiz on a Zimtsterne recipe and I was the only one who got the "convert 150 ℃ to ℉" question right (thanks to KRunner) and I got a copy of her recipe

MUSIC 210

Rating: 4/5

Theme: Rap songwriting

Instructor (Deidre Smith, aka D. S. SENSE)

She's a nice lady who unfortunately missed a lot of lectures due to illness. Nevertheless, she was nothing but encouraging to every one of us.

Creativity does not constrain me; language is the barrier. I can sometimes fail to understand her accent, and I'm not a fluent English speaker when it comes to rap. I took this course partly to train my spoken English, but it didn't seem to work that well. (skill issue)

Every in-person class we would be given 25 minutes to work on a short piece of hip hop. I abused this opportunity to:

  • rant about NFTs
  • write a piece that goes between 7/8, 6/8, and 9/8 time
  • ask people in the room to decide on my grocery list

Anyway, this course gave birth to my first original song, This Song Will Uncure Your Depression.

CHEM 130

Rating: 4.5/5 (relative to my expectations and wishes, which are low)

I took CHEM 210 two years ago and sucked so much it wasn't even transferable. I had to repeat it to fill in that hole on my transcript. But here, I almost know everything, and routinely get full points on the tests.

There are two hypotheses why I sucked:

  • CHEM 210 is inherently harder than 130
  • skill issue

I believe both factors are at play. On one hand 210 defintely covered something extra (entropy and electrochemistry), but on the other at that time I was a fresh college student who didn't even know how college worked. This course was chemistry "principles". It's nothing like high school chemistry that's just "remember this experiment" and "remember that phenomenon". Instead it's built upon physical and statistical principles, which I did not know at that time. Now that I've taken a course on electromagnetics and one on statistics, I can actually understand what's going on with these "dipoles" (they're just two opposite charges on a stick) and "electron clouds" (they're just probability density functions). This is why I wonder why this course is so often taken in the very first semester of college, when it's not a prerequisite for any other ECE course. In fact, that makes the experience a little like high school — learning the "principles" without learning the principles of the principles.

General comments & concerns

  • I am aware that, as far as infrastructure goes, universities are among the best places in the US. But even so, there's not enough buses.
  • Food too expensive. But not terrible.
  • Drinks too expensive.
  • The nature is well preserved and air quality is good.
  • It snows sometimes which is fun if I wasn't waiting for a bus outside.
  • I have to learn to slow down. When I'm walking in a dining hall, my instincts urge me to hurry up, which is not a good strategy in a place packed with people carrying plates.
  • People here are more welcoming and diverse than expected. I have witnessed zero cases of xenophobia or racism so far.
  • I wanted to get an FCC ham radio license but never got around to. Next semester I guess?

Significant material gains

  • I bought a blåhaj
  • I bought a bass
  • I bought a laptop
  • I got a "Michigan Pride" T-shirt at the drag show
  • I got a "Know two ways out" shirt at a fire safety awareness event
  • I got an "Arts & Resistance" T-shirt at the Duderstadt gallery
  • I bought a second-hand CD of The Black Parade
  • I bought two books "just because" and three more for reasons

Works Cited

  • Janosch. Oh, wie schön ist Panama. Beltz & Gelberg, 1978.
  • Myllynen, Milka. "Was schätzen Leser an einem Kinderbuchklassiker? Aufgezeigt anhand von Kundenrezensionen auf Amazon.de zum Kinderbuch „Oh, wie schön ist Panama“." Tampere University, April 2019. PDF version on tuni.fi. Accessed 2023-11-07.