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
- Focus on
- 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)
- 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
- This class teaches C, assembly level programming (Risc-V), code translation, computer organization, caches, performance measurement, parallelism, CPU design, warehouse-scale computing, and related topics.
- CONCEPTS + links if found:
- Number representation notes
- Detailed C Notes
- C memory management
- RISC-V conventions
- RISC-V Instruction formats and 5 Stage Pipeline
- Compiler, Assembler, Linker, Loaded
- Synchronous digital systems and FSMs
- Combinational logic blocks, clocks, pipelining / parallelism
- Caches (direct mapped, multilevel) and virtual memory
- Dependability, ECC, RAID, MapReduce/Spark, warehouse computing
- Labs folder contains all the labs that have been done covering all these subjects
- 61C had three projects:
- 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.
- 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.
- 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.
- 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.
- I watched this free lecture series on operating systems and systems programming on and off just to get a better understanding. A lot of the material overlaps with CS 186 and Eleng 122, which is why I found it very helpful