A must-take course for anyone thinking of becoming a Windows programmer! Have you studied C/C+, data structures, and operating system theory? If so, studying system programming is the answer now. Now it's time for practice!
Virtual memory system and memory operation techniques
Process management and shared memory-based IPC techniques
Creating and using DLL libraries
The basics of system programming, We'll get to the point!
If you are a C/C++ Windows developer System programming you must know.
Jeffrey Richter's "Windows Via C/C++" Did it feel too difficult?
You can now understand the book 『Windows Via C/C++ 5th edition』, which is known as the bible of system programming but is difficult to understand!
Attention Game Server Developers and Windows Application Developers!
Those aspiring to become Windows application developers, including game developers, learn C/C++ and data structures. They also study some CS theory. However, they often feel that this alone isn't enough . They know that systems programming is a must-have programming skill for becoming a professional developer, but the moment they open the book, they realize it's not an easy path, and self-study is impossible.
The solution is simple! Just as a high-level understanding begins with memorization, it's essential to fully master the core theories and examples that underpin systems programming.
So, I recommend it to these people.
Anyone who needs to develop C/C++ based Windows applications
Application developers based on older technologies such as MFC or Win32 API
Those who aspire to be game server programmers
System programming learners who want to experience the theory of operating systems at the code level.
The core of system programming Let me explain it in an easy-to-understand way!
1️⃣ You can understand the core theories such as understanding of multi-threaded programming environment and synchronization techniques.
2️⃣ By re-experiencing the theories you encountered while studying operating systems at the code level, your level of understanding of CS knowledge will significantly increase.
3️⃣ By actively utilizing the services provided by the operating system, including synchronous/asynchronous input/output, you can develop practical applications that are guaranteed to have high performance .
4️⃣ You can independently understand various theories and cases required for Windows application development, including high-performance servers.
This course explains the core theories of systems programming in an easy-to-understand manner! It's no exaggeration to say that the core of CS theory lies in operating systems and computer architecture. Native languages like C/C++ are difficult because they require a certain level of understanding of CS theory. This course will play a pivotal role in providing programming experience with the core systems theories essential for advancing to the pinnacle of CS theory.
In learning system programming Essential theory that is absolutely necessary.
We've condensed the theory you need to learn to the utmost extent possible, keeping only the essentials!
✅ Windows Security System
✅ Multithreaded programming techniques (creation and synchronization)
✅ Synchronous/asynchronous file input/output techniques using Win32 API
✅ Virtual memory system, heap, memory map
✅ Shared memory-based IPC
✅ DLL library creation technique
Process execution and privilege inheritance
Acquiring and committing independent virtual memory per process
64KB allocation size and 4KB page memory structure
Studying from Bible-level books is a good option, but it's never easy for beginners. No matter how good the content, it can be difficult to understand. This course is designed to open the way for you to more easily approach these difficult theories.
Q&A 💬
Q. Do I have to learn system programming to become a Windows application developer?
Yes, you absolutely must learn it. Even if you're simply developing a GUI, you'll often need a solid understanding of most of the theories covered in systems programming to solve problems.
Q. I'm a job seeker hoping to become a game developer. Will this course be helpful?
For game developers, systems programming isn't optional, it's essential. You need to master the basics covered in this course. You'll also need to study more advanced theories. However, after completing this course, you'll be able to understand the concepts on your own, even when you consult related materials.
Q. Do I need to take this course to become a security software developer?
If you want to develop software like V3, understanding systems programming theory is essential. Before moving on to kernel driver development, understanding systems programming is essential. Learning various attack/defense techniques, including reverse engineering, is difficult without understanding systems programming theory.
Q. I've only studied the C language and data structures. Can I still take this course?
Yes, you can. However, if you haven't studied operating systems, the content may be somewhat difficult. And even if you've studied the C language, you should definitely understand the following:
function pointer
Memory Class Specifiers and Memory Management
Stack frame designation principle
Binary file input/output
💾 Please check before taking the class.
This lecture is titled "Windows System Programming - Basics" and "Windows System Programming - Applications" will be released later.
This course uses Windows 11 and the Community version of Visual Studio 2022. Anyone with a Windows 10 or higher operating system and a PC capable of running VScode 2022 can easily take the course.
We provide PDFs and full example source code used in the lecture.
This course is designed for those with a basic understanding of the C language and experience implementing linear data structures like linked lists . Experience using development tools like Visual Studio in a Windows OS environment is also recommended. For more detailed prerequisite information, please refer to the information below.
C language and data structures, and some C++ language grammar (you can take the course even if you don't know anything about it)
Lecture "Becoming a Computer Science Major by Memorizing Broadly and Deeply"
Lecture "Minimal Operating System Theory: Easily Learned with Bear Book"
Lecture "C Programming: A Thorough Review" (Most Important Pre-requisite Knowledge)
Recommended for these people
Who is this course right for?
Anyone who wants to develop Windows system control software
Anyone who wants to develop security software or game servers
Anyone who needs to develop C/C++ Windows-based applications
Need to know before starting?
C programming that is deeply reminiscent
Understanding data structures
Operating system knowledge of virtual memory
Experience using development tools in a Windows environment (cf. VSCode)
Hello This is
38,674
Learners
2,263
Reviews
1,104
Answers
4.9
Rating
25
Courses
널널한 개발자 TV 채널 주인장이자 30년 넘게 IT기술의 바다를 항해하고 있는 개발자 입니다. 반갑습니다. ^^
(25/07/26/토 09:41)
Với nhiều nội dung trong bài giảng, tôi thực sự nhận được rất nhiều sự giúp đỡ. Tôi bắt đầu nghĩ rằng đồng bộ hóa là quan trọng. Trong bài giảng, việc thầy chia sẻ những trải nghiệm thực tế trong phần lưu ý thật tuyệt vời. Cảm ơn thầy đã tạo ra bài giảng hay như vậy.
Đây là quá trình học cơ bản về môi trường đa luồng và giúp hiểu tại sao phải học các hàm nhập xuất và con trỏ hàm trong ngôn ngữ C.
======
Lần này khi học lập trình hệ thống, tôi có cơ hội ôn lại phần nhập xuất của ngôn ngữ C. (Đã xem khoảng 2 lần nhưng không có tình huống cần sử dụng nên đã bỏ qua nhanh.)
Phần khó nhất là phần nhập/xuất file WIN32. Trước đó các phần kiến thức cơ bản CS và hệ điều hành OS đã quen mắt nên không khó thích nghi, nhưng phần này chưa từng thấy nên không hiểu nói gì... Không biết viết ví dụ như thế nào, sau khi ôn 3~4 lần và nghỉ một ngày thì lạ lùng thay nội dung trở nên đơn giản và dễ hiểu. Tất nhiên việc học tại sao các kiểu dữ liệu và hàm được gọi và sử dụng nhờ sự hỗ trợ của Copilot và GPT cũng là phần thưởng.
===
Sau quá trình trên, tôi dự định học lập trình socket - lập trình mạng. Vừa lúc ở học viện có nhiều máy tính nên có thể thực hành với 4 máy tính thì tốt(?), thấy nội dung này nên nghĩ là không thể tốt hơn để học.
===
Cuối cùng, tôi viết về tình huống hiện tại của mình với hy vọng có thể giúp đỡ những ai đang gặp khó khăn về tinh thần. (Hiện tại đang học backend với mục tiêu Java Spring tháng thứ 3 (dự kiến tối thiểu 1 năm rưỡi))
Hiện tại tôi đang làm việc 7 ngày/tuần từ thứ 2 đến chủ nhật. (Thứ 2-7 từ 6:30 sáng - 10:30 tối / Chủ nhật bao gồm thời gian đi lại từ 7 giờ sáng - 10 giờ tối)
---
Từ tuần trước đến tuần này, tôi đã suy nghĩ rất nhiều về vấn đề tiền bạc.
Số tiền kiếm được từ thứ 2 đến chủ nhật là 160, nhưng nếu bỏ học và tăng thời gian làm việc thí có thể nhận từ 260 ~ 430. Vì vậy tôi đã có suy nghĩ bốc đồng rằng thà làm việc chăm chỉ để kiếm tiền còn hơn. Nguyên nhân của sự bốc đồng đó là do hiện tại AI làm cho tiêu chuẩn ngành IT nâng cao, và mục tiêu của tôi là nhóm phát triển server, liệu GPT và AI học từ code review của các lập trình viên Google có không theo kịp không? Không biết con đường phía trước, thà kiếm tiền điên cuồng còn hơn.. Liệu tôi có thực sự đậu vào ngành này và khi tích lũy kinh nghiệm có làm tốt hơn AI không? Với những lo lắng và băn khoăn như vậy, tôi đã trầm cảm nặng.
Hiện tại đã nghỉ ngơi 3 ngày cho đến hôm qua và sắp xếp lại tâm trạng. Không có đáp án đúng và vì việc học hiện tại thú vị nên cứ tiếp tục như vậy! Không biết tình hình sau này sẽ ra sao nên hãy tiết kiệm tiền tối đa! Với hướng này tôi đã vượt qua và tiếp tục học.
Nói là lo lắng là do suy nghĩ quá mức để tương lai tốt hơn / vô lực là tín hiệu báo để sạc năng lượng cảm xúc.
Mọi người đều vất vả nhưng hãy cố gắng!
Cảm ơn phản hồi đã thể hiện trọn vẹn những băn khoăn của một cá nhân đang sống trong thời đại chuyển đổi đầy trăn trở. Bản thân tôi cũng là một người trụ cột gia đình trung niên đang có những băn khoăn tương tự nên càng đồng cảm hơn. Tiền...thực sự rất quan trọng. Có một nghệ sĩ từng nói rằng: "Người thì đi, nhưng tiền thì vẫn ở lại..." Trong xã hội tư bản, việc theo đuổi lợi ích của bản thân là điều rất đỗi hiển nhiên. Học tập cũng là một trong những phương tiện tốt để có được năng lực cạnh tranh. Tôi mong và sẽ ủng hộ bạn tích lũy năng lực như vậy để kiếm thật nhiều tiền. Bạn sẽ làm tốt thôi. Cảm ơn bạn. :)