This is a collection of all resources on technology that we use and recommend you to read with us!
We have divided these in several categories that make them easier to digest.
- Competitive Programming
- Database Systems
- Distributed Systems
- Game Development
- Information Security
- Language Specific
- Machine Learning
- Networking
- Web Development
- System Administration
- Android Development
- How to add stuff?
- CS 97SI Introduction to Competitive Programming: Fantastic repository of theory and practice problems across various topics for students who are interested to participate in ACM-ICPC.
- E-Maxx Algorithms: A tutorial website which provides descriptions of many algorithms and data structures especially popular in field of competitive programming.
- Introduction to Algorithms: It's one of the most popular textbooks for university algorithm courses. This book covered various algorithms and data structures in great detail.
- Database Systems Course: Database systems is a course by Andy Pavlo based on the design and implementation of database management systems. The course also includes case studies on open-source and commercial database systems to illustrate design techniques and trade-offs. There are more courses in the series by Andy Pavlo focusing of different aspects of database systems.
- awesome-database-learning: awesome-database-learning is a list of learning materials to understand databases internals, including but not limited to papers, blogs, courses and talks.
- Database Internals: Database Intenals is a book to deep dive into how distributed data system works. The book contains relevant material gleaned from numerous books, papers, blog posts, and the source code of several open source databases.
- Distributed Systems for fun and profit: Distributed systems for fun and profit is an e-book focused on distributed programming and systems concepts one will need to understand commercial systems in the data center. The book is an excellent starting point for delving into distributed systems programming with resources to dive deep into some concepts.
- Designing Data-Intensive Applications: Designing data-intensive applications is an excellent book that bridges the massive gap between distributed systems theory and practical engineering. It helps developers make smart decisions as they design and implement data infrastructure and systems.
- Designing Distributed Systems: Designing Distributed Systems is a 160 pages e-book containing an introduction to distributed system concepts along with a more in-depth explanation for building robust distributed systems.
- r/gamedev: r/GameDev on Reddit is a community of 400K+ game developers that shares the latest techniques, tips and news, all related to the AAA and indie game development industry. You will find interesting project displays, blogs and technical help in this subreddit, all at one place.
- Game Developers Conference: The Game Developers Conference (GDC) brings the game development community together to exchange ideas, solve problems, and shape the future of the industry across five days of education, inspiration, and networking. Attendees include programmers, artists, producers, game designers, audio professionals, and business leaders. Check out the talks that happen at GDC on their YouTube channel.
- Red Blob Games: A site with great visual and interactive explanations of algorithms and data structures, mostly related to game development. A great place to learn and understand Procedural Generation/Textures.
- Paul Bourke: A site explaining stuff used in advanced 3D graphics, mostly procedural stuff. A specific page to get you started would be this Noise article where you'll find some creative uses of noise functions in terrain generation.
- Procedural World: This site is completely dedicated to Procedural Generation. A highly suggested read would be this page which suggests an approach to flatten bumpiness in lake-beds generated due to noise.
- liveoverflow: liveoverflow is a member of team Alles and makes videos about CTFs, bug hunting and cool vulnerabitlies, focusing primarily on binary exploitation and reverse engineering with occasional content about web security. His binary exploitation series, though a little tough to follow at first, is a great resource for beginners looking to get started in the field of infosec
- PortSwigger academy: PortSwigger offers detailed theory and a number of accompanying practice labs for popular web app vulnerabilities
- John Hammond: A youtube channel which regularly posts videos related to information security (mostly CTF related). This channel demonstrates the use of tools used in CTFs.
- Null Byte: The official Null Byte channel for video content! They focus on creating videos for aspiring ethical hackers, computer scientists, and the InfoSec community.
- Introduction to Cryptography by Christof Paar: This is a complete basic to intermediate level course on Cryptography by Professor Christof Paar. You would love how this course has completely nil (or maybe very minimum) prerequisites. The accompanying book for this course is available here
- Matasano Cryptopals: This is a set of challenges on Cryptography, covering all the classical topics in Cryptology, this acts as a cherry on top of the above course.
- TheChernoProject: TheCherno has been a quite valuable resource while developing our game engines, viz. Rubeus and Rootex (ongoing). This YouTube channel dives into advanced topics of C++ (although his earlier videos taught Java) occasionally while keeping a solid foundation based on just one thing: Building good C++ software. You will not find any random videos on things you will probably never use.
- Sentdex: Sentdex makes beginner friendly videos about everything python. From basic python, to Flask and Django, to Deep learning and sentiment analysis. Sentdex has got it all covered and is a great resource for anyone looking to familiarize themselves with python
- Automate the Boring Stuff with Python: Well, let's say you are py newbie. But you have a fire within to 'Build Things'. And you are to lazy to go down the long way. Then here's the place for you. An application based approach to learn one of the most popular programming languages.
- Go by Example: Wondering where to start learning Go? The tutorials bore you as hell? Why not learn by implementing mini examples that will keep engrossed till the end. This website covers all the important topics from the classic Hello World to Goroutines to HTTP servers using annotated example programs.
- justforfunc: Programming in Go: This Youtube channel features some popular as well as some unconventional takes on Go programming. From trying out Tensorflow Go to gRPC, it unfolds the potential of Go in an interesting way.
- The Rust Programming Language - Book: This is a book that explains Rust concepts, including Ownership and Borrowing, the key concepts of the language, and is hosted by the official rust-lang.org website.
- Stanford CS231n — Convolutional Neural Networks for Visual Recognition: This course is a deep dive into details of the deep learning architectures with a focus on learning end-to-end models for these tasks, particularly image classification.
- Stanford CS224n — Natural Language Processing with Deep Learning: This lecture series provides a thorough introduction to the cutting-edge research in deep learning applied to NLP, an approach that has recently obtained very high performance across many different NLP tasks including question answering and machine translation.
- Deep learning book: This textbook is a resource intended to help students and practitioners enter the field of machine learning in general and deep learning in particular.
- r/MachineLearning: r/MachineLearning on Reddit is a community of 900K+ machine learning enthusiasts that shares the latest research, discussions, projects etc, pertaining to machine learning.
- WildML: WildML is an excellent blog maintained by Denny Britz focused on Natural Language Understanding and Reinforcement Learning.
- Beej's Guide to Network Programming: Beej's Guide to Network Programming is little how-to guide on network programming using Internet sockets, or "sockets programming".
- Debian's linux networking guide: Debian's linux networking guide is a helpful resource to understand basics of linux networking along with introduction to concepts like ARP, Encapsulation, Subnetting etc.
- netdevconf: Netdevconf is a community-driven conference geared towards Linux netheads with focus on Linux kernel networking and user space network apps.
- Mozzila Developer Network: MDN is the one stop shop for learning all kinds of open web development technologies. You will find the best resources on HTML, CSS, JS, Web APIs, etc.
- SysAdvent: SysAdvent is a blog that posts one article about system administration for each day of December, with the goal.
- KataKoda: Katacoda is an interactive learning and training platform for software developers focusing on system administration. Each student is given access to a new environment without the need to install all the required components by themselves.
- Android Developer Fundamentals: This is a course made by Google which covers the basics of android development such as activities, intents, lifecycles, minimal UI, broadcast receivers, services, async-tasks and storage.
- Advanced Android Development: This course also made by Google focuses on advanced android development topics like fragments, sensors, performance optimization, geo-location, animations, audio/video streaming etc.
Open an issue/a PR and we will add it in
Open a PR and add it as a bullet-point.
## Previously Existing Topic
* my new resource