Welcome to the Advanced Technical Interview Prep course! By the end of this Advanced Technical Interview Prep class, you'll be able to: 1. Analyze and implement advanced algorithms such as Dijkstra's Shortest Path, A* Algorithm, and Bellman-Ford Algorithm in the context of graph search problems, though you’ll likely only need to be able to discuss them. 2. Evaluate the implications of Deadlock Detection and Prevention, as well as the CAP Theorem in distributed systems. 3. Apply knowledge of distributed databases and time management concepts, including Dynamo, Vector Clocks, and content distribution. 4. Demonstrate understanding of Consensus Algorithms, the Byzantine Generals Problem, and Byzantine Fault Tolerance using Merkle Trees. 5. Employ techniques like TFIDF for document corpus search and linear regressions in big data contexts. 6. Optimize database performance through the use of database indexes. 7. Research, develop, and present a technical talk on a complex topic within the domain of computer science or software engineering. 8. Use AI tools like OpenAI to enhance your learning experience and gain real-time explanations or code translations. ## Getting Started: We’ll be using [Repl.it](http://replit.com), [PythonTutor](https://pythontutor.com/), and the Python programming language in class to discuss programming. If you are new to coding, this course will be challenging! It should be fine if you took the previous two courses, even if you aren’t able to implement the algorithms yourself you can follow along, but if this is your first technical prep class it may be intimidating. Stick with it and you’ll feel less intimidated by these problems the next time you see them, and you can always ask any questions- you aren’t slowing down the class, and you might make it better!  [Here’s a quick introduction to Python & Problem Solving compiled from some fun TikToks I made.](https://www.youtube.com/watch?v=C_glRMKvgUM) As always, I encourage you to use AI Tools like OpenAI to get concepts explained on-the-fly to you, or code translated into your favorite language.  While you are in the course, begin adding leads for jobs you might want to apply to, to your own copy of [this spreadsheet](https://docs.google.com/spreadsheets/d/121-aXP1oZXIG37R6HF7aNoafE_EIce3aL1YwTREshSQ/edit#gid=157221054).  # Research Assignment During the course of this class, you’ll prepare an advanced tech talk to present to the entire GDI community this summer. You’ll research a topic and discuss the presentation & exercise with me. You’ll prepare roughly 20 minutes of introductory material and 1 exercise.  Topics must be technical, but don’t necessarily mean code only. This is a research & presentation opportunity, not just a presentation opportunity- so your goal is to learn something that is new to you and not just cover something you know well. (You can submit to teach topics you know already, separately.)  ## Algorithms/Topics Covered (in-order): This course is slightly different from the previous two courses, due to the advanced nature of the algorithms. We may need to revisit an algorithm more than once, so rather than a day-by-day plan we’ll just try to hit these algorithms in this order.  ### Graph Search Week - Dijkstra's Shortest Path Algorithm - [https://replit.com/@lizthedeveloper/Dijkstras-Shortest-Path-Graph-Search-Algorithm#main.py](https://replit.com/@lizthedeveloper/Dijkstras-Shortest-Path-Graph-Search-Algorithm#main.py) - A* Algorithm / Heuristics - [https://replit.com/@lizthedeveloper/Dijkstras-Shortest-Path-to-A#main.py](https://replit.com/@lizthedeveloper/Dijkstras-Shortest-Path-to-A#main.py) - Bellman-Ford Algorithm - [https://replit.com/@lizthedeveloper/Dijkstras-Shortest-Path-to-Bellman-Ford#main.py](https://replit.com/@lizthedeveloper/Dijkstras-Shortest-Path-to-Bellman-Ford#main.py) - [https://www.youtube.com/watch?v=ne9eZ4ezg0Y](https://www.youtube.com/watch?v=ne9eZ4ezg0Y) ### Distributed Systems Week [https://interviewing.io/guides/system-design-interview](https://interviewing.io/guides/system-design-interview) - Deadlock Detection and Prevention, CAP Theorem - Deadlock Notes: [https://hackmd.io/eQmyrmSbTPmYt41ffTefvw](https://hackmd.io/eQmyrmSbTPmYt41ffTefvw) - CAP Theorem: [https://hackmd.io/UxrzFcvsQwmtmuDWxVvV4g](https://hackmd.io/UxrzFcvsQwmtmuDWxVvV4g) - Distributed Databases & Time - Dynamo Notes: [https://hackmd.io/ovPb7L_uTm-Z1uD0W_T1mw](https://hackmd.io/ovPb7L_uTm-Z1uD0W_T1mw) - Vector Clocks Notes: [https://hackmd.io/IbIuVox5QmGi5le5rJqtNw](https://hackmd.io/IbIuVox5QmGi5le5rJqtNw) - Hashing & Content Distribution Notes: [https://hackmd.io/wqIdu3ErS4GR6yQvkYfGXw](https://hackmd.io/wqIdu3ErS4GR6yQvkYfGXw) - Consensus Algorithms, the Byzantine Generals Problem & Byzantine Fault Tolerance Using Merkle Trees - Notes: [https://hackmd.io/zCYrwlRtT-GXrYm7FxL-og](https://hackmd.io/zCYrwlRtT-GXrYm7FxL-og) - We may need to go over things like schema design, query optimization, and the math behind scale ### Big Data week - TFIDF & Document Corpus Search - [https://hackmd.io/A-behgA4RKudQ9WkeD02yg](https://hackmd.io/A-behgA4RKudQ9WkeD02yg) - Linear Regressions - [https://hackmd.io/PPgVx_XASfeg2u73jMFm5g?edit](https://hackmd.io/PPgVx_XASfeg2u73jMFm5g?edit) - Database Indexes - [https://hackmd.io/1SHTmzt7TsmbcYJMcG5DDA](https://hackmd.io/1SHTmzt7TsmbcYJMcG5DDA) Stretch Week - We’ll discuss this at the beginning of big data week We’ll cover a few more topics if we reach the end of class and still have time- to be voted on by class participants! ## Stretch Goals: - OWASP Top 10 Vulnerabilities - 1 day overview, & 7-layer OSI model - [https://hackmd.io/@VpNHZAV2SZq92cSD8FKBpw/S1uW_xw2o](https://hackmd.io/@VpNHZAV2SZq92cSD8FKBpw/S1uW_xw2o) - Identify The Bottleneck In A Distributed System - In one day: several interview questions around this with different types of systems - [https://hackmd.io/@VpNHZAV2SZq92cSD8FKBpw/HJJcNqvno](https://hackmd.io/@VpNHZAV2SZq92cSD8FKBpw/HJJcNqvno) - Test-Driven Development - How to drive test coverage from little to none, to a high level of test coverage  - [https://hackmd.io/@VpNHZAV2SZq92cSD8FKBpw/SJjvi4vno](https://hackmd.io/@VpNHZAV2SZq92cSD8FKBpw/SJjvi4vno) - Cloud Stuff - PubSub & Message Queueing (eg SNS) - Virtual Private Cloud & Cloud Networking & CIDR - Comment Here to suggest a topic Resources: - [Salary Negotiation Worksheet](https://docs.google.com/document/d/1Gt3QWS3pP-_LdNahIRM2rlKg7VILfj2qiPJcWSeayRg/edit#heading=h.c7p1bbfji8ah) - [https://interviewing.io/mocks](https://interviewing.io/mocks) - [https://greenteapress.com/thinkstats/](https://greenteapress.com/thinkstats/) - [https://emtemp.gcom.cloud/ngw/globalassets/en/articles/images/hype-cycle-for-emerging-tech-2022.png](https://emtemp.gcom.cloud/ngw/globalassets/en/articles/images/hype-cycle-for-emerging-tech-2022.png) - [https://www.codewars.com/](https://www.codewars.com/) - [https://www.freecodecamp.org/learn](https://www.freecodecamp.org/learn)  - [https://www.vinaysahni.com/best-practices-for-a-pragmatic-restful-api#restful](https://www.vinaysahni.com/best-practices-for-a-pragmatic-restful-api#restful) - [https://www.amazon.com/Designing-Web-APIs-Building-Developers/dp/1492026921](https://www.amazon.com/Designing-Web-APIs-Building-Developers/dp/1492026921) - [https://interviewing.io/guides/system-design-interview](https://interviewing.io/guides/system-design-interview) **