PranavEranki / Berkeley-Coursework

NOTES for CS 61A/B/C, 70, 161, 169, 170, 186, 188 | Eleng 122

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Coursework I enjoyed while at UC Berkeley

Focus: Systems, Security, Full-stack, Algorithms, SWE

Each of the below links to a folder with materials pertaining to each class, complete with a README, homework/discussions/projects where applicable, and key takeaways from each class.

*As an aside, and an obvious note, please DO NOT COPY any of the code or logic for projects, homeworks, designs, etc within this repository. Thank you. *

  • Intro to computer programming at a college level
  • Concepts:
    • OOP, higher order functons / envs, lambda, functional abstraction
    • Recursion, trees and tree recursion, sequences (strs, lists, buffers), containers (dicts, etc)
    • Iterators / generators
    • Scheme (functional programming language, like Lisp)
  • CHEATSHEET
  • Bridge course used to fufill my 61B requirement;
    • Focus on
      • Intro to DS&A (linked lists, b-trees, BSTs, heaps, PQs, graphs, MSTs, sorting )
      • Advanced OOP concepts (polymorphism, asymptotics, ADTs, etc)
    • Replicated the WWII ENIGMA machine, which can be passed different configurations and messages to encode/decode
    • Created a basic version of Git, GITLET, capable of efficient adds/commits/rm/checkouts/logs/status/branches/merges/resets

CS 70

  • This class was very theoretically challenging and helped develop mathematical maturity useful for EE / upper level CS classes.
  • Basics:
    • prop logic, proofs & weak/strong inducton, set theory, modular arithmetic
    • countability and computability, graph theory, polynomials
    • probability theory & conditional probability, random variables, variance/covariance, distributions (geometric/poisson/continuous), concentration inequalities
  • Higher level concepts:
    • RSA, error correcting codes, markov chains, coupon collector problem
  • Cheatsheet
  • This class introduces you to the basics of artificial intelligence. Across the key projects and homeworks, you learn many key concepts. The class uses a growingly complex implementation of Pacman to show you these concepts.
  • Concepts :
    • rational agents, state spaces & search trees
    • uninformed/informed search (DFS/BFS/UCS, A*, heuristics, local search)
    • games (trees, minimax & pruning, expectimax, monte carlo)
    • logic (prop logic, planning, inference, theorem proving, satisfiability, FOL)
    • probability (bayes nets, markov chains, hidden markov models + forward/viterbi, dyamic nets, decision networks, value of perfect information)
    • Non-deterministic search (Markov decision processes, bellman, value/policy iteration, q-values)
    • ML (naive bayes, regression, perceptrons, reinforcement learning, Q-learning, exploration functions)

CS 170

  • This class builds on the mathematical maturity of CS 70 to introduce advanced efficient algorithm, intractable problems, and the general nature of P vs NP.
  • Refer to DPV for more, and change the chapter (i.e. /chap3.pdf)
  • Concepts:
    • Big O, recurrence relations, master theorem
    • Fast multiplication (arithmetic, matrix, & polynomial / FFT)
    • Complex #s, roots of unity, fourier transform
    • Median finding (quicksort)
    • Graph theory & DAGs
      • DFS using stack, BFS using queue, topological sort, post/pre-order traversals
      • SCCs, MST (Kruskal's), min cut max flow, huffman encoding, set cover
      • Paths, single source shortest paths, Djikstras,
    • Dynamic programming
    • Linear programming, Simplex
    • Network flow, bipartite matching, duality
    • Zero-sum games, multiplicative updates
    • P vs NP, NP hard, NP complete, reductions, approximations

CS 61C

CS 161

  • Easily one of my favorite classes at Berkeley, this class teaches memory safety, crytography, web security, and network security fundamentals for aspiring engineers. They maintain a beautiful textbook which you should check out.
  • Projects:
    • Proj 1: Exploiting a range of memory security vulnerabilities, see our code here which has the different "flags" that we completed.
    • Proj 2: Designed a secure file sharing system with user auth, save/load/overwrite/append/share/revoke access for all user files across sessions. Refer to design doc for more details, or see our code here.
    • [Proj 3]: web safety attacks, including sql injection, session token and cookie manipulation, stored / reflected XSS attack, and sql vulnerability / hash decoders. Deliverables completed elsewhere, cannot share this.
  • This class covers database systems and their associated concepts, including SQL, disks and files, B+ trees, buffer management, relational algebra, hashing/sorting, iterators and joins. query optimiation, transactions and concurrency, design, recovery, parallel query processing, distributed transactions, NoSQL, and MapReduce/Spark. Their notes are also well maintained, refer to those.
  • For our projects in this class, we:
    • wrote complex, nested SQL queries covering wide functionality
    • designed and tested B+ tree indices
    • wrote database iterators and implemented all efficient join algorithms, concurrently optimizing queries and conducting plan space search similar to System R
    • Implemented a concurrency locking system with queueing, adding multigranularity locking constraints and 2 phase locking,
    • Wrote write-ahead logging and support for savepoints, rollbacks, and ACID compliant restart recovery
    • Wrote efficient, complex, pipelined NoSQL code for MongoDB.
  • You can see my specific code for Projects 1-5 (the first five bullet points above) in THIS FOLDER.

Eleng 122

  • This mathematically rigorous communications class taught me the design, implementation, and management of communication networks. The textbook is downloaded and linked here, and chiefly covers:
    • A overview of how today’s Internet works and it's architecture
    • Key ideas behind Ethernet, WiFi networks, routing, internetworking, and TCP.
    • Briefly covers probability, calculus, mathematical models, and markov chain concepts for background knowledge.
    • LTE wireless networks, QoS, network protocols
    • Physical layer technologies
  • For our final project in this class, my team and I developed a Starlink LEO constellation network simulation.

CS 169A

  • This class focused on an introduction to SWE on large software systems from an Agile methodologies standpoint.
    • Agile vs Plan on Doc methodologies, behavior and test-driven-development
    • Restful SaaS apps and microservices
    • Ruby programs, Rails applications
    • Unit & module tests, understanding design patterns, identifying security/performance problems
  • The textbook pdf can be found for free here.
  • This decal run by Jelani Nelson and the Comp Programming Club @ Berkeley aims to introduce the basics of comp programming. I have attached all lectures except the intro in the above folder . These lectures were supplemented with Codeforces problems, some of which are mentioned by name in the lectures.

Cogsci 131

  • This class had a very interesting, informative lecture on computational models of cognition, but most of the material from this class was simple data analysis type stuff, building neural networks, etc.
    • covering the logic behind neural networks
    • providing insight how humans solve challenging computational problems
    • exploring three ways in which researchers have attempted to formalize cognition -- symbolic approaches, neural networks, and probability and statistics -- considering the strengths and weaknesses of each.

CS 162 Lectures

About

NOTES for CS 61A/B/C, 70, 161, 169, 170, 186, 188 | Eleng 122


Languages

Language:JavaScript 42.5%Language:Python 32.1%Language:Java 21.8%Language:Assembly 1.1%Language:C 0.9%Language:HTML 0.5%Language:Go 0.3%Language:Scheme 0.3%Language:TeX 0.2%Language:CSS 0.2%Language:Makefile 0.1%Language:Shell 0.1%Language:NASL 0.0%Language:PHP 0.0%