Skip to main content

CS50 - No more lectures 😭

·555 words·3 mins
Learning Computer Science Italia
["CS50"] - This article is part of a series.
Part 4: This Article

I was surprised recently to see that I’m basically on track to finish CS50 with the end of Harvard’s spring 2018 semester. I was surprised because, back during the C period, it felt like I was wallowing away weeks and weeks on some of those problem sets. But, well, they had spring break and a couple off weeks, and so I caught up.

I finished up the lectures and problem sets this week. The final lecture was actually just a pile o’ fluff: opening with one of the TAs playing the piano, and lots of pop music montages of “oh the places you’ll go!” stuff. And, funnily, I WAS VERY MOVED. I felt like it was the last day of high school again! SO LONG, CS50, I’LL REALLY MISS YINZ! Thanks to Prof. Malan and all the TAs and staff for a wonderful resource, truly!


## Syllabus - in review

The full 2018 CS50 syllabus is here. In retrospect, my favorite topics were, ranked descending:

  • Memory: Huge demystification of what happens when you computer things.
  • Dynamic programming: I want to write a post about this. I had to watch some supplementary YouTubes about this (since I didn’t get it with just the lecture), but - once it clicked - OH MAN. Mind blowing. And the applications! Aaah. Just look at this.
  • Data structures: Unexpected elegance, thanks to C’s direct memory management, of linked lists and tries and hash tables. Wonderful!
  • HTTP: Insufficient HTTP stuff, though I did discover the fun of traceroute.
  • Algorithms: Meh. This was one lecture. It was okay-fun. But, since we didn’t actually implement any algorithms or “race” any code, it felt remote.

## Problem sets - in review
PsetLanguageJoyEst. hoursNotes
0 - ScratchScratch🙄<1Bah.
1 - CC🤔3Greedy algorithm, oof.
2 - CryptoC😂2Already did this once in Clojure.
3 - MusicC😨5HARD. Converting text -> Herz frequencies -> MIDI music. Also, waves.
4 - ForensicsC😨5STILL HARD. Recovering lost JPEGs and bitmaps. Also - I KNOW ALL COMPUTER NOW.
5 - MispellingsC😨5Hard. AKA how to build a linked list. Not sucking at malloc().
6 - Déjà vuPython🤔4Real easy Python + understanding dynamic programming!
7 - C$50 FinancePython, SQL😒2Flask app + API calling. Fiddly, annoying.
8 - MashupJavaScript😒2JAVASCRIPT. BAROQUE CATHEDRAL OF CODE.
TOTAL29

## Final project

I’m about halfway through Build Your Own Lisp, which is a lot of fun. I’m using it to write a toy language in C called triestin. It’ll be based on the Triestine-Italian dialect, which is spoken by ~250,000 people. According to ISTAT, the Italian government’s statistical agency, 56% of Italians of working age are employed, and 2.6% of those (I think) are ICT people. So that’s, hmmm -

$$250,000 * 0.557 * 0.026 = 3,620$$

Or about 3,600 people that could potentially understand this language at all! If we whittle things down to people that are interested in compilers, IT’S EVEN LOWER. Yay!

Anyway, I also found Destroy All Software’s wonderful A compiler from scratch, which demystified how programming languages are written: it’s just tokenizing, parsing, and compiling! Wooooo. Lots of Chomsky stuff too, which I will investigate further.

["CS50"] - This article is part of a series.
Part 4: This Article

Related

CS50 - Data structures achievement unlocked
·671 words·4 mins
Computer Science Learning Fun
I lift my sword of C and strike thee down!
CS50 - Algorithms, pointers and malloc, oh my
·1093 words·6 mins
Learning Computer Science
malloc()! Nightmare of malloc()! malloc() the loveless! Mental malloc()!
Starting CS50
·808 words·4 mins
Learning Computer Science Cryptography
Some notes as I start working through Harvard’s CS50.