The Coding Challenge

Following ChatGPT's Guide to Land My Dream Google Internship.


I've always dreamed of interning at Google (Japan). When I saw that they were accepting interns that spoke English, I realized I didn't have much time to apply and that I didn't know much about APIs and network programming. So I decided that I needed to level up my coding skills to make it happen. And so I embarked on a 10-day coding challenge. I used ChatGPT to make a guide to becoming a coding wizard. (I would have liked to use Bard but it isnt available in Japan yet, and I don't have money for a VPN).


I'll be covering all the requirements listed, Systems software, Algorithms,Windows environments, APIs, TCP/IP and network programming.


After this intensive regimen, I'll be a coding wizard, ready to take on any challenge Google can throw at me. And who knows, maybe I'll even land that dream internship. So here's to ChatGPT's guide, and to becoming a coding master!


Day 1

Systems software or algorithms-Introduction to Computer Systems

 

Free Resource: ("Computer Science: Computer Systems" by Harvard University)

 

Starter Project: Write a program that prints out "Hello, World!" to the console.

 

Windows-Introduction to Windows

 

Free Resource: ("Windows 10 Tutorial for Beginners") by Britec09

 

Starter Project: Set up a new user account and customize the desktop background.

 

APIs-Introduction to APIs

 

Learn what APIs are and how they work

Watch this video:

 

Starter project: use an API testing tool (e.g. Postman) to make a simple request to a public API and see the response

 

TCPIP And Network programming-Introduction to TCP/IP

Learn the basics of TCP/IP protocol

Understand the layers in TCP/IP model

Learn about IP addressing and subnetting

Resources:

 

TCP/IP Fundamentals for Microsoft Windows: https://docs.microsoft.com/en-us/windows-server/networking/technologies/tcp-ip/tcp-ip-fundamentals

Introduction to TCP/IP:

 

Starter project:

 

Create a simple network diagram of your home network or a small network you know about.


Day 2

Systems software or algorithms:-Memory Management

Free Resource: ("Memory Management" by mycodeschool)

 

Starter Project: Implement a program that allocates and deallocates memory using malloc and free functions.

 

Windows-Basic Windows Navigation

 

Free Resource: ("Windows File Explorer Tutorial") by Teacher's Tech

 

Starter Project: Use File Explorer to navigate the file system and create a new folder.

 

APIs- HTTP Requests

 

Understand the basics of HTTP requests and responses

Watch this video:

 

Starter project: use Postman to make different types of requests (GET, POST, PUT, DELETE) to a public API and examine the responses

 

TCPIP And Network programming-Network fundamentals

 

Learn about networking devices such as routers, switches, and hubs

Understand how devices communicate with each other in a network

Resources:

Networking Fundamentals:

Computer Networking Tutorial - 15 - Network Devices:

 

Starter project: Set up a small home network with two computers and a router. Test the connectivity between the two computers.


Day 3

Systems software or algorithms-Algorithms and Data Structures

Free Resource: ("Data Structures and Algorithms" by Abdul Bari)

 

Starter Project: Implement the bubble sort algorithm to sort an array of integers.

 

Windows- Installing and Uninstalling Software

 

Free Resource: ("How to Install and Uninstall Software on Windows 10" by Britec09)

 

Starter Project: Use the Microsoft Store to install a new app and the Control Panel to uninstall an existing app.

 

APIs- API Design and Documentation

 

Learn the importance of good API design and documentation

Watch this video:

 

Starter project: examine the documentation of a public API and create a simple flowchart or diagram showing how to use the API

 

TCPIP And Network programming-Introduction to Network Programming

Understand what is network programming

Learn about socket programming

Understand the different types of sockets

Resources:

Introduction to Network Programming:

 

Socket Programming in C/C++:

 

Starter project:

Write a simple program in Python or C++ that creates a socket and connects to a remote server.


Day 4

Systems software or algorithms:-Operating Systems

Free Resource: ("Operating Systems" by mycodeschool-)

 

Starter Project: Implement a basic shell program that can execute simple commands.

 

Windows- System Settings

 

Free Resource: ("Windows 10 Settings You Should Change" by ThioJoe)

 

Starter Project: Customize the display settings and configure power settings.

 

APIs- JSON and XML

 

Understand the basics of JSON and XML and how they are used in APIs

Watch this video:

 

Starter project: make a request to a public API that returns JSON or XML data and examine the structure of the response

 

TCPIP And Network programming- TCP/IP Sockets

 

Learn about TCP/IP sockets and their uses

Understand the difference between TCP and UDP protocols

Learn about the Berkeley Sockets API

 

Resources:

TCP/IP Sockets in C: Practical Guide for Programmers: TCP/IP Sockets in C: Practical Guide for Programmers:

 

TCP/IP Sockets:

 

Starter project:

Write a simple chat program that uses TCP/IP sockets to communicate between two computers.


Day 5

Systems software or algorithms:-Computer Networks

Free Resource: ("Computer Networking" by Andrew S. Tanenbaum)

 

Starter Project: Implement a simple chat application using sockets.

 

Windows-System Maintenance

 

Free Resource:

("Windows 10 Maintenance" by Britec09)

 

Starter Project: Use the Disk Cleanup tool to free up disk space and the Windows Defender tool to scan for malware.

 

APIs- Authentication and Authorization

 

Learn about authentication and authorization in APIs and how to use API keys

Watch this video:

 

Starter project: make a request to a public API that requires an API key and examine the authentication process

 

TCPIP And Network programming- Network Security

 

Learn about network security concepts

Understand the different types of network attacks and how to prevent them

Resources:

 

Network Security Fundamentals: https://www.cisco.com/c/en/us/products/security/network-security-fundamentals.html

 

Network Security:

 

Starter project:

 

Set up a firewall on your computer and configure it to allow and block traffic.


Day 6

 

 

Systems software or algorithms:- Databases

Free Resource: ("Database Management Systems" by Jennifer Widom)

 

Starter Project: Implement a basic database application that can insert, update, and delete data.

 

Windows-Using Microsoft Office

 

Free Resource: ("Microsoft Office Tutorial for Beginners" by Anson Alexander)

 

Starter Project: Use Microsoft Word to create a new document and Microsoft Excel to create a new spreadsheet.

 

APIs- Error Handling

 

Understand how errors are handled in APIs and how to troubleshoot them

Watch this video: Watch this video:

 

Starter project: intentionally make a request to a public API that will return an error and examine the error response

 

TCPIP And Network programming- HTTP and DNS

Learn about HTTP protocol and its uses

Understand DNS and how it works

 

Resources:

 

HTTP:

 

DNS:

 

Starter project:

 

Write a program that connects to a web server using HTTP protocol and downloads a file.


Day 7

 

 

Systems software or algorithms:-Compiler Design

(Free Resource: "Compiler Design" by Alex Aiken)

 

Starter Project: Implement a basic compiler that can translate a simple programming language into machine code.

 

Windows-: Multimedia

 

(Free Resource: "Windows 10 Photos App Tutorial" by Teacher's Tech)

 

Starter Project: Use the Photos app to view and edit photos and the Windows Media Player to play music and video files.

 

APIs- Versioning and Rate Limiting

 

Learn about versioning and rate limiting in APIs and how to manage them

Watch this video:

 

Starter project: examine the documentation of a public API and determine how to handle versioning and rate limiting in requests

 

TCPIP And Network programming- Network Troubleshooting

Learn about common network problems and how to troubleshoot them

Understand the tools used in network troubleshooting

Resources:

 

Network Troubleshooting:

 

: Networking Tools

 

Starter project:

 

Troubleshoot a network problem on your home network.


Day 8

 

 

Systems software or algorithms- Computer Architecture

(Free Resource: "Computer Architecture" by David Wentzlaff)

 

Starter Project: Implement a simple CPU simulator that can execute basic arithmetic operations.

Windows- Backup and Restore

 

(Free Resource: "How to Backup and Restore Windows 10" by Britec09)

 

Starter Project: Use the File History tool to back up files and folders and the System Restore tool to restore the system to a previous state.

 

APIs- Using APIs in Web Applications

 

Understand how APIs are used in web applications and how to make client-side requests

Watch this video:

 

Starter project: create a simple web page that makes requests to a public API and displays the response

 

TCPIP And Network programming

Free Resources:

Video tutorial: ("What are Ports and Sockets?" by Eli the Computer Guy on YouTube)

 

Article: ("Understanding Sockets and Ports" by RealPython)

 

Starter Project: Build a simple client-server application that allows a user to send messages to the server and receive them back. The client should be able to specify the IP address and port number of the server to connect to.


Day 9

Systems software or algorithms:- Parallel Computing

Free Resource: ("Parallel Programming" by David Culler)

 

Starter Project: Implement a program that can calculate the value of Pi using the Monte Carlo method.

 

Windows- Remote Access

 

Free Resource: ("Remote Desktop Connection Windows 10" by Britec09)

 

Starter Project: Set up a remote desktop connection to another Windows computer.

 

APIs- Best Practices for Using APIs

 

Learn about best practices for using APIs, including error handling, caching, and security

Watch this video:

 

Starter project: examine the documentation of a public API and determine how to implement best practices when making requests


Day 10

Systems software or algorithms:- Review and Project Work

Free Resource: ("Project Euler")

 

Starter Project: Choose a problem from Project Euler and solve it using the concepts learned in the program.

 

Windows- Review and Project Work

 

Free Resource: ( "Windows 10 Training and Tutorials" by Microsoft)

Starter Project: Choose a project from the Microsoft training and tutorials resources and apply the concepts learned throughout the program.

 

APIs- API Project

 

Use your knowledge to create a project that uses a public API to solve a real-world problem or provide a useful service

Use any language or framework you are comfortable with

Examples of public APIs: OpenWeatherMap, Twitter, Google Maps, Yelp, GitHub

Participants should aim to complete each day's starter project before moving on to the next day's lesson. This will help them build on their knowledge and skills and reinforce their learning.

 

TCPIP And Network programming

Free Resources:

Video tutorial: ( "TCP/IP and OSI Model" by PowerCert Animated Videos on YouTube)

 

Article: ("An Introduction to Network Protocols" by Codecademy)

 

Starter Project: Build a simple packet sniffer that captures and displays information about network traffic, such as the source and destination IP addresses, ports, and protocols.