Fundamentals of High Level System Design
What you'll learn
- Considerations to be made while designing a large scale system
- The building blocks of large scale software systems
- Managing tradeoffs while designing large scale applications
- The must-knows to clear the system design interview
Requirements
- Background in Computer Science
Description
This course in introduction to the fundamentals of High-Level System Design. Whether you are an undergrad who wants to learn more about a distributed system or an aspirant to crack the system design interview in one of the top tech companies - this course is for you!
The course starts by higlighting some of the considerations and tradeoffs to be made while designing a large scale system. We are gonna cover the topics of Scalability, Reliability, Availability, and Performance.
Next, we dwell on the key system resources like - compute, storage, and network and how they can be scaled in a large scale system. We then cover some of the building blocks of large scale systems like Load balances, Proxies, Gateways, Caching solution and Databases
Finally, we wrap up with an introduction to inter-process communication in large scale applications. This is key to architecting large scale micro-service-based applications
This course is designed keeping in mind the current trends in computing is filled with real-world examples. The course has quizzes at the end of each topic to keep you engaged throughout.
I'm looking forward to you joining me on this journey of unravelling the art of designing large scale systems. Let's get started!
Who this course is for:
- Software Developers, Interviewees
Instructors
Hi! I'm a computer science graduate but more accurately a technology enthusiast. I'm currently working as a software developer. My interests include data science, software design, machine learning, and competitive coding.
I've worked on several large scale banking applications in the past. I'm primarily a backend-developer. I have work extensively on Java, the AWS stack, Hadoop, Kafka and Python.
Dr. Srinivasa K G is currently working as a Professor at NITTTR, Chandigarh. He received his Ph.D. in Computer Science and Engineering from Bangalore University in 2007. He is the recipient of All India Council for Technical Education – Career Award for Young Teachers, Indian Society of Technical Education – ISGITS National Award for Best Research Work Done by Young Teachers, Institution of Engineers (India) – IEI Young Engineer Award in Computer Engineering, Rajarambapu Patil National Award for Promising Engineering Teacher Award from ISTE – 2012, IMS Singapore – Visiting Scientist Fellowship Award. He has published more than 150 research papers in International Conferences and Journals. He has visited many Universities abroad as a visiting researcher – He has visited University of Oklahoma, USA, Iowa State University, USA, Hong Kong University, Korean University, National University of Singapore, University of British Columbia, Canada are his few prominent visits. He has authored eight text books in the area of Internet of Things, Data Analytics, Soft Computing, Social Network Analysis, High Performance Computing, R Programming etc with prestigious international publishers like Springer, TMH, Oxford, Cenage, and IGI Global. He has edited research monographs in the area of Cyber Physical Systems, Fog Computing and Energy Aware Computing with CRC Press and IGI Global. He has been awarded BOYSCAST Fellowship by DST, Govt. of India, for post doctoral fellowship at University of Melbourne, Australia towards conducting collaborative Research with Clouds Laboratory in the area of Cloud Computing. He is the principal Investigator for many funded projects from AICTE, UGC, DRDO, and DST. He is the senior member of IEEE and ACM. His research areas include Data Mining, Machine Learning, IOT, Cloud Computing and Digital Pedagogy. His recent research areas include Innovative Teaching Practices in Engineering Education, pedagogy; outcomes based education, and teaching philosophy.