Trending

#computer_science

Latest posts tagged with #computer_science on Bluesky

Latest Top
Trending

Posts tagged #computer_science

Model Collapse Ends AI Hype
Model Collapse Ends AI Hype YouTube video by Theos Theory

"Model Collapse Ends AI Hype"

#LLMS #AI #artifical_intelligence #AI_Bubble #Gen_AI #computer_science

youtu.be/ShusuVq32hc?...

1 0 0 0
Preview
Arcadia University Introduces Bachelor of Science in Cybersecurity for Fall 2026 In fall 2026, Arcadia University will unveil its Bachelor of Science in Cybersecurity, aimed at equipping students for crucial industry roles.

Arcadia University Introduces Bachelor of Science in Cybersecurity for Fall 2026 #United_States #Cybersecurity #Arcadia_University #Computer_Science #Glenside,_PA

0 0 0 0
Preview
Shaw Prize for Computer Science: A Milestone in Global Recognition and Innovation Discover the significance of the newly established Shaw Prize for Computer Science, aimed at recognizing exceptional contributions in the field globally.

Shaw Prize for Computer Science: A Milestone in Global Recognition and Innovation #None #Computer_Science #Shaw_Prize #Global_Experts

0 0 0 0
Preview
The Launch of Shaw Prize in Computer Science to Honor Global Innovators Experts worldwide announced the Shaw Prize in Computer Science, recognizing outstanding contributions in the field. Nominations are now open.

The Launch of Shaw Prize in Computer Science to Honor Global Innovators #USA #Hong_Kong #Computer_Science #Shaw_Prize #Turing_Award

0 0 0 0
Preview
The Inaugural Shaw Prize in Computer Science: Celebrating Innovation and Excellence The Shaw Prize Foundation introduces its first Computer Science award, aiming to honor groundbreaking contributions with a global expert committee.

The Inaugural Shaw Prize in Computer Science: Celebrating Innovation and Excellence #USA #Hong_Kong #Technology #Computer_Science #Shaw_Prize

0 0 0 0
Preview
New Shaw Prize in Computer Science to Recognize Outstanding Contributions Globally The Shaw Prize Foundation has introduced a new award in Computer Science, joining prestigious existing categories. Nominations start in September 2026.

New Shaw Prize in Computer Science to Recognize Outstanding Contributions Globally #Hong_Kong #Computer_Science #Shaw_Prize #Turing_Award

0 0 0 0
Preview
Shaw Prize Expands to Include Computer Science for Transformative Innovations The Shaw Prize Foundation announces a groundbreaking expansion to incorporate Computer Science, celebrating pioneering advancements that reshape society.

Shaw Prize Expands to Include Computer Science for Transformative Innovations #Innovation #Hong_Kong #Computer_Science #Shaw_Prize

0 0 0 0
Preview
The Shaw Prize Announces Landmark Expansion with New Computer Science Category In a significant update, the Shaw Prize Foundation has introduced a new award for Computer Science, marking a transformative milestone after two decades.

The Shaw Prize Announces Landmark Expansion with New Computer Science Category #None #Awards #Hong_Kong #Computer_Science #Shaw_Prize

0 0 0 0
Preview
Shaw Prize Foundation Expands Its Horizons with New Computer Science Award The Shaw Prize Foundation has announced a historic expansion with the introduction of a new award for Computer Science, celebrating groundbreaking advancements in this vital field.

Shaw Prize Foundation Expands Its Horizons with New Computer Science Award #Innovation #Hong_Kong #Computer_Science #Shaw_Prize

0 0 0 0
Preview
LEGO Education Launches Hands-on AI Learning for Kids in Year 1-9 LEGO Education introduces a hands-on curriculum for teaching computer science and AI in classrooms for Year 1-9. Discover how it empowers students.

LEGO Education Launches Hands-on AI Learning for Kids in Year 1-9 #Denmark #AI_Learning #LEGO_Education #Billund #Computer_Science

0 0 0 0
Preview
LEGO® Education Launches Engaging Curriculum for Computer Science and AI Learning LEGO® Education introduces an innovative hands-on curriculum to teach computer science and AI, aiming to inspire creativity and collaboration among K-8 students.

LEGO® Education Launches Engaging Curriculum for Computer Science and AI Learning #Denmark #AI_Learning #LEGO_Education #Billund #Computer_Science

0 0 0 0
Preview
LEGO Education Unveils Engaging Hands-On Learning Solution for Computer Science and AI LEGO Education introduces a new hands-on curriculum for K-8 teachers focused on computer science and AI, enhancing students' learning experiences through collaboration.

LEGO Education Unveils Engaging Hands-On Learning Solution for Computer Science and AI #USA #AI_Learning #LEGO_Education #Billund #Computer_Science

0 0 0 0
Preview
LEGO Education Unveils Innovative Curriculum for Computer Science and AI in K-8 Classrooms LEGO Education introduces an engaging curriculum designed to enhance computer science and AI learning in K-8 classrooms, empowering teachers and students alike.

LEGO Education Unveils Innovative Curriculum for Computer Science and AI in K-8 Classrooms #Denmark #LEGO_Education #Billund #Computer_Science #AI_Curriculum

0 0 0 0
Preview
Florida Polytechnic University Leads Rankings in Computer Science and Data Science Education Florida Polytechnic University's computer science and data science programs have been ranked highly in state and national standings, reflecting their academic excellence and affordability.

Florida Polytechnic University Leads Rankings in Computer Science and Data Science Education #United_States #Florida_Polytechnic #Lakeland #Data_Science #Computer_Science

0 0 0 0
Preview
New Insights on AI and Computer Science Education Reveal Gaps in U.S. K-12 Policies A recent report sheds light on the disparity in AI and computer science education policies across U.S. states, emphasizing the need for coherence to prepare students for the future.

New Insights on AI and Computer Science Education Reveal Gaps in U.S. K-12 Policies #United_States #Washington_D.C. #AI_Education #Code.org #Computer_Science

0 0 0 0
Preview
Neumont University Reaffirms Commitment to Technology Education with Name Change Neumont University has officially transitioned from Neumont College of Computer Science, enhancing its academic stature while retaining its mission to educate future tech leaders.

Neumont University Reaffirms Commitment to Technology Education with Name Change #United_States #Salt_Lake_City #technology_education #Computer_Science #Neumont_University

0 0 0 0

Since my work combines #biology and #computer_science, I was surprised to learn that in computer science, top research is usually published in prestigious conferences (like NeurIPS or MICCAI), which carry the same weight as journals such as Nature in other fields!

2 0 0 0
Preview
Northeastern Illinois University’s Computer Science Program Earns Prestigious ABET Accreditation Northeastern Illinois University's College of Business and Technology has achieved ABET accreditation for its Computer Science bachelor’s program, ensuring quality education.

Northeastern Illinois University’s Computer Science Program Earns Prestigious ABET Accreditation #Northeastern_Illinois_University #Computer_Science #ABET_Accreditation

0 0 0 0
# OSTEP 독학 일지 - H.1 update: 2025-08-05 > 본 글은 Operating Systems : Three Easy Pieces라는 교재를 독학하는 여정을 기록으로 남기기 위한 시리즈 글입니다. **2025-08-05** 09:30 이제 OSTEP 독학을 본격적으로 시작하는 첫 걸음이다. 시작이 반이라고 하지 않았던가? 시작을 하려면 어떻게 해야 하는가? 먼저 xv6 커널을 띄우기 위해, 헬로월드 부터 찍고 보는 것이다. 헬로월드를 찍기 위해서 필요한 준비물들을 하나 둘 살펴보자. ## 근데... 어떻게 세팅하지...? 먼저 xv6를 어떻게 띄울지는 이 문서(https://github.com/remzi-arpacidusseau/ostep-projects/blob/master/INSTALL-xv6.md) 에서 설명하고 있는데, 스텝 바이 스텝으로 따라가보자. 막상, 문서를 봤더니 macOS 기준으로 어떤 것을 설치하면 되는지에 대한 설명은 있는데, 리눅스 환경에서 어떻게 설치하면 되는지에 대한 내용은 전혀 보이지가 않는다. xv6 소스코드에 대한 언급도 RISC-V 기반은 아니어서 좀 더 찾아봐야 한다. 결국, 내가 실습하기 위해서 준비가 되어야 하는 것들이 아래와 같은 것들인데, 내가 지금 쓰고 있는 환경인 Ubuntu에서 어떻게 세팅하는 것인지 알아봐야 한다. * RISC-V 기반의 xv6 소스코드 : https://github.com/mit-pdos/xv6-riscv * RISC-V 툴체인 : xv6 소스코드를 RISC-V 기반의 인스트럭션으로 컴파일할 수 있도록 하기 위한 64비트 RISC-V GNU 툴체인 * QEMU : xv6 소스코드를 x86_64 프로세서 혹은 애플 실리콘 프로세서 위에서 굴릴 수 있으려면, QEMU(Quick EMUlator)라는 오픈소스 머신 에뮬레이터가 필요하다. * 그리고, 꾸준히 실습하겠다는 마음가짐 다행히도, 서울대학교의 학부 수업에서 사용되는 실습 과제 리포지토리(https://github.com/snu-csl/os-pa1/)에 어떻게 하면 개발 환경을 세팅할 수 있는지 친절하게 설명이 잘 되어 있다. ### (Ubuntu 기준) QEMU 세팅하기 먼저, 빌드하는데 필수요소가 되는 패키지들을 설치한다. $ sudo apt-get install git build-essential xv6 소스코드를 클론떠서 실습하려면 당연히, git은 당연히 설치가 되어야 한다. 그렇다면 build-essential은 왜 필요한가? build-essential 패키지에는 **GCC(Gnu Compiler Collection)** , **G++** , **Make** , dpkg-dev 같은 것들이 포함되어 있기 때문이다. C 기반으로 짜여있는 운영체제 소스코드를 실습하는 과정에 있어서, GCC 컴파일러는 물론이고 Make는 필수다. 그리고, **RISC-V GNU 툴체인** 을 설치한다. $ sudo apt-get install gcc-riscv64-linux-gnu 마지막으로 QEMU를 설치한다. $ sudo apt-get install qemu-system-misc 이걸로 개발환경 세팅하는건 준비가 끝났다. 그리고 git clone으로 xv6-riscv 리포지토리를 다운로드 받고, Makefile 파일에서 명시가 되어 있는대로 **`make qemu`** 명령을 실행하면 일단은 Hello World를 띄울 수는 있게 되는 셈이다. **2025-08-06** 01:30 Hello World는 끝났다. Hello World도 끝났겠다, 소스코드를 하나하나 다 까보고 있는데, 이럴수가.. 어떻게 보면 당연한 소리겠지만, 외부 라이브러리를 끌어다 쓰지 않는다. stdmem.h, stdio.h 등 우리가 통상적으로 C 언어를 학습할 때 가져다 쓰는 표준 헤더 파일을 가져다 쓰는 것이 아니라 **가져다 쓰는 모든 것들이 같은 프로젝트 안에서 하나하나 자체 구현되어 있다.** 운영체제를 밑바닥에서 구축하는 실습 과제이니 어떻게 보면 당연할 수도 있겠다. 덕분에 소스코드 하나하나를 음미하는 맛은 있을 것 같다. 암튼, 이왕 할거면 재밌게 실습하자는 의미에서, 부트시퀀스가 일어나는동안 릭롤링 아스키아트가 화면에 출력되도록 **`main.c`** 파일을 커스터마이징했다. 이제 모든 준비가 끝났다. 헬로월드를 띄웠으니, 과제로 넘어가보자. ## H.1 Intro Project 이젠 진짜 시작이라고 볼 수 있는 **H.1 Intro Project** 스텝에 도전할 차례다. 과제에 대한 설명은 여기에 있다. **2025-08-06** 23:30 H.1 과제에서 해야하는 일은 나만의 시스템 콜(`int getreadcount(void)`)를 정의하는 것이다. `getreadcount` 함수를 정의하는 것 자체의 요구사항은 어렵지 않다. 커널이 부팅된 이후로 유저 프로세스에서 `read()` 시스템 콜이 몇번 호출되었는지만 반환하면 된다. 간단하게 접근해보자면, 이렇게 접근할 수 있을 것이다. 1. 어떤 카운터 변수(`readcount`)를 정의한다. 2. `read()` 시스템 콜이 호출될 때마다 카운터 변수의 값이 1씩 증가하게 한다 (ex. `readcount += 1`) 3. `getreadcount()` 함수를 호출했을 때, `readcount` 변수에 들어있는 값을 출력한다. 접근만 생각했을때는 굉장히 간단하다. 근데, **어떻게 시스템 콜을 정의할 지** 랑, **시스템 콜을 올바르게 정의했는지를 어떻게 테스트하는지** 가 관건이다. ### 심층 분석 먼저, 시스템 콜을 어떻게 정의하는지를 살펴보자. **2025-08-08** 08:50 **OSTEP** 에 따르면, Chapter 5(Mechanism: Limited Direct Execution)에서 시스템 콜(System Call)에 대해서 설명하고 있다. 적당히 요약하자면, > **시스템 콜** 은 유저 프로그램에서 파일시스템 접근/프로세스 생성/메모리 확보 등을 할 수 있도록 커널에서 functionality를 제공해주는 것이다. > 시스템 콜을 실행하기 위해서, **프로그램은 반드시 trap 이라는 특별한 instruction을 실행해야 한다.** 이 instruction은 kernel의 **trap table** 로 점프하며 kernel mode로 privilege가 바뀌게 된다. kernel mode에서 privileged operation을 실행하고 나면, OS에서는 다시 **return-from-trap** 이라는 instruction을 실행하여 user mode로 다시 복귀한다. **2025-08-13** 20:30 어떤 시스템 콜을 사용할 수 있는지는 **kernel/syscall.c** , **kernel/syscall.h** 에 정의되어 있다. **user/user.h** 에서는 유저 레벨에서 커널에 접근할 수 있도록 어떤 시스템 콜을 호출할 수 있는지 나열되어 있고, **kernel/sysfile.c** 에 각 시스템 콜이 어떻게 세부적으로 구현되어 있는지 볼 수 있다. 그리고, user/usys.pl 스크립트에서는 각 시스템 콜을 호출하는 어셈블리 코드를 자동 생성하고 있다. 각각의 코드들이 어떻게 유기적으로 연결되는지 살펴보자. `write` 시스템 콜을 예시로 들어보겠다 #### 유저 모드에서의 trap 유저 모드에서 내가 `write()` 같은 함수를 부르면, 사실은 **`usys.S`**에 있는 아주 짧은 어셈블리 코드가 실행된다. 이 코드는 해당 시스템 콜 번호를 **`a7` 레지스터**에 넣고, `ecall`을 호출한다. 이 순간, CPU는 유저 모드 → 커널 모드로 전환되고, **트랩 벡터** 에 등록된 진입점으로 점프한다. # user/usys.S ... .global write write: li a7, SYS_write ecall ret ... #### 커널 모드로 진입(usertrap) 커널 쪽에서는 `trap.c`의 `usertrap()` 함수가 호출된다. 여기서 "이건 시스템 콜 트랩이구나"를 인식하면 `syscall()` 함수를 호출해서 실제 시스템 콜 처리 경로로 넘겨준다. // user/trap.c void usertrap(void) { ... syscall(); ... usertrapret(); } #### 시스템 콜 호출 **kernel/syscall.h** 에는 각각의 시스템 콜에 대한 **system call number** 라는 것이 assign(ex. fork는 1번, close는 21번)이 되어 있고, **kernel/syscall.c** 에는 시스템 콜 테이블을 각각의 system call number로 할당된 시스템 콜을 모아놓은 배열로서 `syscalls` 배열로 정의하고 있다. // kernel/syscall.h #define SYS_write 16 // kernel/syscall.c static uint64 (*syscalls[])(void) = { ... [SYS_write] sys_write, }; `syscall(void)` 함수는 현재 프로세스의 `trapframe`에서 **`a7` 값(=시스템 콜 번호)**을 읽고, 그 번호에 맞는 함수를 `syscalls[]` 배열에서 찾아 호출한다. 그 결과값은 다시 `trapframe->a0`에 저장되는데, 이 값이 유저 모드로 돌아갔을 때 C 함수의 반환값이 된다. // kernel/syscall.c void syscall(void) { int num; struct proc *p = myproc(); num = p->trapframe->a7; if(num > 0 && num < NELEM(syscalls) && syscalls[num]) { // Use num to lookup the system call function for num, call it, // and store its return value in p->trapframe->a0 p->trapframe->a0 = syscallsnum; } else { printf("%d %s: unknown sys call %d\n", p->pid, p->name, num); p->trapframe->a0 = -1; } } 그리고, 다시 **user/usys.S** 코드를 보면, `SYS_write`라는 시스템 콜 번호를 a7 레지스터에 적재해놓고 ecall 명령어를 실행하면, 시스템 콜 테이블에 등록된 시스템 콜(`sys_write`)을 호출하는 부분을 확인할 수 있는데, 이 함수가 어디에 정의가 되어있는지 확인을 하고 싶다면... **kernel/sysfile.c** 에서 `sys_write`가 어떻게 정의되어 있는지 확인할 수 있다. // kernel/sysfile.c uint64 sys_write(void) { struct file *f; int n; uint64 p; argaddr(1, &p); argint(2, &n); if(argfd(0, 0, &f) < 0) return -1; return filewrite(f, p, n); } #### 유저 모드로 복귀 시스템 콜이 끝나면 `usertrapret()`이 실행돼서 커널 모드 → 유저 모드로 복귀한다. 트램폴린 코드를 거쳐 `sret` 명령으로 돌아가면, 유저 모드의 어셈블리 stub(`usys.S`)이 반환값을 그대로 받아서 내가 호출했던 `write()` 함수 호출 결과로 돌려준다. // user/trap.c void usertrap(void) { ... syscall(); ... usertrapret(); } ### 해답 여기서 내가 할 수 있는 action item은 이렇게 볼 수 있다. 1. **kernel/syscall.h** , **kernel/syscall.c** 에서 trap 2. **kernel/sysfile.c** 에서 `getreadcount` 시스템콜 구현하고, `read` 시스템 콜을 호출할 때마다 `readcount` 변수가 증가하도록 하기 3. **user/user.h** 파일을 수정해서, 유저 모드에서 `getreadcount` 시스템콜을 호출할 수 있도록 빈칸 뚫어주기 4. **user/usys.pl** 스크립트에서 생성하는 어셈블리 코드(**user/usys.S**)에 `getreadcount` 시스템 콜에 대한 stub 정의하기 먼저, **user/usys.pl** 파일에서는 `getreadcount` 시스템 콜에 대한 stub를 생성하는 코드를 추가한다. # user/usys.pl ... entry("getreadcount"); # user/usys.S ... .global getreadcount getreadcount: li a7, SYS_getreadcount ecall ret ... 그리고 **user/user.h** 에서는 `getreadcount` 시스템콜을 유저모드에서 호출할 수 있도록 선언하고 // user/user.h uint64 getreadcount(void) **systcall.h** 에서는 `getreadcount` 시스템 콜의 번호를 정의한다. // kernel/syscall.h #define SYS_getreadcount 22 **syscall.c** 에서는 `syscalls` 배열에 시스템 콜 번호(`SYS_getreadcount`)와 `getreadcount` 시스템 콜을 짝지어 준다. // kernel/syscall.c extern u64t getreadcount(void); ... static uint64 (*syscalls[])(void) = { ... [SYS_write] sys_write, }; 그리고 **sysfile.c** 에서는 전역 범위에서 사용되는 `readcount` 변수를 정의 후, `read` 함수가 정의된 부분에 `readcount` 변수가 증가하는 코드를 집어넣고, `getreadcount` 함수를 정의하면 된다. // kernel/sysfile.c static u64t readcount; ... uint64 sys_read(void) { struct file *f; int n; uint64 p; readcount += 1; argaddr(1, &p); argint(2, &n); if(argfd(0, 0, &f) < 0) return -1; return fileread(f, p, n); } ... uint64 sys_getreadcount(void) { return readcount; } ### 추가적인 고민 : getreadcount의 원자성 보장하기 **2025-08-13** 23:00 여기에 문제가 하나 있다. `read`를 할 때마다 `readcount` 라는 값이 원자적으로 증가한다는 것을 어떻게 보장할 수 있을까? 정답은 `readcount` 변수의 선언부에 **`_Atomic`** 지시어를 추가하는 것이다. **`_Atomic`** 지시어로 선언된 변수는 이에 대한 증감연산자로 인한 연산이 원자적이라는 것을 보장한다. **`_Atomic`** 타입 지시어에 대한 설명은 여기를 참고해보자 그렇다면, 실제로 원자적인지 아닌지는 어떻게 프로그램으로 테스트할 수 있을까? 우리가 해볼 수 있는 것은 프로세스를 여러개 fork 띄우고, 거기다가 read를 시행하는 횟수를 엄청 늘리는 것이다. 엄청 큰 파일을 읽는다고 하더라도 그걸 재현하는데에는 무리가 있으니, 그냥 무의미한 read 시스템콜을 계속 호출하게 두는 것이다. 따라서, 실험용 프로그램은 이렇게 짤 수 있을 것이다. 이제는 **시스템 콜을 올바르게 정의했는지** 를 테스트할 수 있다. // h1_readcount.c #include "kernel/types.h" #include "kernel/fcntl.h" #include "kernel/stat.h" #include "user/user.h" int main(int argc, char *argv[]) { int nproc = 4; int loops = 10000; if(argc == 3){ nproc = atoi(argv[1]); loops = atoi(argv[2]); } uint64 before = getreadcount(); for(int i = 0; i < nproc; i++){ if(fork() == 0){ char dummy; for(int j = 0; j < loops; j++){ read(0, &dummy, 0); } exit(0); } } for(int i = 0; i < nproc; i++) wait(0); uint64 after = getreadcount(); uint64 delta = after - before; uint64 expected = (uint64)nproc * (uint64)loops; printf("before=%lu after=%lu delta=%lu expected=%lu\n", before, after, delta, expected); if(delta == expected) printf("PASS: atomic increments\n"); else printf("FAIL: lost increments\n"); exit(0); } **`_Atomic`** 지시어를 추가하지 않은 버전의 실행결과 $ h1_readcount 10 10000 before=22 after=100021 delta=99999 expected=100000 FAIL: lost increments $ h1_readcount 10 10000 before=100043 after=200042 delta=99999 expected=100000 FAIL: lost increments $ h1_readcount 10 10000 before=200064 after=300063 delta=99999 expected=100000 FAIL: lost increments **`_Atomic`** 지시어를 추가한 버전의 실행결과 $ h1_readcount 100 1000 before=22 after=61022 delta=61000 expected=100000 FAIL: lost increments $ h1_readcount 10 10000 before=61044 after=161044 delta=100000 expected=100000 PASS: atomic increments $ h1_readcount 10 10000 before=161066 after=261066 delta=100000 expected=100000 PASS: atomic increments $ h1_readcount 10 10000 before=261088 after=361088 delta=100000 expected=100000 PASS: atomic increments $ h1_readcount 10 10000 before=361110 after=461110 delta=100000 expected=100000 따라서, `readcount` 변수 선언부에 **`_Atomic`** 지시어를 추가하는 것으로, 여러 프로세스에서 read 시스템콜을 호출하더라도 `readcount`가 원자적으로 증가하는 것을 보장할 수 있었고, `getreadcount` 시스템 콜에서도 정확히 read 시스템 콜을 호출한 수만큼 값이 반환되는 것을 확인할 수 있었다. ### 정리 * **`_Atomic`** 지시어를 사용해 다중 프로세스 환경에서도 readcount 증가의 원자성을 확보했다. * xv6의 시스템 콜 정의 구조(**syscall.h** , **syscall.c** , **usys.pl** ...)를 직접 손보며 전체 흐름을 익혔다. 위의 삽질의 흔적들은 https://github.com/malkoG/xv6-riscv/tree/h1-getreadcount 여기에서 구경이 가능하다. ## Reference * _Atomic 타입 지시어에 대한 설명 : https://en.cppreference.com/w/c/language/atomic.html * RISC-V 어셈블리에서 시스템 콜을 호출할때 시스템 콜 번호를 왜 a7 레지스터에 적재하는지에 대해 설명되어 있다. https://man7.org/linux/man-pages/man2/syscall.2.html * RISC-V 어셈블리 코드를 해석하는 데 있어서 도움이 되었던 Cheatsheet : https://projectf.io/posts/riscv-cheat-sheet/
0 0 0 0
OSTEP 독학 일지 - H.0. update: 2025-08-04 > 본 글은 Operating Systems : Three Easy Pieces라는 교재를 독학하는 여정을 기록으로 남기기 위한 시리즈 글입니다. 2019년 이후로 개발 경력을 시작한 지, 6년. 전공자이지만, 다시 OS 기초 공부를 시작한다. 새로운 도전, 챌린징한 도전을 원하고 있는 입장에서 좀 더 나은 환경의 회사를 노리고 취업을 준비하고 있는데, 그러려면 더더욱 기본기로 승부를 해야 한다. **" 기본기란 무엇인가?"** 라는 질문에 대해서는 많은 해석의 여지는 있을 수 있겠지만, 경력이라는 숫자는 제외하고, 최소한 **" 다른 신입 개발자들이랑 공정한 환경에서 승부 했을 때 내가 경쟁력을 가질 수 있는 것인가?"** 라는 물음에는 당당하지는 못하겠다. 요즘은 더더욱 신입 개발자들의 수준이 상향 평준화 되어 있는데, 너무 안일하게 가만히 있다가는.... 과거의 영광만 남아있고, 경력자라는 자아만 비대하고 신입 개발자에게 본보기가 되기도 어려운 사람으로 남게 되리라는 불안감도 있다. ### 어쩌다 처음부터 다시 공부하게 되었는가? 다시, 돌아와서. 한참 전에 운영체제 수업을 들었는데도 불구하고 다시 운영체제를 처음부터 다시 공부하는 것도 참 비효율적이긴 하다. 비효율적인데 어쩔 수 없다. 기술 면접에서 나오는 단골 질문 **" XX란 무엇인가요?"**, **" XX에 대해서 설명해보세요"** 같은 질문에 똑 부러지게 설명하기가 어렵다는 것을 인정한다. 운영체제 수업도 분명 열심히 들었고, 학점도 A+ 받고, 코딩 과제는 더더욱 자신 있었던 항목이었어서 무난하게 패스 해 오긴 했는데, 수업을 들은 지 8년이 지난 지금, 머릿속에 남은 게 거의 없다. 개발 경력을 시작한 6년 전 이후로, 취업 준비 활동도 본격적으로 하는 게 이번이 처음인데, 굵은 원서 책을 붙잡고 공부하는 것도 굉장히 오랜만이다. 시간이 지나서 학습 능력이 더 둔화된 것 같지만, 한계는 극복해야겠지. 체계적으로 학습하기엔 주의력이 산만했다 같은 변명으로 넘기고 싶지도 않고, 다른 사람들이랑 경쟁할 때 공정한 조건에서 경쟁하고 당당하게 인정받겠다는 것이 내 원칙이다. ### 그래서 계획은 어떻게 되는가? simnalamburt님을 포함해서 몇몇 지인들이 자주 추천하는 책이 OSTEP이라서, 이 교재를 기준으로 독학을 진행 중이다. 이론이 빼곡하게 적힌 두꺼운 책을 집중해서 읽는 것도 굉장히 오랜만이다. 초심으로 돌아가서 제대로 경쟁한다 생각해야지. 물론, 과제를 먼저 진행하고 모르는 건 교재를 찾아보는 식으로 진행하게 될 것 같다. 과제는 이 책에 포함된 과제 프로젝트인 xv6인데, MIT에서 운영 체제 엔지니어링 코스의 교육 목적으로 개발된 운영 체제이다. 모자란 부분을 의도적으로 뚫어놓고, 그 빈자리를 스텝 바이 스텝으로 채워 가는 전형적인 프로젝트 과제다. xv6 실습을 진행하면서 모르는 것도 찾아보고 직접 내 힘으로 만들어보는 과정에서의 OS가 어떻게 만들어지는 것인지, OS 자체가 구체적으로 어떻게 동작하는지 체화하는 루틴을 가져보고자 한다. 그러면서 **CS 면접 단골 문제** 도 겸사겸사 공략하는 방향으로 전략을 세웠다. xv6 과제에 대한 목차는 여기에 공개가 되어 있다. https://pages.cs.wisc.edu/~remzi/OSTEP/lab-projects-xv6.pdf 앞으로 연재할 글들은 xv6 프로젝트의 세부 과제들을 한 단계, 한 단계 공략하면서 연재하게 될 것 같다. 이렇게 목차만 훑어봤고, 자세한 내용은 각각 직접 부딫혀 보면서 알게 될 것 같다. 앞에 H가 붙은 이유는 OSTEP에서 xv6 과제에 대한 설명이 Appendix H에 붙어있어서 그렇게 이름이 붙은 것 같다. * H.1 Intro Project * H.2 Processes and Scheduling * H.3 Intro to Virtual Memory * H.4 Copy-on-write Mappings * H.5 Memory mappings * H.6 Kernel Threads * H.7 Advanced Kernel Threads * H.8 Extent-based File System * H.9 Fast File System * H.10 Journaling File System * H.11 File System Checker ### 앞으로의 방향성은? 다음에 이어질 글들을 머릿속에 어떤 방향으로 써 갈 지는 확고해졌다. 실은, 이 글을 쓰고 있는 지금, 2025년 8월 4일 기준으로 진행 중에 있는 **OSSCA 2025**[1]멘토링 과정 중간 레포트를 쓰다가 **" 이런 글을 한번 써볼까?"** 하고 영감을 받은 데 서부터 충동적으로 시작했다. 내가 어떤 사고의 흐름으로 이슈를 남겼는지 배경을 설명하고, 내가 어떤 문제 의식에서 이슈를 잡고 풀 리퀘스트를 올렸는지, 그리고 풀 리퀘스트가 머지 되기 까지 어떤 일들이 있었는지 서사를 기록하는 과정에서 **공부한 내용을 기계적으로 정리하는 글을 쓰지는 않고 싶다.** 요약 정리하는 블로그를 운영할까 싶기는 했었지만, 기계적으로 정리하는 것은 시간도 많이 걸릴 뿐만 아니라, 머릿 속에 남는 일도 적다. 단순히, 개조식으로 정리한 글들은 기억을 덤프 뜨기에는 좋기는 하지만, 여러 개념들이 유기적으로 이어지게 다듬어지지는 않는다. 프로젝트 과제의 각 스텝을 밟아 가면서 쓰는 글인 만큼, **나름대로의 서사가 있는 흐름의 글을 쓰고 싶다.** 단순히 글을 쓰는 사람 입장에서가 아니라, 글을 읽는 입장에서도 재밌게 읽을 수 있는 스토리를 써가고 싶다. 어떤 것을 만드는 과정에서 어떤 우여곡절이 있었고, 그 과정에서 어떤 것들을 발견했고, 그것들을 어떻게 내 것으로 만드는 과정을 정제된 기록으로서 남겨두면 어디 가서 썰 풀기도 좋을 만한 소재가 되지 않을까? 라는 생각도 든다. 기술 면접도 어떻게 보면 **"내가 제일 자신 없는 종목"**이라기 보다는 **"내가 아는 거 썰 풀기 좋은 시간"**이라고 발상을 바꿔볼 수도 있을 것 같다. 사실은 취업준비도 해야 하니까~ 겸사겸사 해보면 나쁘지 않잖아~ 겸사겸사 이런 글이 게시될 해커스펍에도 읽을 만한 글 늘릴 수 있고 좋잖아~ * * * 1. OpenSource Software Contribution Academy ↩︎
0 1 0 0
a very occasional diary @ Nikita Danilov | What is cosh(List(Bool))? Or beyond algebra: analysis of data types.

Trying to re-read https://cofault.com/aodt.html and with generous searching I can kinda get to like 1/3d of it. But when they start throwing in derivatives of datatypes my brain just goes 🤯. Phew...

#maths #computer_science

0 1 0 0
Preview
Alan Turing: "I am building a brain." Half a century later, its successor beat Kasparov The chair of the Alan Turing centenary celebrations, Professor S. Barry Cooper of Leeds University, continues his guest blog for the Guardian Northerner with a look at a legendary chess match

"A computer would deserve to be called intelligent if it could deceive a human into believing that it was human."

By Alan Turing (born #OTD in 1912). In: Computing Machinery and Intelligence (1950)

www.theguardian.com/uk/the-north...

#computer_science

15 6 1 1
Preview
SAK University: New Educational Frontier in Tokyo for Essex Degrees SAK University in Tokyo partners with the University of Essex, offering innovative AI and computer science degree programs entirely in Japanese.

SAK University: New Educational Frontier in Tokyo for Essex Degrees #Japan #Tokyo #Computer_Science #SAK_University #University_of_Essex

0 0 0 0
Preview
Emily Griffith Technical College and CSU Global Streamline Student Transitions to Enhance Career Opportunities Emily Griffith Technical College and CSU Global have formed a partnership to facilitate smoother transitions for students pursuing degrees in Computer Networking and Accounting, enhancing their opportunity for career advancement.

Emily Griffith Technical College and CSU Global Streamline Student Transitions to Enhance Career Opportunities #United_States #Denver #CSU_Global #Emily_Griffith #Computer_Science

0 0 0 0
Post image

Optical and Physical Concepts in Colloidal and Material Science
#Physics #Optics #Computer_Science #Data_Science #Chemistry #Applied_Mathematics_and_Statistics #Microscopy_imaging #Python #Cpp #AI

viadean.notion.site/Optical-and-...

0 0 0 0
Preview
Over 250 CEOs Unite to Advocate for Computer Science Education for All Students In a groundbreaking initiative, more than 250 CEOs advocate for universal computer science and AI education for students, aiming to equip them for future careers.

Over 250 CEOs Unite to Advocate for Computer Science Education for All Students #USA #Seattle #AI_Education #Code.org #Computer_Science

0 0 0 0
Preview
ZeroPivot - Overview Never too stinky. ZeroPivot has 69 repositories available. Follow their code on GitHub.

github.com/ZeroPivot

Going to make a Game Engine from scratch update later...
#indiegamedev #indiedev #gamedev #hyena #stripedhyena #thefieldtester #gamedevelopment #indiegamedevelopment #softwareengineering #computerscience #software_engineering #computer_science #mathematics #physics #spiritology

6 3 0 0
Preview
Let's use Python to create a Terence Howard approved calculator YouTube video by Mad Computer Scientist

www.youtube.com/live/ynHy8Og... Join me at 10 PM EST tonight when I attempt to write a "Terryology" calculator. Let's see if we can make Terrence Howard's alternative math work. #programming #python #computer_science #math #mathematics

1 0 0 0
Faulty Logic Fridays: AI Will Destory Us All!
Faulty Logic Fridays: AI Will Destory Us All! YouTube video by Mad Computer Scientist

Join me for Faulty Logic Fridays, where we find out that AI will destroy us all!

www.youtube.com/watch?v=7k7F...

#programming #computer_science #AI

0 0 0 0