cmc-csci143
cmc-csci143 copied to clipboard
Extra Credit
Various extra credit opportunities will be posted into this github issue.
You will get +1 extra credit for submitted a pull request that gets accepted to this repo (or any other class repo). Minor typo fixes are encouraged.
The commits must be created using Vim and the CLI git interface (and not e.g. pressing the "edit" button on the top of a page). The submission of the pull request can be done through the github interface.
Pull requests after the first will be worth less extra credit. (But they will make me like you a lot, so please still submit if you find a mistake!)
You can get +1 extra credit for teaching me something surprising that I didn't know about the class material.
You can get +1 extra credit for hacking the lambda server in any way that results in a privilege escalation.
You can get +1 extra credit for hacking the typespeed game. See https://github.com/mikeizbicki/cmc-csci143/blob/2025spring/caveat_tasks/typespeed.md for details.
If you get the lambda server extra credit above, then this extra credit will be "trivial". But there are other ways to get this extra credit than privilege escalation.
This extra credit is designed to help you recover points that you might have lost on the shell quizzes by providing an alternative way to demonstrate that you've mastered the material.
Background:
Wargames are a popular mind sport in the hacking community. They are a series of puzzles that require you to learn new hacking techniques in order to advance to the next level.
The website https://overthewire.org hosts several popular wargames, the easiest of which is bandit. Each level in this game is designed to teach you new skills for using the terminal through an ssh connection.
Extra Credit:
Bandit has 35 levels. You will receive 1 extra credit point for completing level 10, 20, 30, and 35. (For up to 4 extra credit points in total.)
Each level should take 5-10 minutes, but could take longer and will require you doing your own independent research on how to solve tasks.
Other Rules:
-
Students who took CSCI046 with me are not eligible for this extra credit.
-
You may NOT work with any other students on this task.1. You may earn at most 1 point/week on this extra credit. (So you can't just try to binge it at the end of the semester to make up missing points.)
-
To claim your extra credit, let me know in person what levels you've completed. Office hours, before/after class, and during lab are all acceptable times.
Docker Swarm is a tool for deploying containers defined in a docker-compose.yml file to a cloud provider.
This tutorial shows how to use docker swarm to deploy to the digital ocean cloud service. To follow it, you'll need to claim your $200 student account credits.
If you do, you'll receive +2 points of extra credit. If you deploy to another cloud provider as well (e.g. AWS, Azure, Google Cloud), then you'll receive an additional +2 points of extra credit.
Kubernetes (k8s) is another "orchestration tool" for deploying containers to the cloud. It was developed by google, and much of google's infrastructure runs on kubernetes.
This tutorial uses kubernetes to build an amazon clone. If you complete the tutorial, you will earn +2 points extra credit. If you deploy your service to a cloud provider, you can earn +2 points of extra credit.

If you complete any 2 problems on https://datalemur.com, you will get +1 point of extra credit.
If you complete any of the following SQL games, you will get +1 extra credit / game:
- https://datalemur.com/sql-game
- https://mystery.knightlab.com/
- http://wwwlgis.informatik.uni-kl.de/extra/game/?lang=en
- https://sqlpd.com/
You may not collaborate on this extra credit.
I am open to suggestions on more extra credit designed to make up points on sql (or bash) quizzes. In the past, I offered +1 point / completed hard problem in the datalemur website above, but because there are solutions posted now, I can't do that this semester.
If anyone can find a set of problems that are similarly difficult and do not have solutions posted, then I will offer extra credit for completing those problems.
https://deadlockempire.github.io/ is a game about managing concurrency in C#. The language is obviously different than the sql/python combination we covered in class, but otherwise the principles are the same. (And C# is very similar to python.)
Therefore, I will award extra credit for completing the game. If you complete everything up to (and including) the "Locks" section, you will get +2 points of extra credit.
If you finish the entire game, you will get an additional +2 points. (These extra sections cover alternatives to locks that modern programming languages and operating systems support. Unfortunately, they are not implemented in standard SQL implementations. I would be excited to supervise a student thesis/research project on implementing some of these other methods as a library in Postgres.)
Collaboration Policy: You must complete this task by yourself.
Background: There are many videos linked below. Each video describes how a major company uses postgres, and covers some of their lessons learned. These videos were produced for various industry conferences and represent the state-of-the-art in managing large complex datasets. It's okay if you don't understand 100% of the content of each of the videos, but you should be able to learn something meaningful from each of them.
Instructions:
You will get $\log_2(\text{number of videos watched}+1)$ points of extra credit. For example, if you watch: - 1 video, you get 1 point - 2 videos, 2 points - 4 videos, 3 points - 8 videos, 4 points
For each video below that you choose to watch, write 3 things that you learned from the video. Email me your list and I'll award the extra credit.
Videos:
About postgres:
-
Scaling Instagram Infrastructure
-
The Evolution of Reddit.com's Architecture
-
Postgres at Pandora
https://www.youtube.com/watch?v=Ii_Z-dWPzqQ&list=PLN8NEqxwuywQgN4srHe7ccgOELhZsO4yM&index=38
-
PostgreSQL at 20TB and Beyond: Analytics at a Massive Scale (AdTech use of postgres)
-
Large Databases, Lots of Servers, on Premises, in the Cloud - Get Them All! (AdTech use of postgres)
-
Breaking Postgres at Scale (how to configure postgres for scaling from 1GB up to many TB)
-
Citus: Postgres at any Scale (Citus is a company specializing in scaling up postgres that Microsoft bought)
-
Data modeling, the secret sauce of building & managing a large scale data warehouse (The speaker is the Microsoft employee responsible for purchasing Citus)
https://www.youtube.com/watch?v=M7EWyUrw3XQ&list=PLlrxD0HtieHjSzUZYCMvqffEU5jykfPTd&index=6
-
Lessons learned scaling our SaaS on Postgres to 8+ billion events (ConvertFlow, another adtech company)
https://www.youtube.com/watch?v=PzGNpaGeHE4&list=PLlrxD0HtieHjSzUZYCMvqffEU5jykfPTd&index=13
About general software engineering:
-
Mastering Chaos - a guide to microservices at netflix
https://www.youtube.com/watch?v=CZ3wIuvmHeM&t=1301s
-
Why Google Stores Billions of Lines of Code in a Single Repository
https://www.youtube.com/watch?v=W71BTkUbdqE
(If you watch this, keep in mind it's an old 2015 video and try to imagine the increase in scale over the last 7 years.)
-
The kubernetes documentary. Recall that google's developed kubernetes as a more powerful version of docker-compose. (Note that this documentary has 2 parts, and you must watch both parts to count as a single video.)
https://www.youtube.com/watch?v=BE77h7dmoQU
https://www.youtube.com/watch?v=318elIq37PE