My Journey in Computer Science and Math (Continuously Updating...)
Just as I wrote in About Me, I love the world of CS and math and I taught myself bits of knowledge in these fields and use them to pass the entrance exam of UTokyo and to be hired as a software engineer. This post is about what I did and what I will do in the future.
I got my bachelor’s degree in pharmacy but I decided to quit that in the 4th year of my undergraduate studies. Thus I have no extra time to persue anthor bacholer’s degree in computer science/math/software engineering. With generous seggestions from one of my good friends who is a Google software engineer now, I decided to learn open source computer science courses.
2018.3.1 ~ 2019.3.31
The entrance examination of computational biology department in UTokyo needs calculus, linear algebra, graph theory, data structures, algorithms, probability, statistics and stochastic processes. In order to pass the examination, I spent most of time on math courses.
Calculus
- Calculus courses in Nankai University
- Review it by this book
Linear Algebra
- MIT 18.06
- Practice problems from the little yellow book i
- Read some chapters from Linear Algebra Done Right
Differential Equations
Probability
- Coursera courses (i, ii)
- First half of MIT 6.041
- Practice problems from the little yellow book ii and homeworks of Harvard STAT 110
Statistics
- Statistic courses from NCTU
- Practice problems from above course and the little yellow book ii
Stochastic Processes
- Poisson process from MIT 6.262
- Discrete Markov process from chapter 1 of Markov Chains
Graph Theory
- Graph theory chapter of this book
- Unit 1 & 2 of MIT 6.042J
Data Structures and Algorithms
- MIT 6.006
- Part of Algorithms
Some other introduction to cs courses and programming language (python, C++) courses are not listed here. These are what I learned before I went to UTokyo (~2019.3). Following part are what I learned from 2019.4.
2019.4.1 ~ 2021.5.14
Machine Learning
- Machine learning course from Prof. Hung-yi Lee
- Data mining course from Prof. Tsuda in UTokyo
- Part of watermelon book
Deep Learning
- Stanford CS231n
- Part of Deep Learning
More Algorithms
- Algorithm courses from Prof. Hirai in UTokyo.
- Chapter 1~6 of Algorithm Design.
- Solved over 1000 problems on various Online Judges such as LeetCode, AtCoder.
Computer System
- CMU 15-213 together with its labs on Github.
I also got benefits from some courses without a university backround, like ones from yxc, Gaurav Sen. Computational biology related books and courses are not listed here.
Here is my plan in the future.
2021.5.15 ~
Competitive Programming
- To solve all problems on Ant book.
- Currently solved all problems before chapter 3.3. (2021.5.15)
- Solve another 1000 problems on various online judges
- I wish to have a rating over 2000 on AtCoder, currently around 1400. (2021.5.15)
- Because I usually play sports at Saturday night, I didn’t attend much competitions this year, but I never stop practicing. (2021.12.17)
- I wish to have a rating over 2000 on AtCoder, currently around 1400. (2021.5.15)
- I wish to win a T-shirt from GCJ or FHC or TCO. (Made it, yay~)
- For GCJ, I need to be qualified for GCJ R3, currently qualified for GCJ R2 (2021.5.15). But I didn’t make it this year :(. (2021.12.17)
- For FHC, I need to be qualified for FHC R2 and solve at lease 1 problem and be ranked in top 2000. I made it, actually 1,278th out of 6,789 :). (2021.12.17)
- For TCO, I missed the event. It was at the beginning of this year, so it’s ok. (2021.12.17)
Operating System
- MIT 6.S081
- I decided to change course from MIT 6.S081 to Tsinghua OS course. Because I wanna learn Rust. Rust sounds fancier than C. (2021.12.17)
Computer Networking
- Stanford CS144
- Start from 2021.5.12
- Github, might be set to be private in the future if requested by course owners
Database
- CMU 15-445
Will start it if I finish two above coursesI will study computer architecture before this on. (2021.12.17)
Computer Architecture
- ETHZ Digital Design and Computer Architecture
- Wait my FPGA board to arrive (2021.5.15)
Compiler
Design Patterns
- Haven’t decided where to study it (2021.5.15).
- Learned it from working with excellent colleagues. (2021.12.17)
I am also interested in other criteria such as distributed systems, but most of them need above courses as prerequite. I’ll think about it after I finish the above courses.
By the way, I believe all of the courses above can cover requirements of a bachelor’s degree in computer science engineering, so I call it “yy的补全计划” (YY’s completion plan). If you see this word in some other place, that should be me.
At the very beginning of this plan, I wished to finish it before 2022.9, after changing some contents of it and becoming a fulltime software engineer, I found that most of energy will be taken to do my job and I would like to spend much more time with my dear girlfriend. Thus pushing myself crucially is meaningless. I wanna enjoy my job, enjoy my life, enjoy these courses, and don’t want to be burnt out. My estimation on the date that I finish these courses is 2023.3, a traditional graduation season in Japan. Actually it’s lifetime study, just enjoy it~
頑張ります!
Let me know what you think of this article on twitter @CreamEggMeat or leave a comment below!