├── .eslintrc.js
├── .firebaserc
├── .github
└── workflows
│ ├── firebase-hosting-merge.yml
│ └── firebase-hosting-pull-request.yml
├── .gitignore
├── .gitmodules
├── .prettierrc.js
├── .tool-versions
├── .yarnclean
├── LICENSE
├── data
├── courses.json
├── sidebars.json
└── testimonials.json
├── firebase.json
├── gridsome.config.js
├── gridsome.server.js
├── package.json
├── src
├── assets
│ └── images
│ │ └── favicon.png
├── components
│ ├── Ad.vue
│ ├── Footer.vue
│ ├── Header.vue
│ ├── header
│ │ ├── AlgoliaSearch.vue
│ │ ├── ExternalLinks.vue
│ │ ├── IconHomeLink.vue
│ │ └── PrimaryNavLinks.vue
│ ├── home
│ │ ├── GentleWave.vue
│ │ ├── Hero.vue
│ │ ├── HeroImage.vue
│ │ ├── Notebooks.vue
│ │ ├── Testimonials.vue
│ │ └── ThankYou.vue
│ ├── note
│ │ ├── Content.vue
│ │ ├── Sidebar.vue
│ │ └── Sidebar
│ │ │ ├── ActiveSidebarLink.vue
│ │ │ └── SidebarGroup.vue
│ └── notification
│ │ └── ThanksgivingDiscount.vue
├── index.html
├── layouts
│ ├── Default.vue
│ └── Note.vue
├── main.js
├── mixins
│ └── mailchimp.js
├── pages
│ ├── 404.vue
│ ├── Index.vue
│ └── Privacy.vue
└── templates
│ └── Note.vue
├── tailwind.config.js
└── yarn.lock
/.eslintrc.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | root: true,
3 | env: {
4 | node: true,
5 | },
6 | extends: [
7 | 'plugin:vue/essential',
8 | 'plugin:prettier/recommended',
9 | '@vue/prettier',
10 | 'plugin:gridsome/recommended',
11 | ],
12 | rules: {
13 | 'no-console': process.env.NODE_ENV === 'production' ? 'error' : 'off',
14 | 'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off',
15 | },
16 | parserOptions: {
17 | parser: 'babel-eslint',
18 | },
19 | }
20 |
--------------------------------------------------------------------------------
/.firebaserc:
--------------------------------------------------------------------------------
1 | {
2 | "projects": {
3 | "default": "omscs-notes"
4 | }
5 | }
6 |
--------------------------------------------------------------------------------
/.github/workflows/firebase-hosting-merge.yml:
--------------------------------------------------------------------------------
1 | # This file was auto-generated by the Firebase CLI
2 | # https://github.com/firebase/firebase-tools
3 |
4 | name: Deploy to Firebase Hosting on merge
5 | on:
6 | push:
7 | branches:
8 | - master
9 | jobs:
10 | build_and_deploy:
11 | runs-on: ubuntu-latest
12 | steps:
13 | - uses: actions/checkout@v4
14 | with:
15 | submodules: recursive
16 | - name: Install python2
17 | run: |
18 | sudo apt-get update
19 | sudo apt-get install python2
20 | - name: Install Dependencies
21 | run: yarn
22 | - name: Setup Node
23 | uses: actions/setup-node@v2
24 | with:
25 | node-version: '14.19.0'
26 | - name: Build
27 | run: yarn build
28 | - uses: FirebaseExtended/action-hosting-deploy@v0
29 | with:
30 | repoToken: ${{ secrets.GITHUB_TOKEN }}
31 | firebaseServiceAccount: ${{ secrets.FIREBASE_SERVICE_ACCOUNT_OMSCS_NOTES }}
32 | channelId: live
33 | projectId: omscs-notes
34 |
--------------------------------------------------------------------------------
/.github/workflows/firebase-hosting-pull-request.yml:
--------------------------------------------------------------------------------
1 | # This file was auto-generated by the Firebase CLI
2 | # https://github.com/firebase/firebase-tools
3 |
4 | name: Deploy to Firebase Hosting on PR
5 | on: pull_request
6 | permissions:
7 | checks: write
8 | contents: read
9 | pull-requests: write
10 | jobs:
11 | build_and_preview:
12 | if: ${{ github.event.pull_request.head.repo.full_name == github.repository }}
13 | runs-on: ubuntu-latest
14 | steps:
15 | - uses: actions/checkout@v4
16 | with:
17 | submodules: recursive
18 | - name: Install python2
19 | run: |
20 | sudo apt-get update
21 | sudo apt-get install python2
22 | - name: Install Dependencies
23 | run: yarn
24 | - name: Setup Node
25 | uses: actions/setup-node@v2
26 | with:
27 | node-version: '14.19.0'
28 | - name: Build
29 | run: yarn build
30 | - uses: FirebaseExtended/action-hosting-deploy@v0
31 | with:
32 | repoToken: ${{ secrets.GITHUB_TOKEN }}
33 | firebaseServiceAccount: ${{ secrets.FIREBASE_SERVICE_ACCOUNT_OMSCS_NOTES }}
34 | projectId: omscs-notes
35 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | *.log
2 | .cache
3 | .DS_Store
4 | src/.temp
5 | node_modules
6 | dist
7 | .env
8 | .env.*
9 | .firebase/
10 | yarn-error.log
11 | .vscode/
12 | .idea/
--------------------------------------------------------------------------------
/.gitmodules:
--------------------------------------------------------------------------------
1 | [submodule "notes"]
2 | path = notes
3 | url = https://github.com/m4ttsch/omscs-notes-notes.git
4 |
--------------------------------------------------------------------------------
/.prettierrc.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | singleQuote: true,
3 | semi: false,
4 | }
5 |
--------------------------------------------------------------------------------
/.tool-versions:
--------------------------------------------------------------------------------
1 | nodejs 14.19.0
2 |
--------------------------------------------------------------------------------
/.yarnclean:
--------------------------------------------------------------------------------
1 | # test directories
2 | __tests__
3 | test
4 | tests
5 | powered-test
6 |
7 | # asset directories
8 | docs
9 | doc
10 | website
11 | images
12 | assets
13 |
14 | # examples
15 | example
16 | examples
17 |
18 | # code coverage directories
19 | coverage
20 | .nyc_output
21 |
22 | # build scripts
23 | Makefile
24 | Gulpfile.js
25 | Gruntfile.js
26 |
27 | # configs
28 | appveyor.yml
29 | circle.yml
30 | codeship-services.yml
31 | codeship-steps.yml
32 | wercker.yml
33 | .tern-project
34 | .gitattributes
35 | .editorconfig
36 | .*ignore
37 | .eslintrc
38 | .jshintrc
39 | .flowconfig
40 | .documentup.json
41 | .yarn-metadata.json
42 | .travis.yml
43 |
44 | # misc
45 | *.md
46 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2019 Matthew Schlenker
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/data/courses.json:
--------------------------------------------------------------------------------
1 | {
2 | "courses": [
3 | {
4 | "name": "Robotics: AI Techniques",
5 | "id": "robotics-ai-techniques",
6 | "abbrev": "RAIT",
7 | "code": "CS7638",
8 | "semester": "Spring 2023",
9 | "author": "Matt Schlenker",
10 | "icon": "https://assets.omscs.io/courses/cs7638.png",
11 | "start": "/robotics-ai-techniques/welcome",
12 | "completed": false
13 | },
14 | {
15 | "name": "Databases",
16 | "id": "databases",
17 | "abbrev": "DB",
18 | "code": "CS6400",
19 | "semester": "Fall 2022",
20 | "author": "Matt Schlenker",
21 | "icon": "https://assets.omscs.io/courses/cs6400.png",
22 | "start": "/databases/welcome",
23 | "completed": true,
24 | "grade": "A"
25 | },
26 | {
27 | "name": "Computer Networks",
28 | "id": "computer-networks",
29 | "abbrev": "CN",
30 | "code": "CS6250",
31 | "semester": "Spring 2021",
32 | "author": "Josh Kuun",
33 | "grade": "A",
34 | "icon": "https://assets.omscs.io/courses/cs6250.png",
35 | "start": "/computer-networks/welcome",
36 | "completed": true
37 | },
38 | {
39 | "id": "secure-computer-systems",
40 | "name": "Secure Computer Systems",
41 | "abbrev": "SCS",
42 | "code": "CS6238",
43 | "semester": "Spring 2021",
44 | "author": "Matthew Caseres",
45 | "grade": "A",
46 | "icon": "https://assets.omscs.io/courses/cs6238.png",
47 | "start": "/secure-computer-systems/00-welcome",
48 | "completed": true
49 | },
50 | {
51 | "id": "simulation",
52 | "name": "Simulation",
53 | "abbrev": "SIM",
54 | "code": "ISYE6644",
55 | "semester": "Fall 2020",
56 | "author": "Matt Schlenker",
57 | "icon": "https://assets.omscs.io/courses/isye6644.png",
58 | "start": "/simulation/welcome",
59 | "completed": true,
60 | "grade": "A"
61 | },
62 | {
63 | "id": "machine-learning-trading",
64 | "name": "Machine Learning for Trading",
65 | "abbrev": "ML4T",
66 | "code": "CS7646",
67 | "semester": "Spring 2020",
68 | "author": "Matt Schlenker",
69 | "icon": "https://assets.omscs.io/courses/cs7646.png",
70 | "start": "/machine-learning-trading/welcome",
71 | "completed": true,
72 | "grade": "A"
73 | },
74 | {
75 | "id": "information-security",
76 | "name": "Introduction to Information Security",
77 | "abbrev": "IIS",
78 | "code": "CS6035",
79 | "semester": "Fall 2019",
80 | "author": "Matt Schlenker",
81 | "grade": "A",
82 | "icon": "https://assets.omscs.io/courses/cs6035.png",
83 | "start": "/information-security/welcome",
84 | "completed": true
85 | },
86 | {
87 | "name": "Computer Networks (OLD)",
88 | "id": "computer-networks-old",
89 | "abbrev": "CN",
90 | "code": "CS6250",
91 | "semester": "Spring 2019",
92 | "author": "Matt Schlenker",
93 | "grade": "A",
94 | "icon": "https://assets.omscs.io/courses/cs6250.png",
95 | "start": "/computer-networks-old/welcome",
96 | "completed": true,
97 | "displayInHeader": false
98 | },
99 | {
100 | "id": "operating-systems",
101 | "name": "Graduate Introduction to Operating Systems",
102 | "abbrev": "GIOS",
103 | "code": "CS6200",
104 | "semester": "Fall 2018",
105 | "author": "Matt Schlenker",
106 | "grade": "A",
107 | "icon": "https://assets.omscs.io/courses/cs6200.png",
108 | "start": "/operating-systems/welcome",
109 | "completed": true
110 | }
111 | ]
112 | }
113 |
--------------------------------------------------------------------------------
/data/sidebars.json:
--------------------------------------------------------------------------------
1 | {
2 | "operating-systems": [
3 | {
4 | "section": "Start Here",
5 | "notes": ["welcome"]
6 | },
7 | {
8 | "section": "Download Notes",
9 | "notes": [
10 | {
11 | "lecture": null,
12 | "title": "GIOS Complete",
13 | "path": "https://payhip.com/b/9I1Q",
14 | "external": true
15 | },
16 | {
17 | "lecture": null,
18 | "title": "GIOS Lecture Notes",
19 | "path": "https://payhip.com/b/VJ40",
20 | "external": true
21 | },
22 | {
23 | "lecture": null,
24 | "title": "GIOS Exam Review",
25 | "path": "https://payhip.com/b/BCoS",
26 | "external": true
27 | }
28 | ]
29 | },
30 | {
31 | "section": "Lecture Notes",
32 | "notes": [
33 | "introduction-to-operating-systems",
34 | "processes-and-process-management",
35 | "threads-and-concurrency",
36 | "threads-case-study-pthreads",
37 | "thread-design-considerations",
38 | "thread-performance-considerations",
39 | "scheduling",
40 | "memory-management",
41 | "inter-process-communication",
42 | "synchronization-constructs",
43 | "io-management",
44 | "virtualization",
45 | "remote-procedure-calls",
46 | "distributed-file-systems",
47 | "distributed-shared-memory",
48 | "datacenter-technologies"
49 | ]
50 | },
51 | {
52 | "section": "Exam Review",
53 | "notes": ["midterm-exam-review-questions", "final-exam-review-questions"]
54 | }
55 | ],
56 | "computer-networks-old": [
57 | {
58 | "section": "Start Here",
59 | "notes": ["welcome"]
60 | },
61 | {
62 | "section": "Download Notes",
63 | "notes": [
64 | {
65 | "lecture": null,
66 | "title": "CN Complete (OLD)",
67 | "path": "https://payhip.com/b/9UGM",
68 | "external": true
69 | }
70 | ]
71 | },
72 | {
73 | "section": "Lecture Notes",
74 | "notes": [
75 | "architecture-and-principles",
76 | "switching",
77 | "routing",
78 | "naming-addressing-forwarding",
79 | "router-design-basics",
80 | "dns",
81 | "congestion-control-streaming",
82 | "rate-limiting-and-traffic-shaping",
83 | "content-distribution",
84 | "software-defined-networking",
85 | "programming-sdns",
86 | "traffic-engineering",
87 | "network-security",
88 | "internet-worms",
89 | "spam",
90 | "denial-of-service-attacks"
91 | ]
92 | }
93 | ],
94 | "information-security": [
95 | {
96 | "section": "Start Here",
97 | "notes": ["welcome"]
98 | },
99 | {
100 | "section": "Download Notes",
101 | "notes": [
102 | {
103 | "lecture": null,
104 | "title": "IIS Complete",
105 | "path": "https://payhip.com/b/51wH",
106 | "external": true
107 | },
108 | {
109 | "lecture": null,
110 | "title": "IIS Lecture Notes",
111 | "path": "https://payhip.com/b/X1j0",
112 | "external": true
113 | },
114 | {
115 | "lecture": null,
116 | "title": "IIS Exam Review",
117 | "path": "https://payhip.com/b/34Xw",
118 | "external": true
119 | }
120 | ]
121 | },
122 | {
123 | "section": "Lecture Notes",
124 | "notes": [
125 | "the-security-mindset",
126 | "software-security",
127 | "operating-system-security",
128 | "authentication",
129 | "access-control",
130 | "mandatory-access-control",
131 | "database-security",
132 | "malicious-code",
133 | "modern-malware",
134 | "firewalls",
135 | "intrusion-detection",
136 | "introduction-to-cryptography",
137 | "symmetric-encryption",
138 | "public-key-cryptography",
139 | "hashes",
140 | "security-protocols",
141 | "ipsec-and-tls",
142 | "wireless-and-mobile-security",
143 | "web-security",
144 | "cyber-security",
145 | "law-ethics-and-privacy"
146 | ]
147 | },
148 | {
149 | "section": "Exam Review",
150 | "notes": [
151 | "udacity-quizzes",
152 | "midterm-1-study-guide",
153 | "midterm-2-study-guide"
154 | ]
155 | }
156 | ],
157 | "machine-learning-trading": [
158 | {
159 | "section": "Start Here",
160 | "notes": ["welcome"]
161 | },
162 | {
163 | "section": "Download Notes",
164 | "notes": [
165 | {
166 | "lecture": null,
167 | "title": "ML4T Complete",
168 | "path": "https://payhip.com/b/h5Pv",
169 | "external": true
170 | }
171 | ]
172 | },
173 | {
174 | "section": "Lecture Notes",
175 | "notes": [
176 | "reading-plotting-stock-data",
177 | "working-with-multiple-stocks",
178 | "power-of-numpy",
179 | "statistical-analysis-time-series",
180 | "incomplete-data",
181 | "histograms-scatter-plots",
182 | "sharpe-ratio-other-portfolio-statistics",
183 | "optimizers-building-parameterized-model",
184 | "optimizers-how-to-optimize-portfolio",
185 | "how-machine-learning-used-hedge-fund",
186 | "regression",
187 | "assessing-learning-algorithm",
188 | "ensemble-learners-bagging-boosting",
189 | "hedge-fund-manager",
190 | "market-mechanics",
191 | "what-is-company-worth",
192 | "capital-assets-pricing-model",
193 | "how-hedge-funds-use-capm",
194 | "technical-analysis",
195 | "dealing-with-data",
196 | "efficient-markets-hypothesis",
197 | "fundamental-law-active-portfolio-management",
198 | "portfolio-optimization-efficient-frontier",
199 | "reinforcement-learning",
200 | "q-learning",
201 | "dyna"
202 | ]
203 | },
204 | {
205 | "section": "Exam Review",
206 | "notes": ["udacity-quizzes"]
207 | }
208 | ],
209 | "simulation": [
210 | {
211 | "section": "Start Here",
212 | "notes": ["welcome"]
213 | },
214 | {
215 | "section": "Download Notes",
216 | "notes": [
217 | {
218 | "lecture": null,
219 | "title": "SIM Exam 1 Cheat Sheet",
220 | "path": "https://payhip.com/b/Lk14",
221 | "external": true
222 | },
223 | {
224 | "lecture": null,
225 | "title": "SIM Exam 2 Cheat Sheet",
226 | "path": "https://payhip.com/b/POqp",
227 | "external": true
228 | },
229 | {
230 | "lecture": null,
231 | "title": "SIM Exam 3 Cheat Sheet",
232 | "path": "https://payhip.com/b/mZis",
233 | "external": true
234 | },
235 | {
236 | "lecture": null,
237 | "title": "SIM Lecture Notes",
238 | "path": "https://payhip.com/b/kzli",
239 | "external": true
240 | },
241 | {
242 | "lecture": null,
243 | "title": "SIM Complete",
244 | "path": "https://payhip.com/b/PZen",
245 | "external": true
246 | }
247 | ]
248 | },
249 | {
250 | "section": "Lecture Notes",
251 | "notes": [
252 | "course-tour",
253 | "calculus-probability-statistics-primers",
254 | "calculus-probability-statistics-primers-cont",
255 | "hand-and-spreadsheet-simulations",
256 | "general-simulation-principles",
257 | "arena",
258 | "arena-cont",
259 | "generating-uniform-random-numbers",
260 | "random-variate-generation",
261 | "random-variate-generation-cont",
262 | "input-analysis",
263 | "output-data-analysis",
264 | "comparing-systems",
265 | "comparing-systems-cont"
266 | ]
267 | }
268 | ],
269 | "secure-computer-systems": [
270 | {
271 | "section": "Start Here",
272 | "notes": ["00-welcome"]
273 | },
274 | {
275 | "section": "Download Notes",
276 | "notes": [
277 | {
278 | "lecture": null,
279 | "title": "SCS Complete",
280 | "path": "https://payhip.com/b/0lhx",
281 | "external": true
282 | },
283 | {
284 | "lecture": null,
285 | "title": "SCS Lecture Notes",
286 | "path": "https://payhip.com/b/FZP3",
287 | "external": true
288 | },
289 | {
290 | "lecture": null,
291 | "title": "SCS Exam Review",
292 | "path": "https://payhip.com/b/U4Hl",
293 | "external": true
294 | }
295 | ]
296 | },
297 | {
298 | "section": "Lecture Notes",
299 | "notes": [
300 | "01-getting-started",
301 | "02-design-principles",
302 | "03-protecting-tcb",
303 | "04-virtualization",
304 | "05-authentication",
305 | "06-DAC",
306 | "07-MAC",
307 | "09-MAC-selinux",
308 | "10-covert-channels",
309 | "11-distributed-basics",
310 | "12-distributed-systems-2",
311 | "13-database-security-basics",
312 | "14-database-security-multilevel"
313 | ]
314 | },
315 | {
316 | "section": "Exam Review",
317 | "notes": ["midterm-exam-review", "final-exam-review"]
318 | }
319 | ],
320 | "computer-networks": [
321 | {
322 | "section": "Start Here",
323 | "notes": ["welcome"]
324 | },
325 | {
326 | "section": "Download Notes",
327 | "notes": [
328 | {
329 | "lecture": null,
330 | "title": "CN Complete",
331 | "path": "https://payhip.com/b/tCvzd",
332 | "external": true
333 | }
334 | ]
335 | },
336 | {
337 | "section": "Lecture Notes",
338 | "notes": [
339 | "introduction-history-and-internet-architecture",
340 | "transport-and-application-layers",
341 | "intradomain-routing",
342 | "autonomous-system-relationships-and-interdomain-routing",
343 | "router-design-and-algorithms-part-1",
344 | "router-design-and-algorithms-part-2",
345 | "software-defined-networking-part-1",
346 | "software-defined-networking-part-2",
347 | "internet-security",
348 | "internet-surveillance-and-censorship",
349 | "applications-video",
350 | "applications-cdns-and-overlay-networks"
351 | ]
352 | }
353 | ],
354 | "databases": [
355 | {
356 | "section": "Start Here",
357 | "notes": ["welcome"]
358 | },
359 | {
360 | "section": "Lecture Notes",
361 | "notes": [
362 | "fundamentals-of-databases",
363 | "extended-entity-relationship-model",
364 | "eer-relational-mapping",
365 | "relational-algebra-and-calculus",
366 | "sql",
367 | "normalization",
368 | "efficiency-indexing-physical-design"
369 | ]
370 | }
371 | ],
372 | "robotics-ai-techniques": [
373 | {
374 | "section": "Start Here",
375 | "notes": [
376 | "welcome",
377 | "localization-overview",
378 | "kalman-filters",
379 | "particle-filters",
380 | "kinematic-bicycle-model"
381 | ]
382 | }
383 | ]
384 | }
385 |
--------------------------------------------------------------------------------
/data/testimonials.json:
--------------------------------------------------------------------------------
1 | {
2 | "testimonials": [
3 | {
4 | "name": "Vasudha Madugula",
5 | "image": "https://assets.omscs.io/testimonials/vasudhamadugula.jpg",
6 | "semester": "Spring 2020",
7 | "quote": "OMSCS Notes was a boon during my final revisions for the IIS exams! The lesson notes were crisp and the practice questions forced me to recheck my understanding of important concepts. Kudos to you Matt, for maintaining the page!"
8 | },
9 | {
10 | "name": "Alex Naymark",
11 | "image": "https://assets.omscs.io/testimonials/alexnaymark.jpg",
12 | "semester": "Spring 2020",
13 | "quote": "Matt has put together a very valuable tool for anyone in OMSCS! Organized, concise, and the exam preparation is unmatched. Cheers Matt, you made something very cool and I hope to see it grow!"
14 | },
15 | {
16 | "name": "Melissa Chen",
17 | "image": "https://assets.omscs.io/testimonials/melissachen.jpg",
18 | "semester": "Spring 2020",
19 | "quote": "Matt's notes are excellent. They are well-organized, detailed, and save me a lot of studying time. I really appreciate that he built this for OMSCS students!"
20 | },
21 | {
22 | "name": "Robert Ehlers",
23 | "image": "https://assets.omscs.io/testimonials/robertehlers.png",
24 | "semester": "Spring 2019",
25 | "quote": "Matt's notes were an invaluable resource for my success in GIOS. My exam scores definitely increased by reviewing them beforehand. Having such a detailed and well organized reference made finding course material much easier than hunting through lecture videos."
26 | },{
27 | "name": "Samuel Bigio",
28 | "image": "https://assets.omscs.io/testimonials/samuelbigio.jpg",
29 | "semester": "Spring 2019",
30 | "quote": "If you get a chance to study Matt's notes you can tell the effort he put into it, and it really pays off."
31 | },{
32 | "name": "Taneem Ibrahim",
33 | "image": "https://assets.omscs.io/testimonials/taneemibrahim.png",
34 | "semester": "Spring 2019",
35 | "quote": "I found Matt’s notes to be a life saver in studying for Computer Networks exams. The notes are very thorough and articulates the central ideas in each lecture very well. Thank you Matt for taking the time to create these invaluable resources for the OMSCS students."
36 | }
37 | ]
38 | }
39 |
--------------------------------------------------------------------------------
/firebase.json:
--------------------------------------------------------------------------------
1 | {
2 | "hosting": {
3 | "public": "dist",
4 | "ignore": [
5 | "firebase.json",
6 | "**/.*",
7 | "**/node_modules/**"
8 | ]
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/gridsome.config.js:
--------------------------------------------------------------------------------
1 | // This is where project configuration and plugin options are located.
2 | // Learn more: https://gridsome.org/docs/config
3 |
4 | // Changes here require a server restart.
5 | // To restart press CTRL + C in terminal and run `gridsome develop`
6 |
7 | module.exports = {
8 | siteName: 'OMSCS Notes',
9 | icon: './src/assets/images/favicon.png',
10 | metadata: {
11 | mainGithub: 'https://github.com/m4ttsch/omscs-notes',
12 | notesGithub: 'https://github.com/m4ttsch/omscs-notes-notes',
13 | linkedin: 'https://www.linkedin.com/in/m4ttsch',
14 | email: 'matt@oms.fyi',
15 | amazon: 'https://amzn.to/2Pai0bO',
16 | paypal: 'https://www.paypal.me/MatthewSchlenker',
17 | buyMeACoffee: 'https://www.buymeacoffee.com/omstech',
18 | },
19 | plugins: [
20 | {
21 | use: '@gridsome/source-filesystem',
22 | options: {
23 | path: './**/!(README)*.md',
24 | baseDir: './notes',
25 | typeName: 'Note',
26 | remark: {
27 | plugins: [
28 | [
29 | 'gridsome-plugin-remark-shiki',
30 | { theme: 'nord', skipInline: true },
31 | ],
32 | 'remark-autolink-headings',
33 | 'remark-math',
34 | 'remark-html-katex',
35 | ],
36 | },
37 | },
38 | },
39 | {
40 | use: 'gridsome-plugin-tailwindcss',
41 | options: {
42 | tailwindConfig: './tailwind.config.js',
43 | purgeConfig: {},
44 | presetEnvConfig: {},
45 | shouldPurge: true,
46 | shouldImport: true,
47 | shouldTimeTravel: true,
48 | shouldPurgeUnusedKeyframes: true,
49 | },
50 | },
51 | ],
52 | }
53 |
--------------------------------------------------------------------------------
/gridsome.server.js:
--------------------------------------------------------------------------------
1 | // Server API makes it possible to hook into various parts of Gridsome
2 | // on server-side and add custom data to the GraphQL data layer.
3 | // Learn more: https://gridsome.org/docs/server-api/
4 |
5 | // Changes here require a server restart.
6 | // To restart press CTRL + C in terminal and run `gridsome develop`
7 |
8 | module.exports = function () {}
9 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "omscs-notes",
3 | "private": true,
4 | "scripts": {
5 | "build": "GRIDSOME_ENV=production gridsome build",
6 | "develop": "GRIDSOME_ENV=development gridsome develop",
7 | "explore": "gridsome explore",
8 | "lint": "vue-cli-service lint"
9 | },
10 | "volta": {
11 | "node": "14.19.0"
12 | },
13 | "dependencies": {
14 | "@gridsome/source-filesystem": "^0.6.2",
15 | "@gridsome/transformer-remark": "^0.4.0",
16 | "github-markdown-css": "^3.0.1",
17 | "gridsome": "^0.7.0",
18 | "gridsome-plugin-purgecss": "^1.0.12",
19 | "gridsome-plugin-remark-shiki": "^0.3.1",
20 | "remark-autolink-headings": "^5.2.1",
21 | "remark-html-katex": "^2.0.0",
22 | "remark-math": "^2.0.0",
23 | "v-tooltip": "^2.0.2",
24 | "vue-carousel": "^0.18.0",
25 | "vue-notification": "^1.3.20"
26 | },
27 | "devDependencies": {
28 | "@vue/cli-plugin-eslint": "^4.3.1",
29 | "@vue/cli-service": "^4.3.1",
30 | "@vue/eslint-config-prettier": "^6.0.0",
31 | "babel-eslint": "^10.1.0",
32 | "eslint": "^7.0.0",
33 | "eslint-plugin-gridsome": "^1.4.0",
34 | "eslint-plugin-prettier": "^3.1.3",
35 | "eslint-plugin-vue": "^6.2.2",
36 | "gridsome-plugin-tailwindcss": "^2.2.27",
37 | "node-sass": "^4.13.1",
38 | "prettier": "^2.0.5",
39 | "sass-loader": "^8.0.0",
40 | "vue-eslint-parser": "^7.0.0"
41 | }
42 | }
43 |
--------------------------------------------------------------------------------
/src/assets/images/favicon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/m4ttsch/omscs-notes/af2688e6973543722678d9b19e425f1d9a34ed70/src/assets/images/favicon.png
--------------------------------------------------------------------------------
/src/components/Ad.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
34 |
35 |
112 |
--------------------------------------------------------------------------------
/src/components/Footer.vue:
--------------------------------------------------------------------------------
1 |
2 |
6 | OMSCS Notes is made with
7 |
8 | in NYC by Matt Schlenker.
9 |
11 | Copyright © 2019-{{ new Date().getFullYear() }}. All rights
12 | reserved.
13 |
17 | I built OMSCS Notes to share my notes with other students in the
18 | GATech OMSCS program. My notes are searchable, navigable, and, most
19 | importantly, free. I hope they help you on your journey here.
20 |
22 |
23 | Join the party.
24 |
29 | Sign up
30 |
31 | today.
32 |
17 | {{ testimonial.quote }}
18 |
29 | {{ testimonial.name }}
30 |
32 | {{ testimonial.semester }}
33 |
41 | Want to say something nice?
42 |
48 | Contact me!
49 |
50 |
11 | If you found this platform valuable, please consider:
12 |
78 | Alternatively, just say
79 |
83 | hello
84 |
85 | .
86 |
16 | {{ note.timeToRead }} minute read
17 |
26 |
27 | Notice a tyop typo? Please submit an
28 |
34 | issue
35 |
36 | or open a
37 |
43 | PR.
45 |
27 | Take 25% off all PDF content until Monday with code TURKEY.
28 |
8 | Welcome to lecture notes that are
9 |
14 |
10 |
11 | clear, organized, and forever free.
12 |
13 |
6 | Notebooks
7 |
8 |
50 |
27 |
8 | Thank you for visiting!
9 |
10 |
14 |
77 |
10 | {{ courseTitle }}
11 |
12 |
13 | {{ note.title }}
14 |
15 |
20 |
24 |
Last updated: January 02, 2020
7 | 8 |9 | This Privacy Policy describes Our policies and procedures on the 10 | collection, use and disclosure of Your information when You use the 11 | Service and tells You about Your privacy rights and how the law protects 12 | You. 13 |
14 | 15 |16 | We use Your Personal data to provide and improve the Service. By using 17 | the Service, You agree to the collection and use of information in 18 | accordance with this Privacy Policy. 19 |
20 | 21 |24 | The words of which the initial letter is capitalized have meanings 25 | defined under the following conditions. 26 |
27 |28 | The following definitions shall have the same meaning regardless of 29 | whether they appear in singular or in plural. 30 |
31 | 32 |For the purposes of this Privacy Policy:
34 |37 | You means the individual accessing or using the 38 | Service, or the company, or other legal entity on behalf of which 39 | such individual is accessing or using the Service, as applicable. 40 |
41 |42 | Under GDPR (General Data Protection Regulation), You can be referred 43 | to as the Data Subject or as the User as you are the individual 44 | using the Service. 45 |
46 |49 | Company (referred to as either "the Company", "We", 50 | "Us" or "Our" in this Agreement) refers to OMSCS Notes. 51 |
52 |53 | For the purpose of the GDPR, the Company is the Data Controller. 54 |
55 |75 | Service Provider means any natural or legal person 76 | who processes the data on behalf of the Company. It refers to 77 | third-party companies or individuals employed by the Company to 78 | facilitate the Service, to provide the Service on behalf of the 79 | Company, to perform services related to the Service or to assist the 80 | Company in analyzing how the Service is used. 81 |
82 |83 | For the purpose of the GDPR, Service Providers are considered Data 84 | Processors. 85 |
86 |94 | Personal Data is any information that relates to an 95 | identified or identifiable individual. 96 |
97 |98 | For the purposes for GDPR, Personal Data means any information 99 | relating to You such as a name, an identification number, location 100 | data, online identifier or to one or more factors specific to the 101 | physical, physiological, genetic, mental, economic, cultural or 102 | social identity. 103 |
104 |105 | For the purposes of the CCPA, Personal Data means any information 106 | that identifies, relates to, describes or is capable of being 107 | associated with, or could reasonably be linked, directly or 108 | indirectly, with You. 109 |
110 |168 | While using Our Service, We may ask You to provide Us with certain 169 | personally identifiable information that can be used to contact or 170 | identify You. Personally identifiable information may include, but is 171 | not limited to: 172 |
173 |Usage Data is collected automatically when using the Service.
179 |180 | Usage Data may include information such as Your Device's Internet 181 | Protocol address (e.g. IP address), browser type, browser version, the 182 | pages of our Service that You visit, the time and date of Your visit, 183 | the time spent on those pages, unique device identifiers and other 184 | diagnostic data. 185 |
186 |187 | When You access the Service by or through a mobile device, We may 188 | collect certain information automatically, including, but not limited 189 | to, the type of mobile device You use, Your mobile device unique ID, the 190 | IP address of Your mobile device, Your mobile operating system, the type 191 | of mobile Internet browser You use, unique device identifiers and other 192 | diagnostic data. 193 |
194 |195 | We may also collect information that Your browser sends whenever You 196 | visit our Service or when You access the Service by or through a mobile 197 | device. 198 |
199 | 200 |202 | We use Cookies and similar tracking technologies to track the activity 203 | on Our Service and store certain information. Tracking technologies used 204 | are beacons, tags, and scripts to collect and track information and to 205 | improve and analyze Our Service. 206 |
207 |208 | You can instruct Your browser to refuse all Cookies or to indicate when 209 | a Cookie is being sent. However, if You do not accept Cookies, You may 210 | not be able to use some parts of our Service. 211 |
212 |213 | Cookies can be "Persistent" or "Session" Cookies. Persistent Cookies 214 | remain on your personal computer or mobile device when You go offline, 215 | while Session Cookies are deleted as soon as You close your web browser. 216 |
217 |218 | We use both session and persistent Cookies for the purposes set out 219 | below: 220 |
221 |224 | Necessary / Essential Cookies 225 |
226 |Type: Session Cookies
227 |Administered by: Us
228 |229 | Purpose: These Cookies are essential to provide You with services 230 | available through the Website and to enable You to use some of its 231 | features. They help to authenticate users and prevent fraudulent use 232 | of user accounts. Without these Cookies, the services that You have 233 | asked for cannot be provided, and We only use these Cookies to 234 | provide You with those services. 235 |
236 |Cookies Policy / Notice Acceptance Cookies
239 |Type: Persistent Cookies
240 |Administered by: Us
241 |242 | Purpose: These Cookies identify if users have accepted the use of 243 | cookies on the Website. 244 |
245 |Functionality Cookies
248 |Type: Persistent Cookies
249 |Administered by: Us
250 |251 | Purpose: These Cookies allow us to remember choices You make when 252 | You use the Website, such as remembering your login details or 253 | language preference. The purpose of these Cookies is to provide You 254 | with a more personal experience and to avoid You having to re-enter 255 | your preferences every time You use the Website. 256 |
257 |Tracking and Performance Cookies
260 |Type: Persistent Cookies
261 |Administered by: Third-Parties
262 |263 | Purpose: These Cookies are used to track information about traffic 264 | to the Website and how users use the Website. The information 265 | gathered via these Cookies may directly or indirectly identify you 266 | as an individual visitor. This is because the information collected 267 | is typically linked to a pseudonymous identifier associated with the 268 | device you use to access the Website. We may also use these Cookies 269 | to test new advertisements, pages, features or new functionality of 270 | the Website to see how our users react to them. 271 |
272 |275 | For more information about the cookies we use and your choices regarding 276 | cookies, please visit our Cookies Policy. 277 |
278 | 279 |The Company may use Personal Data for the following purposes:
281 |We may share your personal information in the following situations:
319 | 320 |362 | The Company will retain Your Personal Data only for as long as is 363 | necessary for the purposes set out in this Privacy Policy. We will 364 | retain and use Your Personal Data to the extent necessary to comply with 365 | our legal obligations (for example, if we are required to retain your 366 | data to comply with applicable laws), resolve disputes, and enforce our 367 | legal agreements and policies. 368 |
369 |370 | The Company will also retain Usage Data for internal analysis purposes. 371 | Usage Data is generally retained for a shorter period of time, except 372 | when this data is used to strengthen the security or to improve the 373 | functionality of Our Service, or We are legally obligated to retain this 374 | data for longer time periods. 375 |
376 | 377 |379 | Your information, including Personal Data, is processed at the Company's 380 | operating offices and in any other places where the parties involved in 381 | the processing are located. It means that this information may be 382 | transferred to — and maintained on — computers located outside of Your 383 | state, province, country or other governmental jurisdiction where the 384 | data protection laws may differ than those from Your jurisdiction. 385 |
386 |387 | Your consent to this Privacy Policy followed by Your submission of such 388 | information represents Your agreement to that transfer. 389 |
390 |391 | The Company will take all steps reasonably necessary to ensure that Your 392 | data is treated securely and in accordance with this Privacy Policy and 393 | no transfer of Your Personal Data will take place to an organization or 394 | a country unless there are adequate controls in place including the 395 | security of Your data and other personal information. 396 |
397 | 398 |401 | If the Company is involved in a merger, acquisition or asset sale, Your 402 | Personal Data may be transferred. We will provide notice before Your 403 | Personal Data is transferred and becomes subject to a different Privacy 404 | Policy. 405 |
406 |408 | Under certain circumstances, the Company may be required to disclose 409 | Your Personal Data if required to do so by law or in response to valid 410 | requests by public authorities (e.g. a court or a government agency). 411 |
412 |414 | The Company may disclose Your Personal Data in the good faith belief 415 | that such action is necessary to: 416 |
417 |432 | The security of Your Personal Data is important to Us, but remember that 433 | no method of transmission over the Internet, or method of electronic 434 | storage is 100% secure. While We strive to use commercially acceptable 435 | means to protect Your Personal Data, We cannot guarantee its absolute 436 | security. 437 |
438 | 439 |441 | Service Providers have access to Your Personal Data only to perform 442 | their tasks on Our behalf and are obligated not to disclose or use it 443 | for any other purpose. 444 |
445 | 446 |448 | We may use third-party Service providers to monitor and analyze the use 449 | of our Service. 450 |
451 |Firebase
454 |Firebase is an analytics service provided by Google Inc.
455 |456 | You may opt-out of certain Firebase features through your mobile 457 | device settings, such as your device advertising settings or by 458 | following the instructions provided by Google in their Privacy 459 | Policy: 460 | https://policies.google.com/privacy?hl=en 463 |
464 |465 | We also encourage you to review the Google's policy for safeguarding 466 | your data: 467 | https://support.google.com/analytics/answer/6004245. 470 |
471 |472 | For more information on what type of information Firebase collects, 473 | please visit the Google Privacy & Terms web page: 474 | https://policies.google.com/privacy?hl=en 477 |
478 |483 | We may provide paid products and/or services within the Service. In that 484 | case, we may use third-party services for payment processing (e.g. 485 | payment processors). 486 |
487 |488 | We will not store or collect Your payment card details. That information 489 | is provided directly to Our third-party payment processors whose use of 490 | Your personal information is governed by their Privacy Policy. These 491 | payment processors adhere to the standards set by PCI-DSS as managed by 492 | the PCI Security Standards Council, which is a joint effort of brands 493 | like Visa, Mastercard, American Express and Discover. PCI-DSS 494 | requirements help ensure the secure handling of payment information. 495 |
496 |Stripe
499 |500 | Their Privacy Policy can be viewed at 501 | https://stripe.com/us/privacy 504 |
505 |PayPal
508 |509 | Their Privacy Policy can be viewed at 510 | https://www.paypal.com/webapps/mpp/ua/privacy-full 513 |
514 |PayPal
517 |518 | Their Privacy Policy can be viewed at 519 | https://www.braintreepayments.com/legal/braintree-privacy-policy 523 |
524 |We may process Personal Data under the following conditions:
530 | 531 |563 | In any case, the Company will gladly help to clarify the specific legal 564 | basis that applies to the processing, and in particular whether the 565 | provision of Personal Data is a statutory or contractual requirement, or 566 | a requirement necessary to enter into a contract. 567 |
568 | 569 |571 | The Company undertakes to respect the confidentiality of Your Personal 572 | Data and to guarantee You can exercise Your rights. 573 |
574 |575 | You have the right under this Privacy Policy, and by law if You are 576 | within the EU, to: 577 |
578 | 579 |629 | You may exercise Your rights of access, rectification, cancellation and 630 | opposition by contacting Us. Please note that we may ask You to verify 631 | Your identity before responding to such requests. If You make a request, 632 | We will try our best to respond to You as soon as possible. 633 |
634 |635 | You have the right to complain to a Data Protection Authority about Our 636 | collection and use of Your Personal Data. For more information, if You 637 | are in the European Economic Area (EEA), please contact Your local data 638 | protection authority in the EEA. 639 |
640 | 641 |644 | Under this Privacy Policy, and by law if You are a resident of 645 | California, You have the following rights: 646 |
647 |668 | The right to know about Your Personal Data. You 669 | have the right to request and obtain from the Company information 670 | regarding the disclosure of the following: 671 |
672 |692 | The right not to be discriminated against. You have 693 | the right not to be discriminated against for exercising any of Your 694 | Consumer's rights, including by: 695 |
696 |717 | In order to exercise any of Your rights under the CCPA, and if you are a 718 | California resident, You can email or call us or visit our "Do Not Sell 719 | My Personal Information" section or web page. 720 |
721 |722 | The Company will disclose and deliver the required information free of 723 | charge within 45 days of receiving Your verifiable request. The time 724 | period to provide the required information may be extended once by an 725 | additional 45 days when reasonable necessary and with prior notice. 726 |
727 | 728 |730 | We do not sell personal information. However, the Service Providers we 731 | partner with (for example, our advertising partners) may use technology 732 | on the Service that "sells" personal information as defined by the CCPA 733 | law. 734 |
735 |736 | If you wish to opt out of the use of your personal information for 737 | interest-based advertising purposes and these potential sales as defined 738 | under CCPA law, you may do so by following the instructions below. 739 |
740 |741 | Please note that any opt out is specific to the browser You use. You may 742 | need to opt out on every browser that you use. 743 |
744 | 745 |747 | You can opt out of receiving ads that are personalized as served by our 748 | Service Providers by following our instructions presented on the 749 | Service: 750 |
751 |758 | The opt out will place a cookie on Your computer that is unique to the 759 | browser You use to opt out. If you change browsers or delete the cookies 760 | saved by your browser, you will need to opt out again. 761 |
762 | 763 |765 | Your mobile device may give you the ability to opt out of the use of 766 | information about the apps you use in order to serve you ads that are 767 | targeted to your interests: 768 |
769 |777 | You can also stop the collection of location information from Your 778 | mobile device by changing the preferences on your mobile device. 779 |
780 | 781 |Our Service does not respond to Do Not Track signals.
786 |787 | However, some third party websites do keep track of You browsing 788 | activities. If You are visiting such websites, You can set Your 789 | preferences in Your web browser to inform websites that You do not want 790 | to be tracked. You can enable or disable DNT by visiting the preferences 791 | or settings page of Your web browser. 792 |
793 | 794 |796 | Our Service does not address anyone under the age of 13. We do not 797 | knowingly collect personally identifiable information from anyone under 798 | the age of 13. If You are a parent or guardian and You are aware that 799 | Your child has provided Us with Personal Data, please contact Us. If We 800 | become aware that We have collected Personal Data from anyone under the 801 | age of 13 without verification of parental consent, We take steps to 802 | remove that information from Our servers. 803 |
804 |805 | We also may limit how We collect, use, and store some of the information 806 | of Users between 13 and 18 years old. In some cases, this means We will 807 | be unable to provide certain functionality of the Service to these 808 | users. 809 |
810 |811 | If We need to rely on consent as a legal basis for processing Your 812 | information and Your country requires consent from a parent, We may 813 | require Your parent's consent before We collect and use that 814 | information. 815 |
816 | 817 |819 | Our Service may contain links to other websites that are not operated by 820 | Us. If You click on a third party link, You will be directed to that 821 | third party's site. We strongly advise You to review the Privacy Policy 822 | of every site You visit. 823 |
824 |825 | We have no control over and assume no responsibility for the content, 826 | privacy policies or practices of any third party sites or services. 827 |
828 | 829 |831 | We may update our Privacy Policy from time to time. We will notify You 832 | of any changes by posting the new Privacy Policy on this page. 833 |
834 |835 | We will let You know via email and/or a prominent notice on Our Service, 836 | prior to the change becoming effective and update the "Last updated" 837 | date at the top of this Privacy Policy. 838 |
839 |840 | You are advised to review this Privacy Policy periodically for any 841 | changes. Changes to this Privacy Policy are effective when they are 842 | posted on this page. 843 |
844 | 845 |847 | If you have any questions about this Privacy Policy, You can contact us: 848 |
849 |