summaryrefslogtreecommitdiff
path: root/docs/umich/f23_wrapup.md
blob: c1cd6b1df55642a5434e94e9d22b24bdfb3be1e9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
# 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](../projects/nand2tetris_1.md) 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](img/f23_wrapup/badapple.png)

### 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](#rollenspiel-roleplay)

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

<details markdown="1">
<summary>Warning: MASSIVE infodump</summary>

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](img/f23_wrapup/tigerente.jpg)

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.
</details>

#### 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](../music/uncure-your-depression.md).

### 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](https://trepo.tuni.fi/bitstream/handle/10024/105532/MyllynenMilka2019.pdf).
  Accessed 2023-11-07.