The book is an attempt to teach the core principles in designing large-scale software systems. Large-scale software system design is a challenge in terms of getting the design right. The two important principles for large-scale software system design are loose coupling among modules and strong internal cohesion in modules. These two principles of large-scale software system design are explained using the linux kernel as a case study. Use of linux kernel for the study makes it easy for the student to appreciate it on a well known large open source project. The concept of coupling and cohesion are explained taking the linux kernel modules.The book also teaches how large software systems can be reengineered and introduces the concepts of object orientation from a practical perspective in large-scale systems. The book presents an approach to identify design patterns from C code. This book comes equipped with a CD, which would enable writing C++ drivers for BOSS-MOOL Linux Systems.