26 April 2021
I have never had a computer science class. I'd say I'm behind those people who graduated in the field for 48 months. I had to spend some time trying to understand what a CS student's bookshelf is like.
Although it's said that nothing is given so freely as advice, with a wish that what I listed up here is useful not only for myself but also for people, here I'm writing this article that is meant to provide a comprehensive map.
I'd stick to OPEN DATA STRUCTURES and PROJECT EULER mentioned at the bottom of this page, and use the rest of them as supplementary resources.
P.S. 25 November 2021
All is said and done, just take the FREE LECTURES OF PROFESSOR ROBERT SEDGEWICK on Coursera.
Useful materials
🎞️🎞️🎞️ Youtube playlist containing all videos listed in this page.
Computer architecture
🎞️ MIT, 9.2.3 The von Neumann Model
CPUs have the dedicated ADDRESS BUS in addition to the data bus.
🎞️ Inside the CPU - Computerphile
Address bus (2)
🎞️ Introduction to Von Neuman Architecture (Fetch-Decode-Execute) Cycle
Instructions LDD, ADD, STO, and data 27, 35 are stored in memory.
Addressing is the only way to tell the difference between them.
It's quite less than Javascripts' ===
, the type considering equality.
🎞️ Tom Scott, The Fetch-Execute Cycle: What's Your Computer Actually Doing?
There's JUMP instruction, which will be described for the genesis of the subroutine later.
🎞️ The Calculator Wars: A video history of Japan's electronic industry (Part 3)
The bit part of the 64bit and 32bit CPU describes the addressible memory breadth. What is called usize/uintptr
type, unsigned integer, 64bit length in the case of a x86_64 CPU.
Intel 4004 a 4bit processor. The capacity of an address will be mentioned in Open Data Structures as the word length.
🎞️ そろばんで3度目の日本一 西宮市の中3女子
The arithmetics with a set of circuits in CPU must be the same mechanism to a series of skills that the hands perform on a bit-wise abacus in fundamentals.
🎞️ Pointers and dynamic memory - stack vs heap
There are regions called STACK FRAMES for each function call.
🎞️ freeCodeCamp.org, Pointers in C / C++ [Full Course]
Jumping is enabled by means of the technique called function pointers, which allows us to use LOOP for example.
You might prefer to watch CS50 written below first.
- P.S. 22 November 2021
"process is a logical container", "slice of CPU time", "process needs memory'
🎞️ Processes and threads - Gary explains
"system calls", "processes must be able to invoke certain routines at fixed addresses in the OS's portion of memory"
🎞️ Operating System Basics
"there is not only one process associated with this chromium browser"
🎞️ Process Management (Processes and Threads)
"event queue", "callbacks"
🎞️ What is the JavaScript event loop really all about - Java Brains
"Change the root directory of the current process to the specified path."
std::os::unix::fs::chroot - P.S. 7 December 2022
readelf command in Linux with Examples
Understanding the Linux /proc/id/maps File
Position-independent code
🎞️ Wheeler Jump - Computerphile
Stories behind the subroutines
Software development
🎞️ CS50 2020 - Lecture 4 - Memory
Confirm the garbage values in memory and the undefined behaviour in C.
🎞️ CS50 2020 - Lecture 3 - Algorithms
Finding and comparison
🎞️ CS50 2020 - Lecture 5 - Data Structures
The physical restriction on the consective allocation extension, for the area is possibly already claimed by the other.
🎞️ Junmin Lee, Golang Tutorial 3 - Golang pointers explained, once and for all
Memory and the pointer in summary
Data structures and algorithms
🎞️ Fyi, MIT, Instruction-level Parallelism
Fyi, ARM architecture - conditional execution - Wikipedia
🎞️ freeCodeCamp, Data Structures Easy to Advanced Course - Full Tutorial from a Google Engineer
Comprehensive step by step tutorial about data structures. This allowed me to be familiar with their names and ready to read books about them.
🎞️ Spanning Tree, What is Binary Heap
There is sort of confusion in nomenclature, and watching these videos by Brian from CS50 at that time helped me to understand the 8h data structure tutorial.
🎞️ Spanning Tree, What Are Bloom Filters?
🎞️ Spanning Tree, How Dijkstra's Algorithm Works
🎞️ Spanning Tree, How Do You Calculate a Minimum Spanning Tree?
🎞️ Junmin Lee, Graph data structure and graph representation (Part 1 of 2)
It was helpful for me to watch this video at that point so as not to sink in the confusion.
🎞️ Junmin Lee, Data Structures and Algorithms in Go - Heaps
📖 Open Data Structures
It took me a while to know there was this book.
- https://github.com/patmorin/ods/tree/master/java
- https://github.com/spinute/ods-go
- https://github.com/o8vm/ods rust
📖 Introduction to Algorithms, 3rd Edition (The MIT Press)
I couldn't find this book in my shallow previous research. I append this book here on 13 June 2021.
📖 Princeton University, Algorithms (4th Edition)
It seems to me that you wouldn't want this book if you already have Introduction to Algorithms, 3rd Edition. P.S. there's a complete online course.
📖 Algorithms in a Nutshell: A Practical Guide 2nd Edition
I flipped through all the pages. I'd stick to Open Data Structures.
It seems to me that you wouldn't want this book if you already have Introduction to Algorithms, 3rd Edition.
Additionally, it was comprehensive too. But I'd better stick to Open Data Structures.
📖 WILLEY, Data Structures and Algorithms in Java, 6th Edition
In fact I read only 4 out of 15 chapters. But it was nice to know about the generics dynamic dispatch and the parameters in Java are passed by value, such as badReset(Counter c) {c = new Counter();} //reassign local name c to a new Counter
.
📖 SAMS, Data Structures and Algorithms in Java 2nd Edition
I haven't read it and probably it's not required if you have Open Data Structures.
Mathematics
🎞️🎞️🎞️ Youtube playlist
🖊️ Project Euler
I solved 33 questions so far and it helped me to remember mathematics and to know algorithms.
- https://euler.stephan-brumme.com/
- https://www.nayuki.io/page/project-euler-solutions
- https://www.mathblog.dk/project-euler-solutions/
- https://www.xarg.org/puzzles/
- https://github.com/XiaoTaoWang/Project-Euler
- https://blog.dreamshire.com/category/project-euler-solutions
- P.S. 9 December 2022 ガウスとオイラーの整数論の世界 ~中学入試算数が語るもの~
📖 The Concise Oxford Dictionary of Mathematics
📖 Mathematics Dictionary (5th ed) James & James
📖 Schaum's Outline of Mathematical Handbook of Formulas and Tables, Fifth Edition
📖 Collins Dictionary of Mathematics, by E. J. Borowski and J.M. Borwein
Compiler design
I haven't read them but it seems there are some chapters for data structures.
📖 Advanced Compiler Design and Implementation
📖 Compilers: Principles, Techniques, and Tools 2nd Edition
Further reading...
📖 Algorithms and Data Structures, Niklaus Wirth
📖 Algorithms in C, Robert Sedgewick
📖 A Simple Introduction to Graph Theory, Brian Heinold
📖 Introduction to Graph Theory (5th Edition) Robin J. Wilson
📖 アルゴリズム辞典 1994 (世田谷区図書館所蔵)
📖 C言語による最新アルゴリズム事典 (ソフトウェアテクノロジー) 奥村 晴彦
📖 最短経路の本 (世田谷区図書館所蔵)
📖 Cracking the Coding Interview: 189 Programming Questions and Solutions 6th Edition
📖 Brilliant.org Community Wiki
Dangling pointers and the alignment of composite data
- doc.rust-lang.org/nomicon/repr-rust.html
- doc.rust-lang.org/reference/type-layout.html
- web.mit.edu/rust-lang_v1.25/arch/amd64_ubuntu1404/share/doc/rust/html/book/second-edition/ch04-03-slices.html#string-slices
Network interface controller, subnets and gateways
- en.wikipedia.org/wiki/Network_interface_controller
- docs.microsoft.com/en-us/azure/developer/terraform/hub-spoke-on-prem
P.S. 7 December 2022 📖 [試して理解]Linuxのしくみ
PS
Data structures and algorithms might be easier than the non-pedagogical programming in a sense for its internal perfection and predictability.
I mean, I can imagine you are using Postman to check against a service that was provided by some organisation so that you can confirm the functionalities are implemented as described in their documents after experiencing irregular behaviours; you are collating the version of a Kubernetes' application in debugging for a runtime error that couldn't be detected with mock tests; or you are in a tunnel to find out idioms unheard of to write a passable Gradle script or an industrial level quality test code with the most up-to-date Mockito library with an extension that is also unheard of.
A warning says I must not click the back button in the browser. A question form doesn't have the option to choose for my answer. This kind of problem occurs regardless of using a computer or a sheet of paper.
As for me, having been stuck in quotidian affairs, I'm poor in certain things to be certified, which is not what I'm proud of. It definitely happens that you are busy with the handling of Authorization metadata of gRPC but have no chance to implement a MySQL of your own.