I signed up for the 12th cohort of the Hongong Study Group. The book I chose for this study is Self-Study Computer Architecture + Operating Systems.
The 12th cohort schedule goes like this:
- Week 1: July 1 - July 7
- Week 2: July 8 - July 14
- Week 3: July 15 - July 21
- Week 4: July 22 - July 28
- Summer Break: July 29 - August 4
- Week 5: August 5 - August 11
- Week 6: August 12 - August 18
- Retrospective
So I plan to write a post with the title "Self-Study CS" once a week! The Hongong Study Group is run by Hanbit Publishing Network, and I think it's a great idea. As they accumulate know-how from running it, maybe they could grow into something like Trevari.
The minimum reading schedule and assignments were laid out in the table below.
| # | Progress | Basic Homework (Required) | Additional Homework (Optional) |
|---|---|---|---|
| Week 1 (7/1 ~ 7/7) | Chapter 01 ~ 03 | Solve and verify p. 51 Q3 and p. 65 Q3 | Summarize the concepts of stack and queue on p. 100 |
| Week 2 (7/8 ~ 7/14) | Chapter 04 ~ 05 | Solve and verify p. 125 Q2 and p. 155 Q4 | Summarize the concepts of core and thread, multi-core and multi-thread from Ch.05(05-1) |
| Week 3 (7/15 ~ 7/21) | Chapter 06 ~ 08 | Solve and verify p. 185 Q3 and p. 205 Q1 | Briefly summarize the definition and types of RAID from Ch.07(07-2) |
| Week 4 (7/22 ~ 7/28) | Chapter 09 ~ 11 | Solve and verify p. 304 Q1 | Assuming processes A, B, C, D are inserted into the ready queue in order, solve what order they receive CPU allocation using FCFS scheduling from Ch.11(11-2) |
| Week 5 (8/5 ~ 8/11) | Chapter 12 ~ 13 | Solve and verify p. 363 Q1 | Summarize the concepts of critical section and mutual exclusion from Ch.12(12-1) |
| Week 6 (8/12 ~ 8/18) | Chapter 14 ~ 15 | Solve and verify p. 400 Q1 | With 3 available frames and page reference string '2313523423', solve how many page faults occur using LRU page replacement from Ch.14(14-3) |
There's also a summer break (7/29 ~ 8/4). Lucky vicky, a fun summer vacation!
Additional study resources are available:
- Q&A: Author Kang Min-cheol's GitHub
- YouTube Lectures: Full Lecture Playlist
Anyway, I'll do my best to read through it all by August!
Week 1#
C01#
Understanding computer architecture improves your problem-solving abilities related to computers. Understanding computer architecture allows you to develop while considering performance/capacity/cost — things that are difficult to know from programming grammar alone.
The types of information a computer understands are data and instructions.
Memory is the component that stores the instructions and data of currently running programs.
CPU is the component that reads, interprets, and executes instructions stored in memory.
Secondary storage is the component that stores programs to be preserved even when power is off.
I/O devices are components connected externally to the computer that can exchange information with the computer's internals.
System bus is the pathway through which the four core components (memory, CPU, secondary storage, I/O devices) exchange information with each other.
C02#
A bit is the smallest unit of information that can be represented as 0 or 1.
Bytes, kilobytes, megabytes, gigabytes, and terabytes are larger units of information than bits.
Binary is a method of representing numbers using only 0 and 1, carrying over when exceeding 1.
Negative numbers in binary can be represented using two's complement.
Hexadecimal is a method of representing numbers by carrying over when exceeding 15.
A character set is a collection of characters that a computer can recognize, and characters in the set can be encoded into 0s and 1s.
Numbers 0 through 127 are assigned to the ASCII character set and encoded as ASCII codes.
EUC-KR is a composed encoding method that can encode Korean characters in 2-byte size.
Unicode is a unified character set that can broadly represent characters from many countries, and UTF-8, UTF-16, and UTF-32 are encoding methods for Unicode characters.
C03#
A high-level language is a language made to be easy for humans to understand and write.
A low-level language is a language that computers can directly understand and execute.
Low-level languages include machine code consisting of instructions made of 0s and 1s, and assembly language which translates machine code into a human-readable form.
A compiled language is compiled entirely from source code to low-level language by a compiler before execution.
An interpreted language is converted line by line from source code to low-level language by an interpreter during execution.
An instruction consists of an operation code and operands.
The operation code indicates the operation the instruction will perform.
An operand is the data to be used in the operation or the location where the data is stored.
Addressing modes are methods for finding the location of data to be used in operations.
Homework#
p. 51 Review Question 3 (Required)#
- Fill in the blank with the appropriate answer.
A program must be stored in () in order to execute.
Answer: Memory
p. 65 Review Question 3 (Required)#
- Find the negative of 1101(2) using two's complement representation.
Flip all 0s and 1s: 0010(2)
Add 1: 0011(2)
The negative of 1101(2) is ().
Answer: 0011(2)
p. 100 Stack and Queue Concept Summary (Optional)#
A stack is like a container with one closed end. It's a data management method where the last stored data is retrieved first. It's a LIFO (Last In First Out) data structure.
A queue is like a container open on both ends. It's a data management method where the first stored data is retrieved first. It's a FIFO (First In First Out) data structure.
Mediocrity knows nothing higher than itself, but talent instantly recognizes genius.
— Arthur Conan Doyle