βββ [hi](./0-notes)
βββ [hi](./1-projects)
β βββ [hi](./A_arrays_solution)
β βββ [hi](./A_conditionals_solution)
β βββ [hi](./A_executing_code_solution)
β βββ [hi](./A_functions_solution)
β βββ [hi](./A_loops_solution)
β βββ [hi](./A_nested_loops_solution)
β βββ [hi](./Atomic-Design-Solution-master)
β β βββ dogs)
β β βββ [hi](./public)
β β βββ src)
β β βββ [hi](./atoms)
β β βββ [hi](./molecules)
β β βββ [hi](./organisms)
β β βββ [hi](./pages)
β β βββ templates)
β βββ [hi](./B_arrays_solution)
β βββ [hi](./Basic-JavaScript-master)
β β βββ [hi](./src)
β β βββ tests)
β βββ [hi](./B_expressions_solution)
β βββ [hi](./B_functions_solution)
β βββ [hi](./B_loops_solution)
β βββ [hi](./B_two_dimensional_arrays_solution)
β βββ [hi](./C_arrays_solution)
β βββ [hi](./C_functions_solution)
β βββ [hi](./Client-Auth-Solution-master)
β β βββ [hi](./public)
β β βββ src)
β β βββ [hi](./actions)
β β βββ [hi](./components)
β β β βββ HOC)
β β βββ reducers)
β βββ [hi](./C_loops_solution)
β βββ [hi](./C_more_problems_solution)
β βββ [hi](./Components-BEM-Solution-master)
β β βββ [hi](./components)
β β β βββ [hi](./Box)
β β β βββ [hi](./Dropdown)
β β β βββ Section)
β β βββ markups)
β βββ [hi](./Components-Constructors-Solution-master)
β β βββ [hi](./components)
β β β βββ [hi](./Box)
β β β βββ [hi](./Dropdown)
β β β βββ [hi](./Section)
β β β βββ Tabs)
β β βββ markups)
β βββ [hi](./C_variables_solution)
β βββ [hi](./Data-Structures-master)
β β βββ [hi](./avl_tree)
β β βββ [hi](./binary_search_tree)
β β βββ [hi](./doubly_linked_list)
β β βββ [hi](./heap)
β β βββ [hi](./lru_cache)
β β βββ [hi](./queue)
β β βββ [hi](./singly_linked_list)
β β βββ stack)
β βββ [hi](./DOM-JavaScript-mini-Solution-master)
β β βββ components)
β β βββ [hi](./Box)
β β βββ [hi](./Header)
β β βββ [hi](./List)
β β βββ [hi](./Nav)
β β βββ [hi](./Section)
β β βββ Tabs)
β βββ [hi](./D_string_indexing_and_methods_solution)
β βββ [hi](./HTML-CSS-mini-Solution-master)
β β βββ components)
β β βββ [hi](./Box)
β β βββ [hi](./Header)
β β βββ Section)
β βββ [hi](./Intro-Python-II-master)
β β βββ [hi](./examples)
β β βββ src)
β βββ [hi](./Intro-Python-I-master)
β β βββ src)
β βββ [hi](./Intro-to-C-master)
β β βββ [hi](./fizzbuzz)
β β β βββ tests)
β β βββ [hi](./hangman)
β β βββ [hi](./malloc)
β β β βββ tests)
β β βββ [hi](./pointers)
β β β βββ tests)
β β βββ [hi](./queue)
β β β βββ tests)
β β βββ [hi](./quicksort)
β β β βββ tests)
β β βββ [hi](./strings)
β β β βββ tests)
β β βββ [hi](./structs)
β β β βββ tests)
β β βββ utils)
β βββ [hi](./JavaScript-III-master)
β β βββ assignments)
β βββ [hi](./JS-Exercise-Classes)
β β βββ test)
β βββ [hi](./LS-Data-Structures-II-Solution-master)
β β βββ [hi](./src)
β β βββ tests)
β βββ [hi](./LS-Data-Structures-I-Solution-master)
β β βββ [hi](./src)
β β βββ tests)
β βββ [hi](./master)
β βββ [hi](./Mongo-Mini-II-Solution-master)
β βββ [hi](./nested-data-exercises-master)
β β βββ [hi](./data)
β β βββ test)
β βββ [hi](./Node-Express-Gmaps-Solution-Day-II-master)
β β βββ src)
β β βββ [hi](./controllers)
β β βββ models)
β βββ [hi](./Node-Express-Gmaps-Solution-Day-I-master)
β β βββ src)
β β βββ [hi](./controllers)
β β βββ models)
β βββ [hi](./_Pet-Projects)
β β βββ whack-a-mole)
β βββ [hi](./Python-OOP-Toy-master)
β β βββ src)
β βββ [hi](./React-Todo-Solution-master)
β β βββ [hi](./public)
β β βββ src)
β β βββ tests)
β βββ [hi](./Relational-Databases-master)
β βββ [hi](./solutions)
β βββ [hi](./Sprint-Challenge--Intro-Python-master)
β β βββ src)
β β βββ [hi](./cityreader)
β β βββ [hi](./comp)
β β βββ oop)
β βββ [hi](./webapi-ii-challenge-master)
β β βββ data)
β β βββ [hi](./migrations)
β β βββ seeds)
β βββ web-guided-project-testing-web-apps-solution-main)
β βββ [hi](./public)
β βββ src)
β βββ components)
βββ [hi](./2-resources)
β βββ [hi](./Atomic-Design-Solution-master)
β β βββ dogs)
β β βββ [hi](./public)
β β βββ src)
β β βββ [hi](./atoms)
β β βββ [hi](./molecules)
β β βββ [hi](./organisms)
β β βββ [hi](./pages)
β β βββ templates)
β βββ [hi](./__CHEAT-SHEETS)
β β βββ [hi](./All)
β β βββ [hi](./guided-cheatsheets)
β β β βββ [hi](./auto-generate-boilerplate)
β β β β βββ test2)
β β β βββ test.html)
β β βββ pdf)
β β βββ [hi](./css)
β β βββ [hi](./css.html)
β β βββ [hi](./database)
β β βββ [hi](./database.html)
β β βββ [hi](./data-structures)
β β βββ [hi](./data-structures.html)
β β βββ [hi](./engineering)
β β βββ [hi](./engineering.html)
β β βββ [hi](./general-comp-sci)
β β βββ [hi](./git)
β β βββ [hi](./git.html)
β β βββ [hi](./html)
β β βββ [hi](./html.html)
β β βββ [hi](./java)
β β βββ [hi](./java.html)
β β βββ [hi](./javascript)
β β βββ [hi](./javascript.html)
β β βββ [hi](./linux)
β β βββ [hi](./linux.html)
β β βββ [hi](./math)
β β βββ [hi](./math.html)
β β βββ [hi](./misc)
β β βββ [hi](./misc.html)
β β βββ [hi](./python)
β β βββ [hi](./python.html)
β β βββ [hi](./ruby)
β β βββ [hi](./ruby.html)
β β βββ [hi](./unsorted)
β β βββ [hi](./web)
β β βββ web.html)
β βββ [hi](./Client-Auth-Solution-master)
β β βββ [hi](./public)
β β βββ src)
β β βββ [hi](./actions)
β β βββ [hi](./components)
β β β βββ HOC)
β β βββ reducers)
β βββ [hi](./Components-BEM-Solution-master)
β β βββ [hi](./components)
β β β βββ [hi](./Box)
β β β βββ [hi](./Dropdown)
β β β βββ Section)
β β βββ markups)
β βββ [hi](./Components-Constructors-Solution-master)
β β βββ [hi](./components)
β β β βββ [hi](./Box)
β β β βββ [hi](./Dropdown)
β β β βββ [hi](./Section)
β β β βββ Tabs)
β β βββ markups)
β βββ [hi](./DOM-JavaScript-mini-Solution-master)
β β βββ components)
β β βββ [hi](./Box)
β β βββ [hi](./Header)
β β βββ [hi](./List)
β β βββ [hi](./Nav)
β β βββ [hi](./Section)
β β βββ Tabs)
β βββ [hi](./HTML-CSS-mini-Solution-master)
β β βββ components)
β β βββ [hi](./Box)
β β βββ [hi](./Header)
β β βββ Section)
β βββ [hi](./JavaScript-I-master)
β β βββ assignments)
β βββ [hi](./LS-Data-Structures-II-Solution-master)
β β βββ [hi](./src)
β β βββ tests)
β βββ [hi](./LS-Data-Structures-I-Solution-master)
β β βββ [hi](./src)
β β βββ tests)
β βββ [hi](./Node-Express-Gmaps-Solution-Day-II-master)
β β βββ src)
β β βββ [hi](./controllers)
β β βββ models)
β βββ [hi](./Node-Express-Gmaps-Solution-Day-I-master)
β β βββ src)
β β βββ [hi](./controllers)
β β βββ models)
β βββ [hi](./_Past-Projects)
β β βββ LambdaSchool-master)
β β βββ [hi](./31d1)
β β βββ [hi](./aa-score)
β β β βββ [hi](./public)
β β β βββ src)
β β βββ [hi](./Administration)
β β β βββ [hi](./certs)
β β β βββ [hi](./marketing)
β β β βββ [hi](./studying)
β β β βββ zoom)
β β βββ [hi](./bw1-tl)
β β β βββ [hi](./admin)
β β β βββ [hi](./api)
β β β βββ [hi](./auth)
β β β βββ [hi](./database)
β β β β βββ [hi](./migrations)
β β β β βββ seeds)
β β β βββ [hi](./middleware)
β β β βββ [hi](./todos)
β β β βββ volunteer)
β β βββ [hi](./css)
β β βββ [hi](./evoingram.github.io)
β β βββ [hi](./JavaScript30)
β β β βββ [hi](./01)
β β β β βββ sounds)
β β β βββ [hi](./02)
β β β βββ [hi](./03)
β β β βββ [hi](./04)
β β β βββ [hi](./05)
β β β βββ [hi](./06)
β β β βββ [hi](./07)
β β β βββ [hi](./08)
β β β βββ [hi](./09)
β β β βββ [hi](./10)
β β β βββ [hi](./11)
β β β βββ [hi](./12)
β β β βββ [hi](./13)
β β β βββ [hi](./14)
β β β βββ [hi](./15)
β β β βββ [hi](./16)
β β β βββ [hi](./17)
β β β βββ [hi](./18)
β β β βββ [hi](./19)
β β β βββ [hi](./20)
β β β βββ [hi](./21)
β β β βββ [hi](./22)
β β β βββ [hi](./23)
β β β βββ [hi](./24)
β β β βββ [hi](./25)
β β β βββ [hi](./26)
β β β βββ [hi](./27)
β β β βββ [hi](./28)
β β β βββ [hi](./29)
β β β βββ 30)
β β βββ [hi](./labs)
β β β βββ [hi](./backend)
β β β βββ [hi](./frontend)
β β β βββ [hi](./last journal entry)
β β β βββ video-to-next-group)
β β βββ [hi](./m1)
β β β βββ [hi](./11b1)
β β β β βββ [hi](./design-files)
β β β β βββ [hi](./Git-Flow-Practice)
β β β β βββ [hi](./great-idea)
β β β β β βββ [hi](./css)
β β β β β βββ img)
β β β β βββ [hi](./great-idea-website)
β β β β β βββ [hi](./css)
β β β β β βββ img)
β β β β βββ Web26Git)
β β β βββ [hi](./11c1)
β β β β βββ [hi](./design-files)
β β β β βββ [hi](./great-idea-website)
β β β β β βββ [hi](./css)
β β β β β βββ img)
β β β β βββ User-Interface)
β β β βββ [hi](./11d1)
β β β β βββ [hi](./design-files)
β β β β βββ [hi](./great-idea)
β β β β β βββ [hi](./css)
β β β β β βββ img)
β β β β βββ UI-III-Flexbox)
β β β βββ [hi](./12a1)
β β β β βββ [hi](./css)
β β β β βββ [hi](./design-files)
β β β β βββ [hi](./img)
β β β β βββ responsive-web-design-I)
β β β βββ [hi](./12b1)
β β β β βββ [hi](./dimension)
β β β β β βββ [hi](./assets)
β β β β β β βββ sass)
β β β β β βββ html5up-dimension)
β β β β β βββ assets)
β β β β β βββ sass)
β β β β βββ solidstate)
β β β β βββ assets)
β β β β βββ sass)
β β β βββ [hi](./12c1)
β β β β βββ [hi](./css)
β β β β βββ less)
β β β βββ [hi](./12d1)
β β β β βββ [hi](./css)
β β β β βββ [hi](./design-files)
β β β β βββ [hi](./img)
β β β β βββ less)
β β β βββ [hi](./13a1)
β β β β βββ assignments)
β β β βββ [hi](./13b1)
β β β β βββ assignments)
β β β βββ [hi](./13c1)
β β β β βββ assignments)
β β β βββ [hi](./13d1)
β β β β βββ [hi](./new)
β β β β β βββ test)
β β β β βββ old)
β β β β βββ assignments)
β β β βββ [hi](./13e1)
β β β β βββ challenges)
β β β βββ [hi](./14a1)
β β β β βββ Marketing-page)
β β β βββ [hi](./SC-ACSS)
β β β βββ Sprint-Challenge--Advanced-CSS)
β β βββ [hi](./m2)
β β β βββ [hi](./21a1)
β β β β βββ [hi](./css)
β β β β βββ [hi](./design-files)
β β β β βββ [hi](./img)
β β β β βββ [hi](./js)
β β β β βββ stretch-assignment)
β β β β βββ digital_timer)
β β β βββ [hi](./21b1)
β β β βββ [hi](./21c1)
β β β β βββ [hi](./Article)
β β β β βββ [hi](./assets)
β β β β βββ [hi](./css)
β β β β βββ [hi](./Header)
β β β β βββ [hi](./LESS)
β β β β βββ Menu)
β β β βββ [hi](./21d1)
β β β β βββ [hi](./assets)
β β β β βββ GitHubCard)
β β β βββ [hi](./21e1)
β β β β βββ [hi](./assets)
β β β β β βββ carousel)
β β β β βββ [hi](./components)
β β β β β βββ [hi](./Cards)
β β β β β βββ [hi](./Carousel)
β β β β β βββ [hi](./Header)
β β β β β βββ [hi](./Tabs)
β β β β β βββ TopBar)
β β β β βββ [hi](./CSS)
β β β β βββ LESS)
β β β βββ [hi](./22a1)
β β β β βββ [hi](./public)
β β β β βββ src)
β β β βββ [hi](./22b1)
β β β β βββ [hi](./design-files)
β β β β βββ [hi](./public)
β β β β βββ src)
β β β β βββ [hi](./components)
β β β β β βββ [hi](./ButtonComponents)
β β β β β β βββ [hi](./NumberButtons)
β β β β β β βββ [hi](./OperatorButtons)
β β β β β β βββ SpecialButtons)
β β β β β βββ DisplayComponents)
β β β β βββ Img)
β β β βββ [hi](./22c1)
β β β β βββ [hi](./public)
β β β β βββ [hi](./reactstrap-project)
β β β β β βββ [hi](./public)
β β β β β βββ src)
β β β β βββ src)
β β β βββ [hi](./22e1)
β β β β βββ starwars)
β β β β βββ [hi](./public)
β β β β βββ src)
β β β β βββ components)
β β β βββ [hi](./23a1)
β β β β βββ [hi](./public)
β β β β βββ src)
β β β β βββ components)
β β β βββ [hi](./23a2)
β β β β βββ images)
β β β βββ [hi](./23b1)
β β β β βββ client)
β β β β βββ [hi](./public)
β β β β βββ src)
β β β β βββ Movies)
β β β βββ [hi](./23c1)
β β β β βββ [hi](./public)
β β β β βββ [hi](./src)
β β β β β βββ CustomHooks)
β β β β βββ team-builder)
β β β βββ [hi](./23d1)
β β β β βββ [hi](./public)
β β β β βββ src)
β β β β βββ CustomHooks)
β β β βββ [hi](./23d2)
β β β β βββ [hi](./public)
β β β β βββ src)
β β β βββ [hi](./23e1)
β β β β βββ [hi](./public)
β β β β βββ src)
β β β β βββ components)
β β β βββ 24a1)
β β β βββ [hi](./public)
β β β β βββ img)
β β β βββ src)
β β β βββ components)
β β β βββ old pages)
β β βββ [hi](./m3)
β β β βββ [hi](./31a1)
β β β β βββ [hi](./public)
β β β β βββ src)
β β β β βββ components)
β β β β βββ TodoComponents)
β β β βββ [hi](./31a2)
β β β β βββ [hi](./public)
β β β β βββ src)
β β β βββ [hi](./31b1)
β β β β βββ [hi](./public)
β β β β βββ src)
β β β β βββ components)
β β β βββ [hi](./31c1)
β β β β βββ [hi](./public)
β β β β βββ src)
β β β β βββ [hi](./components)
β β β β βββ hooks)
β β β βββ [hi](./31d1)
β β β β βββ [hi](./public)
β β β β βββ src)
β β β β βββ [hi](./components)
β β β β βββ hooks)
β β β βββ [hi](./31e1)
β β β β βββ client)
β β β β βββ [hi](./public)
β β β β βββ src)
β β β β βββ [hi](./components)
β β β β βββ hooks)
β β β βββ [hi](./32a1)
β β β β βββ [hi](./public)
β β β β βββ src)
β β β β βββ [hi](./components)
β β β β βββ [hi](./contexts)
β β β β βββ sass)
β β β βββ [hi](./32b1)
β β β β βββ [hi](./public)
β β β β βββ src)
β β β β βββ [hi](./components)
β β β β βββ reducers)
β β β βββ [hi](./32c1)
β β β β βββ [hi](./public)
β β β β βββ src)
β β β β βββ [hi](./actions)
β β β β βββ [hi](./components)
β β β β βββ reducers)
β β β βββ [hi](./32d1)
β β β β βββ [hi](./public)
β β β β βββ src)
β β β β βββ [hi](./actions)
β β β β βββ [hi](./components)
β β β β βββ [hi](./fonts)
β β β β βββ [hi](./img)
β β β β βββ reducers)
β β β βββ [hi](./32e1)
β β β β βββ smurfs)
β β β β βββ [hi](./public)
β β β β βββ src)
β β β β βββ [hi](./actions)
β β β β βββ [hi](./components)
β β β β βββ reducers)
β β β βββ [hi](./33a1)
β β β β βββ [hi](./public)
β β β β βββ src)
β β β β βββ [hi](./controls)
β β β β βββ [hi](./dashboard)
β β β β βββ display)
β β β βββ [hi](./33b1)
β β β β βββ friends)
β β β β βββ [hi](./public)
β β β β βββ src)
β β β β βββ [hi](./actions)
β β β β βββ [hi](./components)
β β β β βββ [hi](./reducers)
β β β β βββ utils)
β β β βββ [hi](./33d1)
β β β β βββ client)
β β β β βββ [hi](./public)
β β β β βββ src)
β β β β βββ Movies)
β β β βββ 33e1)
β β β βββ client)
β β β βββ [hi](./public)
β β β βββ src)
β β β βββ [hi](./actions)
β β β βββ [hi](./components)
β β β βββ [hi](./reducers)
β β β βββ utils)
β β βββ [hi](./m4)
β β β βββ [hi](./41a1)
β β β β βββ data)
β β β β βββ [hi](./migrations)
β β β β βββ seeds)
β β β βββ [hi](./41a2)
β β β β βββ data)
β β β β βββ [hi](./migrations)
β β β β βββ seeds)
β β β βββ [hi](./41b1)
β β β β βββ [hi](./data)
β β β β β βββ [hi](./migrations)
β β β β β βββ seeds)
β β β β βββ hubs)
β β β βββ [hi](./41b2)
β β β β βββ data)
β β β β βββ [hi](./migrations)
β β β β βββ seeds)
β β β βββ [hi](./41c1)
β β β β βββ [hi](./data)
β β β β β βββ [hi](./migrations)
β β β β β βββ seeds)
β β β β βββ [hi](./hubs)
β β β β βββ messages)
β β β βββ [hi](./41c2)
β β β β βββ [hi](./data)
β β β β β βββ [hi](./migrations)
β β β β β βββ seeds)
β β β β βββ [hi](./posts)
β β β β βββ users)
β β β βββ [hi](./41d1)
β β β β βββ [hi](./api)
β β β β βββ data)
β β β β βββ migrations)
β β β βββ [hi](./41e1)
β β β β βββ [hi](./data)
β β β β β βββ [hi](./helpers)
β β β β β βββ [hi](./migrations)
β β β β β βββ seeds)
β β β β βββ routers)
β β β βββ [hi](./41e1app)
β β β β βββ [hi](./public)
β β β β βββ src)
β β β β βββ components)
β β β βββ [hi](./42a1)
β β β β βββ [hi](./data)
β β β β β βββ [hi](./migrations)
β β β β β βββ seeds)
β β β β βββ [hi](./dbintro)
β β β β βββ [hi](./migrations)
β β β β βββ posts)
β β β βββ [hi](./42a2)
β β β β βββ [hi](./data)
β β β β β βββ [hi](./migrations)
β β β β β βββ seeds)
β β β β βββ routers)
β β β βββ [hi](./42b1)
β β β β βββ [hi](./api)
β β β β βββ [hi](./data)
β β β β βββ fruits)
β β β βββ [hi](./42b2)
β β β β βββ [hi](./api)
β β β β βββ [hi](./data)
β β β β β βββ [hi](./migrations)
β β β β β βββ seeds)
β β β β βββ routers)
β β β βββ [hi](./42c1)
β β β β βββ [hi](./data)
β β β β β βββ [hi](./migrations)
β β β β β βββ seeds)
β β β β βββ users)
β β β βββ [hi](./42c2)
β β β β βββ [hi](./data)
β β β β β βββ [hi](./migrations)
β β β β β βββ seeds)
β β β β βββ schemes)
β β β βββ [hi](./42d1)
β β β β βββ data)
β β β β βββ seeds)
β β β βββ [hi](./42d2)
β β β β βββ [hi](./data)
β β β β β βββ [hi](./migrations)
β β β β β βββ seeds)
β β β β βββ recipes)
β β β βββ [hi](./42e1)
β β β β βββ [hi](./data)
β β β β β βββ [hi](./migrations)
β β β β β βββ seeds)
β β β β βββ projects)
β β β βββ [hi](./43a1)
β β β β βββ [hi](./api)
β β β β βββ [hi](./auth)
β β β β βββ [hi](./authintro)
β β β β βββ [hi](./database)
β β β β β βββ migrations)
β β β β βββ [hi](./__MACOSX)
β β β β β βββ authintro)
β β β β βββ users)
β β β βββ [hi](./43a2)
β β β β βββ [hi](./api)
β β β β βββ [hi](./auth)
β β β β βββ [hi](./database)
β β β β β βββ migrations)
β β β β βββ users)
β β β βββ [hi](./43b1)
β β β β βββ [hi](./api)
β β β β βββ [hi](./auth)
β β β β βββ [hi](./database)
β β β β β βββ migrations)
β β β β βββ users)
β β β βββ [hi](./43b2)
β β β β βββ [hi](./api)
β β β β βββ [hi](./auth)
β β β β βββ [hi](./database)
β β β β β βββ migrations)
β β β β βββ [hi](./sessions)
β β β β βββ users)
β β β βββ [hi](./43c1)
β β β β βββ [hi](./api)
β β β β βββ [hi](./auth)
β β β β βββ [hi](./database)
β β β β β βββ migrations)
β β β β βββ [hi](./jwts)
β β β β βββ users)
β β β βββ [hi](./43c2)
β β β β βββ [hi](./api)
β β β β βββ [hi](./auth)
β β β β βββ [hi](./config)
β β β β βββ [hi](./database)
β β β β β βββ migrations)
β β β β βββ [hi](./__MACOSX)
β β β β β βββ sessions)
β β β β βββ users)
β β β βββ [hi](./43d1)
β β β β βββ [hi](./api)
β β β β βββ [hi](./data)
β β β β β βββ [hi](./migrations)
β β β β β βββ seeds)
β β β β βββ hobbits)
β β β βββ [hi](./43d1a)
β β β β βββ ls)
β β β βββ [hi](./43d2)
β β β β βββ [hi](./api)
β β β β βββ [hi](./cohorts)
β β β β βββ [hi](./database)
β β β β β βββ [hi](./migrations)
β β β β β βββ seeds)
β β β β βββ students)
β β β βββ 43e1)
β β β βββ [hi](./43e1)
β β β β βββ [hi](./public)
β β β β βββ src)
β β β β βββ components)
β β β βββ [hi](./api)
β β β βββ [hi](./auth)
β β β βββ [hi](./database)
β β β β βββ migrations)
β β β βββ jokes)
β β βββ [hi](./m5)
β β β βββ [hi](./51a1)
β β β β βββ src)
β β β β βββ employeeApp)
β β β βββ [hi](./51b1)
β β β β βββ src)
β β β β βββ collections)
β β β β βββ src)
β β β β βββ collections)
β β β βββ [hi](./51c1)
β β β β βββ transportation)
β β β β βββ src)
β β β β βββ transport)
β β β βββ [hi](./51d1)
β β β β βββ [hi](./bin)
β β β β β βββ src)
β β β β β βββ [hi](./main)
β β β β β β βββ [hi](./java)
β β β β β β β βββ com)
β β β β β β β βββ lambdaschool)
β β β β β β β βββ webemployees3)
β β β β β β βββ resources)
β β β β β βββ test)
β β β β β βββ java)
β β β β β βββ com)
β β β β β βββ lambdaschool)
β β β β β βββ webemployees3)
β β β β βββ src)
β β β β βββ [hi](./main)
β β β β β βββ [hi](./java)
β β β β β β βββ com)
β β β β β β βββ lambdaschool)
β β β β β β βββ j51d1)
β β β β β βββ resources)
β β β β β βββ static)
β β β β βββ test)
β β β β βββ java)
β β β β βββ com)
β β β β βββ lambdaschool)
β β β β βββ webemployees3)
β β β βββ [hi](./51d2)
β β β β βββ [hi](./src)
β β β β β βββ [hi](./main)
β β β β β β βββ [hi](./java)
β β β β β β β βββ com)
β β β β β β β βββ lambdaschool)
β β β β β β β βββ j51d2)
β β β β β β βββ resources)
β β β β β βββ test)
β β β β β βββ java)
β β β β β βββ com)
β β β β β βββ lambdaschool)
β β β β β βββ j51d2)
β β β β βββ target)
β β β β βββ classes)
β β β βββ [hi](./51e1)
β β β β βββ src)
β β β β βββ [hi](./main)
β β β β β βββ [hi](./java)
β β β β β β βββ com)
β β β β β β βββ lambdaschool)
β β β β β β βββ j51e1)
β β β β β βββ resources)
β β β β βββ test)
β β β β βββ java)
β β β β βββ com)
β β β β βββ lambdaschool)
β β β β βββ j51e1)
β β β βββ [hi](./52b1)
β β β β βββ assets)
β β β βββ [hi](./52c1)
β β β β βββ src)
β β β β βββ [hi](./main)
β β β β β βββ [hi](./java)
β β β β β β βββ com)
β β β β β β βββ lambdaschool)
β β β β β β βββ j52c1)
β β β β β β βββ [hi](./controllers)
β β β β β β βββ [hi](./models)
β β β β β β βββ [hi](./repos)
β β β β β β βββ services)
β β β β β βββ resources)
β β β β βββ test)
β β β β βββ java)
β β β β βββ com)
β β β β βββ lambdaschool)
β β β β βββ j52c1)
β β β βββ [hi](./52c2)
β β β β βββ src)
β β β β βββ [hi](./main)
β β β β β βββ [hi](./java)
β β β β β β βββ com)
β β β β β β βββ lambdaschool)
β β β β β β βββ j52c2)
β β β β β β βββ [hi](./controllers)
β β β β β β βββ [hi](./models)
β β β β β β βββ [hi](./repos)
β β β β β β βββ services)
β β β β β βββ resources)
β β β β βββ test)
β β β β βββ java)
β β β β βββ com)
β β β β βββ lambdaschool)
β β β β βββ j52c2)
β β β βββ [hi](./52d1)
β β β β βββ oauth)
β β β β βββ [hi](./oauth2)
β β β β β βββ src)
β β β β β βββ [hi](./main)
β β β β β β βββ [hi](./java)
β β β β β β β βββ com)
β β β β β β β βββ lambdaschool)
β β β β β β β βββ usermodel)
β β β β β β β βββ [hi](./config)
β β β β β β β βββ [hi](./controllers)
β β β β β β β βββ [hi](./exceptions)
β β β β β β β βββ [hi](./handlers)
β β β β β β β βββ [hi](./logging)
β β β β β β β βββ [hi](./models)
β β β β β β β βββ [hi](./repository)
β β β β β β β βββ [hi](./services)
β β β β β β β βββ view)
β β β β β β βββ resources)
β β β β β β βββ info)
β β β β β βββ test)
β β β β β βββ [hi](./java)
β β β β β β βββ com)
β β β β β β βββ lambdaschool)
β β β β β β βββ usermodel)
β β β β β β βββ [hi](./controllers)
β β β β β β βββ services)
β β β β β βββ resources)
β β β β βββ oauth2 - initial)
β β β β βββ src)
β β β β βββ [hi](./main)
β β β β β βββ [hi](./java)
β β β β β β βββ com)
β β β β β β βββ lambdaschool)
β β β β β β βββ [hi](./authenticatedusers)
β β β β β β β βββ [hi](./config)
β β β β β β β βββ [hi](./controller)
β β β β β β β βββ [hi](./model)
β β β β β β β βββ [hi](./repository)
β β β β β β β βββ [hi](./service)
β β β β β β β βββ view)
β β β β β β βββ usermodel)
β β β β β β βββ [hi](./config)
β β β β β β βββ [hi](./controllers)
β β β β β β βββ [hi](./exceptions)
β β β β β β βββ [hi](./handlers)
β β β β β β βββ [hi](./logging)
β β β β β β βββ [hi](./models)
β β β β β β βββ [hi](./repository)
β β β β β β βββ [hi](./services)
β β β β β β βββ view)
β β β β β βββ resources)
β β β β β βββ info)
β β β β βββ test)
β β β β βββ java)
β β β β βββ com)
β β β β βββ lambdaschool)
β β β β βββ [hi](./authenticatedusers)
β β β β βββ usermodel)
β β β βββ [hi](./53a1)
β β β β βββ [hi](./oauth2ExceptionLogging-final)
β β β β β βββ src)
β β β β β βββ main)
β β β β β βββ [hi](./java)
β β β β β β βββ com)
β β β β β β βββ lambdaschool)
β β β β β β βββ oauth2)
β β β β β β βββ [hi](./config)
β β β β β β βββ [hi](./controllers)
β β β β β β βββ [hi](./exceptions)
β β β β β β βββ [hi](./handlers)
β β β β β β βββ [hi](./logging)
β β β β β β βββ [hi](./models)
β β β β β β βββ [hi](./repository)
β β β β β β βββ [hi](./services)
β β β β β β βββ view)
β β β β β βββ resources)
β β β β βββ [hi](./src)
β β β β β βββ [hi](./main)
β β β β β β βββ [hi](./java)
β β β β β β β βββ com)
β β β β β β β βββ lambdaschool)
β β β β β β β βββ authenticatedusers)
β β β β β β β βββ [hi](./config)
β β β β β β β βββ [hi](./controller)
β β β β β β β βββ [hi](./exceptions)
β β β β β β β βββ [hi](./handlers)
β β β β β β β βββ [hi](./model)
β β β β β β β βββ [hi](./repository)
β β β β β β β βββ [hi](./service)
β β β β β β β βββ view)
β β β β β β βββ resources)
β β β β β β βββ info)
β β β β β βββ test)
β β β β β βββ java)
β β β β β βββ com)
β β β β β βββ lambdaschool)
β β β β β βββ [hi](./authenticatedusers)
β β β β β βββ usermodel)
β β β β βββ target)
β β β β βββ classes)
β β β β βββ info)
β β β βββ [hi](./53b1)
β β β β βββ [hi](./clientrestaurants)
β β β β β βββ src)
β β β β β βββ [hi](./main)
β β β β β β βββ [hi](./java)
β β β β β β β βββ com)
β β β β β β β βββ lambda)
β β β β β β β βββ clientrestaurants)
β β β β β β β βββ [hi](./client)
β β β β β β β βββ model)
β β β β β β βββ resources)
β β β β β βββ test)
β β β β β βββ java)
β β β β β βββ com)
β β β β β βββ lambda)
β β β β β βββ clientrestaurants)
β β β β βββ [hi](./restaurants-initial)
β β β β β βββ [hi](./src)
β β β β β β βββ main)
β β β β β β βββ [hi](./java)
β β β β β β β βββ com)
β β β β β β β βββ lambdaschool)
β β β β β β β βββ restaurants)
β β β β β β β βββ [hi](./config)
β β β β β β β βββ [hi](./controller)
β β β β β β β βββ [hi](./model)
β β β β β β β βββ [hi](./repos)
β β β β β β β βββ service)
β β β β β β βββ resources)
β β β β β β βββ info)
β β β β β βββ target)
β β β β β βββ [hi](./classes)
β β β β β β βββ [hi](./com)
β β β β β β β βββ lambdaschool)
β β β β β β β βββ restaurants)
β β β β β β β βββ [hi](./config)
β β β β β β β βββ [hi](./controller)
β β β β β β β βββ [hi](./model)
β β β β β β β βββ [hi](./repos)
β β β β β β β βββ service)
β β β β β β βββ info)
β β β β β βββ [hi](./failsafe-reports)
β β β β β βββ [hi](./maven-archiver)
β β β β β βββ [hi](./maven-status)
β β β β β β βββ maven-compiler-plugin)
β β β β β β βββ [hi](./compile)
β β β β β β β βββ default-compile)
β β β β β β βββ testCompile)
β β β β β β βββ default-testCompile)
β β β β β βββ surefire-reports)
β β β β βββ restaurants-pagesswagger)
β β β β βββ [hi](./src)
β β β β β βββ main)
β β β β β βββ [hi](./java)
β β β β β β βββ com)
β β β β β β βββ lambdaschool)
β β β β β β βββ restaurants)
β β β β β β βββ [hi](./config)
β β β β β β βββ [hi](./controller)
β β β β β β βββ [hi](./exception)
β β β β β β βββ [hi](./model)
β β β β β β βββ [hi](./repos)
β β β β β β βββ service)
β β β β β βββ resources)
β β β β β βββ [hi](./info)
β β β β β βββ templates)
β β β β βββ target)
β β β β βββ [hi](./classes)
β β β β β βββ [hi](./info)
β β β β β βββ templates)
β β β β βββ [hi](./heroku)
β β β β β βββ app)
β β β β βββ [hi](./maven-archiver)
β β β β βββ maven-status)
β β β β βββ maven-compiler-plugin)
β β β β βββ [hi](./compile)
β β β β β βββ default-compile)
β β β β βββ testCompile)
β β β β βββ default-testCompile)
β β β βββ [hi](./53c1)
β β β β βββ [hi](./restaurants-initial)
β β β β β βββ src)
β β β β β βββ main)
β β β β β βββ [hi](./java)
β β β β β β βββ com)
β β β β β β βββ lambdaschool)
β β β β β β βββ restaurants)
β β β β β β βββ [hi](./config)
β β β β β β βββ [hi](./controller)
β β β β β β βββ [hi](./model)
β β β β β β βββ [hi](./repos)
β β β β β β βββ service)
β β β β β βββ resources)
β β β β β βββ info)
β β β β βββ restaurants-testing)
β β β β βββ src)
β β β β βββ [hi](./main)
β β β β β βββ [hi](./java)
β β β β β β βββ com)
β β β β β β βββ lambdaschool)
β β β β β β βββ restaurants)
β β β β β β βββ [hi](./config)
β β β β β β βββ [hi](./controller)
β β β β β β βββ [hi](./model)
β β β β β β βββ [hi](./repos)
β β β β β β βββ service)
β β β β β βββ resources)
β β β β β βββ info)
β β β β βββ test)
β β β β βββ [hi](./java)
β β β β β βββ com)
β β β β β βββ lambdaschool)
β β β β β βββ restaurants)
β β β β β βββ [hi](./controller)
β β β β β βββ service)
β β β β βββ resources)
β β β βββ 53d1)
β β β βββ [hi](./JS-FrontEnd-by-jheinz1999)
β β β β βββ [hi](./public)
β β β β βββ src)
β β β β βββ components)
β β β βββ StartHere)
β β β βββ src)
β β β βββ [hi](./main)
β β β β βββ [hi](./java)
β β β β β βββ com)
β β β β β βββ lambdaschool)
β β β β β βββ starthere)
β β β β β βββ [hi](./config)
β β β β β βββ [hi](./controllers)
β β β β β βββ [hi](./exceptions)
β β β β β βββ [hi](./handlers)
β β β β β βββ [hi](./logging)
β β β β β βββ [hi](./models)
β β β β β βββ [hi](./repository)
β β β β β βββ [hi](./services)
β β β β β βββ view)
β β β β βββ resources)
β β β β βββ info)
β β β βββ test)
β β β βββ [hi](./java)
β β β β βββ com)
β β β β βββ lambdaschool)
β β β β βββ starthere)
β β β β βββ [hi](./controllers)
β β β β βββ services)
β β β βββ resources)
β β βββ [hi](./m6)
β β β βββ [hi](./61a1)
β β β β βββ src)
β β β βββ [hi](./61b1)
β β β β βββ [hi](./examples)
β β β β βββ src)
β β β βββ [hi](./61c1)
β β β β βββ src)
β β β β βββ [hi](./cityreader)
β β β β β βββ __pycache__)
β β β β βββ [hi](./comp)
β β β β β βββ __pycache__)
β β β β βββ oop)
β β β β βββ __pycache__)
β β β βββ [hi](./62a1)
β β β β βββ [hi](./avl_tree)
β β β β βββ [hi](./benchmarks)
β β β β βββ [hi](./binary_search_tree)
β β β β βββ [hi](./doubly_linked_list)
β β β β βββ [hi](./heap)
β β β β βββ [hi](./lru_cache)
β β β β βββ [hi](./queue)
β β β β βββ [hi](./queue_and_stack)
β β β β βββ [hi](./singly_linked_list)
β β β β βββ stack)
β β β βββ [hi](./62b1)
β β β β βββ [hi](./names)
β β β β βββ [hi](./reverse)
β β β β βββ ring_buffer)
β β β βββ [hi](./63a1)
β β β β βββ src)
β β β β βββ [hi](./iterative_sorting)
β β β β βββ searching)
β β β βββ [hi](./63b1)
β β β β βββ src)
β β β β βββ recursive_sorting)
β β β β βββ __pycache__)
β β β βββ [hi](./63c1)
β β β β βββ [hi](./eating_cookies)
β β β β βββ [hi](./knapsack)
β β β β β βββ data)
β β β β βββ [hi](./making_change)
β β β β βββ [hi](./moving_zeroes)
β β β β βββ [hi](./product_of_all_other_numbers)
β β β β βββ [hi](./recipe_batches)
β β β β βββ [hi](./rock_paper_scissors)
β β β β βββ [hi](./single_number)
β β β β βββ [hi](./sliding_window_max)
β β β β β βββ data)
β β β β βββ stock_prices)
β β β βββ 63d1)
β β β βββ [hi](./recursive_count_th)
β β β βββ [hi](./robot_sort)
β β β βββ Short-Answer)
β β βββ [hi](./m7)
β β β βββ [hi](./71a1)
β β β β βββ [hi](./applications)
β β β β β βββ [hi](./crack_caesar)
β β β β β βββ [hi](./expensive_seq)
β β β β β βββ [hi](./histo)
β β β β β βββ [hi](./lookup_table)
β β β β β βββ [hi](./markov)
β β β β β βββ [hi](./no_dups)
β β β β β βββ [hi](./sumdiff)
β β β β β βββ word_count)
β β β β βββ hashtable)
β β β βββ [hi](./71e1)
β β β β βββ hashtables)
β β β β βββ [hi](./ex1)
β β β β βββ [hi](./ex2)
β β β β βββ [hi](./ex3)
β β β β βββ [hi](./ex4)
β β β β βββ ex5)
β β β βββ [hi](./72a1)
β β β β βββ [hi](./objectives)
β β β β β βββ [hi](./breadth-first-search)
β β β β β β βββ img)
β β β β β βββ [hi](./connected-components)
β β β β β β βββ img)
β β β β β βββ [hi](./depth-first-search)
β β β β β β βββ img)
β β β β β βββ [hi](./graph-intro)
β β β β β β βββ img)
β β β β β βββ [hi](./graph-representations)
β β β β β β βββ img)
β β β β β βββ randomness)
β β β β βββ projects)
β β β β βββ [hi](./adventure)
β β β β β βββ maps)
β β β β βββ [hi](./ancestor)
β β β β βββ [hi](./graph)
β β β β βββ social)
β β β βββ [hi](./73a1)
β β β β βββ [hi](./asm)
β β β β βββ ls8)
β β β β βββ examples)
β β β βββ 74a1)
β β βββ [hi](./node_modules)
β β βββ [hi](./src)
β β β βββ [hi](./iterative_sorting)
β β β βββ searching)
β β βββ [hi](./summary)
β β β βββ [hi](./certifications)
β β β β βββ [hi](./IBM zOS)
β β β β βββ Oracle Autonomous DB)
β β β β βββ [hi](./1 Overview)
β β β β βββ [hi](./2 Provisioning and Connectivity)
β β β β βββ [hi](./3 Migration and Data Loding into Autonomous DB)
β β β β βββ [hi](./4 Migrating and Data Loading)
β β β β βββ [hi](./5 Monitoring Autonomous DB)
β β β β βββ 6 Tools Reporting Analytics)
β β β βββ [hi](./cobol)
β β β β βββ [hi](./COBOL example programs_files)
β β β β βββ [hi](./COBOL Programming Course_files)
β β β β βββ COBOL Programming Exercises_files)
β β β βββ [hi](./complete)
β β β β βββ [hi](./Decks)
β β β β βββ notes-books)
β β β βββ [hi](./general)
β β β βββ [hi](./interviewing)
β β β βββ [hi](./Node Express Knex)
β β β β βββ Create Back End Guide)
β β β βββ [hi](./testing)
β β β βββ typescript)
β β βββ tlbw)
β β βββ client)
β β βββ [hi](./public)
β β βββ src)
β β βββ [hi](./components)
β β β βββ [hi](./context)
β β β β βββ strainsSelectContext)
β β β βββ strains)
β β βββ imgs)
β βββ [hi](./React-Todo-Solution-master)
β β βββ [hi](./public)
β β βββ src)
β β βββ tests)
β βββ [hi](./_Sprint-Resources)
β β βββ Sprint Challenge Study Guide - Unit 1, Sprint 1)
β βββ [hi](./_Templates-Frameworks-And-Official-Repos)
β β βββ [hi](./ant-design-master)
β β β βββ [hi](./components)
β β β β βββ [hi](./affix)
β β β β β βββ [hi](./demo)
β β β β β βββ [hi](./style)
β β β β β βββ __tests__)
β β β β β βββ __snapshots__)
β β β β βββ [hi](./alert)
β β β β β βββ [hi](./demo)
β β β β β βββ [hi](./style)
β β β β β βββ __tests__)
β β β β β βββ __snapshots__)
β β β β βββ [hi](./anchor)
β β β β β βββ [hi](./demo)
β β β β β βββ [hi](./style)
β β β β β βββ __tests__)
β β β β β βββ __snapshots__)
β β β β βββ [hi](./auto-complete)
β β β β β βββ [hi](./demo)
β β β β β βββ [hi](./style)
β β β β β βββ __tests__)
β β β β β βββ __snapshots__)
β β β β βββ [hi](./avatar)
β β β β β βββ [hi](./demo)
β β β β β βββ [hi](./style)
β β β β β βββ __tests__)
β β β β β βββ __snapshots__)
β β β β βββ [hi](./back-top)
β β β β β βββ [hi](./demo)
β β β β β βββ [hi](./style)
β β β β β βββ __tests__)
β β β β β βββ __snapshots__)
β β β β βββ [hi](./badge)
β β β β β βββ [hi](./demo)
β β β β β βββ [hi](./style)
β β β β β βββ __tests__)
β β β β β βββ __snapshots__)
β β β β βββ [hi](./breadcrumb)
β β β β β βββ [hi](./demo)
β β β β β βββ [hi](./style)
β β β β β βββ __tests__)
β β β β β βββ __snapshots__)
β β β β βββ [hi](./button)
β β β β β βββ [hi](./demo)
β β β β β βββ [hi](./style)
β β β β β βββ __tests__)
β β β β β βββ __snapshots__)
β β β β βββ [hi](./calendar)
β β β β β βββ [hi](./demo)
β β β β β βββ [hi](./locale)
β β β β β βββ [hi](./style)
β β β β β βββ __tests__)
β β β β β βββ __snapshots__)
β β β β βββ [hi](./card)
β β β β β βββ [hi](./demo)
β β β β β βββ [hi](./style)
β β β β β βββ __tests__)
β β β β β βββ __snapshots__)
β β β β βββ [hi](./carousel)
β β β β β βββ [hi](./demo)
β β β β β βββ [hi](./style)
β β β β β βββ __tests__)
β β β β β βββ __snapshots__)
β β β β βββ [hi](./cascader)
β β β β β βββ [hi](./demo)
β β β β β βββ [hi](./style)
β β β β β βββ __tests__)
β β β β β βββ __snapshots__)
β β β β βββ [hi](./checkbox)
β β β β β βββ [hi](./demo)
β β β β β βββ [hi](./style)
β β β β β βββ __tests__)
β β β β β βββ __snapshots__)
β β β β βββ [hi](./col)
β β β β β βββ style)
β β β β βββ [hi](./collapse)
β β β β β βββ [hi](./demo)
β β β β β βββ [hi](./style)
β β β β β βββ __tests__)
β β β β β βββ __snapshots__)
β β β β βββ [hi](./comment)
β β β β β βββ [hi](./demo)
β β β β β βββ [hi](./style)
β β β β β βββ __tests__)
β β β β β βββ __snapshots__)
β β β β βββ [hi](./config-provider)
β β β β β βββ [hi](./demo)
β β β β β βββ [hi](./style)
β β β β β βββ __tests__)
β β β β β βββ __snapshots__)
β β β β βββ [hi](./date-picker)
β β β β β βββ [hi](./demo)
β β β β β βββ [hi](./generatePicker)
β β β β β βββ [hi](./locale)
β β β β β βββ [hi](./style)
β β β β β βββ __tests__)
β β β β β βββ __snapshots__)
β β β β βββ [hi](./descriptions)
β β β β β βββ [hi](./demo)
β β β β β βββ [hi](./style)
β β β β β βββ __tests__)
β β β β β βββ __snapshots__)
β β β β βββ [hi](./divider)
β β β β β βββ [hi](./demo)
β β β β β βββ [hi](./style)
β β β β β βββ __tests__)
β β β β β βββ __snapshots__)
β β β β βββ [hi](./drawer)
β β β β β βββ [hi](./demo)
β β β β β βββ [hi](./style)
β β β β β βββ __tests__)
β β β β β βββ __snapshots__)
β β β β βββ [hi](./dropdown)
β β β β β βββ [hi](./demo)
β β β β β βββ [hi](./style)
β β β β β βββ __tests__)
β β β β β βββ __snapshots__)
β β β β βββ [hi](./empty)
β β β β β βββ [hi](./demo)
β β β β β βββ [hi](./style)
β β β β β βββ __tests__)
β β β β β βββ __snapshots__)
β β β β βββ [hi](./form)
β β β β β βββ [hi](./demo)
β β β β β βββ [hi](./hooks)
β β β β β βββ [hi](./style)
β β β β β βββ __tests__)
β β β β β βββ __snapshots__)
β β β β βββ [hi](./grid)
β β β β β βββ [hi](./demo)
β β β β β βββ [hi](./hooks)
β β β β β βββ [hi](./style)
β β β β β βββ __tests__)
β β β β β βββ __snapshots__)
β β β β βββ [hi](./icon)
β β β β β βββ [hi](./demo)
β β β β β βββ [hi](./style)
β β β β β βββ __tests__)
β β β β βββ [hi](./image)
β β β β β βββ [hi](./demo)
β β β β β βββ [hi](./style)
β β β β β βββ __tests__)
β β β β β βββ __snapshots__)
β β β β βββ [hi](./input)
β β β β β βββ [hi](./demo)
β β β β β βββ [hi](./style)
β β β β β βββ __tests__)
β β β β β βββ __snapshots__)
β β β β βββ [hi](./input-number)
β β β β β βββ [hi](./demo)
β β β β β βββ [hi](./style)
β β β β β βββ __tests__)
β β β β β βββ __snapshots__)
β β β β βββ [hi](./layout)
β β β β β βββ [hi](./demo)
β β β β β βββ [hi](./style)
β β β β β βββ __tests__)
β β β β β βββ __snapshots__)
β β β β βββ [hi](./list)
β β β β β βββ [hi](./demo)
β β β β β βββ [hi](./style)
β β β β β βββ __tests__)
β β β β β βββ __snapshots__)
β β β β βββ [hi](./locale)
β β β β βββ [hi](./locale-provider)
β β β β β βββ [hi](./style)
β β β β β βββ __tests__)
β β β β β βββ __snapshots__)
β β β β βββ [hi](./mentions)
β β β β β βββ [hi](./demo)
β β β β β βββ [hi](./style)
β β β β β βββ __tests__)
β β β β β βββ __snapshots__)
β β β β βββ [hi](./menu)
β β β β β βββ [hi](./demo)
β β β β β βββ [hi](./style)
β β β β β βββ __tests__)
β β β β β βββ __snapshots__)
β β β β βββ [hi](./message)
β β β β β βββ [hi](./demo)
β β β β β βββ [hi](./hooks)
β β β β β βββ [hi](./style)
β β β β β βββ __tests__)
β β β β β βββ __snapshots__)
β β β β βββ [hi](./modal)
β β β β β βββ [hi](./demo)
β β β β β βββ [hi](./style)
β β β β β βββ [hi](./__tests__)
β β β β β β βββ __snapshots__)
β β β β β βββ useModal)
β β β β βββ [hi](./notification)
β β β β β βββ [hi](./demo)
β β β β β βββ [hi](./hooks)
β β β β β βββ [hi](./style)
β β β β β βββ __tests__)
β β β β β βββ __snapshots__)
β β β β βββ [hi](./overview)
β β β β βββ [hi](./page-header)
β β β β β βββ [hi](./demo)
β β β β β βββ [hi](./style)
β β β β β βββ __tests__)
β β β β β βββ __snapshots__)
β β β β βββ [hi](./pagination)
β β β β β βββ [hi](./demo)
β β β β β βββ [hi](./style)
β β β β β βββ __tests__)
β β β β β βββ __snapshots__)
β β β β βββ [hi](./popconfirm)
β β β β β βββ [hi](./demo)
β β β β β βββ [hi](./style)
β β β β β βββ __tests__)
β β β β β βββ __snapshots__)
β β β β βββ [hi](./popover)
β β β β β βββ [hi](./demo)
β β β β β βββ [hi](./style)
β β β β β βββ __tests__)
β β β β β βββ __snapshots__)
β β β β βββ [hi](./progress)
β β β β β βββ [hi](./demo)
β β β β β βββ [hi](./style)
β β β β β βββ __tests__)
β β β β β βββ __snapshots__)
β β β β βββ [hi](./radio)
β β β β β βββ [hi](./demo)
β β β β β βββ [hi](./style)
β β β β β βββ __tests__)
β β β β β βββ __snapshots__)
β β β β βββ [hi](./rate)
β β β β β βββ [hi](./demo)
β β β β β βββ [hi](./style)
β β β β β βββ __tests__)
β β β β β βββ __snapshots__)
β β β β βββ [hi](./result)
β β β β β βββ [hi](./demo)
β β β β β βββ [hi](./style)
β β β β β βββ __tests__)
β β β β β βββ __snapshots__)
β β β β βββ [hi](./row)
β β β β β βββ style)
β β β β βββ [hi](./select)
β β β β β βββ [hi](./demo)
β β β β β βββ [hi](./style)
β β β β β βββ [hi](./__tests__)
β β β β β β βββ __snapshots__)
β β β β β βββ utils)
β β β β βββ [hi](./skeleton)
β β β β β βββ [hi](./demo)
β β β β β βββ [hi](./style)
β β β β β βββ __tests__)
β β β β β βββ __snapshots__)
β β β β βββ [hi](./slider)
β β β β β βββ [hi](./demo)
β β β β β βββ [hi](./style)
β β β β β βββ __tests__)
β β β β β βββ __snapshots__)
β β β β βββ [hi](./space)
β β β β β βββ [hi](./demo)
β β β β β βββ [hi](./style)
β β β β β βββ __tests__)
β β β β β βββ __snapshots__)
β β β β βββ [hi](./spin)
β β β β β βββ [hi](./demo)
β β β β β βββ [hi](./style)
β β β β β βββ __tests__)
β β β β β βββ __snapshots__)
β β β β βββ [hi](./statistic)
β β β β β βββ [hi](./demo)
β β β β β βββ [hi](./style)
β β β β β βββ __tests__)
β β β β β βββ __snapshots__)
β β β β βββ [hi](./steps)
β β β β β βββ [hi](./demo)
β β β β β βββ [hi](./style)
β β β β β βββ __tests__)
β β β β β βββ __snapshots__)
β β β β βββ [hi](./style)
β β β β β βββ [hi](./color)
β β β β β βββ [hi](./core)
β β β β β β βββ motion)
β β β β β βββ [hi](./mixins)
β β β β β βββ themes)
β β β β βββ [hi](./switch)
β β β β β βββ [hi](./demo)
β β β β β βββ [hi](./style)
β β β β β βββ __tests__)
β β β β β βββ __snapshots__)
β β β β βββ [hi](./table)
β β β β β βββ [hi](./demo)
β β β β β βββ [hi](./hooks)
β β β β β β βββ useFilter)
β β β β β βββ [hi](./style)
β β β β β βββ __tests__)
β β β β β βββ __snapshots__)
β β β β βββ [hi](./tabs)
β β β β β βββ [hi](./demo)
β β β β β βββ [hi](./style)
β β β β β βββ __tests__)
β β β β β βββ __snapshots__)
β β β β βββ [hi](./tag)
β β β β β βββ [hi](./demo)
β β β β β βββ [hi](./style)
β β β β β βββ __tests__)
β β β β β βββ __snapshots__)
β β β β βββ [hi](./__tests__)
β β β β β βββ __snapshots__)
β β β β βββ [hi](./timeline)
β β β β β βββ [hi](./demo)
β β β β β βββ [hi](./style)
β β β β β βββ __tests__)
β β β β β βββ __snapshots__)
β β β β βββ [hi](./time-picker)
β β β β β βββ [hi](./demo)
β β β β β βββ [hi](./locale)
β β β β β βββ [hi](./style)
β β β β β βββ __tests__)
β β β β β βββ __snapshots__)
β β β β βββ [hi](./tooltip)
β β β β β βββ [hi](./demo)
β β β β β βββ [hi](./style)
β β β β β βββ __tests__)
β β β β β βββ __snapshots__)
β β β β βββ [hi](./transfer)
β β β β β βββ [hi](./demo)
β β β β β βββ [hi](./style)
β β β β β βββ __tests__)
β β β β β βββ __snapshots__)
β β β β βββ [hi](./tree)
β β β β β βββ [hi](./demo)
β β β β β βββ [hi](./style)
β β β β β βββ [hi](./__tests__)
β β β β β β βββ __snapshots__)
β β β β β βββ utils)
β β β β βββ [hi](./tree-select)
β β β β β βββ [hi](./demo)
β β β β β βββ [hi](./style)
β β β β β βββ __tests__)
β β β β β βββ __snapshots__)
β β β β βββ [hi](./typography)
β β β β β βββ [hi](./demo)
β β β β β βββ [hi](./style)
β β β β β βββ __tests__)
β β β β β βββ __snapshots__)
β β β β βββ [hi](./upload)
β β β β β βββ [hi](./demo)
β β β β β βββ [hi](./style)
β β β β β βββ [hi](./__tests__)
β β β β β β βββ __snapshots__)
β β β β β βββ UploadList)
β β β β βββ [hi](./_util)
β β β β β βββ [hi](./hooks)
β β β β β βββ __tests__)
β β β β βββ version)
β β β β βββ style)
β β β βββ [hi](./docs)
β β β β βββ [hi](./react)
β β β β βββ spec)
β β β βββ [hi](./scripts)
β β β β βββ previewEditor)
β β β βββ [hi](./site)
β β β β βββ theme)
β β β β βββ [hi](./static)
β β β β βββ template)
β β β β βββ [hi](./Color)
β β β β βββ [hi](./Content)
β β β β β βββ Demo)
β β β β βββ [hi](./Home)
β β β β β βββ [hi](./Banner)
β β β β β βββ DesignPage)
β β β β βββ [hi](./Icon)
β β β β βββ [hi](./IconDisplay)
β β β β βββ [hi](./Layout)
β β β β β βββ Header)
β β β β βββ Resources)
β β β β βββ Articles)
β β β βββ [hi](./tests)
β β β β βββ [hi](./dekko)
β β β β βββ [hi](./matchers)
β β β β βββ [hi](./__mocks__)
β β β β β βββ rc-util)
β β β β β βββ lib)
β β β β βββ [hi](./shared)
β β β β βββ __snapshots__)
β β β βββ typings)
β β βββ material-components-web-master)
β β βββ [hi](./docs)
β β β βββ [hi](./code)
β β β βββ [hi](./codelabs)
β β β βββ [hi](./contribute)
β β β βββ open_source)
β β βββ [hi](./packages)
β β β βββ [hi](./material-components-web)
β β β βββ [hi](./mdc-animation)
β β β β βββ test)
β β β βββ [hi](./mdc-auto-init)
β β β β βββ test)
β β β βββ [hi](./mdc-banner)
β β β β βββ [hi](./images)
β β β β βββ test)
β β β βββ [hi](./mdc-base)
β β β β βββ test)
β β β βββ [hi](./mdc-button)
β β β β βββ [hi](./images)
β β β β βββ test)
β β β βββ [hi](./mdc-card)
β β β β βββ [hi](./images)
β β β β βββ test)
β β β βββ [hi](./mdc-checkbox)
β β β β βββ [hi](./images)
β β β β βββ test)
β β β βββ [hi](./mdc-chips)
β β β β βββ [hi](./action)
β β β β β βββ test)
β β β β βββ [hi](./chip)
β β β β β βββ test)
β β β β βββ [hi](./chip-set)
β β β β β βββ test)
β β β β βββ deprecated)
β β β β βββ [hi](./chip)
β β β β β βββ test)
β β β β βββ [hi](./chip-set)
β β β β β βββ test)
β β β β βββ [hi](./test)
β β β β βββ trailingaction)
β β β β βββ test)
β β β βββ [hi](./mdc-circular-progress)
β β β β βββ test)
β β β βββ [hi](./mdc-data-table)
β β β β βββ [hi](./images)
β β β β βββ test)
β β β βββ [hi](./mdc-density)
β β β βββ [hi](./mdc-dialog)
β β β β βββ [hi](./images)
β β β β βββ test)
β β β βββ [hi](./mdc-dom)
β β β β βββ test)
β β β βββ [hi](./mdc-drawer)
β β β β βββ [hi](./dismissible)
β β β β β βββ test)
β β β β βββ [hi](./images)
β β β β βββ [hi](./modal)
β β β β β βββ test)
β β β β βββ test)
β β β βββ [hi](./mdc-elevation)
β β β β βββ test)
β β β βββ [hi](./mdc-fab)
β β β β βββ [hi](./images)
β β β β βββ test)
β β β βββ [hi](./mdc-feature-targeting)
β β β βββ [hi](./mdc-floating-label)
β β β β βββ test)
β β β βββ [hi](./mdc-form-field)
β β β β βββ test)
β β β βββ [hi](./mdc-icon-button)
β β β β βββ test)
β β β βββ [hi](./mdc-image-list)
β β β β βββ test)
β β β βββ [hi](./mdc-layout-grid)
β β β βββ [hi](./mdc-linear-progress)
β β β β βββ test)
β β β βββ [hi](./mdc-line-ripple)
β β β β βββ test)
β β β βββ [hi](./mdc-list)
β β β β βββ [hi](./images)
β β β β βββ test)
β β β βββ [hi](./mdc-menu)
β β β β βββ test)
β β β βββ [hi](./mdc-menu-surface)
β β β β βββ test)
β β β βββ [hi](./mdc-notched-outline)
β β β β βββ test)
β β β βββ [hi](./mdc-progress-indicator)
β β β βββ [hi](./mdc-radio)
β β β β βββ [hi](./images)
β β β β βββ test)
β β β βββ [hi](./mdc-ripple)
β β β β βββ test)
β β β βββ [hi](./mdc-rtl)
β β β β βββ test)
β β β βββ [hi](./mdc-segmented-button)
β β β β βββ [hi](./segment)
β β β β β βββ test)
β β β β βββ segmented-button)
β β β β βββ test)
β β β βββ [hi](./mdc-select)
β β β β βββ [hi](./helper-text)
β β β β β βββ test)
β β β β βββ [hi](./icon)
β β β β β βββ test)
β β β β βββ test)
β β β βββ [hi](./mdc-shape)
β β β β βββ test)
β β β βββ [hi](./mdc-slider)
β β β β βββ [hi](./images)
β β β β βββ test)
β β β βββ [hi](./mdc-snackbar)
β β β β βββ test)
β β β βββ [hi](./mdc-switch)
β β β β βββ [hi](./images)
β β β β βββ test)
β β β βββ [hi](./mdc-tab)
β β β β βββ test)
β β β βββ [hi](./mdc-tab-bar)
β β β β βββ test)
β β β βββ [hi](./mdc-tab-indicator)
β β β β βββ test)
β β β βββ [hi](./mdc-tab-scroller)
β β β β βββ test)
β β β βββ [hi](./mdc-textfield)
β β β β βββ [hi](./character-counter)
β β β β β βββ test)
β β β β βββ [hi](./helper-text)
β β β β β βββ test)
β β β β βββ [hi](./icon)
β β β β β βββ test)
β β β β βββ [hi](./images)
β β β β βββ test)
β β β βββ [hi](./mdc-theme)
β β β β βββ test)
β β β βββ [hi](./mdc-tooltip)
β β β β βββ [hi](./images)
β β β β βββ test)
β β β βββ [hi](./mdc-top-app-bar)
β β β β βββ [hi](./fixed)
β β β β β βββ test)
β β β β βββ [hi](./images)
β β β β βββ [hi](./short)
β β β β β βββ test)
β β β β βββ [hi](./standard)
β β β β β βββ test)
β β β β βββ test)
β β β βββ [hi](./mdc-touch-target)
β β β β βββ test)
β β β βββ mdc-typography)
β β β βββ test)
β β βββ [hi](./scripts)
β β β βββ [hi](./build)
β β β βββ [hi](./documentation)
β β β βββ webpack)
β β βββ testing)
β β βββ [hi](./dom)
β β βββ [hi](./featuretargeting)
β β βββ helpers)
β βββ web-guided-project-testing-web-apps-solution-main)
β βββ [hi](./public)
β βββ src)
β βββ components)
βββ [hi](./3-misc)
β βββ [hi](./articles-from-interwebs)
β β βββ Jquery-tips-n-tricks_files)
β βββ [hi](./Beginner)
β β βββ [hi](./capSentence)
β β βββ [hi](./chunkArray)
β β βββ [hi](./factorial)
β β βββ [hi](./falsyBouncer)
β β βββ [hi](./fibonacci)
β β βββ [hi](./fizzBuzz)
β β βββ [hi](./hammingDistance)
β β βββ [hi](./isAnagram)
β β βββ [hi](./longestWord)
β β βββ [hi](./maxRecurringChar)
β β βββ [hi](./mergeArrays)
β β βββ [hi](./palindromeChecker)
β β βββ [hi](./reverseString)
β β βββ [hi](./searchReplace)
β β βββ [hi](./vowelsCounter)
β β βββ whereIBelong)
β βββ [hi](./node-web-scraper-master)
β β βββ node-web-scraper-master)
β βββ SandboxSQL-master)
β βββ SandboxSQL-master)
β βββ [hi](./iOS)
β β βββ [hi](./Base.lproj)
β β βββ Images.xcassets)
β β βββ AppIcon.appiconset)
β βββ [hi](./SQLSandbox.xcodeproj)
β β βββ [hi](./project.xcworkspace)
β β β βββ [hi](./xcshareddata)
β β β βββ xcuserdata)
β β β βββ [hi](./pcottle.xcuserdatad)
β β β βββ tom.xcuserdatad)
β β βββ [hi](./xcshareddata)
β β β βββ xcschemes)
β β βββ xcuserdata)
β β βββ [hi](./pcottle.xcuserdatad)
β β β βββ xcschemes)
β β βββ tom.xcuserdatad)
β β βββ xcschemes)
β βββ src)
β βββ js)
β βββ [hi](./actions)
β βββ [hi](./constants)
β βββ [hi](./data)
β βββ [hi](./dispatcher)
β βββ [hi](./query)
β βββ [hi](./stores)
β βββ [hi](./__tests__)
β βββ [hi](./tokens)
β βββ [hi](./utils)
β βββ views)
βββ [hi](./4-test-prep)
β βββ Study-Guides)
βββ [hi](./5-websites)
β βββ lambda-prep)
β βββ [hi](./javascript-practice)
β β βββ [hi](./00_expressions_variables)
β β β βββ [hi](./exercises)
β β β β βββ [hi](./A_executing_code_exercise)
β β β β βββ [hi](./B_expressions_exercise)
β β β β βββ [hi](./C_variables_exercise)
β β β β βββ D_string_indexing_and_methods_exercise)
β β β βββ solutions)
β β βββ [hi](./01_conditionals)
β β β βββ [hi](./exercises)
β β β β βββ A_conditionals_exercise)
β β β βββ solutions)
β β βββ [hi](./02_functions)
β β β βββ [hi](./exercises)
β β β β βββ [hi](./A_functions_exercise)
β β β β βββ [hi](./B_functions_exercise)
β β β β βββ C_functions_exercise)
β β β βββ solutions)
β β βββ [hi](./03_loops)
β β β βββ [hi](./exercises)
β β β β βββ [hi](./A_loops_exercise)
β β β β βββ [hi](./B_loops_exercise)
β β β β βββ C_loops_exercise)
β β β βββ solutions)
β β βββ [hi](./04_arrays)
β β β βββ [hi](./exercises)
β β β β βββ [hi](./A_arrays_exercise)
β β β β βββ [hi](./B_arrays_exercise)
β β β β βββ C_arrays_exercise)
β β β βββ solutions)
β β βββ [hi](./05_nesting)
β β β βββ [hi](./exercises)
β β β β βββ [hi](./A_nested_loops_exercise)
β β β β βββ [hi](./B_two_dimensional_arrays_exercise)
β β β β βββ C_more_problems_exercise)
β β β βββ solutions)
β β βββ [hi](./06_decomposition_pattern)
β β β βββ [hi](./A_decomposing_problems_exercise)
β β β βββ [hi](./B_decomposing_problems_exercise)
β β β βββ C_decomposing_problems_exercise)
β β βββ [hi](./07_objects)
β β β βββ [hi](./A_objects_exercise)
β β β βββ [hi](./B_objects_exercise)
β β β βββ C_objects_exercise)
β β βββ [hi](./08_higher_order_functions)
β β β βββ [hi](./A_native_callback_methods_exercise)
β β β βββ B_native_callback_methods_exercise)
β β βββ [hi](./-ALL-JS-Files)
β β βββ simple-side-bar)
β β βββ [hi](./css)
β β βββ vendor)
β β βββ [hi](./bootstrap)
β β β βββ [hi](./css)
β β β βββ js)
β β βββ jquery)
β βββ [hi](./markdown)
β βββ [hi](./readme)
β β βββ README_files)
β βββ _Resources)
β βββ [hi](./node_modules)
β β βββ [hi](./jquery)
β β β βββ [hi](./dist)
β β β βββ [hi](./external)
β β β β βββ sizzle)
β β β β βββ dist)
β β β βββ src)
β β β βββ [hi](./ajax)
β β β β βββ var)
β β β βββ [hi](./attributes)
β β β βββ [hi](./core)
β β β β βββ var)
β β β βββ [hi](./css)
β β β β βββ var)
β β β βββ [hi](./data)
β β β β βββ var)
β β β βββ [hi](./deferred)
β β β βββ [hi](./deprecated)
β β β βββ [hi](./effects)
β β β βββ [hi](./event)
β β β βββ [hi](./exports)
β β β βββ [hi](./manipulation)
β β β β βββ var)
β β β βββ [hi](./queue)
β β β βββ [hi](./traversing)
β β β β βββ var)
β β β βββ var)
β β βββ [hi](./loadashes6)
β β β βββ lodash)
β β β βββ fp)
β β βββ [hi](./mout)
β β β βββ [hi](./array)
β β β βββ [hi](./collection)
β β β βββ [hi](./date)
β β β β βββ i18n)
β β β βββ [hi](./doc)
β β β βββ [hi](./function)
β β β βββ [hi](./lang)
β β β βββ [hi](./math)
β β β βββ [hi](./number)
β β β βββ [hi](./object)
β β β βββ [hi](./queryString)
β β β βββ [hi](./random)
β β β βββ [hi](./src)
β β β β βββ [hi](./array)
β β β β βββ [hi](./collection)
β β β β βββ [hi](./date)
β β β β β βββ i18n)
β β β β βββ [hi](./function)
β β β β βββ [hi](./lang)
β β β β βββ [hi](./math)
β β β β βββ [hi](./number)
β β β β βββ [hi](./object)
β β β β βββ [hi](./queryString)
β β β β βββ [hi](./random)
β β β β βββ [hi](./string)
β β β β βββ time)
β β β βββ [hi](./string)
β β β βββ time)
β β βββ web-dev-utils)
β β βββ [hi](./bootstrap-4.3.1-dist)
β β β βββ [hi](./css)
β β β βββ js)
β β βββ [hi](./GIT-HTML-PREVIEW-TOOL)
β β β βββ GIT-HTML-PREVIEW-TOOL-master)
β β βββ [hi](./images)
β β βββ [hi](./Markdown-Templates)
β β β βββ Markdown-Templates-master)
β β β βββ [hi](./html-readmes)
β β β βββ images)
β β βββ [hi](./personal-utilities)
β β β βββ [hi](./Auto-table-Of-Contents)
β β β βββ [hi](./copy-2-clip)
β β β βββ [hi](./css)
β β β βββ [hi](./js)
β β β βββ prism)
β β βββ TexTools)
β β βββ TexTools-master)
β β βββ [hi](./backup-stable-build)
β β β βββ [hi](./css)
β β β βββ js)
β β βββ [hi](./css)
β β βββ [hi](./js)
β β βββ sandbox)
β βββ Precourse-master)
β βββ [hi](./Lesson01-Git)
β βββ [hi](./Lesson02-HTML-CSS)
β β βββ homework)
β βββ [hi](./Lesson03-CSS-Positioning)
β β βββ homework)
β β βββ assets)
β βββ [hi](./Lesson04-JS-I)
β β βββ homework)
β β βββ tests)
β βββ [hi](./Lesson05-JS-II)
β β βββ homework)
β β βββ tests)
β βββ [hi](./Lesson06-JS-III)
β β βββ homework)
β β βββ tests)
β βββ [hi](./Lesson07-JS-IV)
β β βββ homework)
β β βββ tests)
β βββ [hi](./Lesson08-JS-V)
β β βββ homework)
β β βββ tests)
β βββ [hi](./Lesson09-JS-VI)
β β βββ homework)
β β βββ tests)
β βββ [hi](./Lesson10-JS-VII)
β β βββ homework)
β β βββ tests)
β βββ [hi](./Lesson11-JS-VIII)
β β βββ homework)
β β βββ tests)
β βββ [hi](./Lesson12-DOM)
β β βββ homework)
β β βββ [hi](./assets)
β β βββ __tests__)
β βββ Precourse-master)
β βββ [hi](./Lesson01-Git)
β βββ [hi](./Lesson02-HTML-CSS)
β β βββ homework)
β βββ [hi](./Lesson03-CSS-Positioning)
β β βββ homework)
β β βββ assets)
β βββ [hi](./Lesson04-JS-I)
β β βββ homework)
β β βββ tests)
β βββ [hi](./Lesson05-JS-II)
β β βββ homework)
β β βββ tests)
β βββ [hi](./Lesson06-JS-III)
β β βββ homework)
β β βββ tests)
β βββ [hi](./Lesson07-JS-IV)
β β βββ homework)
β β βββ tests)
β βββ [hi](./Lesson08-JS-V)
β β βββ homework)
β β βββ tests)
β βββ [hi](./Lesson09-JS-VI)
β β βββ homework)
β β βββ tests)
β βββ [hi](./Lesson10-JS-VII)
β β βββ homework)
β β βββ tests)
β βββ [hi](./Lesson11-JS-VIII)
β β βββ homework)
β β βββ tests)
β βββ Lesson12-DOM)
β βββ homework)
β βββ [hi](./assets)
β βββ __tests__)
βββ [hi](./about)
β βββ Using Canvas 27a0cf2408124ad19a3802565bd24de6)
β βββ How are courses structured in Canvas How do I know 3dfccdd4ff5f462dacde3b358c627e60)
βββ [hi](./assets)
β βββ [hi](./AUDIO-VISUALIZER)
β β βββ [hi](./Box2D)
β β β βββ [hi](./assets)
β β β βββ libs)
β β βββ [hi](./Gary Ad)
β β β βββ [hi](./Baked)
β β β β βββ sounds)
β β β βββ Raw)
β β βββ [hi](./GaryPewPew)
β β β βββ [hi](./Animate)
β β β βββ [hi](./js)
β β β βββ sounds)
β β βββ [hi](./js)
β β βββ [hi](./MusicViz)
β β β βββ js)
β β βββ [hi](./MusicViz2)
β β β βββ [hi](./js)
β β β βββ sounds)
β β βββ [hi](./Performance)
β β β βββ [hi](./Context2DLog)
β β β βββ [hi](./FauxCanvas)
β β β βββ [hi](./framerate)
β β β β βββ [hi](./assets)
β β β β βββ js)
β β β βββ [hi](./Snowmark)
β β β β βββ [hi](./css)
β β β β βββ js)
β β β βββ Zombie)
β β β βββ images)
β β βββ [hi](./Planetary Gary)
β β β βββ [hi](./Animate)
β β β βββ [hi](./assets)
β β β β βββ [hi](./images)
β β β β βββ sounds)
β β β βββ [hi](./js)
β β β βββ libs)
β β βββ sounds)
β βββ [hi](./fonts)
β βββ [hi](./footer)
β βββ [hi](./images)
β βββ [hi](./jquery)
β β βββ [hi](./dist)
β β βββ [hi](./external)
β β β βββ sizzle)
β β β βββ dist)
β β βββ src)
β β βββ [hi](./ajax)
β β β βββ var)
β β βββ [hi](./attributes)
β β βββ [hi](./core)
β β β βββ var)
β β βββ [hi](./css)
β β β βββ var)
β β βββ [hi](./data)
β β β βββ var)
β β βββ [hi](./deferred)
β β βββ [hi](./deprecated)
β β βββ [hi](./effects)
β β βββ [hi](./event)
β β βββ [hi](./exports)
β β βββ [hi](./manipulation)
β β β βββ var)
β β βββ [hi](./queue)
β β βββ [hi](./traversing)
β β β βββ var)
β β βββ var)
β βββ [hi](./loadashes6)
β β βββ lodash)
β β βββ fp)
β βββ [hi](./might-delete)
β β βββ _MARKDOWN)
β βββ [hi](./mout)
β β βββ [hi](./array)
β β βββ [hi](./collection)
β β βββ [hi](./date)
β β β βββ i18n)
β β βββ [hi](./doc)
β β βββ [hi](./function)
β β βββ [hi](./lang)
β β βββ [hi](./math)
β β βββ [hi](./number)
β β βββ [hi](./object)
β β βββ [hi](./queryString)
β β βββ [hi](./random)
β β βββ [hi](./src)
β β β βββ [hi](./array)
β β β βββ [hi](./collection)
β β β βββ [hi](./date)
β β β β βββ i18n)
β β β βββ [hi](./function)
β β β βββ [hi](./lang)
β β β βββ [hi](./math)
β β β βββ [hi](./number)
β β β βββ [hi](./object)
β β β βββ [hi](./queryString)
β β β βββ [hi](./random)
β β β βββ [hi](./string)
β β β βββ time)
β β βββ [hi](./string)
β β βββ time)
β βββ [hi](./past-student-repos)
β β βββ [hi](./data_struct_and_algo-master)
β β β βββ logs)
β β βββ [hi](./Data-Structures-and-Algorithms-master)
β β β βββ [hi](./assets)
β β β βββ src)
β β β βββ [hi](./algorithms)
β β β β βββ [hi](./strings)
β β β β β βββ knuth-morris-pratt)
β β β β βββ tree)
β β β β βββ [hi](./breadth-first-search)
β β β β βββ depth-first-search)
β β β βββ [hi](./analysis-of-algorithms)
β β β β βββ asymptotic-notation)
β β β βββ data-structures)
β β β βββ [hi](./graph)
β β β βββ [hi](./linked_lists)
β β β βββ tree)
β β β βββ [hi](./binary-search-tree)
β β β βββ binary-tree)
β β βββ [hi](./Data-Structures-master)
β β β βββ [hi](./avl_tree)
β β β βββ [hi](./binary_search_tree)
β β β βββ [hi](./doubly_linked_list)
β β β βββ [hi](./heap)
β β β βββ [hi](./javascript)
β β β β βββ tests)
β β β βββ [hi](./lru_cache)
β β β βββ [hi](./python)
β β β β βββ [hi](./binary_search_tree)
β β β β βββ [hi](./doubly_linked_list)
β β β β βββ [hi](./heap)
β β β β βββ [hi](./linked_list)
β β β β βββ queue)
β β β βββ queue)
β β βββ [hi](./Data-Structures-Notes-master)
β β β βββ [hi](./BST_and_Heaps)
β β β βββ [hi](./Doubly_Linked_List)
β β β βββ [hi](./Interview_Problems)
β β β βββ Linked_Lists)
β β βββ [hi](./dev-portfolio-master)
β β β βββ [hi](./public)
β β β βββ [hi](./src)
β β β β βββ [hi](./components)
β β β β β βββ ~reusables)
β β β β β βββ [hi](./atoms)
β β β β β βββ [hi](./molecules)
β β β β β βββ variables)
β β β β βββ [hi](./global-scss)
β β β β βββ views)
β β β β βββ [hi](./1-Intro)
β β β β βββ [hi](./2-About)
β β β β βββ [hi](./3-Skills)
β β β β βββ [hi](./4-Projects)
β β β β βββ [hi](./5-Resume)
β β β β βββ 6-Contact)
β β β βββ tests_setup)
β β β βββ __mocks__)
β β βββ [hi](./DOM-II-master)
β β βββ [hi](./_DS-Python)
β β β βββ [hi](./Algorithms-I-Notes-master)
β β β β βββ practice_algs)
β β β βββ Algorithms-master)
β β β βββ [hi](./climbing_stairs)
β β β βββ [hi](./knapsack)
β β β β βββ data)
β β β βββ [hi](./making_change)
β β β βββ [hi](./recipe_batches)
β β β βββ [hi](./rock_paper_scissors)
β β β βββ stock_prices)
β β βββ [hi](./feelscollective-master)
β β β βββ [hi](./css)
β β β βββ [hi](./fonts)
β β β β βββ [hi](./icomoon)
β β β β βββ open-iconic)
β β β βββ [hi](./images)
β β β βββ [hi](./js)
β β β βββ scss)
β β βββ [hi](./five-master)
β β β βββ FiveFeed)
β β β βββ [hi](./lambda)
β β β βββ [hi](./lambda-src)
β β β βββ src)
β β β βββ [hi](./components)
β β β β βββ unused)
β β β βββ [hi](./fonts)
β β β βββ [hi](./icons)
β β β βββ [hi](./images)
β β β βββ [hi](./pages)
β β β βββ shared)
β β βββ [hi](./Graphs-master)
β β β βββ [hi](./javascript)
β β β β βββ [hi](./guided-demo)
β β β β β βββ [hi](./graphs-1)
β β β β β β βββ src)
β β β β β βββ graphs-2)
β β β β β βββ src)
β β β β βββ [hi](./objectives)
β β β β β βββ [hi](./breadth-first-search)
β β β β β β βββ img)
β β β β β βββ [hi](./connected-components)
β β β β β β βββ img)
β β β β β βββ [hi](./depth-first-search)
β β β β β β βββ img)
β β β β β βββ graph-intro)
β β β β β βββ img)
β β β β βββ projects)
β β β β βββ graph)
β β β β βββ [hi](./public)
β β β β βββ src)
β β β βββ [hi](./objectives)
β β β β βββ [hi](./breadth-first-search)
β β β β β βββ img)
β β β β βββ [hi](./connected-components)
β β β β β βββ img)
β β β β βββ [hi](./depth-first-search)
β β β β β βββ img)
β β β β βββ [hi](./graph-intro)
β β β β β βββ img)
β β β β βββ [hi](./graph-representations)
β β β β β βββ img)
β β β β βββ randomness)
β β β βββ [hi](./projects)
β β β β βββ [hi](./adventure)
β β β β βββ [hi](./ancestor)
β β β β βββ [hi](./graph)
β β β β βββ social)
β β β βββ python)
β β β βββ [hi](./guided-demo)
β β β β βββ [hi](./graphs-1)
β β β β β βββ src)
β β β β βββ graphs-2)
β β β β βββ src)
β β β βββ projects)
β β β βββ graph)
β β β βββ src)
β β βββ [hi](./Graphs-Notes-master)
β β β βββ [hi](./img)
β β β βββ [hi](./lecture1)
β β β βββ [hi](./lecture2)
β β β βββ [hi](./lecture3)
β β β βββ lecture4)
β β βββ [hi](./Hash-Tables-Notes-master)
β β βββ [hi](./homepage-master)
β β β βββ [hi](./css)
β β β βββ [hi](./fonts)
β β β βββ [hi](./images)
β β β βββ js)
β β β βββ [hi](./backstretch)
β β β βββ [hi](./bootstrap)
β β β βββ [hi](./easing)
β β β βββ [hi](./magnific-popup)
β β β βββ [hi](./owl-carousel)
β β β βββ [hi](./uitotop)
β β β βββ wow)
β β βββ [hi](./HTTP-AJAX-II-master)
β β β βββ [hi](./app)
β β β β βββ [hi](./public)
β β β β βββ src)
β β β β βββ components)
β β β βββ server)
β β βββ [hi](./HTTP-AJAX-master)
β β β βββ friends)
β β β βββ [hi](./public)
β β β βββ src)
β β β βββ [hi](./actions)
β β β βββ [hi](./components)
β β β βββ reducers)
β β βββ [hi](./_Individual-Projects)
β β β βββ [hi](./Advanced-Form-Management-Guided-master)
β β β β βββ app)
β β β β βββ [hi](./public)
β β β β βββ src)
β β β β βββ components)
β β β β βββ Notes)
β β β βββ [hi](./Bootstrap-I-master)
β β β β βββ [hi](./css)
β β β β βββ [hi](./_example-resume)
β β β β β βββ [hi](./css)
β β β β β βββ [hi](./img)
β β β β β βββ js)
β β β β βββ [hi](./img)
β β β β βββ [hi](./js)
β β β β βββ less)
β β β βββ [hi](./Components-BEM-master)
β β β β βββ [hi](./components)
β β β β β βββ [hi](./Box)
β β β β β βββ Section)
β β β β βββ markups)
β β β βββ [hi](./Components-Constructors-master)
β β β β βββ [hi](./components)
β β β β β βββ Tabs)
β β β β βββ markups)
β β β βββ [hi](./Computer-Architecture-Notes-master)
β β β β βββ [hi](./lectureI)
β β β β βββ [hi](./lectureII)
β β β β βββ [hi](./lectureIII)
β β β β βββ lectureIV)
β β β βββ [hi](./Course_and_Book_Notes-master)
β β β β βββ [hi](./Algorithm Design Manual)
β β β β β βββ [hi](./Chapter 1)
β β β β β βββ [hi](./Chapter 10)
β β β β β βββ [hi](./Chapter 2)
β β β β β βββ [hi](./Chapter 3)
β β β β β βββ [hi](./Chapter 4)
β β β β β βββ [hi](./Chapter 5)
β β β β β βββ [hi](./Chapter 6)
β β β β β βββ [hi](./Chapter 7)
β β β β β βββ [hi](./Chapter 8)
β β β β β βββ Chapter 9)
β β β β βββ [hi](./Computer_Science_Distilled)
β β β β βββ [hi](./Lambda_Notes)
β β β β β βββ [hi](./Authentication)
β β β β β βββ [hi](./Computer_Architecture)
β β β β β βββ [hi](./Data_Structures_and_Algorithms)
β β β β β βββ [hi](./DevOps)
β β β β β βββ [hi](./Graphs)
β β β β β βββ [hi](./Mongo)
β β β β β βββ [hi](./Operating_Systems)
β β β β β βββ [hi](./Security)
β β β β β βββ [hi](./Testing)
β β β β β βββ Theory_of_Computation)
β β β β βββ [hi](./Programming_Foundations)
β β β β βββ [hi](./The_C_Programming_Language)
β β β β β βββ Chapter_1)
β β β β βββ [hi](./Think Like a Programmer)
β β β β β βββ [hi](./Chapter 1)
β β β β β βββ [hi](./Chapter 2)
β β β β β βββ Chapter 3)
β β β β βββ YoutubeVideos)
β β β βββ [hi](./JavaScript-III-master)
β β β β βββ assignments)
β β β βββ [hi](./JavaScript-II-master)
β β β β βββ assignments)
β β β βββ [hi](./JavaScript-I-master)
β β β β βββ assignments)
β β β βββ JavaScript-IV-master)
β β β βββ assignments)
β β βββ [hi](./Intro-Python-master)
β β β βββ src)
β β β βββ [hi](./day-1-toy)
β β β βββ [hi](./days-2-4-adv)
β β β βββ [hi](./mini-challenge)
β β β βββ python-example)
β β βββ [hi](./Intro-to-C-master)
β β β βββ [hi](./first)
β β β βββ [hi](./fizzbuzz)
β β β β βββ tests)
β β β βββ [hi](./hangman)
β β β βββ [hi](./malloc)
β β β β βββ tests)
β β β βββ [hi](./pointers)
β β β β βββ tests)
β β β βββ [hi](./queue)
β β β β βββ tests)
β β β βββ [hi](./quicksort)
β β β β βββ tests)
β β β βββ [hi](./strings)
β β β β βββ tests)
β β β βββ [hi](./structs)
β β β β βββ tests)
β β β βββ utils)
β β βββ [hi](./JavaScript-I-Guided-master)
β β βββ [hi](./lambda-demo-project-master)
β β β βββ [hi](./api)
β β β βββ [hi](./public)
β β β βββ src)
β β βββ [hi](./lambda-lecture-notes-main)
β β β βββ [hi](./3-1-advanced-react)
β β β β βββ [hi](./images)
β β β β βββ pdf)
β β β βββ [hi](./3-2-advanced-state-mangement)
β β β β βββ images)
β β β βββ 3-3-advanced-web-applications)
β β β βββ images)
β β βββ [hi](./Lambda-School-Instruction-Notes-master)
β β β βββ [hi](./10. Data Persistence in Web APIs)
β β β β βββ assets)
β β β βββ [hi](./11. Authentication)
β β β βββ 12. Testing)
β β βββ [hi](./Lambda-School-master)
β β β βββ [hi](./Week 1)
β β β β βββ [hi](./Sprint-Challenge User-Interface)
β β β β β βββ [hi](./css)
β β β β β βββ [hi](./design-files)
β β β β β βββ img)
β β β β βββ [hi](./User Interface I HTML Markup)
β β β β βββ [hi](./User-Interface II Innovation)
β β β β β βββ [hi](./design-files)
β β β β β βββ great-idea-website)
β β β β β βββ [hi](./css)
β β β β β βββ img)
β β β β βββ [hi](./User Interface III Services Page)
β β β β β βββ [hi](./design-files)
β β β β β βββ great-idea)
β β β β β βββ [hi](./css)
β β β β β βββ img)
β β β β βββ User Interface I Project 2 - Sweet Eats Bakery)
β β β βββ [hi](./Week 10)
β β β β βββ [hi](./Car-Sales)
β β β β β βββ [hi](./public)
β β β β β βββ src)
β β β β β βββ [hi](./actions)
β β β β β βββ [hi](./components)
β β β β β β βββ [hi](./CSS)
β β β β β β βββ TodoComponents)
β β β β β βββ [hi](./images)
β β β β β βββ reducers)
β β β β βββ [hi](./React-Redux-App)
β β β β β βββ [hi](./public)
β β β β β β βββ images)
β β β β β βββ src)
β β β β β βββ [hi](./actions)
β β β β β βββ [hi](./components)
β β β β β βββ [hi](./images)
β β β β β βββ reducers)
β β β β βββ [hi](./react-shopping-cart)
β β β β β βββ [hi](./public)
β β β β β βββ src)
β β β β β βββ [hi](./components)
β β β β β βββ [hi](./context)
β β β β β βββ sass)
β β β β βββ [hi](./reducer-todo)
β β β β β βββ [hi](./public)
β β β β β βββ src)
β β β β β βββ [hi](./components)
β β β β β β βββ [hi](./CSS)
β β β β β β βββ TodoComponents)
β β β β β βββ [hi](./images)
β β β β β βββ reducers)
β β β β βββ Sprint-Challenge-State-Management-Smurfs)
β β β β βββ smurfs)
β β β β βββ [hi](./public)
β β β β βββ src)
β β β β βββ [hi](./actions)
β β β β βββ [hi](./components)
β β β β βββ [hi](./reducers)
β β β β βββ REFERENCES)
β β β β βββ [hi](./components)
β β β β βββ images)
β β β βββ [hi](./Week 11)
β β β β βββ [hi](./Auth-Friends)
β β β β β βββ friends)
β β β β β βββ [hi](./public)
β β β β β βββ src)
β β β β β βββ [hi](./actions)
β β β β β βββ [hi](./axios)
β β β β β βββ [hi](./components)
β β β β β βββ reducers)
β β β β βββ [hi](./HTTP-Movies-Assignment)
β β β β β βββ client)
β β β β β βββ [hi](./public)
β β β β β βββ src)
β β β β β βββ Movies)
β β β β βββ [hi](./react-bubbles)
β β β β β βββ client)
β β β β β βββ [hi](./public)
β β β β β βββ [hi](./References)
β β β β β β βββ [hi](./actions)
β β β β β β βββ [hi](./components)
β β β β β β βββ reducers)
β β β β β βββ src)
β β β β β βββ [hi](./actions)
β β β β β βββ [hi](./axios)
β β β β β βββ [hi](./components)
β β β β β βββ reducers)
β β β β βββ webtesting-iii-challenge)
β β β β βββ [hi](./public)
β β β β βββ src)
β β β β βββ [hi](./controls)
β β β β βββ [hi](./dashboard)
β β β β βββ display)
β β β β βββ __snapshots__)
β β β βββ [hi](./Week 12 - FoodieFun)
β β β βββ [hi](./Week 13)
β β β β βββ [hi](./node-api1-project)
β β β β β βββ data)
β β β β β βββ [hi](./migrations)
β β β β β βββ seeds)
β β β β βββ [hi](./webapi-challenge-sprint)
β β β β β βββ [hi](./data)
β β β β β β βββ [hi](./helpers)
β β β β β β βββ [hi](./migrations)
β β β β β β βββ seeds)
β β β β β βββ routes)
β β β β β βββ middleware)
β β β β βββ [hi](./webapi-ii-challenge)
β β β β β βββ [hi](./comments)
β β β β β βββ [hi](./data)
β β β β β β βββ [hi](./migrations)
β β β β β β βββ seeds)
β β β β β βββ posts)
β β β β βββ webapi-iii-challenge)
β β β β βββ [hi](./data)
β β β β β βββ [hi](./migrations)
β β β β β βββ seeds)
β β β β βββ [hi](./global-middleware)
β β β β βββ [hi](./posts)
β β β β β βββ middleware)
β β β β βββ users)
β β β β βββ middleware)
β β β βββ [hi](./Week 14)
β β β β βββ [hi](./node-db3-challenge)
β β β β β βββ [hi](./data)
β β β β β β βββ [hi](./migrations)
β β β β β β βββ seeds)
β β β β β βββ schemes)
β β β β βββ [hi](./node-db4)
β β β β β βββ data)
β β β β β βββ [hi](./helpers)
β β β β β βββ [hi](./migrations)
β β β β β βββ seeds)
β β β β βββ [hi](./node-db-challenge-sprint)
β β β β β βββ [hi](./data)
β β β β β β βββ [hi](./migrations)
β β β β β β βββ seeds)
β β β β β βββ routers)
β β β β βββ [hi](./webdb-i-challenge)
β β β β β βββ data)
β β β β β βββ [hi](./migrations)
β β β β β βββ seeds)
β β β β βββ webdb-ii-challenge)
β β β β βββ data)
β β β β βββ [hi](./migrations)
β β β β βββ seeds)
β β β βββ [hi](./Week 15)
β β β β βββ [hi](./node-server-testing-challenge)
β β β β βββ [hi](./Sprint-Challenge-Authentication)
β β β β β βββ [hi](./api)
β β β β β βββ [hi](./auth)
β β β β β βββ [hi](./database)
β β β β β β βββ migrations)
β β β β β βββ jokes)
β β β β βββ [hi](./webauth-i-challenge)
β β β β β βββ [hi](./data)
β β β β β β βββ [hi](./migrations)
β β β β β β βββ seeds)
β β β β β βββ [hi](./restricted)
β β β β β βββ users)
β β β β βββ webauth-iii-challenge)
β β β β βββ [hi](./data)
β β β β β βββ [hi](./migrations)
β β β β β βββ seeds)
β β β β βββ [hi](./restricted)
β β β β βββ users)
β β β βββ [hi](./Week 16 - Mentor Me)
β β β βββ [hi](./Week 17 - 25 Future Hope)
β β β βββ [hi](./Week 2)
β β β β βββ [hi](./Digital Resume)
β β β β β βββ [hi](./css)
β β β β β βββ [hi](./img)
β β β β β βββ less)
β β β β βββ [hi](./Fun Bus)
β β β β β βββ [hi](./css)
β β β β β βββ [hi](./design-files)
β β β β β βββ [hi](./img)
β β β β β βββ less)
β β β β βββ [hi](./Portfolio)
β β β β β βββ [hi](./assets)
β β β β β β βββ [hi](./css)
β β β β β β β βββ images)
β β β β β β β βββ ie)
β β β β β β βββ [hi](./js)
β β β β β β βββ [hi](./sass)
β β β β β β β βββ libs)
β β β β β β βββ webfonts)
β β β β β βββ images)
β β β β βββ [hi](./Resposnive-Web-Design)
β β β β β βββ [hi](./css)
β β β β β βββ [hi](./design-files)
β β β β β βββ img)
β β β β βββ Sprint Challenge)
β β β β βββ [hi](./css)
β β β β βββ [hi](./design-files)
β β β β βββ [hi](./img)
β β β β βββ less)
β β β βββ [hi](./Week 3)
β β β β βββ [hi](./JavaScript-I)
β β β β β βββ assignments)
β β β β βββ [hi](./JavaScript-II)
β β β β β βββ assignments)
β β β β βββ [hi](./JavaScript-III)
β β β β β βββ assignments)
β β β β βββ [hi](./JavaScript-IV)
β β β β β βββ assignments)
β β β β βββ Sprint-Challenge)
β β β β βββ challenges)
β β β βββ [hi](./Week 4 - Local Voter Guide)
β β β β βββ [hi](./css)
β β β β βββ [hi](./images)
β β β β βββ less)
β β β βββ [hi](./Week 5)
β β β β βββ [hi](./DOM-I)
β β β β β βββ [hi](./css)
β β β β β βββ [hi](./design-files)
β β β β β βββ [hi](./img)
β β β β β βββ [hi](./js)
β β β β β βββ stretch-assignment)
β β β β β βββ digital_timer)
β β β β βββ [hi](./DOM-II)
β β β β β βββ [hi](./css)
β β β β β βββ [hi](./img)
β β β β β βββ [hi](./js)
β β β β β βββ [hi](./less)
β β β β β βββ stretch-assignment)
β β β β βββ [hi](./github-usercard)
β β β β β βββ [hi](./assets)
β β β β β βββ GitHubCard)
β β β β βββ [hi](./Newsfeed-Components)
β β β β β βββ [hi](./Article)
β β β β β βββ [hi](./assets)
β β β β β βββ [hi](./css)
β β β β β βββ [hi](./Header)
β β β β β βββ [hi](./LESS)
β β β β β βββ Menu)
β β β β βββ Sprint-Challenge-Applied-Javascript)
β β β β βββ [hi](./assets)
β β β β β βββ carousel)
β β β β βββ [hi](./components)
β β β β β βββ [hi](./Cards)
β β β β β βββ [hi](./Carousel)
β β β β β βββ [hi](./Header)
β β β β β βββ [hi](./Tabs)
β β β β β βββ TopBar)
β β β β βββ [hi](./CSS)
β β β β βββ LESS)
β β β βββ [hi](./Week 6)
β β β β βββ [hi](./lambda-calculator)
β β β β β βββ [hi](./design-files)
β β β β β βββ [hi](./public)
β β β β β βββ src)
β β β β β βββ [hi](./components)
β β β β β β βββ [hi](./ButtonComponents)
β β β β β β β βββ [hi](./NumberButtons)
β β β β β β β βββ [hi](./OperatorButtons)
β β β β β β β βββ SpecialButtons)
β β β β β β βββ DisplayComponents)
β β β β β βββ Img)
β β β β βββ [hi](./nasa-photo-of-the-day)
β β β β β βββ [hi](./public)
β β β β β βββ src)
β β β β βββ [hi](./react-american-football-scoreboard)
β β β β β βββ [hi](./public)
β β β β β βββ src)
β β β β βββ Sprint-Challenge-React-Wars)
β β β β βββ [hi](./public)
β β β β βββ src)
β β β β βββ components)
β β β βββ [hi](./Week 7)
β β β β βββ [hi](./React-Router-Basic-Nav)
β β β β β βββ [hi](./public)
β β β β β βββ src)
β β β β β βββ components)
β β β β βββ [hi](./React-Router-Movies)
β β β β β βββ [hi](./client)
β β β β β β βββ [hi](./public)
β β β β β β βββ src)
β β β β β β βββ Movies)
β β β β β βββ [hi](./public)
β β β β β βββ src)
β β β β β βββ Movies)
β β β β βββ [hi](./Sprint-Challenge-Single-Page-Apps)
β β β β β βββ [hi](./public)
β β β β β βββ src)
β β β β β βββ components)
β β β β βββ [hi](./team-builder)
β β β β β βββ [hi](./public)
β β β β β βββ src)
β β β β βββ User-Onboarding)
β β β β βββ [hi](./public)
β β β β βββ src)
β β β βββ [hi](./Week 8 - Water My Plants)
β β β βββ Week 9)
β β β βββ [hi](./dark-mode)
β β β β βββ [hi](./public)
β β β β βββ src)
β β β β βββ [hi](./components)
β β β β βββ hooks)
β β β βββ [hi](./Github-User-Card)
β β β β βββ src)
β β β β βββ [hi](./components)
β β β β βββ [hi](./images)
β β β β βββ styles)
β β β βββ [hi](./React-Todo)
β β β β βββ src)
β β β β βββ [hi](./components)
β β β β β βββ [hi](./CSS)
β β β β β βββ TodoComponents)
β β β β βββ [hi](./images)
β β β β βββ styles)
β β β βββ Sprint-Challenge-Advanced-React)
β β β βββ client)
β β β βββ [hi](./public)
β β β βββ src)
β β β βββ components)
β β β βββ hooks)
β β βββ [hi](./LambdaSchool-master)
β β β βββ [hi](./31d1)
β β β βββ [hi](./aa-score)
β β β β βββ [hi](./public)
β β β β βββ src)
β β β βββ [hi](./Administration)
β β β β βββ [hi](./certs)
β β β β βββ [hi](./marketing)
β β β β βββ [hi](./studying)
β β β β βββ zoom)
β β β βββ [hi](./bw1-tl)
β β β β βββ [hi](./admin)
β β β β βββ [hi](./api)
β β β β βββ [hi](./auth)
β β β β βββ [hi](./database)
β β β β β βββ [hi](./migrations)
β β β β β βββ seeds)
β β β β βββ [hi](./middleware)
β β β β βββ [hi](./todos)
β β β β βββ volunteer)
β β β βββ [hi](./css)
β β β βββ [hi](./JavaScript30)
β β β β βββ [hi](./01)
β β β β β βββ sounds)
β β β β βββ [hi](./02)
β β β β βββ [hi](./03)
β β β β βββ [hi](./04)
β β β β βββ [hi](./05)
β β β β βββ [hi](./06)
β β β β βββ [hi](./07)
β β β β βββ [hi](./08)
β β β β βββ [hi](./09)
β β β β βββ [hi](./10)
β β β β βββ [hi](./11)
β β β β βββ [hi](./12)
β β β β βββ [hi](./13)
β β β β βββ [hi](./14)
β β β β βββ [hi](./15)
β β β β βββ [hi](./16)
β β β β βββ [hi](./17)
β β β β βββ [hi](./18)
β β β β βββ [hi](./19)
β β β β βββ [hi](./20)
β β β β βββ [hi](./21)
β β β β βββ [hi](./22)
β β β β βββ [hi](./23)
β β β β βββ [hi](./24)
β β β β βββ [hi](./25)
β β β β βββ [hi](./26)
β β β β βββ [hi](./27)
β β β β βββ [hi](./28)
β β β β βββ [hi](./29)
β β β β βββ 30)
β β β βββ [hi](./labs)
β β β β βββ [hi](./last journal entry)
β β β β βββ video-to-next-group)
β β β βββ [hi](./m1)
β β β β βββ [hi](./11b1)
β β β β β βββ [hi](./design-files)
β β β β β βββ [hi](./great-idea)
β β β β β β βββ [hi](./css)
β β β β β β βββ img)
β β β β β βββ great-idea-website)
β β β β β βββ [hi](./css)
β β β β β βββ img)
β β β β βββ [hi](./11c1)
β β β β β βββ [hi](./design-files)
β β β β β βββ great-idea-website)
β β β β β βββ [hi](./css)
β β β β β βββ img)
β β β β βββ [hi](./11d1)
β β β β β βββ [hi](./design-files)
β β β β β βββ great-idea)
β β β β β βββ [hi](./css)
β β β β β βββ img)
β β β β βββ [hi](./12a1)
β β β β β βββ [hi](./css)
β β β β β βββ [hi](./design-files)
β β β β β βββ img)
β β β β βββ [hi](./12b1)
β β β β β βββ [hi](./dimension)
β β β β β β βββ [hi](./assets)
β β β β β β β βββ sass)
β β β β β β βββ html5up-dimension)
β β β β β β βββ assets)
β β β β β β βββ sass)
β β β β β βββ solidstate)
β β β β β βββ assets)
β β β β β βββ sass)
β β β β βββ [hi](./12c1)
β β β β β βββ [hi](./css)
β β β β β βββ less)
β β β β βββ [hi](./12d1)
β β β β β βββ [hi](./css)
β β β β β βββ [hi](./design-files)
β β β β β βββ [hi](./img)
β β β β β βββ less)
β β β β βββ [hi](./13a1)
β β β β β βββ assignments)
β β β β βββ [hi](./13b1)
β β β β β βββ assignments)
β β β β βββ [hi](./13c1)
β β β β β βββ assignments)
β β β β βββ [hi](./13d1)
β β β β β βββ [hi](./new)
β β β β β β βββ test)
β β β β β βββ old)
β β β β β βββ assignments)
β β β β βββ 13e1)
β β β β βββ challenges)
β β β βββ [hi](./m2)
β β β β βββ [hi](./21a1)
β β β β β βββ [hi](./css)
β β β β β βββ [hi](./design-files)
β β β β β βββ [hi](./img)
β β β β β βββ [hi](./js)
β β β β β βββ stretch-assignment)
β β β β β βββ digital_timer)
β β β β βββ [hi](./21b1)
β β β β βββ [hi](./21c1)
β β β β β βββ [hi](./Article)
β β β β β βββ [hi](./assets)
β β β β β βββ [hi](./css)
β β β β β βββ [hi](./Header)
β β β β β βββ [hi](./LESS)
β β β β β βββ Menu)
β β β β βββ [hi](./21d1)
β β β β β βββ [hi](./assets)
β β β β β βββ GitHubCard)
β β β β βββ [hi](./21e1)
β β β β β βββ [hi](./assets)
β β β β β β βββ carousel)
β β β β β βββ [hi](./components)
β β β β β β βββ [hi](./Cards)
β β β β β β βββ [hi](./Carousel)
β β β β β β βββ [hi](./Header)
β β β β β β βββ [hi](./Tabs)
β β β β β β βββ TopBar)
β β β β β βββ [hi](./CSS)
β β β β β βββ LESS)
β β β β βββ [hi](./22a1)
β β β β β βββ [hi](./public)
β β β β β βββ src)
β β β β βββ [hi](./22b1)
β β β β β βββ [hi](./design-files)
β β β β β βββ [hi](./public)
β β β β β βββ src)
β β β β β βββ [hi](./components)
β β β β β β βββ [hi](./ButtonComponents)
β β β β β β β βββ [hi](./NumberButtons)
β β β β β β β βββ [hi](./OperatorButtons)
β β β β β β β βββ SpecialButtons)
β β β β β β βββ DisplayComponents)
β β β β β βββ Img)
β β β β βββ [hi](./22c1)
β β β β β βββ [hi](./public)
β β β β β βββ src)
β β β β βββ [hi](./22e1)
β β β β β βββ starwars)
β β β β β βββ [hi](./public)
β β β β β βββ src)
β β β β βββ [hi](./23a1)
β β β β β βββ [hi](./public)
β β β β β βββ src)
β β β β β βββ components)
β β β β βββ [hi](./23a2)
β β β β β βββ images)
β β β β βββ [hi](./23b1)
β β β β β βββ client)
β β β β β βββ [hi](./public)
β β β β β βββ src)
β β β β β βββ Movies)
β β β β βββ [hi](./23c1)
β β β β β βββ [hi](./public)
β β β β β βββ [hi](./src)
β β β β β β βββ CustomHooks)
β β β β β βββ team-builder)
β β β β βββ [hi](./23d1)
β β β β β βββ [hi](./public)
β β β β β βββ src)
β β β β β βββ CustomHooks)
β β β β βββ [hi](./23d2)
β β β β β βββ [hi](./public)
β β β β β βββ src)
β β β β βββ [hi](./23e1)
β β β β β βββ [hi](./public)
β β β β β βββ src)
β β β β β βββ components)
β β β β βββ 24a1)
β β β β βββ [hi](./public)
β β β β β βββ img)
β β β β βββ src)
β β β β βββ components)
β β β β βββ old pages)
β β β βββ [hi](./m3)
β β β β βββ [hi](./31a1)
β β β β β βββ [hi](./public)
β β β β β βββ src)
β β β β β βββ components)
β β β β β βββ TodoComponents)
β β β β βββ [hi](./31a2)
β β β β β βββ [hi](./public)
β β β β β βββ src)
β β β β βββ [hi](./31b1)
β β β β β βββ [hi](./public)
β β β β β βββ src)
β β β β β βββ components)
β β β β βββ [hi](./31c1)
β β β β β βββ [hi](./public)
β β β β β βββ src)
β β β β β βββ [hi](./components)
β β β β β βββ hooks)
β β β β βββ [hi](./31d1)
β β β β β βββ [hi](./public)
β β β β β βββ src)
β β β β β βββ [hi](./components)
β β β β β βββ hooks)
β β β β βββ [hi](./31e1)
β β β β β βββ client)
β β β β β βββ [hi](./public)
β β β β β βββ src)
β β β β β βββ [hi](./components)
β β β β β βββ hooks)
β β β β βββ [hi](./32a1)
β β β β β βββ [hi](./public)
β β β β β βββ src)
β β β β β βββ [hi](./components)
β β β β β βββ [hi](./contexts)
β β β β β βββ sass)
β β β β βββ [hi](./32b1)
β β β β β βββ [hi](./public)
β β β β β βββ src)
β β β β β βββ [hi](./components)
β β β β β βββ reducers)
β β β β βββ [hi](./32c1)
β β β β β βββ [hi](./public)
β β β β β βββ src)
β β β β β βββ [hi](./actions)
β β β β β βββ [hi](./components)
β β β β β βββ reducers)
β β β β βββ [hi](./32d1)
β β β β β βββ [hi](./public)
β β β β β βββ src)
β β β β β βββ [hi](./actions)
β β β β β βββ [hi](./components)
β β β β β βββ [hi](./fonts)
β β β β β βββ [hi](./img)
β β β β β βββ reducers)
β β β β βββ [hi](./32e1)
β β β β β βββ smurfs)
β β β β β βββ [hi](./public)
β β β β β βββ src)
β β β β β βββ [hi](./actions)
β β β β β βββ [hi](./components)
β β β β β βββ reducers)
β β β β βββ [hi](./33a1)
β β β β β βββ [hi](./public)
β β β β β βββ src)
β β β β β βββ [hi](./controls)
β β β β β βββ [hi](./dashboard)
β β β β β βββ display)
β β β β βββ [hi](./33b1)
β β β β β βββ friends)
β β β β β βββ [hi](./public)
β β β β β βββ src)
β β β β β βββ [hi](./actions)
β β β β β βββ [hi](./components)
β β β β β βββ [hi](./reducers)
β β β β β βββ utils)
β β β β βββ [hi](./33d1)
β β β β β βββ client)
β β β β β βββ [hi](./public)
β β β β β βββ src)
β β β β β βββ Movies)
β β β β βββ 33e1)
β β β β βββ client)
β β β β βββ [hi](./public)
β β β β βββ src)
β β β β βββ [hi](./actions)
β β β β βββ [hi](./components)
β β β β βββ [hi](./reducers)
β β β β βββ utils)
β β β βββ [hi](./m4)
β β β β βββ [hi](./41a1)
β β β β β βββ data)
β β β β β βββ [hi](./migrations)
β β β β β βββ seeds)
β β β β βββ [hi](./41a2)
β β β β β βββ data)
β β β β β βββ [hi](./migrations)
β β β β β βββ seeds)
β β β β βββ [hi](./41b1)
β β β β β βββ [hi](./data)
β β β β β β βββ [hi](./migrations)
β β β β β β βββ seeds)
β β β β β βββ hubs)
β β β β βββ [hi](./41b2)
β β β β β βββ data)
β β β β β βββ [hi](./migrations)
β β β β β βββ seeds)
β β β β βββ [hi](./41c1)
β β β β β βββ [hi](./data)
β β β β β β βββ [hi](./migrations)
β β β β β β βββ seeds)
β β β β β βββ [hi](./hubs)
β β β β β βββ messages)
β β β β βββ [hi](./41c2)
β β β β β βββ [hi](./data)
β β β β β β βββ [hi](./migrations)
β β β β β β βββ seeds)
β β β β β βββ [hi](./posts)
β β β β β βββ users)
β β β β βββ [hi](./41d1)
β β β β β βββ [hi](./api)
β β β β β βββ data)
β β β β β βββ migrations)
β β β β βββ [hi](./41e1)
β β β β β βββ [hi](./data)
β β β β β β βββ [hi](./helpers)
β β β β β β βββ [hi](./migrations)
β β β β β β βββ seeds)
β β β β β βββ routers)
β β β β βββ [hi](./41e1app)
β β β β β βββ [hi](./public)
β β β β β βββ src)
β β β β β βββ components)
β β β β βββ [hi](./42a1)
β β β β β βββ [hi](./data)
β β β β β β βββ [hi](./migrations)
β β β β β β βββ seeds)
β β β β β βββ posts)
β β β β βββ [hi](./42a2)
β β β β β βββ [hi](./data)
β β β β β β βββ [hi](./migrations)
β β β β β β βββ seeds)
β β β β β βββ routers)
β β β β βββ [hi](./42b1)
β β β β β βββ [hi](./api)
β β β β β βββ [hi](./data)
β β β β β βββ fruits)
β β β β βββ [hi](./42b2)
β β β β β βββ [hi](./api)
β β β β β βββ [hi](./data)
β β β β β β βββ [hi](./migrations)
β β β β β β βββ seeds)
β β β β β βββ routers)
β β β β βββ [hi](./42c1)
β β β β β βββ [hi](./data)
β β β β β β βββ [hi](./migrations)
β β β β β β βββ seeds)
β β β β β βββ users)
β β β β βββ [hi](./42c2)
β β β β β βββ [hi](./data)
β β β β β β βββ [hi](./migrations)
β β β β β β βββ seeds)
β β β β β βββ schemes)
β β β β βββ [hi](./42d1)
β β β β β βββ data)
β β β β β βββ seeds)
β β β β βββ [hi](./42d2)
β β β β β βββ [hi](./data)
β β β β β β βββ [hi](./migrations)
β β β β β β βββ seeds)
β β β β β βββ recipes)
β β β β βββ [hi](./42e1)
β β β β β βββ [hi](./data)
β β β β β β βββ [hi](./migrations)
β β β β β β βββ seeds)
β β β β β βββ projects)
β β β β βββ [hi](./43a1)
β β β β β βββ [hi](./api)
β β β β β βββ [hi](./auth)
β β β β β βββ [hi](./database)
β β β β β β βββ migrations)
β β β β β βββ [hi](./__MACOSX)
β β β β β β βββ authintro)
β β β β β βββ users)
β β β β βββ [hi](./43a2)
β β β β β βββ [hi](./api)
β β β β β βββ [hi](./auth)
β β β β β βββ [hi](./database)
β β β β β β βββ migrations)
β β β β β βββ users)
β β β β βββ [hi](./43b1)
β β β β β βββ [hi](./api)
β β β β β βββ [hi](./auth)
β β β β β βββ [hi](./database)
β β β β β β βββ migrations)
β β β β β βββ users)
β β β β βββ [hi](./43b2)
β β β β β βββ [hi](./api)
β β β β β βββ [hi](./auth)
β β β β β βββ [hi](./database)
β β β β β β βββ migrations)
β β β β β βββ users)
β β β β βββ [hi](./43c1)
β β β β β βββ [hi](./api)
β β β β β βββ [hi](./auth)
β β β β β βββ [hi](./database)
β β β β β β βββ migrations)
β β β β β βββ users)
β β β β βββ [hi](./43c2)
β β β β β βββ [hi](./api)
β β β β β βββ [hi](./auth)
β β β β β βββ [hi](./config)
β β β β β βββ [hi](./database)
β β β β β β βββ migrations)
β β β β β βββ [hi](./__MACOSX)
β β β β β β βββ sessions)
β β β β β βββ users)
β β β β βββ [hi](./43d1)
β β β β β βββ [hi](./api)
β β β β β βββ [hi](./data)
β β β β β β βββ [hi](./migrations)
β β β β β β βββ seeds)
β β β β β βββ hobbits)
β β β β βββ [hi](./43d2)
β β β β β βββ [hi](./api)
β β β β β βββ [hi](./cohorts)
β β β β β βββ [hi](./database)
β β β β β β βββ [hi](./migrations)
β β β β β β βββ seeds)
β β β β β βββ students)
β β β β βββ 43e1)
β β β β βββ [hi](./43e1)
β β β β β βββ [hi](./public)
β β β β β βββ src)
β β β β β βββ components)
β β β β βββ [hi](./api)
β β β β βββ [hi](./auth)
β β β β βββ [hi](./database)
β β β β β βββ migrations)
β β β β βββ jokes)
β β β βββ [hi](./m5)
β β β β βββ [hi](./51a1)
β β β β β βββ src)
β β β β β βββ employeeApp)
β β β β βββ [hi](./51b1)
β β β β β βββ src)
β β β β β βββ collections)
β β β β β βββ src)
β β β β β βββ collections)
β β β β βββ [hi](./51c1)
β β β β β βββ transportation)
β β β β β βββ src)
β β β β β βββ transport)
β β β β βββ [hi](./51d1)
β β β β β βββ [hi](./bin)
β β β β β β βββ src)
β β β β β β βββ [hi](./main)
β β β β β β β βββ [hi](./java)
β β β β β β β β βββ com)
β β β β β β β β βββ lambdaschool)
β β β β β β β β βββ webemployees3)
β β β β β β β βββ resources)
β β β β β β βββ test)
β β β β β β βββ java)
β β β β β β βββ com)
β β β β β β βββ lambdaschool)
β β β β β β βββ webemployees3)
β β β β β βββ src)
β β β β β βββ [hi](./main)
β β β β β β βββ [hi](./java)
β β β β β β β βββ com)
β β β β β β β βββ lambdaschool)
β β β β β β β βββ j51d1)
β β β β β β βββ resources)
β β β β β β βββ static)
β β β β β βββ test)
β β β β β βββ java)
β β β β β βββ com)
β β β β β βββ lambdaschool)
β β β β β βββ webemployees3)
β β β β βββ [hi](./51d2)
β β β β β βββ src)
β β β β β βββ [hi](./main)
β β β β β β βββ [hi](./java)
β β β β β β β βββ com)
β β β β β β β βββ lambdaschool)
β β β β β β β βββ j51d2)
β β β β β β βββ resources)
β β β β β βββ test)
β β β β β βββ java)
β β β β β βββ com)
β β β β β βββ lambdaschool)
β β β β β βββ j51d2)
β β β β βββ [hi](./51e1)
β β β β β βββ src)
β β β β β βββ [hi](./main)
β β β β β β βββ [hi](./java)
β β β β β β β βββ com)
β β β β β β β βββ lambdaschool)
β β β β β β β βββ j51e1)
β β β β β β βββ resources)
β β β β β βββ test)
β β β β β βββ java)
β β β β β βββ com)
β β β β β βββ lambdaschool)
β β β β β βββ j51e1)
β β β β βββ [hi](./52b1)
β β β β β βββ assets)
β β β β βββ [hi](./52c1)
β β β β β βββ src)
β β β β β βββ [hi](./main)
β β β β β β βββ [hi](./java)
β β β β β β β βββ com)
β β β β β β β βββ lambdaschool)
β β β β β β β βββ j52c1)
β β β β β β β βββ [hi](./controllers)
β β β β β β β βββ [hi](./models)
β β β β β β β βββ [hi](./repos)
β β β β β β β βββ services)
β β β β β β βββ resources)
β β β β β βββ test)
β β β β β βββ java)
β β β β β βββ com)
β β β β β βββ lambdaschool)
β β β β β βββ j52c1)
β β β β βββ [hi](./52c2)
β β β β β βββ src)
β β β β β βββ [hi](./main)
β β β β β β βββ [hi](./java)
β β β β β β β βββ com)
β β β β β β β βββ lambdaschool)
β β β β β β β βββ j52c2)
β β β β β β β βββ [hi](./controllers)
β β β β β β β βββ [hi](./models)
β β β β β β β βββ [hi](./repos)
β β β β β β β βββ services)
β β β β β β βββ resources)
β β β β β βββ test)
β β β β β βββ java)
β β β β β βββ com)
β β β β β βββ lambdaschool)
β β β β β βββ j52c2)
β β β β βββ [hi](./52d1)
β β β β β βββ oauth)
β β β β β βββ [hi](./oauth2)
β β β β β β βββ src)
β β β β β β βββ [hi](./main)
β β β β β β β βββ [hi](./java)
β β β β β β β β βββ com)
β β β β β β β β βββ lambdaschool)
β β β β β β β β βββ usermodel)
β β β β β β β β βββ [hi](./config)
β β β β β β β β βββ [hi](./controllers)
β β β β β β β β βββ [hi](./exceptions)
β β β β β β β β βββ [hi](./handlers)
β β β β β β β β βββ [hi](./logging)
β β β β β β β β βββ [hi](./models)
β β β β β β β β βββ [hi](./repository)
β β β β β β β β βββ [hi](./services)
β β β β β β β β βββ view)
β β β β β β β βββ resources)
β β β β β β β βββ info)
β β β β β β βββ test)
β β β β β β βββ [hi](./java)
β β β β β β β βββ com)
β β β β β β β βββ lambdaschool)
β β β β β β β βββ usermodel)
β β β β β β β βββ [hi](./controllers)
β β β β β β β βββ services)
β β β β β β βββ resources)
β β β β β βββ oauth2 - initial)
β β β β β βββ src)
β β β β β βββ [hi](./main)
β β β β β β βββ [hi](./java)
β β β β β β β βββ com)
β β β β β β β βββ lambdaschool)
β β β β β β β βββ [hi](./authenticatedusers)
β β β β β β β β βββ [hi](./config)
β β β β β β β β βββ [hi](./controller)
β β β β β β β β βββ [hi](./model)
β β β β β β β β βββ [hi](./repository)
β β β β β β β β βββ [hi](./service)
β β β β β β β β βββ view)
β β β β β β β βββ usermodel)
β β β β β β β βββ [hi](./config)
β β β β β β β βββ [hi](./controllers)
β β β β β β β βββ [hi](./exceptions)
β β β β β β β βββ [hi](./handlers)
β β β β β β β βββ [hi](./logging)
β β β β β β β βββ [hi](./models)
β β β β β β β βββ [hi](./repository)
β β β β β β β βββ [hi](./services)
β β β β β β β βββ view)
β β β β β β βββ resources)
β β β β β β βββ info)
β β β β β βββ test)
β β β β β βββ java)
β β β β β βββ com)
β β β β β βββ lambdaschool)
β β β β β βββ [hi](./authenticatedusers)
β β β β β βββ usermodel)
β β β β βββ [hi](./53a1)
β β β β β βββ [hi](./oauth2ExceptionLogging-final)
β β β β β β βββ src)
β β β β β β βββ main)
β β β β β β βββ [hi](./java)
β β β β β β β βββ com)
β β β β β β β βββ lambdaschool)
β β β β β β β βββ oauth2)
β β β β β β β βββ [hi](./config)
β β β β β β β βββ [hi](./controllers)
β β β β β β β βββ [hi](./exceptions)
β β β β β β β βββ [hi](./handlers)
β β β β β β β βββ [hi](./logging)
β β β β β β β βββ [hi](./models)
β β β β β β β βββ [hi](./repository)
β β β β β β β βββ [hi](./services)
β β β β β β β βββ view)
β β β β β β βββ resources)
β β β β β βββ src)
β β β β β βββ [hi](./main)
β β β β β β βββ [hi](./java)
β β β β β β β βββ com)
β β β β β β β βββ lambdaschool)
β β β β β β β βββ authenticatedusers)
β β β β β β β βββ [hi](./config)
β β β β β β β βββ [hi](./controller)
β β β β β β β βββ [hi](./exceptions)
β β β β β β β βββ [hi](./handlers)
β β β β β β β βββ [hi](./model)
β β β β β β β βββ [hi](./repository)
β β β β β β β βββ [hi](./service)
β β β β β β β βββ view)
β β β β β β βββ resources)
β β β β β β βββ info)
β β β β β βββ test)
β β β β β βββ java)
β β β β β βββ com)
β β β β β βββ lambdaschool)
β β β β β βββ [hi](./authenticatedusers)
β β β β β βββ usermodel)
β β β β βββ [hi](./53b1)
β β β β β βββ [hi](./clientrestaurants)
β β β β β β βββ src)
β β β β β β βββ [hi](./main)
β β β β β β β βββ [hi](./java)
β β β β β β β β βββ com)
β β β β β β β β βββ lambda)
β β β β β β β β βββ clientrestaurants)
β β β β β β β β βββ [hi](./client)
β β β β β β β β βββ model)
β β β β β β β βββ resources)
β β β β β β βββ test)
β β β β β β βββ java)
β β β β β β βββ com)
β β β β β β βββ lambda)
β β β β β β βββ clientrestaurants)
β β β β β βββ [hi](./restaurants-initial)
β β β β β β βββ src)
β β β β β β βββ main)
β β β β β β βββ [hi](./java)
β β β β β β β βββ com)
β β β β β β β βββ lambdaschool)
β β β β β β β βββ restaurants)
β β β β β β β βββ [hi](./config)
β β β β β β β βββ [hi](./controller)
β β β β β β β βββ [hi](./model)
β β β β β β β βββ [hi](./repos)
β β β β β β β βββ service)
β β β β β β βββ resources)
β β β β β β βββ info)
β β β β β βββ restaurants-pagesswagger)
β β β β β βββ src)
β β β β β βββ main)
β β β β β βββ [hi](./java)
β β β β β β βββ com)
β β β β β β βββ lambdaschool)
β β β β β β βββ restaurants)
β β β β β β βββ [hi](./config)
β β β β β β βββ [hi](./controller)
β β β β β β βββ [hi](./exception)
β β β β β β βββ [hi](./model)
β β β β β β βββ [hi](./repos)
β β β β β β βββ service)
β β β β β βββ resources)
β β β β β βββ [hi](./info)
β β β β β βββ templates)
β β β β βββ [hi](./53c1)
β β β β β βββ [hi](./restaurants-initial)
β β β β β β βββ src)
β β β β β β βββ main)
β β β β β β βββ [hi](./java)
β β β β β β β βββ com)
β β β β β β β βββ lambdaschool)
β β β β β β β βββ restaurants)
β β β β β β β βββ [hi](./config)
β β β β β β β βββ [hi](./controller)
β β β β β β β βββ [hi](./model)
β β β β β β β βββ [hi](./repos)
β β β β β β β βββ service)
β β β β β β βββ resources)
β β β β β β βββ info)
β β β β β βββ restaurants-testing)
β β β β β βββ src)
β β β β β βββ [hi](./main)
β β β β β β βββ [hi](./java)
β β β β β β β βββ com)
β β β β β β β βββ lambdaschool)
β β β β β β β βββ restaurants)
β β β β β β β βββ [hi](./config)
β β β β β β β βββ [hi](./controller)
β β β β β β β βββ [hi](./model)
β β β β β β β βββ [hi](./repos)
β β β β β β β βββ service)
β β β β β β βββ resources)
β β β β β β βββ info)
β β β β β βββ test)
β β β β β βββ [hi](./java)
β β β β β β βββ com)
β β β β β β βββ lambdaschool)
β β β β β β βββ restaurants)
β β β β β β βββ [hi](./controller)
β β β β β β βββ service)
β β β β β βββ resources)
β β β β βββ 53d1)
β β β β βββ [hi](./JS-FrontEnd-by-jheinz1999)
β β β β β βββ [hi](./public)
β β β β β βββ src)
β β β β β βββ components)
β β β β βββ StartHere)
β β β β βββ src)
β β β β βββ [hi](./main)
β β β β β βββ [hi](./java)
β β β β β β βββ com)
β β β β β β βββ lambdaschool)
β β β β β β βββ starthere)
β β β β β β βββ [hi](./config)
β β β β β β βββ [hi](./controllers)
β β β β β β βββ [hi](./exceptions)
β β β β β β βββ [hi](./handlers)
β β β β β β βββ [hi](./logging)
β β β β β β βββ [hi](./models)
β β β β β β βββ [hi](./repository)
β β β β β β βββ [hi](./services)
β β β β β β βββ view)
β β β β β βββ resources)
β β β β β βββ info)
β β β β βββ test)
β β β β βββ [hi](./java)
β β β β β βββ com)
β β β β β βββ lambdaschool)
β β β β β βββ starthere)
β β β β β βββ [hi](./controllers)
β β β β β βββ services)
β β β β βββ resources)
β β β βββ [hi](./m6)
β β β β βββ [hi](./61a1)
β β β β β βββ src)
β β β β βββ [hi](./61b1)
β β β β β βββ [hi](./examples)
β β β β β βββ src)
β β β β βββ [hi](./61c1)
β β β β β βββ src)
β β β β β βββ [hi](./cityreader)
β β β β β βββ [hi](./comp)
β β β β β βββ oop)
β β β β βββ [hi](./62a1)
β β β β β βββ [hi](./avl_tree)
β β β β β βββ [hi](./benchmarks)
β β β β β βββ [hi](./binary_search_tree)
β β β β β βββ [hi](./doubly_linked_list)
β β β β β βββ [hi](./heap)
β β β β β βββ [hi](./lru_cache)
β β β β β βββ [hi](./queue)
β β β β β βββ [hi](./queue_and_stack)
β β β β β βββ [hi](./singly_linked_list)
β β β β β βββ stack)
β β β β βββ [hi](./62b1)
β β β β β βββ [hi](./names)
β β β β β βββ [hi](./reverse)
β β β β β βββ ring_buffer)
β β β β βββ [hi](./63a1)
β β β β β βββ src)
β β β β β βββ [hi](./iterative_sorting)
β β β β β βββ searching)
β β β β βββ [hi](./63b1)
β β β β β βββ src)
β β β β β βββ recursive_sorting)
β β β β βββ [hi](./63c1)
β β β β β βββ [hi](./eating_cookies)
β β β β β βββ [hi](./knapsack)
β β β β β β βββ data)
β β β β β βββ [hi](./making_change)
β β β β β βββ [hi](./moving_zeroes)
β β β β β βββ [hi](./product_of_all_other_numbers)
β β β β β βββ [hi](./recipe_batches)
β β β β β βββ [hi](./rock_paper_scissors)
β β β β β βββ [hi](./single_number)
β β β β β βββ [hi](./sliding_window_max)
β β β β β β βββ data)
β β β β β βββ stock_prices)
β β β β βββ 63d1)
β β β β βββ [hi](./recursive_count_th)
β β β β βββ [hi](./robot_sort)
β β β β βββ Short-Answer)
β β β βββ [hi](./m7)
β β β β βββ [hi](./71a1)
β β β β β βββ [hi](./applications)
β β β β β β βββ [hi](./crack_caesar)
β β β β β β βββ [hi](./expensive_seq)
β β β β β β βββ [hi](./histo)
β β β β β β βββ [hi](./lookup_table)
β β β β β β βββ [hi](./markov)
β β β β β β βββ [hi](./no_dups)
β β β β β β βββ [hi](./sumdiff)
β β β β β β βββ word_count)
β β β β β βββ hashtable)
β β β β βββ [hi](./71e1)
β β β β β βββ hashtables)
β β β β β βββ [hi](./ex1)
β β β β β βββ [hi](./ex2)
β β β β β βββ [hi](./ex3)
β β β β β βββ [hi](./ex4)
β β β β β βββ ex5)
β β β β βββ [hi](./72a1)
β β β β β βββ [hi](./objectives)
β β β β β β βββ [hi](./breadth-first-search)
β β β β β β β βββ img)
β β β β β β βββ [hi](./connected-components)
β β β β β β β βββ img)
β β β β β β βββ [hi](./depth-first-search)
β β β β β β β βββ img)
β β β β β β βββ [hi](./graph-intro)
β β β β β β β βββ img)
β β β β β β βββ [hi](./graph-representations)
β β β β β β β βββ img)
β β β β β β βββ randomness)
β β β β β βββ projects)
β β β β β βββ [hi](./adventure)
β β β β β β βββ maps)
β β β β β βββ [hi](./ancestor)
β β β β β βββ [hi](./graph)
β β β β β βββ social)
β β β β βββ [hi](./73a1)
β β β β β βββ [hi](./asm)
β β β β β βββ ls8)
β β β β β βββ examples)
β β β β βββ 74a1)
β β β βββ [hi](./src)
β β β β βββ [hi](./iterative_sorting)
β β β β βββ searching)
β β β βββ [hi](./summary)
β β β β βββ [hi](./certifications)
β β β β β βββ [hi](./IBM zOS)
β β β β β βββ Oracle Autonomous DB)
β β β β β βββ [hi](./1 Overview)
β β β β β βββ [hi](./2 Provisioning and Connectivity)
β β β β β βββ [hi](./3 Migration and Data Loding into Autonomous DB)
β β β β β βββ [hi](./4 Migrating and Data Loading)
β β β β β βββ [hi](./5 Monitoring Autonomous DB)
β β β β β βββ 6 Tools Reporting Analytics)
β β β β βββ [hi](./cobol)
β β β β β βββ [hi](./COBOL example programs_files)
β β β β β βββ [hi](./COBOL Programming Course_files)
β β β β β βββ COBOL Programming Exercises_files)
β β β β βββ [hi](./complete)
β β β β β βββ [hi](./Decks)
β β β β β βββ notes-books)
β β β β βββ [hi](./general)
β β β β βββ [hi](./interviewing)
β β β β βββ [hi](./Node Express Knex)
β β β β β βββ Create Back End Guide)
β β β β βββ [hi](./testing)
β β β β βββ typescript)
β β β βββ tlbw)
β β β βββ client)
β β β βββ [hi](./public)
β β β βββ src)
β β β βββ [hi](./components)
β β β β βββ [hi](./context)
β β β β β βββ strainsSelectContext)
β β β β βββ strains)
β β β βββ imgs)
β β βββ [hi](./_misc)
β β β βββ Blockchain-Notes-master)
β β β βββ communication_gp)
β β βββ [hi](./Mongo-I-master)
β β β βββ src)
β β β βββ [hi](./controllers)
β β β βββ [hi](./models)
β β β βββ routes)
β β βββ [hi](./_MOST-USEFUL)
β β β βββ Boilerplate-master)
β β β βββ [hi](./Apollo)
β β β β βββ [hi](./client)
β β β β βββ [hi](./imports)
β β β β β βββ [hi](./api)
β β β β β βββ ui)
β β β β βββ server)
β β β βββ [hi](./Express-MongoDB)
β β β β βββ src)
β β β β βββ [hi](./config)
β β β β βββ [hi](./controllers)
β β β β βββ __tests__)
β β β βββ [hi](./React-Redux)
β β β β βββ src)
β β β β βββ [hi](./actions)
β β β β βββ [hi](./assets)
β β β β βββ [hi](./containers)
β β β β βββ [hi](./reducers)
β β β β βββ tests)
β β β β βββ [hi](./__mock__)
β β β β βββ __tests__)
β β β β βββ __snapshots__)
β β β βββ TypeGraphQL)
β β βββ [hi](./Node-Blog-master)
β β β βββ [hi](./api)
β β β β βββ [hi](./post)
β β β β βββ [hi](./tag)
β β β β βββ user)
β β β βββ [hi](./config)
β β β βββ [hi](./data)
β β β β βββ [hi](./helpers)
β β β β βββ [hi](./migrations)
β β β β βββ seeds)
β β β βββ routers)
β β βββ [hi](./portfolio-main)
β β β βββ [hi](./components)
β β β βββ [hi](./pages)
β β β βββ [hi](./public)
β β β β βββ static)
β β β β βββ [hi](./favicons)
β β β β βββ images)
β β β βββ [hi](./scripts)
β β β βββ [hi](./styles)
β β β βββ utils)
β β βββ [hi](./Precourse-master)
β β β βββ [hi](./Lesson10-JS-VII)
β β β β βββ homework)
β β β β βββ tests)
β β β βββ [hi](./Lesson11-JS-VIII)
β β β β βββ homework)
β β β β βββ tests)
β β β βββ [hi](./Lesson12-DOM)
β β β β βββ homework)
β β β β βββ [hi](./assets)
β β β β βββ __tests__)
β β β βββ [hi](./Lesson1-Git)
β β β βββ [hi](./Lesson2-HTML-CSS)
β β β β βββ homework)
β β β βββ [hi](./Lesson3-CSS-Positioning)
β β β β βββ homework)
β β β β βββ assets)
β β β βββ [hi](./Lesson4-JS-I)
β β β β βββ homework)
β β β β βββ tests)
β β β βββ [hi](./Lesson5-JS-II)
β β β β βββ homework)
β β β β βββ tests)
β β β βββ [hi](./Lesson6-JS-III)
β β β β βββ homework)
β β β β βββ tests)
β β β βββ [hi](./Lesson7-JS-IV)
β β β β βββ homework)
β β β β βββ tests)
β β β βββ [hi](./Lesson8-JS-V)
β β β β βββ homework)
β β β β βββ tests)
β β β βββ Lesson9-JS-VI)
β β β βββ homework)
β β β βββ tests)
β β βββ [hi](./Python-II-Notes-master)
β β β βββ src)
β β βββ [hi](./Python-master)
β β β βββ [hi](./arithmetic_analysis)
β β β β βββ image_data)
β β β βββ [hi](./backtracking)
β β β βββ [hi](./bit_manipulation)
β β β βββ [hi](./blockchain)
β β β βββ [hi](./boolean_algebra)
β β β βββ [hi](./cellular_automata)
β β β βββ [hi](./ciphers)
β β β βββ [hi](./compression)
β β β β βββ image_data)
β β β βββ [hi](./computer_vision)
β β β βββ [hi](./conversions)
β β β βββ [hi](./data_structures)
β β β β βββ [hi](./binary_tree)
β β β β βββ [hi](./disjoint_set)
β β β β βββ [hi](./hashing)
β β β β β βββ number_theory)
β β β β βββ [hi](./heap)
β β β β βββ [hi](./linked_list)
β β β β βββ [hi](./queue)
β β β β βββ [hi](./stacks)
β β β β βββ trie)
β β β βββ [hi](./digital_image_processing)
β β β β βββ [hi](./dithering)
β β β β βββ [hi](./edge_detection)
β β β β βββ [hi](./filters)
β β β β βββ [hi](./histogram_equalization)
β β β β β βββ [hi](./image_data)
β β β β β βββ output_data)
β β β β βββ [hi](./image_data)
β β β β βββ [hi](./resize)
β β β β βββ rotation)
β β β βββ [hi](./divide_and_conquer)
β β β βββ [hi](./dynamic_programming)
β β β βββ [hi](./electronics)
β β β βββ [hi](./file_transfer)
β β β β βββ tests)
β β β βββ [hi](./fuzzy_logic)
β β β βββ [hi](./genetic_algorithm)
β β β βββ [hi](./geodesy)
β β β βββ [hi](./graphics)
β β β βββ [hi](./graphs)
β β β β βββ tests)
β β β βββ [hi](./hashes)
β β β βββ [hi](./knapsack)
β β β β βββ tests)
β β β βββ [hi](./linear_algebra)
β β β β βββ src)
β β β βββ [hi](./machine_learning)
β β β β βββ [hi](./forecasting)
β β β β βββ lstm)
β β β βββ [hi](./maths)
β β β β βββ [hi](./images)
β β β β βββ series)
β β β βββ [hi](./matrix)
β β β β βββ tests)
β β β βββ [hi](./networking_flow)
β β β βββ [hi](./neural_network)
β β β βββ [hi](./other)
β β β βββ [hi](./project_euler)
β β β β βββ [hi](./problem_001)
β β β β βββ [hi](./problem_002)
β β β β βββ [hi](./problem_003)
β β β β βββ [hi](./problem_004)
β β β β βββ [hi](./problem_005)
β β β β βββ [hi](./problem_006)
β β β β βββ [hi](./problem_007)
β β β β βββ [hi](./problem_008)
β β β β βββ [hi](./problem_009)
β β β β βββ [hi](./problem_010)
β β β β βββ [hi](./problem_011)
β β β β βββ [hi](./problem_012)
β β β β βββ [hi](./problem_013)
β β β β βββ [hi](./problem_014)
β β β β βββ [hi](./problem_015)
β β β β βββ [hi](./problem_016)
β β β β βββ [hi](./problem_017)
β β β β βββ [hi](./problem_018)
β β β β βββ [hi](./problem_019)
β β β β βββ [hi](./problem_020)
β β β β βββ [hi](./problem_021)
β β β β βββ [hi](./problem_022)
β β β β βββ [hi](./problem_023)
β β β β βββ [hi](./problem_024)
β β β β βββ [hi](./problem_025)
β β β β βββ [hi](./problem_026)
β β β β βββ [hi](./problem_027)
β β β β βββ [hi](./problem_028)
β β β β βββ [hi](./problem_029)
β β β β βββ [hi](./problem_030)
β β β β βββ [hi](./problem_031)
β β β β βββ [hi](./problem_032)
β β β β βββ [hi](./problem_033)
β β β β βββ [hi](./problem_034)
β β β β βββ [hi](./problem_035)
β β β β βββ [hi](./problem_036)
β β β β βββ [hi](./problem_037)
β β β β βββ [hi](./problem_038)
β β β β βββ [hi](./problem_039)
β β β β βββ [hi](./problem_040)
β β β β βββ [hi](./problem_041)
β β β β βββ [hi](./problem_042)
β β β β βββ [hi](./problem_043)
β β β β βββ [hi](./problem_044)
β β β β βββ [hi](./problem_045)
β β β β βββ [hi](./problem_046)
β β β β βββ [hi](./problem_047)
β β β β βββ [hi](./problem_048)
β β β β βββ [hi](./problem_049)
β β β β βββ [hi](./problem_050)
β β β β βββ [hi](./problem_051)
β β β β βββ [hi](./problem_052)
β β β β βββ [hi](./problem_053)
β β β β βββ [hi](./problem_054)
β β β β βββ [hi](./problem_055)
β β β β βββ [hi](./problem_056)
β β β β βββ [hi](./problem_057)
β β β β βββ [hi](./problem_058)
β β β β βββ [hi](./problem_059)
β β β β βββ [hi](./problem_062)
β β β β βββ [hi](./problem_063)
β β β β βββ [hi](./problem_064)
β β β β βββ [hi](./problem_065)
β β β β βββ [hi](./problem_067)
β β β β βββ [hi](./problem_069)
β β β β βββ [hi](./problem_070)
β β β β βββ [hi](./problem_071)
β β β β βββ [hi](./problem_072)
β β β β βββ [hi](./problem_074)
β β β β βββ [hi](./problem_075)
β β β β βββ [hi](./problem_076)
β β β β βββ [hi](./problem_077)
β β β β βββ [hi](./problem_080)
β β β β βββ [hi](./problem_081)
β β β β βββ [hi](./problem_085)
β β β β βββ [hi](./problem_086)
β β β β βββ [hi](./problem_087)
β β β β βββ [hi](./problem_089)
β β β β βββ [hi](./problem_091)
β β β β βββ [hi](./problem_097)
β β β β βββ [hi](./problem_099)
β β β β βββ [hi](./problem_101)
β β β β βββ [hi](./problem_102)
β β β β βββ [hi](./problem_107)
β β β β βββ [hi](./problem_112)
β β β β βββ [hi](./problem_113)
β β β β βββ [hi](./problem_119)
β β β β βββ [hi](./problem_120)
β β β β βββ [hi](./problem_123)
β β β β βββ [hi](./problem_125)
β β β β βββ [hi](./problem_129)
β β β β βββ [hi](./problem_135)
β β β β βββ [hi](./problem_173)
β β β β βββ [hi](./problem_174)
β β β β βββ [hi](./problem_180)
β β β β βββ [hi](./problem_188)
β β β β βββ [hi](./problem_191)
β β β β βββ [hi](./problem_203)
β β β β βββ [hi](./problem_206)
β β β β βββ [hi](./problem_207)
β β β β βββ [hi](./problem_234)
β β β β βββ [hi](./problem_301)
β β β β βββ problem_551)
β β β βββ [hi](./quantum)
β β β βββ [hi](./scheduling)
β β β βββ [hi](./scripts)
β β β βββ [hi](./searches)
β β β βββ [hi](./sorts)
β β β βββ [hi](./strings)
β β β βββ [hi](./traversals)
β β β βββ web_programming)
β β βββ [hi](./react-carousel-master)
β β β βββ [hi](./public)
β β β βββ src)
β β β βββ assets)
β β βββ [hi](./react-design-patterns-and-best-practices-master)
β β β βββ [hi](./chapter-03)
β β β β βββ reusable-components)
β β β β βββ [hi](./src)
β β β β β βββ components)
β β β β βββ stories)
β β β βββ [hi](./chapter-04)
β β β β βββ [hi](./container-presentational)
β β β β β βββ src)
β β β β β βββ components)
β β β β β βββ geolocation)
β β β β βββ higher-order-components)
β β β β βββ src)
β β β β βββ components)
β β β βββ [hi](./chapter-05)
β β β β βββ [hi](./data-fetching)
β β β β β βββ src)
β β β β β βββ components)
β β β β βββ [hi](./data-flow)
β β β β β βββ src)
β β β β β βββ components)
β β β β βββ react-refetch)
β β β β βββ src)
β β β β βββ components)
β β β βββ [hi](./chapter-06)
β β β β βββ [hi](./controlled-components)
β β β β β βββ src)
β β β β β βββ components)
β β β β βββ [hi](./css-transition-group)
β β β β β βββ src)
β β β β β βββ components)
β β β β βββ [hi](./event-switch)
β β β β β βββ src)
β β β β β βββ components)
β β β β βββ [hi](./json-schema)
β β β β β βββ src)
β β β β β βββ components)
β β β β βββ [hi](./react-motion)
β β β β β βββ src)
β β β β β βββ components)
β β β β βββ [hi](./refs-dom)
β β β β β βββ src)
β β β β β βββ components)
β β β β βββ [hi](./refs-instance)
β β β β β βββ src)
β β β β β βββ components)
β β β β βββ [hi](./svg)
β β β β β βββ src)
β β β β β βββ components)
β β β β βββ uncontrolled-components)
β β β β βββ src)
β β β β βββ components)
β β β βββ [hi](./chapter-07)
β β β β βββ [hi](./css-modules)
β β β β βββ [hi](./inline-styles)
β β β β β βββ src)
β β β β β βββ components)
β β β β βββ [hi](./radium)
β β β β β βββ src)
β β β β β βββ components)
β β β β βββ styled-components)
β β β β βββ src)
β β β β βββ components)
β β β βββ [hi](./chapter-08)
β β β β βββ [hi](./data-fetching)
β β β β β βββ src)
β β β β βββ [hi](./next)
β β β β β βββ pages)
β β β β βββ server-side-rendering)
β β β β βββ src)
β β β βββ [hi](./chapter-09)
β β β β βββ [hi](./constants-props)
β β β β β βββ src)
β β β β β βββ components)
β β β β βββ [hi](./creating-functions)
β β β β β βββ src)
β β β β β βββ components)
β β β β βββ [hi](./good-design)
β β β β β βββ src)
β β β β β βββ components)
β β β β βββ keys)
β β β β βββ src)
β β β β βββ components)
β β β βββ [hi](./chapter-10)
β β β β βββ [hi](./enzyme)
β β β β βββ [hi](./higher-order-components)
β β β β β βββ __snapshots__)
β β β β βββ [hi](./jest)
β β β β βββ [hi](./mocha)
β β β β β βββ test)
β β β β βββ [hi](./page-object)
β β β β βββ real-world)
β β β β βββ __snapshots__)
β β β βββ chapter-11)
β β β βββ [hi](./index-as-key)
β β β β βββ src)
β β β β βββ components)
β β β βββ [hi](./initializing-state)
β β β β βββ src)
β β β β βββ components)
β β β βββ mutating-state)
β β β βββ src)
β β β βββ components)
β β βββ [hi](./React-Todo-master)
β β β βββ [hi](./public)
β β β βββ src)
β β β βββ components)
β β β βββ TodoComponents)
β β βββ [hi](./Relational-Databases-master)
β β β βββ solutions)
β β βββ [hi](./Server-Testing-master)
β β βββ [hi](./Sorting-master)
β β β βββ src)
β β β βββ [hi](./iterative_sorting)
β β β βββ [hi](./recursive_sorting)
β β β βββ searching)
β β βββ [hi](./Sprint-Challenge--Graphs-master)
β β β βββ [hi](./img)
β β β βββ src)
β β βββ [hi](./Sprint-Challenge--JavaScript-master)
β β β βββ [hi](./challenges)
β β β βββ [hi](./src)
β β β βββ tests)
β β βββ [hi](./Sprint-Challenge-Node-Express-master)
β β β βββ [hi](./data)
β β β β βββ [hi](./helpers)
β β β β βββ [hi](./migrations)
β β β β βββ seeds)
β β β βββ [hi](./express)
β β β β βββ [hi](./public)
β β β β βββ src)
β β β βββ routes)
β β βββ [hi](./Sprint-Challenge-RDBMS-master)
β β β βββ [hi](./data)
β β β β βββ [hi](./migrations)
β β β β βββ seeds)
β β β βββ routes)
β β βββ [hi](./sql-lab-master)
β β β βββ img)
β β βββ [hi](./Static-Pages-master)
β β βββ [hi](./web-guided-project-HTTP-main)
β β β βββ [hi](./client)
β β β β βββ src)
β β β β βββ components)
β β β βββ server)
β β βββ Whiteboard-Pairing-master)
β β βββ [hi](./BalancedBinaryTree)
β β βββ [hi](./BalancedBrackets)
β β βββ [hi](./BitcoinTrading)
β β βββ [hi](./BSTFromArray)
β β βββ [hi](./ClimbingStairs)
β β βββ [hi](./CountingVotes)
β β βββ [hi](./DepthFirstSearch)
β β βββ [hi](./FindRotationPoint)
β β βββ [hi](./IntegerPairs)
β β βββ [hi](./KthToLastNode)
β β βββ [hi](./LargestContiguousSum)
β β βββ [hi](./LargestStack)
β β βββ [hi](./LinkedListPalindrome)
β β βββ [hi](./MatrixSpiralCopy)
β β βββ [hi](./MergingTwoPackages)
β β βββ [hi](./MinHeap)
β β βββ [hi](./MinJumps)
β β βββ [hi](./NthFibonacci)
β β βββ [hi](./OneWayFlight)
β β βββ [hi](./ProductOfAllOtherNumbers)
β β βββ [hi](./QueueWithTwoStacks)
β β βββ [hi](./ReverseLinkedList)
β β βββ [hi](./RingBuffer)
β β βββ [hi](./RobotPaths)
β β βββ [hi](./RockPaperScissors)
β β βββ [hi](./RotateImage)
β β βββ [hi](./SetOfStacks)
β β βββ [hi](./SortStack)
β β βββ [hi](./SortTopScores)
β β βββ [hi](./TemperatureTracker)
β β βββ [hi](./TimePlanner)
β β βββ ValidateBinaryTree)
β βββ web-dev-utils)
β βββ [hi](./bootstrap-4.3.1-dist)
β β βββ [hi](./css)
β β βββ js)
β βββ [hi](./GIT-HTML-PREVIEW-TOOL)
β β βββ GIT-HTML-PREVIEW-TOOL-master)
β βββ [hi](./Markdown-Templates)
β β βββ Markdown-Templates-master)
β β βββ images)
β βββ [hi](./personal-utilities)
β β βββ [hi](./Auto-table-Of-Contents)
β β βββ [hi](./copy-2-clip)
β β βββ [hi](./css)
β β βββ [hi](./extract-css)
β β β βββ [hi](./css)
β β β βββ [hi](./img)
β β β βββ js)
β β βββ [hi](./js)
β β βββ prism)
β βββ TexTools)
β βββ TexTools-master)
β βββ [hi](./backup-stable-build)
β β βββ [hi](./css)
β β βββ js)
β βββ [hi](./css)
β βββ [hi](./js)
β βββ sandbox)
βββ [hi](./Documentation)
βββ [hi](./screenshot-preview)
β βββ [hi](./examples)
β βββ src)
βββ WEEKS)
βββ [hi](./wk1)
β βββ [hi](./0-notes)
β β )
β β β βββ [hi](./closures_files)
β β β βββ [hi](./Farm to Table_files)
β β β βββ [hi](./func-scope_files)
β β β βββ [hi](./git-quiz_files)
β β β βββ Quiz_Git_files)
β β )
β β β βββ [hi](./flexbox-explained_files)
β β β βββ notes_files)
β β )
β βββ [hi](./1-projects)
β β β βββ [hi](./User_Interface_I_HTML_Markup)
β β β βββ User_Interface_I__Project_2_-_Sweet_Eats_Bakery)
β β )
β β β βββ web-module-project-intro-css)
β β β βββ [hi](./assets)
β β β βββ design)
β β β βββ refactor-d3-proj-w-flex)
β β β βββ [hi](./assets)
β β β βββ design)
β β )
β βββ [hi](./2-resources)
β β βββ [hi](./agenda_files)
β β )
β βββ [hi](./3-misc)
β β )
β βββ 4-test-prep)
β βββ Study-Guides)
βββ [hi](./wk10)
β βββ [hi](./0-notes)
β β )
β βββ [hi](./1-projects)
β β )
β βββ [hi](./2-resources)
β β )
β βββ [hi](./3-misc)
β β )
β βββ 4-test-prep)
β βββ Study-Guides)
βββ [hi](./wk11)
β βββ [hi](./0-notes)
β β )
β βββ [hi](./1-projects)
β β )
β βββ [hi](./2-resources)
β β )
β βββ [hi](./3-misc)
β β )
β βββ 4-test-prep)
β βββ Study-Guides)
βββ [hi](./wk12)
β βββ [hi](./0-notes)
β β )
β βββ [hi](./1-projects)
β β )
β βββ [hi](./2-resources)
β β )
β βββ [hi](./3-misc)
β β )
β βββ 4-test-prep)
β βββ Study-Guides)
βββ [hi](./wk14)
β βββ [hi](./0-notes)
β β )
β βββ [hi](./1-projects)
β β )
β βββ [hi](./2-resources)
β β )
β βββ [hi](./3-misc)
β β )
β βββ 4-test-prep)
β βββ Study-Guides)
βββ [hi](./wk15)
β βββ [hi](./0-notes)
β β )
β βββ [hi](./1-projects)
β β )
β βββ [hi](./2-resources)
β β )
β βββ [hi](./3-misc)
β β )
β βββ 4-test-prep)
β βββ Study-Guides)
βββ [hi](./wk16)
β βββ [hi](./0-notes)
β β )
β βββ [hi](./1-projects)
β β )
β βββ [hi](./2-resources)
β β )
β βββ [hi](./3-misc)
β β )
β βββ 4-test-prep)
β βββ Study-Guides)
βββ [hi](./wk17)
β βββ [hi](./0-notes)
β β )
β βββ [hi](./1-projects)
β β )
β βββ [hi](./2-resources)
β β )
β βββ [hi](./3-misc)
β β )
β βββ 4-test-prep)
β βββ Study-Guides)
βββ [hi](./wk18)
β βββ [hi](./0-notes)
β β )
β βββ [hi](./1-projects)
β β )
β βββ [hi](./2-resources)
β β )
β βββ [hi](./3-misc)
β β )
β βββ 4-test-prep)
β βββ Study-Guides)
βββ [hi](./wk19)
β βββ [hi](./0-notes)
β β )
β βββ [hi](./1-projects)
β β )
β βββ [hi](./2-resources)
β β )
β βββ [hi](./3-misc)
β β )
β βββ 4-test-prep)
β βββ Study-Guides)
βββ [hi](./wk2)
β βββ [hi](./0-notes)
β β )
β βββ [hi](./1-projects)
β β )
β βββ [hi](./2-resources)
β β )
β βββ [hi](./3-misc)
β β )
β βββ 4-test-prep)
β βββ Study-Guides)
βββ [hi](./wk20)
β βββ [hi](./0-notes)
β β )
β βββ [hi](./1-projects)
β β )
β βββ [hi](./2-resources)
β β )
β βββ [hi](./3-misc)
β β )
β βββ 4-test-prep)
β βββ Study-Guides)
βββ [hi](./wk3)
β βββ [hi](./0-notes)
β β )
β βββ [hi](./1-projects)
β β )
β βββ [hi](./2-resources)
β β )
β βββ [hi](./3-misc)
β β )
β βββ 4-test-prep)
β βββ Study-Guides)
βββ [hi](./wk4)
β βββ [hi](./0-notes)
β β )
β βββ [hi](./1-projects)
β β )
β βββ [hi](./2-resources)
β β )
β βββ [hi](./3-misc)
β β )
β βββ 4-test-prep)
β βββ Study-Guides)
βββ [hi](./wk5)
β βββ [hi](./0-notes)
β β )
β βββ [hi](./1-projects)
β β )
β βββ [hi](./2-resources)
β β )
β βββ [hi](./3-misc)
β β )
β βββ 4-test-prep)
β βββ Study-Guides)
βββ [hi](./wk6)
β βββ [hi](./0-notes)
β β )
β βββ [hi](./1-projects)
β β )
β βββ [hi](./2-resources)
β β )
β βββ [hi](./3-misc)
β β )
β βββ 4-test-prep)
β βββ Study-Guides)
βββ [hi](./wk7)
β βββ [hi](./0-notes)
β β )
β βββ [hi](./1-projects)
β β )
β βββ [hi](./2-resources)
β β )
β βββ [hi](./3-misc)
β β )
β βββ 4-test-prep)
β βββ Study-Guides)
βββ [hi](./wk8)
β βββ [hi](./0-notes)
β β )
β βββ [hi](./1-projects)
β β )
β βββ [hi](./2-resources)
β β )
β βββ [hi](./3-misc)
β β )
β βββ 4-test-prep)
β βββ Study-Guides)
βββ wk9)
βββ [hi](./0-notes)
β )
β)
βββ [hi](./1-projects)
β )
β)
βββ [hi](./2-resources)
β )
β)
βββ [hi](./3-misc)
β )
β)
βββ 4-test-prep)
βββ Study-Guides)
4660 directories)
Platforms
Programming Languages
Front-End Development
Back-End Development
Computer Science
Big Data
Theory
Books
Editors
Gaming
Development Environment
Entertainment
Databases
Media
Learn
Security
Content Management Systems
Hardware
Business
Work
Networking
Decentralized Systems
Higher Education
Events
Testing
Miscellaneous
Related
- Node.js - Async non-blocking event-driven JavaScript runtime built on Chrome's V8 JavaScript engine.)
- Cross-Platform - Writing cross-platform code on Node.js.)
- Frontend Development)
- iOS - Mobile operating system for Apple phones and tablets.)
- Android - Mobile operating system developed by Google.)
- IoT & Hybrid Apps)
- Electron - Cross-platform native desktop apps using JavaScript/HTML/CSS.)
- Cordova - JavaScript API for hybrid apps.)
- React Native - JavaScript framework for writing natively rendering mobile apps for iOS and Android.)
- Xamarin - Mobile app development IDE, testing, and distribution.)
- Linux)
- Containers)
- eBPF - Virtual machine that allows you to write more efficient and powerful tracing and monitoring for Linux systems.)
- Arch-based Projects - Linux distributions and projects based on Arch Linux.)
- macOS - Operating system for Apple's Mac computers.)
- watchOS - Operating system for the Apple Watch.)
- JVM)
- Salesforce)
- Amazon Web Services)
- Windows)
- IPFS - P2P hypermedia protocol.)
- Fuse - Mobile development tools.)
- Heroku - Cloud platform as a service.)
- Raspberry Pi - Credit card-sized computer aimed at teaching kids programming, but capable of a lot more.)
- Qt - Cross-platform GUI app framework.)
- WebExtensions - Cross-browser extension system.)
- RubyMotion - Write cross-platform native apps for iOS, Android, macOS, tvOS, and watchOS in Ruby.)
- Smart TV - Create apps for different TV platforms.)
- GNOME - Simple and distraction-free desktop environment for Linux.)
- KDE - A free software community dedicated to creating an open and user-friendly computing experience.)
- .NET)
- Amazon Alexa - Virtual home assistant.)
- DigitalOcean - Cloud computing platform designed for developers.)
- Flutter - Google's mobile SDK for building native iOS and Android apps from a single codebase written in Dart.)
- Home Assistant - Open source home automation that puts local control and privacy first.)
- IBM Cloud - Cloud platform for developers and companies.)
- Firebase - App development platform built on Google Cloud Platform.)
- Robot Operating System 2.0 - Set of software libraries and tools that help you build robot apps.)
- Adafruit IO - Visualize and store data from any device.)
- Cloudflare - CDN, DNS, DDoS protection, and security for your site.)
- Actions on Google - Developer platform for Google Assistant.)
- ESP - Low-cost microcontrollers with WiFi and broad IoT applications.)
- Deno - A secure runtime for JavaScript and TypeScript that uses V8 and is built in Rust.)
- DOS - Operating system for x86-based personal computers that was popular during the 1980s and early 1990s.)
- Nix - Package manager for Linux and other Unix systems that makes package management reliable and reproducible.) )
)
- JavaScript)
- Promises)
- Standard Style - Style guide and linter.)
- Must Watch Talks)
- Tips)
- Network Layer)
- Micro npm Packages)
- Mad Science npm Packages - Impossible sounding projects that exist.)
- Maintenance Modules - For npm packages.)
- npm - Package manager.)
- AVA - Test runner.)
- ESLint - Linter.)
- Functional Programming)
- Observables)
- npm scripts - Task runner.)
- 30 Seconds of Code - Code snippets you can understand in 30 seconds.)
- Ponyfills - Like polyfills but without overriding native APIs.)
- Swift - Apple's compiled programming language that is secure, modern, programmer-friendly, and fast.)
- Python - General-purpose programming language designed for readability.)
- Asyncio - Asynchronous I/O in Python 3.)
- Scientific Audio - Scientific research in audio/music.)
- CircuitPython - A version of Python for microcontrollers.)
- Data Science - Data analysis and machine learning.)
- Typing - Optional static typing for Python.)
- MicroPython - A lean and efficient implementation of Python 3 for microcontrollers.)
- Rust)
- Haskell)
- PureScript)
- Go)
- Scala)
- Scala Native - Optimizing ahead-of-time compiler for Scala based on LLVM.)
- Ruby)
- Clojure)
- ClojureScript)
- Elixir)
- Elm)
- Erlang)
- Julia - High-level dynamic programming language designed to address the needs of high-performance numerical analysis and computational science.)
- Lua)
- C)
- C/C++ - General-purpose language with a bias toward system programming and embedded, resource-constrained software.)
- R - Functional programming language and environment for statistical computing and graphics.)
- D)
- Common Lisp - Powerful dynamic multiparadigm language that facilitates iterative and interactive development.)
- Perl)
- Groovy)
- Dart)
- Java - Popular secure object-oriented language designed for flexibility to "write once, run anywhere".)
- Kotlin)
- OCaml)
- ColdFusion)
- Fortran)
- PHP - Server-side scripting language.)
- Composer - Package manager.)
- Pascal)
- AutoHotkey)
- AutoIt)
- Crystal)
- Frege - Haskell for the JVM.)
- CMake - Build, test, and package software.)
- ActionScript 3 - Object-oriented language targeting Adobe AIR.)
- Eta - Functional programming language for the JVM.)
- Idris - General purpose pure functional programming language with dependent types influenced by Haskell and ML.)
- Ada/SPARK - Modern programming language designed for large, long-lived apps where reliability and efficiency are essential.)
- Q# - Domain-specific programming language used for expressing quantum algorithms.)
- Imba - Programming language inspired by Ruby and Python and compiles to performant JavaScript.)
- Vala - Programming language designed to take full advantage of the GLib and GNOME ecosystems, while preserving the speed of C code.)
- Coq - Formal language and environment for programming and specification which facilitates interactive development of machine-checked proofs.)
- V - Simple, fast, safe, compiled language for developing maintainable software.) )
)
- ES6 Tools)
- Web Performance Optimization)
- Web Tools)
- CSS - Style sheet language that specifies how HTML elements are displayed on screen.)
- React - App framework.)
- Relay - Framework for building data-driven React apps.)
- React Hooks - A new feature that lets you use state and other React features without writing a class.)
- Web Components)
- Polymer - JavaScript library to develop Web Components.)
- Angular - App framework.)
- Backbone - App framework.)
- HTML5 - Markup language used for websites & web apps.)
- SVG - XML-based vector image format.)
- Canvas)
- KnockoutJS - JavaScript library.)
- Dojo Toolkit - JavaScript toolkit.)
- Inspiration)
- Ember - App framework.)
- Android UI)
- iOS UI)
- Meteor)
- BEM)
- Flexbox)
- Web Typography)
- Web Accessibility)
- Material Design)
- D3 - Library for producing dynamic, interactive data visualizations.)
- Emails)
- jQuery - Easy to use JavaScript library for DOM manipulation.)
- Tips)
- Web Audio)
- Offline-First)
- Static Website Services)
- Cycle.js - Functional and reactive JavaScript framework.)
- Text Editing)
- Motion UI Design)
- Vue.js - App framework.)
- Marionette.js - App framework.)
- Aurelia - App framework.)
- Charting)
- Ionic Framework 2)
- Chrome DevTools)
- PostCSS - CSS tool.)
- Draft.js - Rich text editor framework for React.)
- Service Workers)
- Progressive Web Apps)
- choo - App framework.)
- Redux - State container for JavaScript apps.)
- webpack - Module bundler.)
- Browserify - Module bundler.)
- Sass - CSS preprocessor.)
- Ant Design - Enterprise-class UI design language.)
- Less - CSS preprocessor.)
- WebGL - JavaScript API for rendering 3D graphics.)
- Preact - App framework.)
- Progressive Enhancement)
- Next.js - Framework for server-rendered React apps.)
- lit-html - HTML templating library for JavaScript.)
- JAMstack - Modern web development architecture based on client-side JavaScript, reusable APIs, and prebuilt markup.)
- WordPress-Gatsby - Web development technology stack with WordPress as a back end and Gatsby as a front end.)
- Mobile Web Development - Creating a great mobile web experience.)
- Storybook - Development environment for UI components.)
- Blazor - .NET web framework using C#/Razor and HTML that runs in the browser with WebAssembly.)
- PageSpeed Metrics - Metrics to help understand page speed and user experience.)
- Tailwind CSS - Utility-first CSS framework for rapid UI development.)
- Seed - Rust framework for creating web apps running in WebAssembly.)
- Web Performance Budget - Techniques to ensure certain performance metrics for a website.)
- Web Animation - Animations in the browser with JavaScript, CSS, SVG, etc.)
- Yew - Rust framework inspired by Elm and React for creating multi-threaded frontend web apps with WebAssembly.)
- Material-UI - Material Design React components for faster and easier web development.)
- Building Blocks for Web Apps - Standalone features to be integrated into web apps.)
- Svelte - App framework.)
- Design systems - Collection of reusable components, guided by rules that ensure consistency and speed.) )
)
- Flask - Python framework.)
- Docker)
- Vagrant - Automation virtual machine environment.)
- Pyramid - Python framework.)
- Play1 Framework)
- CakePHP - PHP framework.)
- Symfony - PHP framework.)
- Laravel - PHP framework.)
- Education)
- TALL Stack - Full-stack development solution featuring libraries built by the Laravel community.)
- Rails - Web app framework for Ruby.)
- Gems - Packages.)
- Phalcon - PHP framework.)
- Useful
.htaccess
Snippets) - nginx - Web server.)
- Dropwizard - Java framework.)
- Kubernetes - Open-source platform that automates Linux container operations.)
- Lumen - PHP micro-framework.)
- Serverless Framework - Serverless computing and serverless architectures.)
- Apache Wicket - Java web app framework.)
- Vert.x - Toolkit for building reactive apps on the JVM.)
- Terraform - Tool for building, changing, and versioning infrastructure.)
- Vapor - Server-side development in Swift.)
- Dash - Python web app framework.)
- FastAPI - Python web app framework.)
- CDK - Open-source software development framework for defining cloud infrastructure in code.)
- IAM - User accounts, authentication and authorization.) )
)
- University Courses)
- Data Science)
- Machine Learning)
- Tutorials)
- ML with Ruby - Learning, implementing, and applying Machine Learning using Ruby.)
- Core ML Models - Models for Apple's machine learning framework.)
- H2O - Open source distributed machine learning platform written in Java with APIs in R, Python, and Scala.)
- Software Engineering for Machine Learning - From experiment to production-level machine learning.)
- AI in Finance - Solving problems in finance with machine learning.)
- JAX - Automatic differentiation and XLA compilation brought together for high-performance machine learning research.)
- Speech and Natural Language Processing)
- Spanish)
- NLP with Ruby)
- Question Answering - The science of asking and answering in natural language with a machine.)
- Natural Language Generation - Generation of text used in data to text, conversational agents, and narrative generation applications.)
- Linguistics)
- Cryptography)
- Papers - Theory basics for using cryptography by non-cryptographers.)
- Computer Vision)
- Deep Learning - Neural networks.)
- TensorFlow - Library for machine intelligence.)
- TensorFlow.js - WebGL-accelerated machine learning JavaScript library for training and deploying models.)
- TensorFlow Lite - Framework that optimizes TensorFlow models for on-device machine learning.)
- Papers - The most cited deep learning papers.)
- Education)
- Deep Vision)
- Open Source Society University)
- Functional Programming)
- Empirical Software Engineering - Evidence-based research on software systems.)
- Static Analysis & Code Quality)
- Information Retrieval - Learn to develop your own search engine.)
- Quantum Computing - Computing which utilizes quantum mechanics and qubits on quantum computers.) )
)
- Big Data)
- Public Datasets)
- Hadoop - Framework for distributed storage and processing of very large data sets.)
- Data Engineering)
- Streaming)
- Apache Spark - Unified engine for large-scale data processing.)
- Qlik - Business intelligence platform for data visualization, analytics, and reporting apps.)
- Splunk - Platform for searching, monitoring, and analyzing structured and unstructured machine-generated big data in real-time.) )
)
- Papers We Love)
- Talks)
- Algorithms)
- Education - Learning and practicing.)
- Algorithm Visualizations)
- Artificial Intelligence)
- Search Engine Optimization)
- Competitive Programming)
- Math)
- Recursion Schemes - Traversing nested data structures.) )
)
)
- Sublime Text)
- Vim)
- Emacs)
- Atom - Open-source and hackable text editor.)
- Visual Studio Code - Cross-platform open-source text editor.) )
)
- Game Development)
- Game Talks)
- Godot - Game engine.)
- Open Source Games)
- Unity - Game engine.)
- Chess)
- LΓVE - Game engine.)
- PICO-8 - Fantasy console.)
- Game Boy Development)
- Construct 2 - Game engine.)
- Gideros - Game engine.)
- Minecraft - Sandbox video game.)
- Game Datasets - Materials and datasets for Artificial Intelligence in games.)
- Haxe Game Development - A high-level strongly typed programming language used to produce cross-platform native code.)
- libGDX - Java game framework.)
- PlayCanvas - Game engine.)
- Game Remakes - Actively maintained open-source game remakes.)
- Flame - Game engine for Flutter.)
- Discord Communities - Chat with friends and communities.)
- CHIP-8 - Virtual computer game machine from the 70s.)
- Games of Coding - Learn a programming language by making games.) )
)
- Quick Look Plugins - For macOS.)
- Dev Env)
- Dotfiles)
- Shell)
- Fish - User-friendly shell.)
- Command-Line Apps)
- ZSH Plugins)
- GitHub - Hosting service for Git repositories.)
- Browser Extensions)
- Cheat Sheet)
- Pinned Gists - Dynamic pinned gists for your GitHub profile.)
- Git Cheat Sheet & Git Flow)
- Git Tips)
- Git Add-ons - Enhance the
git
CLI.) - Git Hooks - Scripts for automating tasks during
git
workflows.) - SSH)
- FOSS for Developers)
- Hyper - Cross-platform terminal app built on web technologies.)
- PowerShell - Cross-platform object-oriented shell.)
- Alfred Workflows - Productivity app for macOS.)
- Terminals Are Sexy)
- GitHub Actions - Create tasks to automate your workflow and share them with others on GitHub.) )
)
- Science Fiction - Scifi.)
- Fantasy)
- Podcasts)
- Email Newsletters)
- IT Quotes) )
)
- Database)
- MySQL)
- SQLAlchemy)
- InfluxDB)
- Neo4j)
- MongoDB - NoSQL database.)
- RethinkDB)
- TinkerPop - Graph computing framework.)
- PostgreSQL - Object-relational database.)
- CouchDB - Document-oriented NoSQL database.)
- HBase - Distributed, scalable, big data store.)
- NoSQL Guides - Help on using non-relational, distributed, open-source, and horizontally scalable databases.)
- Contexture - Abstracts queries/filters and results/aggregations from different backing data stores like ElasticSearch and MongoDB.)
- Database Tools - Everything that makes working with databases easier.)
- Grakn - Logical database to organize large and complex networks of data as one body of knowledge.) )
)
- Creative Commons Media)
- Fonts)
- Codeface - Text editor fonts.)
- Stock Resources)
- GIF - Image format known for animated images.)
- Music)
- Open Source Documents)
- Audio Visualization)
- Broadcasting)
- Pixel Art - Pixel-level digital art.)
- FFmpeg - Cross-platform solution to record, convert and stream audio and video.)
- Icons - Downloadable SVG/PNG/font icon projects.)
- Audiovisual - Lighting, audio and video in professional environments.) )
)
- CLI Workshoppers - Interactive tutorials.)
- Learn to Program)
- Speaking)
- Tech Videos)
- Dive into Machine Learning)
- Computer History)
- Programming for Kids)
- Educational Games - Learn while playing.)
- JavaScript Learning)
- CSS Learning - Mainly about CSS - the language and the modules.)
- Product Management - Learn how to be a better product manager.)
- Roadmaps - Gives you a clear route to improve your knowledge and skills.)
- YouTubers - Watch video tutorials from YouTubers that teach you about technology.) )
)
- Application Security)
- Security)
- CTF - Capture The Flag.)
- Malware Analysis)
- Android Security)
- Hacking)
- Honeypots - Deception trap, designed to entice an attacker into attempting to compromise the information systems in an organization.)
- Incident Response)
- Vehicle Security and Car Hacking)
- Web Security - Security of web apps & services.)
- Lockpicking - The art of unlocking a lock by manipulating its components without the key.)
- Cybersecurity Blue Team - Groups of individuals who identify security flaws in information technology systems.)
- Fuzzing - Automated software testing technique that involves feeding pseudo-randomly generated input data.)
- Embedded and IoT Security)
- GDPR - Regulation on data protection and privacy for all individuals within EU.)
- DevSecOps - Integration of security practices into DevOps.) )
)
- Umbraco)
- Refinery CMS - Ruby on Rails CMS.)
- Wagtail - Django CMS focused on flexibility and user experience.)
- Textpattern - Lightweight PHP-based CMS.)
- Drupal - Extensible PHP-based CMS.)
- Craft CMS - Content-first CMS.)
- Sitecore - .NET digital marketing platform that combines CMS with tools for managing multiple websites.)
- Silverstripe CMS - PHP MVC framework that serves as a classic or headless CMS.) )
)
- Robotics)
- Internet of Things)
- Electronics - For electronic engineers and hobbyists.)
- Bluetooth Beacons)
- Electric Guitar Specifications - Checklist for building your own electric guitar.)
- Plotters - Computer-controlled drawing machines and other visual art robots.)
- Robotic Tooling - Free and open tools for professional robotic development.)
- LIDAR - Sensor for measuring distances by illuminating the target with laser light.) )
)
- Open Companies)
- Places to Post Your Startup)
- OKR Methodology - Goal setting & communication best practices.)
- Leading and Managing - Leading people and being a manager in a technology company/environment.)
- Indie - Independent developer businesses.)
- Tools of the Trade - Tools used by companies on Hacker News.)
- Clean Tech - Fighting climate change with technology.)
- Wardley Maps - Provides high situational awareness to help improve strategic planning and decision making.)
- Social Enterprise - Building an organization primarily focused on social impact that is at least partially self-funded.)
- Engineering Team Management - How to transition from software development to engineering management.)
- Developer-First Products - Products that target developers as the user.) )
)
- Slack - Team collaboration.)
- Remote Jobs)
- Productivity)
- Niche Job Boards)
- Programming Interviews)
- Code Review - Reviewing code.)
- Creative Technology - Businesses & groups that specialize in combining computing, design, art, and user experience.) )
)
- Software-Defined Networking)
- Network Analysis)
- PCAPTools)
- Real-Time Communications - Network protocols for near simultaneous exchange of media and data.) )
)
- Bitcoin - Bitcoin services and tools for software developers.)
- Ripple - Open source distributed settlement network.)
- Non-Financial Blockchain - Non-financial blockchain applications.)
- Mastodon - Open source decentralized microblogging network.)
- Ethereum - Distributed computing platform for smart contract development.)
- Blockchain AI - Blockchain projects for artificial intelligence and machine learning.)
- EOSIO - A decentralized operating system supporting industrial-scale apps.)
- Corda - Open source blockchain platform designed for business.)
- Waves - Open source blockchain platform and development toolset for Web 3.0 apps and decentralized solutions.)
- Substrate - Framework for writing scalable, upgradeable blockchains in Rust.) )
)
- Computational Neuroscience - A multidisciplinary science which uses computational approaches to study the nervous system.)
- Digital History - Computer-aided scientific investigation of history.)
- Scientific Writing - Distraction-free scientific writing with Markdown, reStructuredText and Jupyter notebooks.) )
)
- Creative Tech Events - Events around the globe for creative coding, tech, design, music, arts and cool stuff.)
- Events in Italy - Tech-related events in Italy.)
- Events in the Netherlands - Tech-related events in the Netherlands.) )
)
- Testing - Software testing.)
- Visual Regression Testing - Ensures changes did not break the functionality or style.)
- Selenium - Open-source browser automation framework and ecosystem.)
- Appium - Test automation tool for apps.)
- TAP - Test Anything Protocol.)
- JMeter - Load testing and performance measurement tool.)
- k6 - Open-source, developer-centric performance monitoring and load testing solution.)
- Playwright - Node.js library to automate Chromium, Firefox and WebKit with a single API.)
- Quality Assurance Roadmap - How to start & build a career in software testing.) )
)
- JSON - Text based data interchange format.)
- CSV - A text file format that stores tabular data and uses a comma to separate values.)
- Discounts for Student Developers)
- Radio)
- Awesome - Recursion illustrated.)
- Analytics)
- REST)
- Continuous Integration and Continuous Delivery)
- Services Engineering)
- Free for Developers)
- Answers - Stack Overflow, Quora, etc.)
- Sketch - Design app for macOS.)
- Boilerplate Projects)
- Readme)
- Design and Development Guides)
- Software Engineering Blogs)
- Self Hosted)
- FOSS Production Apps)
- Gulp - Task runner.)
- AMA - Ask Me Anything.)
- Open Source Photography)
- OpenGL - Cross-platform API for rendering 2D and 3D graphics.)
- GraphQL)
- Transit)
- Research Tools)
- Data Visualization)
- Social Media Share Links)
- Microservices)
- Unicode - Unicode standards, quirks, packages and resources.)
- Beginner-Friendly Projects)
- Katas)
- Tools for Activism)
- Citizen Science - For community-based and non-institutional scientists.)
- MQTT - "Internet of Things" connectivity protocol.)
- Hacking Spots)
- For Girls)
- Vorpal - Node.js CLI framework.)
- Vulkan - Low-overhead, cross-platform 3D graphics and compute API.)
- LaTeX - Typesetting language.)
- Economics - An economist's starter kit.)
- Funny Markov Chains)
- Bioinformatics)
- Cheminformatics - Informatics techniques applied to problems in chemistry.)
- Colorful - Choose your next color scheme.)
- Steam - Digital distribution platform.)
- Bots - Building bots.)
- Site Reliability Engineering)
- Empathy in Engineering - Building and promoting more compassionate engineering cultures.)
- DTrace - Dynamic tracing framework.)
- Userscripts - Enhance your browsing experience.)
- PokΓ©mon - PokΓ©mon and PokΓ©mon GO.)
- ChatOps - Managing technical and business operations through a chat.)
- Falsehood - Falsehoods programmers believe in.)
- Domain-Driven Design - Software development approach for complex needs by connecting the implementation to an evolving model.)
- Quantified Self - Self-tracking through technology.)
- SaltStack - Python-based config management system.)
- Web Design - For digital designers.)
- Creative Coding - Programming something expressive instead of something functional.)
- No-Login Web Apps - Web apps that work without login.)
- Free Software - Free as in freedom.)
- Framer - Prototyping interactive UI designs.)
- Markdown - Markup language.)
- Dev Fun - Funny developer projects.)
- Healthcare - Open source healthcare software for facilities, providers, developers, policy experts, and researchers.)
- Magento 2 - Open Source eCommerce built with PHP.)
- TikZ - Graph drawing packages for TeX/LaTeX/ConTeXt.)
- Neuroscience - Study of the nervous system and brain.)
- Ad-Free - Ad-free alternatives.)
- Esolangs - Programming languages designed for experimentation or as jokes rather than actual use.)
- Prometheus - Open-source monitoring system.)
- Homematic - Smart home devices.)
- Ledger - Double-entry accounting on the command-line.)
- Web Monetization - A free open web standard service that allows you to send money directly in your browser.)
- Uncopyright - Public domain works.)
- Crypto Currency Tools & Algorithms - Digital currency where encryption is used to regulate the generation of units and verify transfers.)
- Diversity - Creating a more inclusive and diverse tech community.)
- Open Source Supporters - Companies that offer their tools and services for free to open source projects.)
- Design Principles - Create better and more consistent designs and experiences.)
- Theravada - Teachings from the Theravada Buddhist tradition.)
- inspectIT - Open source Java app performance management tool.)
- Open Source Maintainers - The experience of being an open source maintainer.)
- Calculators - Calculators for every platform.)
- Captcha - A type of challenge-response test used in computing to determine whether or not the user is human.)
- Jupyter - Create and share documents that contain code, equations, visualizations and narrative text.)
- FIRST Robotics Competition - International high school robotics championship.)
- Humane Technology - Open source projects that help improve society.)
- Speakers - Conference and meetup speakers in the programming and design community.)
- Board Games - Table-top gaming fun for all.)
- Software Patreons - Fund individual programmers or the development of open source projects.)
- Parasite - Parasites and host-pathogen interactions.)
- Food - Food-related projects on GitHub.)
- Mental Health - Mental health awareness and self-care in the software industry.)
- Bitcoin Payment Processors - Start accepting Bitcoin.)
- Scientific Computing - Solving complex scientific problems using computers.)
- Amazon Sellers)
- Agriculture - Open source technology for farming and gardening.)
- Product Design - Design a product from the initial concept to production.)
- Prisma - Turn your database into a GraphQL API.)
- Software Architecture - The discipline of designing and building software.)
- Connectivity Data and Reports - Better understand who has access to telecommunication and internet infrastructure and on what terms.)
- Stacks - Tech stacks for building different apps and features.)
- Cytodata - Image-based profiling of biological phenotypes for computational biologists.)
- IRC - Open source messaging protocol.)
- Advertising - Advertising and programmatic media for websites.)
- Earth - Find ways to resolve the climate crisis.)
- Naming - Naming things in computer science done right.)
- Biomedical Information Extraction - How to extract information from unstructured biomedical data and text.)
- Web Archiving - An effort to preserve the Web for future generations.)
- WP-CLI - Command-line interface for WordPress.)
- Credit Modeling - Methods for classifying credit applicants into risk classes.)
- Ansible - A Python-based, open source IT configuration management and automation platform.)
- Biological Visualizations - Interactive visualization of biological data on the web.)
- QR Code - A type of matrix barcode that can be used to store and share a small amount of information.)
- Veganism - Making the plant-based lifestyle easy and accessible.)
- Translations - The transfer of the meaning of a text from one language to another.) )
)
- All Awesome Lists - All the Awesome lists on GitHub.)
- Awesome Indexed - Search the Awesome dataset.)
- Awesome Search - Quick search for Awesome lists.)
- StumbleUponAwesome - Discover random pages from the Awesome dataset using a browser extension.)
- Awesome CLI - A simple command-line tool to dive into Awesome lists.)
- Awesome Viewer - A visualizer for all of the above Awesome lists.) ) Created 1 minute ago | Updated 58 seconds ago) )
1-projects/Atomic-Design-Solution-master/dogs/
Table of Contents generated with DocToc
- Table of Contents
- Updating to New Releases
- Sending Feedback
- Folder Structure
- Available Scripts
- Supported Browsers
- Supported Language Features and Polyfills
- Syntax Highlighting in the Editor
- Displaying Lint Output in the Editor
- Debugging in the Editor
- Formatting Code Automatically
- Changing the Page
<title>
- Installing a Dependency
- Importing a Component
- Code Splitting
- Adding a Stylesheet
- Post-Processing CSS
- Adding a CSS Preprocessor (Sass, Less etc.)
- Adding Images, Fonts, and Files
- Using the
public
Folder - Using Global Variables
- Adding Bootstrap
- Adding Flow
- Adding a Router
- Adding Custom Environment Variables
- Can I Use Decorators?
- Fetching Data with AJAX Requests
- Integrating with an API Backend
- Proxying API Requests in Development
- Using HTTPS in Development
- Generating Dynamic
<meta>
Tags on the Server - Pre-Rendering into Static HTML Files
- Injecting Data from the Server into the Page
- Running Tests
- Filename Conventions
- Command Line Interface
- Version Control Integration
- Writing Tests
- Testing Components
- Using Third Party Assertion Libraries
- Initializing Test Environment
- Focusing and Excluding Tests
- Coverage Reporting
- Continuous Integration
- On CI servers
- On your own environment
- Disabling jsdom
- Snapshot Testing
- Editor Integration
- Debugging Tests
- Developing Components in Isolation
- Publishing Components to npm
- Making a Progressive Web App
- Analyzing the Bundle Size
- Deployment
- Advanced Configuration
- Troubleshooting
- Alternatives to Ejecting
- Something Missing?
1-projects/Atomic-Design-Solution-master/
Table of Contents generated with DocToc
- Routing with React Router
- Axios for making HTTP requests
- JavaScript Promises
- Atomic Design
In this create-react-app
initialized app, you will be working with the provided UI library, which has been developed based on Atomic Design
principles. This is not the only way to design and organize your components, but it will serve as an example of a very strong option.
The app you will be finishing is an app that lists a few dog breeds, shows an image, and provides links to view their sub-breeds.
You are given the atoms
, molecules
, organisms
, and templates
needed to build out this app. You will just need to consume them in your pages Breeds.js
and SubBreeds.js
. All of your HTTP requests should be made from inside of the page files.
-
Requirements for
Breeds.js
- Title should be "Breeds"
- Show a list of dog breeds
- Each list item should be a link to a
SubBreed
page that shows the sub-breed details - Show an image of the first dog breed in the list, with that breed as a title for the image
- use the provided method
filterBreeds
or any modification of it to limit the list (This is to make sure that the breeds we show actually have sub-breeds. Make sure you still make the initial get requests for the list of dogs first though as part of the assignment exercise)
-
Requirements for
SubBreeds.js
- Title should be "Sub-breeds"
- Subtitle should be the given breed
- Show a list of sub-breeds for the given breed
- Show an image of the first sub-breed in the list, with that sub-breed as a title for the image
- Dog Breed API: https://dog.ceo/dog-api/
- Atomic Design: http://bradfrost.com/blog/post/atomic-web-design/
- Component Folder Pattern: https://medium.com/styled-components/component-folder-pattern-ee42df37ec68
- Modified Atomic Design: https://medium.com/@yejodido/atomic-components-managing-dynamic-react-components-using-atomic-design-part-1-5f07451f261f
1-projects/Basic-JavaScript-master/
Table of Contents generated with DocToc
- ES6
- Const vs Let vs Var
- Lambda/Arrow functions
- Object Destructuring
- This project should be very familiar to you. You have already suffered through the logic behind a lot of these expressions/functions.
- We're excited to give you something you've already worked on, but to now just convert the code into ES6 syntax.
- Learning to program is all about repetition. So teaching you a new concept with material that you've already learned will help you solidify the material and also teach you new concepts along the way.
- Project files 1 - 3 are all that need to be completed for this assignment. And Project-4 is Extra Credit.
- Please have fun!
- Fork and clone this repo.
cd
into this project and Run the commandnpm i
to install needed node packages.- Run the command
npm test
to run the tests. - Work through the files and make the tests pass.
- Submit a pull request when you are finished and we will review your code.
1-projects/Client-Auth-Solution-master/
Table of Contents generated with DocToc
redux-thunk
cors
- Redux Thunk
- localStorage
- axios's config object
- http headers
Clone down this project. Run npm i
.
Start your MongoDB server by running mongod
from the command line.
Start the server (on the solution branch) of the LS-Auth repository.
Complete the SignUp component. When the user fills out the form you should send and
axios POST request to the server to save the user to the database. If successful then you
should save the provided JWT to localStorage and then redirect the user to /users
.
User the existing code as a reference.
You will also need to make sure that your server is using the cors
middleware.
Instructions for adding cors:
npm i --save cors
const cors = require('cors');
app.use(cors());
1-projects/Components-BEM-Solution-master/
Table of Contents generated with DocToc
Topics:
- Naming Conventions
- BEM
- Constructors with ES6 class syntax
You will be turning the wireframes provided in the markups directory into a page.
Using BEM, create the page with three components: Section
, Box
, and Dropdown
.
Using ES6 class constructors, complete the Dropdown
component functionality.
Here is some Lorem Ipsum text:
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce risus nibh, gravida nec felis quis, facilisis facilisis lectus. Nulla ac orci pretium, condimentum orci quis, accumsan nisi. Aliquam erat volutpat. Curabitur cursus mattis libero, at viverra risus hendrerit quis. Fusce imperdiet tristique tortor non tincidunt. Mauris accumsan urna nec augue feugiat porta. Proin vitae magna in ex malesuada laoreet eget a nulla. Aliquam tristique et elit at consequat. In hac habitasse platea dictumst.
BEM: http://getbem.com/naming/
Constructors (and factory function): https://medium.com/javascript-scene/javascript-factory-functions-vs-constructor-functions-vs-classes-2f22ceddf33e
1-projects/Components-Constructors-Solution-master/
Table of Contents generated with DocToc
Topics:
- Naming Conventions
- BEM
- Constructors with ES6 class syntax
You will be building on your prior work from Components-BEM by adding a Tabs
component.
The HTML and CSS for the Tabs component and instance are provided so that you may add your prior work around it. If you have not finished Components-BEM, ask you TA for the solution.
You may need to adjust some of the naming for the usuage of Box
in the HTML provided if it's different in your implementation.
The Tabs
component should be a grouping of links and associated items. Only one item is shown at a time, and each item is shown when its corresponding link is clicked. You should default to the first link and item upon page load.
You will also be doing a more complex query with querySelector
and Data Attributes. It's a great challenge to try to work out on your own. If it's holding you back too much, you may ask your TA for the solution to that query.
Data Attributes: https://developer.mozilla.org/en-US/docs/Learn/HTML/Howto/Use_data_attributes
BEM: http://getbem.com/naming/
Constructors (and factory function): https://medium.com/javascript-scene/javascript-factory-functions-vs-constructor-functions-vs-classes-2f22ceddf33e
1-projects/Data-Structures-master/
Table of Contents generated with DocToc
Answer the following questions for each of the data structures you implemented as part of this project.
-
What is the runtime complexity of
push
using a list? -
What is the runtime complexity of
push
using a linked list? -
What is the runtime complexity of
pop
using a list? -
What is the runtime complexity of
pop
using a linked list? -
What is the runtime complexity of
len
using a list? -
What is the runtime complexity of
len
using a linked list?
-
What is the runtime complexity of
enqueue
using a list? -
What is the runtime complexity of
enqueue
using a linked list? -
What is the runtime complexity of
dequeue
using a list? -
What is the runtime complexity of
dequeue
using a linked list? -
What is the runtime complexity of
len
using a list? -
What is the runtime complexity of
len
using a linked list?
-
What is the runtime complexity of
ListNode.insert_after
? -
What is the runtime complexity of
ListNode.insert_before
? -
What is the runtime complexity of
ListNode.delete
? -
What is the runtime complexity of
DoublyLinkedList.add_to_head
? -
What is the runtime complexity of
DoublyLinkedList.remove_from_head
? -
What is the runtime complexity of
DoublyLinkedList.add_to_tail
? -
What is the runtime complexity of
DoublyLinkedList.remove_from_tail
? -
What is the runtime complexity of
DoublyLinkedList.move_to_front
? -
What is the runtime complexity of
DoublyLinkedList.move_to_end
? -
What is the runtime complexity of
DoublyLinkedList.delete
?a. Compare the runtime of the doubly linked list's
delete
method with the worst-case runtime of the JSArray.splice
method. Which method generally performs better?
-
What is the runtime complexity of
insert
? -
What is the runtime complexity of
contains
? -
What is the runtime complexity of
get_max
? -
What is the runtime complexity of
for_each
?
-
What is the runtime complexity of
_bubble_up
? -
What is the runtime complexity of
_sift_down
? -
What is the runtime complexity of
insert
? -
What is the runtime complexity of
delete
? -
What is the runtime complexity of
get_max
?
Table of Contents generated with DocToc
- Data Structures FAQ
- Contents
- General
- My imports aren't working, help!
- What are real-world use-cases for a Queue data structure?
- What are real-world use-cases for a Stack data structure?
- What are real-world use-cases for a Linked List data structure?
- How are Linked-Lists different than an Array?
- I've always been able to add as much as I want to an Array and take things out from the beginning, end, or anywhere else. It's never been a problem before, why are we bothering with all of this?
- What are real-world use-cases for a LRU Cache?
- What is the dictionary being used for in the LRU Cache?
- What are real-world use-cases for a Binary Search Tree data structure?
- How is the root element of a Binary Search Tree decided?
- What is the difference between Breadth First and Depth First?
- What is the difference between a Search and a Traversal?
- General
- Contents
Python can be tricky with how imports work and can vary from environment to environment. If you are having trouble, the easiest solution is to copy the file you want to import into the same folder as the file you want to import it into and use from file import class
.
This is not a best practice for a real application, but it is acceptable for this exercise. Just remember that this may mean if you want to change or update your code, you will have to do it in multiple places.
Queues are used anywhere in which you want to work with data First in First Out
(FIFO). Server requests, without any prioritization, are handled this way. We'll also use it to conduct a breadth first traversal and breadth first search.
Stacks are used when you want to work with data Last in First Out
(LIFO or FILO). They're used in processor architecture, undo logic, and depth first searches and traversals.
Linked Lists can be used to create queues
and stacks
. They're also a key part of resolving collisions in hash tables, which we'll learn more about in a few weeks.
Both linked lists and arrays are linear data structures. An array is the most space efficient type of storage possible and has great time complexity for most operations. Logically, the array is linear in structure, and it is stored in a linear segment of memory. It is accessed by starting at the memory address of the pointer and counting forward the number of bits resulting from the index
times the size of the data type. One weakness is the time complexity of operations that take data out of anywhere but the end and another is changing the size of the array.
A linked list is not as efficient for storage because each element requires a pointer to the next, and in a doubly-linked list, previous element. It is also more difficult to access the elements. Because there's no index, you must loop through the list to search for the item you want, which is O(n). However, a linked list does not require a contiguous block of memory. It has 0(1) to remove or add items anywhere in the list.
Generally speaking, it's usually best to use an array unless you expect to frequently add and remove items from anywhere other than the end. In that case, it's better to use a linked list.
I've always been able to add as much as I want to an Array and take things out from the beginning, end, or anywhere else. It's never been a problem before, why are we bothering with all of this?
We're looking under the hood! High level languages like Python abstract away most of the inner workings of everything we do. Most of the time this is a good thing and most of the time it doesn't matter. However, we're professional engineers and sometimes we need to solve problems where the details can have a major impact on success or failure. Think about your car. Do you know exactly how much weight you can put in it? Probably not, nor do you need to. But if you find yourself needing to put a load of bags of concrete in the trunk it suddenly becomes very important. As an engineer, you'll be expected to understand when the details do and do not matter.
An LRU cache is an efficient type of caching system that keeps recently used items and when the cache becomes full, pushes out the least recently used item in the cache. It can be used any time a subset of data is used frequently that needs to be pulled from a source with a long lookup time. For example, cacheing the most frequently accessed items from a database on a remote server.
We can't access items in a linked list directly because linked lists are not indexed. To see if an item is already in the cache, we'd need to loop through the cache at O(n). By also adding a dictionary to organize the nodes that are already present in memory, we index the linked list for a very small overhead cost.
A BST in the way that is being implemented for this Sprint is a bit too simple to see any real-world use-cases. There are many (more complex) variants of BSTs that do see production use. One very notable variant is the B-tree, which is a self-balancing ordered variant of the BST. B-trees play a critical role in database and file system indexing. Other notable variants include the AVL tree, which is a self-balancing BST and the prefix tree, which is specialized for handling text.
The first element added to a BST is the root of the tree. However, doing it this way means that it's a very simple matter to end up with a lopsided BST. If we simply insert a monotonically ascending or descending sequence of values, then the tree would essentially flatten down to a linked list, and we'd lose all the benefits that a BST is supposed to confer. Self-balancing variants of the BST exist in order to alleviate this exact problem.
In depth first, we pick one path at each branch and keep going forward until we hit a dead end, then backtrack and take the first branch we find. In breadth first, we go by layers, one row deeper each time. This means that we jump around a bit.
A search and a traversal are processed exactly the same. The difference is that we stop a search when we find what we were looking for, or when all nodes have been visited without finding it. In a traversal, we always keep going until we've visited every node.
1-projects/Data-Structures-master/heap/
Table of Contents generated with DocToc
- Should have the methods
insert
,delete
,get_max
,_bubble_up
, and_sift_down
.insert
adds the input value into the heap; this method should ensure that the inserted value is in the correct spot in the heapdelete
removes and returns the 'topmost' value from the heap; this method needs to ensure that the heap property is maintained after the topmost element has been removed.get_max
returns the maximum value in the heap in constant time.get_size
returns the number of elements stored in the heap._bubble_up
moves the element at the specified index "up" the heap by swapping it with its parent if the parent's value is less than the value at the specified index._sift_down
grabs the indices of this element's children and determines which child has a larger value. If the larger child's value is larger than the parent's value, the child element is swapped with the parent.
A max heap is pretty useful, but what's even more useful is to have our heap be generic such that the user can define their own priority function and pass it to the heap to use.
Augment your heap implementation so that it exhibits this behavior. If no comparator function is passed in to the heap constructor, it should default to being a max heap. Also change the name of the get_max
function to get_priority
.
You can test your implementation against the tests in test_generic_heap.py
. The test expects your augmented heap implementation lives in a file called generic_heap.py
. Feel free to change the import statement to work with your file structure or copy/paste your implementation into a file with the expected name.
1-projects/Data-Structures-master/
Table of Contents generated with DocToc
Topics:
- Singly Linked Lists
- Queues and Stacks
- Doubly Linked Lists
- Binary Search Trees
- Related Code Challenge Problems
Stretch Goals:
- LRU Cache
- Heaps
- AVL Trees
- Module 1: Implement the Stack and Queue classes using built-in Python lists and the Node and LinkedList classes you created during the Module 1 Guided Project.
- Module 2: Implement the Doubly Linked List class
- Module 3: Implement the Binary Search Tree class
- Module 4: Implement traversal methods on Binary Search Trees
NOTE: The quickest and easiest way to reliably import a file in Python is to just copy and paste the file you want to import into the same directory as the file that wants to import. This obviously isn't considered best practice, but it is the most reliable way to do it across all platforms. If the import isn't working, feel free to try this method.
- Should have the methods:
push
,pop
, andlen
.push
adds an item to the top of the stack.pop
removes and returns the element at the top of the stacklen
returns the number of elements in the stack.
- Has the methods:
enqueue
,dequeue
, andlen
.enqueue
adds an element to the back of the queue.dequeue
removes and returns the element at the front of the queue.len
returns the number of elements in the queue.
- The
ListNode
class, which represents a single node in the doubly-linked list, has already been implemented for you. Inspect this code and try to understand what it is doing to the best of your ability. - The
DoublyLinkedList
class itself should have the methods:add_to_head
,add_to_tail
,remove_from_head
,remove_from_tail
,move_to_front
,move_to_end
,delete
, andget_max
.add_to_head
replaces the head of the list with a new value that is passed in.add_to_tail
replaces the tail of the list with a new value that is passed in.remove_from_head
removes the head node and returns the value stored in it.remove_from_tail
removes the tail node and returns the value stored in it.move_to_front
takes a reference to a node in the list and moves it to the front of the list, shifting all other list nodes down.move_to_end
takes a reference to a node in the list and moves it to the end of the list, shifting all other list nodes up.delete
takes a reference to a node in the list and removes it from the list. The deleted node'sprevious
andnext
pointers should point to each afterwards.get_max
returns the maximum value in the list.
- The
head
property is a reference to the first node and thetail
property is a reference to the last node.
- Should have the methods
insert
,contains
,get_max
.insert
adds the input value to the binary search tree, adhering to the rules of the ordering of elements in a binary search tree.contains
searches the binary search tree for the input value, returning a boolean indicating whether the value exists in the tree or not.get_max
returns the maximum value in the binary search tree.for_each
performs a traversal of every node in the tree, executing the passed-in callback function on each tree node value. There is a myriad of ways to perform tree traversal; in this case any of them should work.
Once you've gotten the tests passing, it's time to analyze the runtime complexity of your get
and set
operations. There's a way to get both operations down to sub-linear time. In fact, we can get them each down to constant time by picking the right data structures to use.
Here are you some things to think about with regards to optimizing your implementation: If you opted to use a dictionary to work with key-value pairs, we know that dictionaries give us constant access time, which is great. It's cheap and efficient to fetch pairs. A problem arises though from the fact that dictionaries don't have any way of remembering the order in which key-value pairs are added. But we definitely need something to remember the order in which pairs are added. Can you think of some ways to get around this constraint?
An LRU (Least Recently Used) cache is an in-memory storage structure that adheres to the Least Recently Used caching strategy.
In essence, you can think of an LRU cache as a data structure that keeps track of the order in which elements (which take the form of key-value pairs) it holds are added and updated. The cache also has a max number of entries it can hold. This is important because once the cache is holding the max number of entries, if a new entry is to be inserted, another pre-existing entry needs to be evicted from the cache. Because the cache is using a least-recently used strategy, the oldest entry (the one that was added/updated the longest time ago) is removed to make space for the new entry.
So what operations will we need on our cache? We'll certainly need some sort of set
operation to add key-value pairs to the cache. Newly-set pairs will get moved up the priority order such that every other pair in the cache is now one spot lower in the priority order that the cache maintains. The lowest-priority pair will get removed from the cache if the cache is already at its maximal capacity. Additionally, in the case that the key already exists in the cache, we simply want to overwrite the old value associated with the key with the newly-specified value.
We'll also need a get
operation that fetches a value given a key. When a key-value pair is fetched from the cache, we'll go through the same priority-increase dance that also happens when a new pair is added to the cache.
Note that the only way for entries to be removed from the cache is when one needs to be evicted to make room for a new one. Thus, there is no explicit remove
method.
Given the above spec, try to get a working implementation that passes the tests. What data structure(s) might be good candidates with which to build our cache on top of? Hint: Since our cache is going to be storing key-value pairs, we might want to use a structure that is adept at handling those.
An AVL tree (Georgy Adelson-Velsky and Landis' tree, named after the inventors) is a self-balancing binary search tree. In an AVL tree, the heights of the two child subtrees of any node differ by at most one; if at any time they differ by more than one, rebalancing is done to restore this property.
We define balance factor for each node as :
balanceFactor = height(left subtree) - height(right subtree)
The balance factor of any node of an AVL tree is in the integer range [-1,+1]. If after any modification in the tree, the balance factor becomes less than β1 or greater than +1, the subtree rooted at this node is unbalanced, and a rotation is needed.
Implement an AVL Tree class that exhibits the aforementioned behavior. The tree's insert
method should perform the same logic as what was implemented for the binary search tree, with the caveat that upon inserting a new element into the tree, it will then check to see if the tree needs to be rebalanced.
How does the time complexity of the AVL Tree's insertion method differ from the binary search tree's?
1-projects/DOM-JavaScript-mini-Solution-master/
1-projects/HTML-CSS-mini-Solution-master/
Table of Contents generated with DocToc
Topics:
- Box Model
- Flex Box
- BEM Naming Conventions
- Extra Credit: Media Queries
You will be turning the provided wireframe into a page. For your first implementation, use only box model rules. Half way through the alotted time, refactor what you have to use flexbox. Make your second solution on a second branch.
You're provided with an index.html file and a styles.css file to begin with, but you're welcome to restructure as you see fit. The mockups are also in the mockup folder for your reference. The full width version is the first you'll be implementing. The mid and small are for extra credit.
Box Model Study Guide

- Make your Box Model solution responsive to browser resizing using media queries. Media Query Min & Max Width Quick Reference


1-projects/Intro-Python-I-master/
Table of Contents generated with DocToc
- FAQ
- Contents
- Questions
- What are some things we can do to prepare for CS?
- Why is there such a debate between OOP and functional programming, and why should we care?
- In regard to the code challenge solution, why is the '+' operator being used to concatenate strings? I thought we were supposed to use the join() method in Python?
- How do you get out of the Python built-in
help
? - Are there any helpful VS Code extensions that are recommend for using with Python?
- I'm on Windows; what command do I use to run Python?
- What version of Python do I need?
- Do I need to use pipenv?
- How do I get out of the Python REPL?
- What does "REPL" mean?
- I'm on a Mac and when I run Python it says I'm on version 2.7. Why?
- Does Python use tabs or spaces?
- How do I convert an iterator into a list?
- Does Python have hoisting?
- Does scoping work similar to other languages?
- Can you return a reference to a function from another function? Or store it in a variable?
- Can you use boolean shortcut assignments?
- Can you do anonymous functions?
- Is a dict like a JavaScript object?
- What are all those method names with double underscores around them?
- How do I get a value from a dict?
- When do we run pipenv shell?
- How do I get out of the pipenv shell?
- How do I install additional packages from pipenv?
- Is it possible to use system-wide packages from inside the virtual environment?
- Where are good Python docs?
- Which linter?
- Can you dynamically add new methods/properties to class through other functions? Or must all properties/methods be declared at once?
- Following this flow: 1) class Dog is created with attributes size and weight. 2) New instance called Snoopy of class Dog is created. 3) Class Dog gets the method bark() dynamically added to it. Question: will Snoopy now have access to bark() method?
- If a subclass inherits from two superclasses with a method of the same name, which method will the subclass use?
- How to handle multiple inheritance and why/when to do it in the first place?
- Why use tuples instead of lists?
- What's the difference between repr and str?
- How does
sys.argv
work? - How do I concatenate two arrays into a single array?
- What are some ways to learn a new language?
- Why test code frequently?
- Why isn't official documentation more helpful than Stack Overflow?
- During an interview, what do I do if I can't remember the exact syntax?
- What are some things we can do to prepare for CS?
- What are some ways to learn a new language?
- Why test code frequently?
- Why isn't official documentation more helpful than Stack Overflow?
- During an interview, what do I do if I can't remember the exact syntax?
- In regard to the code challenge solution, why is the '+' operator being used to concatenate strings? I thought we were supposed to use the join() method in Python?
- How do you get out of the Python built-in
help
? - Are there any helpful VS Code extensions that are recommend for using with Python?
- I'm on Windows; what command do I use to run Python?
- What version of Python do I need?
- How do I get out of the Python REPL?
- What does "REPL" mean?
- I'm on a Mac and when I run Python it says I'm on version 2.7. Why?
- Does Python use tabs or spaces?
- Can you use boolean shortcut assignments?
- Can you do anonymous functions?
- What are all those method names with double underscores around them?
- Where are good Python docs?
- Which linter?
- What's the difference between repr and str?
- How does
sys.argv
work?
- Do I need to use pipenv?
- When do we run pipenv shell?
- How do I get out of the pipenv shell?
- How do I install additional packages from pipenv?
- Is it possible to use system-wide packages from inside the virtual environment?
- Why is there such a debate between OOP and functional programming, and why should we care?
- Following this flow: 1) class Dog is created with attributes size and weight. 2) New instance called Snoopy of class Dog is created. 3) Class Dog gets the method bark() dynamically added to it. Question: will Snoopy now have access to bark() method?
- Can you dynamically add new methods/properties to class through other functions? Or must all properties/methods be declared at once?
- If a subclass inherits from two superclasses with a method of the same name, which method will the subclass use?
- How to handle multiple inheritance and why/when to do it in the first place?
- Does Python have hoisting?
- Does scoping work similar to other languages?
- Can you return a reference to a function from another function? Or store it in a variable?
- Can you do anonymous functions?
- How do I convert an iterator into a list?
- Is a dict like a JavaScript object?
- How do I get a value from a dict?
- Why use tuples instead of lists?
- How do I concatenate two arrays into a single array?
- CS Wiki
- Polya's Problem Solving Techniques
- Solving Programming Problems
- CS Reading List
- How to Google effectively
- How to read specs and code
- Command line primer
- Coding style guidelines
There are a lot of programming paradigms and they all have their strengths and weaknesses when it comes to solving different types of problems.
People can be quite opinionated about their favorites, but it's important to remember that no one language or paradigm is the right tool for all jobs. And, additionally, that virtually all problems can be solved in any of the declarative or imperative paradigms. (Some might produce cleaner, more elegant code for a particular problem.)
Paradigms are the hardest thing to learn because you often have to take all the knowledge you have about solving a problem in another paradigm and throw it out the window. You have to learn new patterns and techniques to be effective.
But we encourage this kind of learning because most popular languages are to some degree multi-paradigm, and the more techniques you know from more paradigms, the more effective you are in that multi-paradigm langage.
In regard to the code challenge solution, why is the '+' operator being used to concatenate strings? I thought we were supposed to use the join() method in Python?
Using join()
to join large numbers of strings is definitely faster in Python
than using the +
operator to do it. The reason is that every time you join()
or use the +
operator, a new string is created. So if you only have to
join()
once, versus using +
hundreds of times, you'll run faster.
That said, if you want to use the join()
approach, you'll have to have all
your strings in a list, which uses more memory than just having the two or three
that you need at a time to use +
. So there's a tradeoff.
Another tradeoff might be in readability. It might be easier to read the +
version. That's worth something.
Finally, if +
is fast enough for this case, it might not be worth the time to
bother with making a list of strings to join()
.
Hit q
for "quit".
It's a common command in Unix "pagers" (programs that show documents a page at a time).
If you're running in PowerShell or cmd, use:
py
If in bash, use python
or python3
.
You should have version 3.7 or higher. Test with:
python --version
You should. Good Python devs know how.
Hit CTRL-D
. This is the way End-Of-File is signified in Unix-likes.
Read, Evaluate, Print Loop.
It reads your input, evaluates it, and prints the result. And loops.
Macs come with version 2.7 by default. You'll need to install version 3.
And preferable use pipenv
after that.
PEP 8 says four spaces.
Cast it:
list(range(5))
produces:
[0, 1, 2, 3, 4]
No.
Generally, and also not really. Variables are either global or function-local.
Since there are no declarations, there's no block-level scope.
It is similar to var
in JavaScript.
Yes. Functions are first-class citizens.
Yes, you can. This is common in Perl and JavaScript, but it's not particularly idiomatic in Python.
x = SomethingFalsey or 5
You can use lambda
for simple functions:
adder = lambda x, y: x + y
adder(4, 5) # 9
do_some_math(4, 5, lambda x, y: y - x)
Sort of.
The syntax is different, though. In Python you must use []
notation to access elements. And you must use "
around the key names.
Those are function you typically don't need to use, but can override or call if you wish.
Most commonly used are:
__init__()
is the constructor for objects__str__()
returns a string representation of the object__repr__()
returns a string representation of the object, for debugging
d = {
"a": 2,
"b": 3
}
print(d["a"])
You don't use dot notation.
pipenv shell
puts you into your work environment. When you're ready to work, or run the code, or install new dependencies, you should be in your pipenv shell.
Type exit
.
pipenv install packagename
This is not recommended.
- Official documentation tutorial and library reference.
The official docs might be hard to read at first, but you'll get used to them quickly
Pylint or Flake8. The latter seems to be a bit more popular.
Can you dynamically add new methods/properties to class through other functions? Or must all properties/methods be declared at once?
You can add them dynamically at runtime, but you have to add them to the class itself:
class Foo():
pass
f = Foo()
Foo.x = 12 # Dynamically add property to class
f.x == 12 # True!
def a_method(self):
print("Hi")
Foo.hi = a_method # Dynamically add method to class
f.hi() # Prints "Hi"
This is not a common thing to see in Python, however.
Following this flow: 1) class Dog is created with attributes size and weight. 2) New instance called Snoopy of class Dog is created. 3) Class Dog gets the method bark() dynamically added to it. Question: will Snoopy now have access to bark() method?
Yes.
If a subclass inherits from two superclasses with a method of the same name, which method will the subclass use?
The answer to this is twofold:
-
Lots of devs and shops frown on multiple inheritance, so maybe just don't do it. (Discussion)
-
As for the order in which methods of the same name are resolved, check out the MRO Algorithm which is what Python uses.
class Base1:
pass
class Base2:
pass
class Derived(Base1, Base2): # Multiple inheritance
pass
Sometimes multiple inheritance can lead to elegant solutions when a subclass needs attributes from multiple, otherwise-unrelated parent classes.
However, a lot of people find it's not worth the trouble) and opt for other solutions, like composition.
- Tuples are immutable. There's a school of thought that says bugs can be reduced if you make as many things immutable as you can.
- Tuples are faster than lists to access.
- Some tuples (containing primitive types), can be used as
dict
keys.
Generally speaking, __repr__
is the string a dev would want to see if they
dumped an object to the screen. __str__
is the string a user would want to see
if the object were print()
ed.
The output of __repr__
should be valid Python code that can reproduce the
object.
class Goat:
def __init__(self, leg_count):
self.leg_count = leg_count
def __repr__(self):
return f'Goat(leg_count={self.leg_count})'
def __str__(self):
return f'a goat with {self.leg_count} legs'
In action:
>>> g = Goat(4)
>>> str(g)
'a goat with 4 legs'
>>> g
Goat(leg_count=4)
>>> Goat(leg_count=4) # output of __repr__ makes a clone of that object!
Goat(leg_count=4)
It's a list that holds command line arguments. This is a way for a user to run your program and specify different behavior from the command line.
Here's a small program that prints the command line arguments:
import sys
for i in range(len(sys.argv)):
print(f'Argument #{i} is: {sys.argv[i]}')
and here's some output, assuming you named the script foo.py
:
$ python foo.py
Argument #0 is: foo.py
$ python foo.py antelope buffalo
Argument #0 is: foo.py
Argument #1 is: antelope
Argument #2 is: buffalo
Note that the 0th element in the list is the name of the program.
Here's another program that prints up to whatever number the user specifies:
import sys
for i in range(int(sys.argv[1])):
print(i+1)
Example runs:
$ python foo.py 2
1
2
$ python foo.py 4
1
2
3
4
Use extend()
.
a = [1, 2, 3]
b = [4, 5, 6]
a.extend(b)
print(a) # [ 1, 2, 3, 4, 5, 6 ]
- Figure out how variables and functions work.
- Build small toy programs to test individual features.
- Build a larger project that exercises many features.
- Don't get frustrated! Treat the problem like a curiosity, a thing to be studied.
- Do small tutorials or code-alongs.
- Find docs you like.
- Learn the differences between this language and one you know.
- Learn this language's way of doing the things you know.
Things to look for in the new language:
- Collections (arrays, vectors, dictionaries)
- Data types
- Iterators
- Flow control (if, while, loops, etc)
- Functions
- etc.
It's often better to make progress in small increments than to write a bunch of stuff and test it in one go.
Also, it's easier to stay motivated if you spend 10 minutes getting a first version going, even if it's missing 99% of its features, and then starting to iterate on that.
Often official documentation is more geared toward being a concise reference. Stack Overflow is more of an example-based learning environment.
Sometimes you need to know the specific details. In those cases, you can dig into the spec, with all it's lawyerly language, and try to decipher what it is you have to do.
Other times, you just need a getting-started example, and Stack Overflow is great for that.
Both types of documentation have their purpose.
Just say so.
"I can't remember how to add an element to the end of the list in Python... is
it push()
? In any case, we'll call the function here that does that."
(Turns out it's append()
in Python, but being honest and describing what it is
your're trying to do will get you 99% of the way there in an interview.)
Table of Contents generated with DocToc
Note: This project spans two modules (modules 1 and 2). You should roughly try to finish the first half of the problems during module 1 and the second half of the problems during module 2.
It's time to learn a new language! Python!
Python is a popular, easy-to-use programming language that has significant traction in the field.
Remember the goal is learning to learn, so keep track of what works for you and what doesn't as you go through the process of exploring Python.
-
Try to relate things you already know in another language (e.g. what an array is) to the corresponding things in Python (e.g. a list) and how to use them.
-
Write a bunch of "toy programs" that demonstrate different key features of the language
-
Explore the standard library that's available for the language. Skim it briefly for now--the idea isn't to memorize everything but to file away generally what functionality is available.
-
Write a more substantial toy program that uses a variety of the features.
Again, keep track of what works for you. Try different things to see what works best for learning new languages.
- Installing Python 3
- JavaScript<->Python cheatsheet
- How to read Specs and Code
- Python 3 standard library
Make sure you have Python 3 installed. You can check this by running python3 --version
in your terminal and ensuring that it returns a version string that is at least 3.6.5.
- Learn the basic syntax and structure of Python
- Implement a number of tiny Python programs that demonstrate Python syntax and language concepts.
Note: This project spans two modules (modules 1 and 2). You should roughly try to finish the first half of the problems during module 1 and the second half of the problems during module 2.
Each directory inside the src/
directory presents exercises revolving around a
particular concept in Python. Not all of these concepts are unique to Python (in
fact, most probably aren't). This means that you can leverage knowledge you've
obtained via exposure to other programming languages towards learning Python.
The suggested order for going through each of the directories is:
hello
-- Hello worldbignum
-- Print some big numbersdatatypes
-- Experiment with type conversionmodules
-- Learn to import from modulesprinting
-- Formatted print outputlists
-- Python's version of arraystuples
-- Immutable lists typically for heterogenous dataslices
-- Accessing parts of listscomprehensions
-- List comprehensionsdictionaries
-- Dictionariesfunctions
-- Functionsargs
-- Arguments and Keyword Argumentsscopes
-- Global, Local, and Non-Local scopefile_io
-- Read and write from filescal
-- Experiment with module imports and implement a text-based calendarclasses
-- Classes and objects
-
One of Python's main philosophical tenets is its emphasis on readability. To that end, the Python community has standardized around a style guide called PEP 8. Take a look at it and then go over the code you've written and make sure it adheres to what PEP 8 recommends. Alternatively, PEP 8 linters exist for most code editors (you can find instructions on installing a Python linter for VSCode here). Try installing one for your editor!
-
Rewrite code challenges you've solved before or projects you've implemented before in a different language in Python. Start getting in as much practice with the language as possible!
-
Write a program to determine if a number, given on the command line, is prime.
- How can you optimize this program?
- Implement The Sieve of Eratosthenes, one of the oldest algorithms known (ca. 200 BC).
1-projects/Intro-Python-II-master/
Table of Contents generated with DocToc
Refer to the FAQ in Intro-Python-I.
Remember that multiple variables can refer to the same object.
In the diagram below, there are only 2 Room
objects, total. (There are more in the game, obviously, but in this diagram, there are 2.)
There are 5 variables. 3 of them point to the one Room object that is the foyer:
room['foyer']
room['outside'].n_to
player.location
The remaining 2 point to the one Room object that is the outside:
room['outside']
room['foyer'].s_to
room['outside'] -> Room("Outside Cave Entrance")
^
|
room['foyer'].s_to
room['foyer'] -> Room("Foyer") <- player.location
^
|
room['outside'].n_to
If you want to move the player (who is in the foyer in the diagram) to another room, you just need to reassign that to any variable that points to that other room.
So if the player is in the foyer and types s
to go south, we could set:
player.location = room['foyer'].s_to # we were in the foyer, then went south
and after that, the variable references would look like this, with player location pointing to the outside object:
player.location
|
v
room['outside'] -> Room("Outside Cave Entrance")
^
|
room['foyer'].s_to
room['foyer'] -> Room("Foyer")
^
|
room['outside'].n_to
Assigning doesn't copy the object. It just makes another reference to the same object.
Table of Contents generated with DocToc
Up to this point, you've gotten your feet wet by working on a bunch of small Python programs. In this module, we're going to continue to solidify your Python chops by implementing a full-featured project according to a provided specification.
-
Put your Python basics into practice by implementing a text adventure game
-
Practice writing code that conforms to a specification
- Create the input command parser in
adv.py
which allows the program to receive player input and commands to move to rooms in the four cardinal directions. - Fill out Player and Room classes in
player.py
androom.py
- Make rooms able to hold multiple items
- Make the player able to carry multiple items
- Add items to the game that the user can carry around
- Add
get [ITEM_NAME]
anddrop [ITEM_NAME]
commands to the parser
The /src
directory contains the files adv.py
, which is where the main logic for the game should live, room.py
, which will contain the definition of the Room class, and player.py
, which will contain the definition of the Player class.
-
Add a REPL parser to
adv.py
that accepts directional commands to move the player- After each move, the REPL should print the name and description of the player's current room
- Valid commands are
n
,s
,e
andw
which move the player North, South, East or West - The parser should print an error if the player tries to move where there is no room.
-
Put the Room class in
room.py
based on what you see inadv.py
.-
The room should have
name
anddescription
attributes. -
The room should also have
n_to
,s_to
,e_to
, andw_to
attributes which point to the room in that respective direction.
-
-
Put the Player class in
player.py
.- Players should have a
name
andcurrent_room
attributes
- Players should have a
-
Create a file called
item.py
and add anItem
class in there.-
The item should have
name
anddescription
attributes.- Hint: the name should be one word for ease in parsing later.
-
This will be the base class for specialized item types to be declared later.
-
-
Add the ability to add items to rooms.
-
The
Room
class should be extended with alist
that holds theItem
s that are currently in that room. -
Add functionality to the main loop that prints out all the items that are visible to the player when they are in that room.
-
-
Add capability to add
Item
s to the player's inventory. The inventory can also be alist
of items "in" the player, similar to howItem
s can be in aRoom
. -
Add a new type of sentence the parser can understand: two words.
-
Until now, the parser could just understand one sentence form:
verb
such as "n" or "q".
-
But now we want to add the form:
verb
object
such as "take coins" or "drop sword".
-
Split the entered command and see if it has 1 or 2 words in it to determine if it's the first or second form.
-
-
Implement support for the verb
get
followed by anItem
name. This will be used to pick upItem
s.-
If the user enters
get
ortake
followed by anItem
name, look at the contents of the currentRoom
to see if the item is there.-
If it is there, remove it from the
Room
contents, and add it to thePlayer
contents. -
If it's not there, print an error message telling the user so.
-
Add an
on_take
method toItem
.-
Call this method when the
Item
is picked up by the player. -
on_take
should print out "You have picked up [NAME]" when you pick up an item. -
The
Item
can use this to run additional code when it is picked up.
-
-
Add an
on_drop
method toItem
. Implement it similar toon_take
.
-
-
-
Implement support for the verb
drop
followed by anItem
name. This is the opposite ofget
/take
. -
Add the
i
andinventory
commands that both show a list of items currently carried by the player.
In arbitrary order:
-
Add more rooms
-
Add scoring
-
Subclass items into treasures
-
Add a subclass to
Item
calledLightSource
.-
During world creation, add a
lamp
LightSource
to a convenientRoom
. -
Override
on_drop
inLightSource
that tells the player "It's not wise to drop your source of light!" if the player drops it. (But still lets them drop it.) -
Add an attribute to
Room
calledis_light
that isTrue
if theRoom
is naturally illuminated, orFalse
if aLightSource
is required to see what is in the room. -
Modify the main loop to test if there is light in the
Room
(i.e. ifis_light
isTrue
or there is aLightSource
item in theRoom
's contents or if there is aLightSource
item in thePlayer
's contents). -
If there is light in the room, display name, description, and contents as normal.
-
If there isn't, print out "It's pitch black!" instead.
-
Hint:
isinstance
might help you figure out if there's aLightSource
among all the nearbyItem
s. -
Modify the
get
/take
code to print "Good luck finding that in the dark!" if the user tries to pick up anItem
in the dark.
-
-
Add methods to notify items when they are picked up or dropped
-
Add light and darkness to the game
-
Add more items to the game.
-
Add a way to win.
-
Add more to the parser.
-
Remember the last
Item
mentioned and substitute that if the user types "it" later, e.g.take sword drop it
-
Add
Item
s with adjectives, like "rusty sword" and "silver sword".-
Modify the parser to handle commands like "take rusty sword" as well as "take sword".
- If the user is in a room that contains both the rusty sword and silver sword, and they type "take sword", the parser should say, "I don't know which you mean: rusty sword or silver sword."
-
-
-
Modify the code that calls
on_take
to check the return value. Ifon_take
returnsFalse
, then don't continue picking up the object. (I.e. prevent the user from picking it up.)- This enables you to add logic to
on_take
to code things like "don't allow the user to pick up the dirt unless they're holding the shovel.
- This enables you to add logic to
-
Add monsters.
-
Add the
attack
verb that allows you to specify a monster to attack. -
Add an
on_attack
method to the monster class. -
Similar to the
on_take
return value modification, above, haveon_attack
prevent the attack from succeeding unless the user possesses asword
item. -
Come up with more stretch goals! The sky's the limit!
1-projects/Intro-to-C-master/
Table of Contents generated with DocToc
- Intro to C FAQ
- Contents
- Questions
runtests.sh: $'\r': command not found
orSyntax error: word unexpected (expecting "do")
runtests.sh: 3: 56059 Segmentation fault: 11 $VALGRIND
- Mac:
malformed object
error when runningmake tests
- Should I bother fixing compiler warnings?
- Can I accidentally destroy my computer running C code?
- Is a
struct
comparable to something in Python or JS? Is it like a class? - Can you have default parameters in the structs?
- Why does unsigned char type accept a number when it's clearly referring to a character?
- When I pass an array as an argument to a function, when do I use pointer notation and when do I use array notation ?
- Why do functions tend to return pointers to structs, and not just copies of the struct?
- Why do we subtract '0' from a char to convert it from ASCII to a numeric value?
- When do I need a pointer to a pointer?
- Do other languages use pointers?
- What's the difference between "
int *x
" and "int* x
"? - What does the "implicit declaration of function" warning mean?
- What's the difference between
puts()
,fprintf()
, andprintf()
? - Why does
025 == 21
? - What is the "true dev workflow" in C?
- Does C have garbage collection?
- Why is C code faster than other languages?
- What is a segmentation fault and how do I stop it?
- What happens if my program exits but I forgot to
free()
some memory I allocated? - What's the difference between a
float
and adouble
, or between anint
and along
? - Can you use
+
to concatenate two strings? - Are variables automatically initialized to zero when I declare them?
- What type should I use to hold numbers bigger than an
int
can hold? - What VS Code plugins are good for C development?
- What are some additional C resources?
- How do I get the debugger working?
- How do I print a pointer with
printf
? - Does C have closures?
- If I look at an uninitialized variable, will the garbage in it ever be leftover data from another process?
- How many levels of indirection can you have with pointers?
int******
? - What's the
incompatible integer to pointer conversion
error? - Are there any other ways besides
malloc()
to store things on the heap? - For string literals like
"Hello"
, are those stored on the stack or heap? - Is the C stack like the stack data structure?
- Is the C heap like a binary heap data structure?
- What are
stdin
,stdout
, andstderr
? - How do I know which header files to
#include
for any particular function? - When do I have to explicitly cast a type to another type?
- Is
realloc()
the same as callingmalloc()
, copying the data over, then callingfree()
on the original pointer? - What happens if I
free()
aNULL
pointer? - What are bits, bytes, kilobytes, megabytes, and all that?
- In C, can we assume an
int
is 32 bits? - What's the difference between
#include
with double quotes and#include
with angle brackets? - Should I declare a pointer to a thing, or just declare the thing?
- Is there a difference between
exit()
andreturn
? - Why does
strcmp()
return0
when strings match? Since0
means "false" in C, that seems backwards. - What is "undefined behavior" in C?
- When you free a pointer, does it get set to
NULL
automatically? - How do I write preprocessor macros with
#define
? - What is an
undefined symbol
linker error? - How do I make my own header files and what do I put in them?
- How do I make my own Makefile?
- Why are there so many
printf()
variants? How do I know which one to use? - Why is
main()
always at the bottom of the file? - Why does
main()
return0
? What does the return value mean? - Do we have to have a
main()
? Can there be more than one? - Can
main()
returnvoid
? What aboutmain()
with no parameters? - Do we need a semicolon at the end of every line?
- Can a pointer point to more than one thing? What about to arrays and
struct
s? - If variables are stored in memory, where are pointers stored?
runtests.sh: $'\r': command not found
orSyntax error: word unexpected (expecting "do")
runtests.sh: 56059 Segmentation fault: 11 $VALGRIND
- Mac:
malformed object
error when runningmake tests
- What does the "implicit declaration of function" warning mean?
- What is a segmentation fault and how do I stop it?
- What's the
incompatible integer to pointer conversion
error? - What is an
undefined symbol
linker error? - What is "undefined behavior" in C?
- Should I bother fixing compiler warnings?
- Can I accidentally destroy my computer running C code?
- Why do we subtract '0' from a char to convert it from ASCII to a numeric value?
- What's the difference between
puts()
,fprintf()
, andprintf()
? - Why does
025 == 21
? - What is the "true dev workflow" in C?
- Does C have garbage collection?
- Why is C code faster than other languages?
- Are variables automatically initialized to zero when I declare them?
- What VS Code plugins are good for C development?
- What are some additional C resources?
- How do I get the debugger working?
- Does C have closures?
- If I look at an uninitialized variable, will the garbage in it ever be leftover data from another process?
- What are
stdin
,stdout
, andstderr
? - How do I know which header files to
#include
for any particular function? - What are bits, bytes, kilobytes, megabytes, and all that?
- What's the difference between
#include
with double quotes and#include
with angle brackets? - Why does
main()
return0
? What does the return value mean? - Is there a difference between
exit()
andreturn
? - What is "undefined behavior" in C?
- How do I write preprocessor macros with
#define
? - How do I make my own header files and what do I put in them?
- How do I make my own Makefile?
- Why are there so many
printf()
variants? How do I know which one to use? - Why is
main()
always at the bottom of the file? - Do we have to have a
main()
? Can there be more than one? - Can
main()
returnvoid
? What aboutmain()
with no parameters? - Do we need a semicolon at the end of every line?
- Can you use
+
to concatenate two strings? - For string literals like
"Hello"
, are those stored on the stack or heap? - Why does
strcmp()
return0
when strings match? Since0
means "false" in C, that seems backwards.
- Is a
struct
comparable to something in Python or JS? Is it like a class? - Can you have default parameters in the structs?
- Why do functions tend to return pointers to structs, and not just copies of the struct?
- Why does unsigned char type accept a number when it's clearly referring to a character?
- What's the difference between a
float
and adouble
, or between anint
and along
? - What type should I use to hold numbers bigger than an
int
can hold? - When do I have to explicitly cast a type to another type?
- In C, can we assume an
int
is 32 bits?
- When I pass an array as an argument to a function, when do I use pointer notation and when do I use array notation ?
- Why do functions tend to return pointers to structs, and not just copies of the struct?
- When do I need a pointer to a pointer?
- Do other languages use pointers?
- What's the difference between "
int *x
" and "int* x
"? - How do I print a pointer with
printf
? - How many levels of indirection can you have with pointers?
int******
? - What's the
incompatible integer to pointer conversion
error? - Should I declare a pointer to a thing, or just declare the thing?
- When you free a pointer, does it get set to
NULL
automatically? - Can a pointer pointer to more than one thing? What about to arrays and
struct
s? - If variables are stored in memory, where are pointers stored?
- What happens if my program exits but I forgot to
free()
some memory I allocated? - Are there any other ways besides
malloc()
to store things on the heap? - Is the C stack like the stack data structure?
- Is the C heap like a binary heap data structure?
- Is
realloc()
the same as callingmalloc()
, copying the data over, then callingfree()
on the original pointer? - What happens if I
free()
aNULL
pointer? - When you free a pointer, does it get set to
NULL
automatically?
If you see this error:
Running unit tests:
: not foundtests.sh: 2: ./tests/runtests.sh:
./tests/runtests.sh: 4: ./tests/runtests.sh: Syntax error: word unexpected (expecting "do")
You have two options:
-
Open the file
tests/runtests.sh
in VS Code in whatever subproject folder you're working in, e.g.fizzbuzz
. Click on the lower right of the screen where it saysCRLF
. ChooseLF
. Save the file. Then the error should go away. -
You can do this from the command line with the
tr
command:
cd tests
cat runtests.sh | tr -d '\r' > runtests.tmp
mv runtests.tmp runtests.sh
The root of the problem is a setting in git that causes all newlines (LF) to
be converted to carriage-return/newline (CRLF). The script runtests.sh
is a
bash script that bash runs, and bash hates \r
and pukes everywhere.
To cause git to not do newline conversion for future clones, run the following:
git config --global core.autocrlf false
This means you got a segfault in your program. See What is a segmentation fault and how do I stop it?
This is caused by an older version of the ar
and ranlib
packages being installed.
Sometimes these conflict with the versions installed with xcode.
If running MacPorts:
sudo port selfupdate
sudo port upgrade cctools
If running Brew:
sudo brew update
sudo brew upgrade gcc
YES!
In C, a warning is the compiler saying, "I can build that, and I will, but it's probably going to do something really messed up that you don't want."
There are only a few warnings you can safely ignore.
If you're absolutely sure the "unused variable" warning is OK, then you could ignore it. Or, better, add a line of code that silences the warning:
void foo(int a)
{
(void)a; // Do nothing, but at least the compiler will be quiet
Nope! Not with a modern OS.
If you're running MS-DOS, then sure, you can do all kinds of things. I once accidentally blew away all my BIOS settings with a program I wrote and my computer wouldn't boot.
But Windows, Linux, macOS, BSD, or any other mainstream OS from this century all offer memory and resource protection that prevents you from changing memory you're not supposed to, or wiping out a disk you're not supposed to, etc.
The worst you'll see is a Segmentation fault
message which means your program
tried to do something bad and the OS killed it.
It's like a class, except with only data (fields, properties) attached to it. There are no methods (functions) associated with it.
If you really want to pretend that you have methods on a struct
, you can add
them as fields that are pointers to functions. The syntax is pretty obtuse,
and it's not a natural or idiomatic thing to do in C.
Example:
struct animal {
char *name;
// make_sound is a pointer to a function with no parameters that returns void
void (*make_sound)(void);
}
// Note how bleat() matches the signature for make_sound(), above
void bleat(void)
{
printf("Baaaahhhh!\n");
}
int main(void)
{
struct animal goat;
// C doesn't have the concept of a constructor, so we have to do it by hand:
goat.name = "goat";
goat.make_sound = bleat;
// Call the "method":
goat.make_sound(); // Baaaahhhh!
}
No. The best you can do is have a helper function set the defaults.
void foo_default(struct foo *f)
{
f->a = 10; // Set defaults
f->b = 20;
f->c = 30;
}
struct foo x;
foo_default(&x); // Set defaults
x.a = 99; // Override default
When you declare a struct
, you can also use an initializer to set the field
values:
struct foo x = { .a = 10, .b = 20, .c = 30 };
Deep down, computers just deal in numbers (1
s and 0
s). They don't know what
a character is. We humans have come up with a system wherein a number
represents a certain character. For example, we've agreed that A
is 65
.
(For information on what number represents what character, look up more detail on ASCII encoding, or its modern superset UTF-8.)
With that in mind, C really only deals in numbers. Even when you put a character
in single quotes, it's still just a number. The only difference is in how we
interpret that number. That is, is it a value, like 65, or is it a character,
like A
?
unsigned char c = 'A';
printf("%c\n", c); // Prints "A"
printf("%d\n", c); // Prints 65
unsigned char c = 'A';
int x = c + 10;
printf("%d", x); // Prints 75, since 'A' == 65
In C, whenever you have a character in single quotes like 'A'
, the compiler
treats it just like you'd put the number 65
there. (Or 66
for 'B'
, and so
on.)
The only difference between unsigned char
and unsigned int
is the number of
bytes that are used to represent the number. A char
is onGe byte, and an int
is typically 4 bytes (but not always).
You can think of these additional bytes as analogous to adding more digits to your numbers. The more digits you have, the more range you can store. Two decimal digits only gets you from 0 to 99, but 8 digits gets you from 0 to 99999999. Similarly, one byte only gets you from 0 to 255, but 4 bytes gets you from 0 to 4,294,967,295.
If you never needed numbers larger than 255, you could use unsigned char
for
all your variables! (But since modern computers are at least as fast with int
s
as they are with char
s, people just use int
s.)
When I pass an array as an argument to a function, when do I use pointer notation and when do I use array notation ?
It's a little-known FunFact that C doesn't actually pass entire arrays to functions. It only passes pointers to the first element in that array.
int a[2000];
// "a" is a pointer to the first element in the array.
// It's the same as &(a[0]).
foo(a);
So when you declare your function, you can do any of these:
void foo(int *a)
void foo(int a[])
void foo(int a[1])
void foo(int a[2000])
void foo(int a[999999999])
and it treats them all as if you'd used:
void foo(int *a)
There's a difference if you want to use multidimensional arrays. You must declare all the dimensions except the first one, which is optional. The compiler needs to know the other dimensions so it can do its array indexing computations correctly.
int foo(int x[][30]) // 30 wide
{
return x[2][4];
}
int main(void)
{
int a[10][30]; // 30 wide
foo(a);
This only applies for multidimensional arrays. For 1-dimensional arrays, the rule still applies; you still need to specify all dimensions except the first one... but since there is only one, you never need to specify it.
It's possible to do this:
struct foo my_func(void)
{
struct foo f;
f.x = 10;
return f; // Return a copy of f
}
as opposed to:
struct foo *my_func(void)
{
struct foo *p = malloc(sizeof(struct foo));
p->x = 10;
return p; // Return a copy of p
}
But in C, it's more idiomatic to return a copy of the pointer to the memory
allocated than it is to return a copy of the struct
itself.
Part of the reason for this is that it takes time to copy data. A struct
can
be very large depending on how many fields it has in it, but your average
pointer is only 8 bytes.
Since every time you return
a thing, a copy of that thing gets made, it is
faster to copy a pointer than it is to copy a struct
of any non-trivial size.
Finally, note that this variant always invokes undefined behavior and should never be used:
struct foo *my_func(void)
{
struct foo f;
f.x = 10;
return &f; // Return a copy of a pointer to f
}
The reason is because f
vaporizes as soon as the function returns (since it's
just a local variable), so any pointers to it are invalid.
The code typically looks like this:
char c = '2'; // ASCII '2'
int v = c - '0'; // Convert into numeric value 2
printf("%d\n", v); // prints decimal 2
Remember that in C, a char
is like a small int
, and when you have a
character in single quotes like '2'
, C replaces that with the
ASCII value of that character.
In the case of our example, the ASCII value of '2'
is 50
. And we want to
convert that to the numeric value 2
. So we clearly have to subtract 48
from
it, since 50 - 48 = 2
. But why the '0'
, then?
Here's part of the ASCII table, just the numbers:
Character | ASCII value |
---|---|
'0' |
48 |
'1' |
49 |
'2' |
50 |
'3' |
51 |
'4' |
52 |
'5' |
53 |
'6' |
54 |
'7' |
55 |
'8' |
56 |
'9' |
57 |
It's no coincidence it's done this way. Turns out that if you subtract 48
from
any ASCII character that is a digit, you'll end up with the numeric value of
that ASCII character.
Example: '7'
is value 55
(from the table), compute 55 - 48
and you get
7
.
And since '0'
is 48
, it's become idiomatic in C to convert ASCII digits to
values by subtracting '0'
from them.
There are a few reasons you might need one, but the most common is when you pass a pointer to a function, and the function needs to modify the pointer.
Let's take a step back and see when you just need to use a pointer.
void foo(int a)
{
a = 12;
}
int main(void)
{
int x = 30;
printf("%d\n", x); // prints 30
foo(x);
printf("%d\n", x); // prints 30 again--not 12! Why?
}
In the above example, foo()
wants to modify the value of x
back in main.
But, alas, it can only modify the value of a
. When you call a function, all
arguments get copied into their respective parameters. a
is merely a copy
of x
, so modifying a
has no effect on x
.
What if we want to modify x
from foo()
, though? This is where we have to use
a pointer.
void foo(int *a)
{
*a = 12; // Set the thing `a` points at to 12
}
int main(void)
{
int x = 30;
printf("%d\n", x); // prints 30
foo(&x);
printf("%d\n", x); // prints 12!
}
In this example, foo()
gets a copy of a pointer to x
. (Everything gets
copied into the parameters when you make a call, even pointers.)
Then it changes the thing the pointer points to to 12
. That pointer was
pointing to x
back in main, so it changes x
's value to 12
.
Great!
So what about pointers to pointers? It's the same idea. Let's do a broken example:
void alloc_ints(int *p, int count)
{
p = malloc(sizeof(int) * count); // Allocate space for ints
}
int main(void)
{
int *q = NULL;
alloc_ints(q, 10); // Alloc space for 10 ints
printf("%p\n", q); // Prints NULL still!!
q[2] = 10; // UNDEFINED BEHAVIOR, CRASH?
}
What happened?
When we call alloc_ints()
, a copy of q
is made in p
. We then assign into
p
with the malloc()
, but since p
is just a copy of q
, q
is unaffected.
It's just like our first version of foo()
, above.
Solution? We need to pass a pointer to q
to alloc_ints()
so that
alloc_ints()
can modify the value of q
.
But q
is already a pointer! It's an int *
! So when we take the address-of it
(AKA get a pointer to it), we'll end up with a pointer to a pointer, or an int **
!
void alloc_ints(int **p, int count)
{
// Allocate space for ints, store the result in the thing that
// `p` points to, namely `q`:
*p = malloc(sizeof(int) * count);
}
int main(void)
{
int *q = NULL;
alloc_ints(&q, 10); // Alloc space for 10 ints
printf("%p\n", q); // Prints some big number, good!
q[2] = 10; // works!
}
Success!
Most all of them do, but some are more explicit about it than others. In languages like Go, C, C++, and Rust, you have to use the proper operators when using pointers and references.
But languages like JavaScript and Python do a lot of that stuff behind your back. Take this Python example:
class Foo:
def __init__(self, x):
self.x = x
def bar(a):
a.x = 12 # Sets `f.x` to 12--why?
a = None # Does NOT destroy `f`--why not?
f = Foo(2)
print(f.x) # Prints 2
bar(f)
print(f.x) # Prints 12--why?
Let's look what happened there. We made a new object f
, and we passed that
object to function bar()
, which modified its x
property.
After enough time with Python, we learn that it passes objects by reference.
This is another way of saying it's using pointers behind your back. Behind the
scenes in Python, a
is a pointer to f
.
That's why when we modify a.x
, it actually modifies f.x
.
And it's also why when we set a
to None
, it doesn't change f
at all. a
is just a pointer to f
, not f
itself.
Let's look at the C version of that Python program. This works exactly the same way:
#include <stdio.h>
struct foo {
int x;
};
void bar(struct foo *a)
{
a->x = 12; // Sets f.x to 12--why?
a = NULL; // Does NOT destroy `f`--why not?
}
int main(void)
{
struct foo f = { 2 };
printf("%d\n", f.x); // Prints 2
bar(&f);
printf("%d\n", f.x); // Prints 12--why?
}
a
is a pointer to f
. So we when do a->x
, we're saying "set the x
property on the thing that a
points to".
And when we set a
to NULL
, it's just modifying a
, not the thing that a
points to (namely f
).
Syntactically, nothing. They're equivalent.
That said, the recommendation is that you use the form int *x
.
Here's why. These two lines are equivalent:
int* x, y;
int *x, y;
In both of them, x
is type int*
, and y
is type int
. But by putting the
asterisk right next to the int
, it makes it look like both x
and y
are of
type int*
, when in fact only x
is.
If we reverse the order of x
and y
, we must necessarily move the asterisk
with x
:
int y, *x; // Also equivalent to the previous two examples
It's idiomatic to keep the asterisk tucked up next to the variable that's the pointer.
This is the compiler saying "Hey, you're calling a function but I haven't seen a declaration for that function yet." Basically you're calling a function before you've declared it.
If you're calling a library function like printf()
or a syscall like stat()
,
the most common cause of this warning is failure to #include
the header file
associated with that function. Check the man
page for exactly which.
But what if you're getting the error on one of your own functions? Again, it means you're calling that function before you've declared it.
But what does declared mean?
A declaration can either be a function definition, or a function prototype.
Let's look at a broken example:
#include <stdio.h>
int main(void)
{
foo(); // Implicit declaration warning!!
}
void foo(void)
{
printf("Foo!\n");
}
In that example, main()
calls foo()
, but the compiler hasn't seen a
declaration of foo()
yet. We can fix it by defining foo()
before main()
:
#include <stdio.h>
// Just moved foo()'s definition before main(), that's all
void foo(void)
{
printf("Foo!\n");
}
int main(void)
{
foo(); // No problem!
}
You can also use a function prototype to declare a function before it is used, like so:
#include <stdio.h>
void foo(void); // This is the prototype! It's a declaration of foo().
int main(void)
{
foo(); // No problem
}
void foo(void) // This is the definition of foo()
{
printf("Foo!\n");
}
Prototypes for functions that are callable from other source files typically
go in header files, and then those other source files #include
them.
For functions that aren't used outside the current .c
file (e.g. little helper
functions that no other file will even need to call), those usually are either
defined at the top of the file before their first call. If that's inconvenient,
a prototype can be placed at the top of the .c
file, instead.
puts()
simply outputs a string. It does no formatting of variables. Its only
argument is a single string. Additionally, it prints a newline at the end for
you.
// This prints "Hello, world %d!" and then a newline:
puts("Hello, world %d!");
printf()
does formatted output of variables, and strings as well. It's a
superset of puts()
, in that way.
int x = 12;
// This prints "Hello, world 12!\n":
printf("Hello, world %d!\n", x);
fprintf()
is just like printf()
, except it allows you to print to an open file.
FILE *fp = fopen("foo.txt", "w");
int x = 12;
// This writes "Hello, world 12!\n" to the file "foo.txt":
fprintf(fp, "Hello, world %d!\n", x);
Incidentally, there's already a file open for you called stdout
(standard
output) which normally prints to the screen. These two lines are equivalent:
printf("Hello, world!\n");
fprintf(stdout, "Hello, world!\n"); // Same thing!
There's another already-opened file called stderr
(standard error) that is
typically used to print error messages. Example:
if (argc != 2) {
fprintf(stderr, "You must specify a command line argument!\n");
exit(1);
}
In C, any time you have a plain leading 0
on front of a number, the compiler
thinks your number is base-8 or octal.
Converting 025
to decimal can be done like so:
2*8 + 5*1 = 16 + 5 = 21
Octal is rarely used in practice, and it's common for new C programmers to put
0
in front of a number in error.
One of the last common places to see octal numbers is in Unix file permissions.
There is none.
Initially, it was in a Unix-like system probably using Makefiles to build the software. This is the system we use at Lambda.
And modern C development under Unix still follows this pattern, except maybe using autotools or CMake.
But dev for specific platforms like Windows probably happens in Visual
Studio instead of using
make
and the rest of it.
Nope!
When it comes to freeing up memory that is no longer needed by the program, there are basically two schools of thought:
- Have the programmer manually manage that memory by explicitly allocating and
freeing it. (C's
malloc()
andfree()
functions.) - Have the runtime automatically manage all that for you. (Garbage collection, automatic reference counting, etc.)
C is too low-level to automatically manage memory usage for you.
One exception is that C automatically allocates and frees local variables just
like other languages you're used to. You don't have to explicitly call free()
for locals (and it's an error to do so). You must call free for any and all
pointers to data that you got back from malloc()
when you're done with them.
Also, when a program exits, all memory associated with it is freed by the OS,
whether locals or malloc()
d data.
The big thing is interpreted versus compiled.
Python and JavaScript are interpreted languages, which means another program
runs your program. It's software running software. So you run python code with
the python
program and JavaScript code with node
, for example.
So in that case, we have the CPU running python
, and the Python running your
Python program. Python is the middleman, and that takes execution time.
C is a compiled language. The compiler takes your C code, and produces machine code. The CPU runs it directly. No middleman, so it's faster.
But other languages are compiled (like Go, Swift, Rust, C++, and so on). Why is C faster than them, typically?
It's because C is a no-frills, minimalist language. The code you write in C is actually quite close to the machine code that gets produced by the compiler, so it doesn't have to do a lot of things behind your back.
Additionally, people have been working on optimizing the output from C compilers for over 45 years. That's a big head start over other languages.
It means you've accessed some memory you weren't supposed to. The OS killed your process to prevent it from doing so.
The trick is to find the line that's causing the problem. If you get a debugger installed, this can really help.
In lieu of that, use well-positioned printf
calls to figure out what the last
thing your program does before it crashes.
The bug almost certainly has to do with pointers or arrays (which are just pointers behind syntactic sugar).
Maybe you're accessing a NULL
pointer, or an array out of bounds, or modifying
something you're not allowed to modify.
All memory associated with a process is freed when the program exits, even if
you forgot to free()
it.
It's considered shoddy programming to not free()
all the things you
malloc()
d, though. The OS will free it, but it's bad style to rely on that.
It's all about the range of numbers you want to be able to store.
double
can hold a more precise number than a float
.
A float
might only be precise up to 3.14159
, but a double
could hold
3.1416925358979
, for example.
Likewise, an int
might only be able to hold numbers up to 2 billion or so, but
a long
could hold much larger numbers.
Use as little as you need. If a float
or int
can do the job, use them. If
you need more precision or larger numbers, step up to the next larger type.
No.
The reason is that strings are represented as char*
types, and adding two
char*
s together is not a defined operation in C.
Use the strcat()
function in <string.h>
to concatenate one string onto
another.
No.
Always explicitly initialize your variables, whether they be pointers or regular types. If you don't, random garbage will be in them when you use them.
Exception: local variable declared with
static
storage class (this concept is out of scope for Lambda) and global variables get initialized to zero automatically. But it's still good form to explicitly initialize them.
If you don't need negative numbers, try unsigned int
.
If that's not enough, try long
.
If that's not big enough, try long long
(yes, that's a real thing).
If those aren't enough, try unsigned long long
.
If you just need big numbers, but not a lot of precision, you can use double
or long double
.
If you need big numbers and a lot of precision and none of the above are big enough, check out the GNU Multiple Precision library. It does arbitrary precision arithmetic to as much precision as you have RAM.
"C/C++ IntelliSense, debugging, and code browsing" by Microsoft is a good one.
A great C book is The C Programming Language Second Edition, by Kernighan [the "g" is silent] and Ritchie. It's affectionately referred to simply as K&R2.
A less great book that is free online is Beej's Guide to C Programming.
A good, comprehensive FAQ is the comp.lang.c FAQ.
There's no "one true source" of C info online, unfortunately.
Googling printf example
, for example, will get you good results.
Googling man printf
will bring up the man
page for printf
.
The commonly-used debugger is called gdb
(GNU Debugger).
Lambda's own Brian Ruff got it working on the Mac, and made a video covering it.
These instructions are reported good for WSL on Windows.
The CS Wiki page might help, but it's slightly outdated since VS Code is in heavy development.
This video is reported good, as well.
If you're not seeing program output in the Output
tab, try adding this to your
launch.json
:
"externalConsole": true
We recommend Googling for vscode gdb setup macos
, substituting whatever
platform you're on for macos
and setting the search date range to be recent.
Use the %p
format specifier. This will print the value of the pointer (i.e.
the memory address), not what it's pointing to (i.e. the value stored at that
memory address.)
In practice, pointers are rarely printed except for debugging.
No, not in the way that you're used to from higher-level languages. What C does have that essentially acts as a poor man's closure is function pointers. These are literally what their name implies: pointers to functions.
The standard library implementation of the quicksort sorting algorithm provides a good example of this. It's function signature is
void qsort(void *base, size_t nitems, size_t size, int (*compare)(const void *, const void *))
The parameter to notice is the int (*compare)(const void *, const void *)
. This is a function pointer, mainly denoted by the asterisk in front of the function name all wrapped in parentheses and followed by another set of parentheses containing a parameter signature.
This signature is saying that the qsort
function, in addition to the other parameters it receives, also receives a pointer to a function that receives two const void *
s and returns an int
.
Function pointers are used to fulfill the same use case as closures. They can be used to pass some dynamic logic into another function. In the case of qsort
, the function pointer points to a function that specifies how the comparison for the sorting should be done.
If I look at an uninitialized variable, will the garbage in it ever be leftover data from another process?
Not on a modern OS. It would be a security risk, so the OS makes sure this never happens.
It's effectively unlimited. But the more you have, the less readable your code is.
In real life:
- 99.8% (roughly) of pointer usage is single indirection, like
int*
. - 1.5% (roughly) is double indirection, like
char**
. - And the remaining 0.5% is the rest of it.
This means you have a type mismatch in your assignment.
One side of the =
has pointer type, and the other side has integer type.
If you have a pointer in your assignment, both side of the =
must be the same
pointer type.
Maybe you meant to take the address of the right hand side? Or dereference the right hand side?
Short answer: no.
(We're assuming that by malloc()
we mean malloc()
, calloc()
, and
realloc()
.)
The longer answer is that you can make a syscall and request more RAM from the
operating system. In practice, this is very rare; people just call malloc()
.
In Unix, that syscall is brk()
(or sbrk()
). The behavior of this call is a bit strange no
Neither.
Consider it to be stored in such a way that it is perpetually accessible from the entire program for the entire run and is never freed. So sort of like the heap.
This code is just fine:
char *hello(void)
{
char *s = "hello!";
return s;
}
s
is a local variable that is set to point to the string "hello!"
, and s
is deallocated as soon as the function returns. But the data s
points to
(namely the "hello!"
) persists for the entire life of the program and is never
freed.
It's not actually on the heap, though. The C memory map looks like this, typically:
+--------------------+
| Stack |
| | |
| v |
+- - - - - - - - - - +
| |
| |
| |
+- - - - - - - - - - +
| ^ |
| | |
| Heap |
+--------------------+
| Uninitialized data |
+--------------------+
| Initialized data |
| (Read-Write) |
+--------------------+
| Initialized data |
| (Read-Only) |
+--------------------+
| Program code |
+--------------------+
Constant strings are found in the read-only initialized data section of memory.
If you try to write to one, your program will likely crash:
char *s = "Hello!";
*s = 'B'; // segfault!
Yup! It's used by C to allocate space for local variables when you call functions.
When you return from a function, all those local variables are popped off the stack and thrown away. (Which is why local variables only last as long as the function!)
No--it's just a name collision.
Just assume the heap is a big, contiguous chunk of memory. It can be used for
whatever, but in C, it is typically managed by malloc()
and free()
so that
we don't have to worry about it.
These are the three files that are automatically opened for a process when it is first created.
Stream | File Name | Device |
---|---|---|
Standard Input | stdin |
Keyboard |
Standard Output | stdout |
Screen |
Standard Error | stderr |
Screen |
stderr
is typically used specifically for error messages, even though it goes
to the same place as stdout
. (The idea is that you can redirect all normal
output to one place, and all error output to another place. Or suppress normal
output while allowing error output.)
Check the man page for the function in question. It'll show it in the Synopsis section.
Example for printf()
:
SYNOPSIS
#include <stdio.h>int printf(const char * restrict format, ...);
Note that if you type man
on the command line for a particular function, you
might a manual page for another command that isn't the C function. In that case,
you have to specify the proper section of the manual for the function.
Try section 3 for library functions, and section 2 for syscalls.
Example looking for printf()
in section 3:
man 3 printf
And section 2 for the mkdir()
syscall:
man 2 mkdir
Barely ever.
C is pretty good about conversions, and you should be able to build almost everything without casting.
What if you need constant types?
// Print a double:
// (Floating point constants are double by default.)
printf("%lf\n", 3.14);
// Print a float:
printf("%f\n", 3.14f);
// Print a long double
printf("%Lf\n", 3.14L);
// Print a long integer:
printf("%ld\n", 99L);
// Print a long long integer:
printf("%lld\n", 99LL);
// Produce a floating result of a calculation by making sure at least
// one of the operands is a float:
float sort_of_pi = 22.0f / 7;
double double_pi = 22.0 / 7;
What if you need to cast a void pointer?
void foo(void *p)
{
// convert p to a char*
char *q = p;
// Don't need to cast return value from malloc
int *z = malloc(sizeof(int) * 100);
Some exceptions:
void foo(int a)
{
// Cast an unused variable to type void to suppress compiler warnings:
(void)a;
// If the compiler is warning about an unused return value:
(void)printf("Hello, world!\n");
// Cast to a char pointer to iterate over bytes of an object:
// (C99 6.3.2.3 paragraph 7 allows this.)
float f = 3.14;
unsigned char *c = (unsigned char *)&f;
for (unsigned i = 0; i < sizeof f; i++) {
printf("%02x ", c[i]);
}
printf("\n");
Is realloc()
the same as calling malloc()
, copying the data over, then calling free()
on the original pointer?
Effectively, yes, it's the same. Practically, you should use realloc()
.
realloc()
might be more efficient because in some cases it might not have to
copy.
If you grow the space and realloc()
knows there's extra unused memory right
after the existing space, it will simply tack that addition space onto the end
of the memory region and not bother moving the data.
Also, if you shrink the space, realloc()
will likely not copy the data. It'll
just truncate it.
Nothing. It's a no-op.
Basically, inside the library code for free()
, there's something that looks
like this:
void free(void *ptr)
{
if (ptr == NULL) {
return;
}
According to the C99 spec section 7.20.3.2p2:
The
free
function causes the space pointed to byptr
to be deallocated, that is, made available for further allocation. Ifptr
is a null pointer, no action occurs. Otherwise, if the argument does not match a pointer earlier returned by thecalloc
,malloc
, orrealloc
function, or if the space has been deallocated by a call tofree
orrealloc
, the behavior is undefined.
A bit is a single 1
or 0
.
That's all the numbers it can represent.
A nibble is 4 bits. It can represent numbers from 0b0000
to 0b1111
(binary
numbers), which is equivalen to 0
to 15
in decimal.
A byte is 8 bits. It can represent numbers from 0b00000000
to 0b11111111
,
or 0
to 255
decimal. (Historically, bytes could be other numbers of bits,
but on all modern systems, it's always 8 bits. Octet is another term for a
number that is specifically 8 bits long.)
A kilobyte is 1024 bytes. (1024 is 210.)
A megabyte is 1024 kilobytes (1,048,576 bytes).
A gigabyte is 1024 megabytes (1,073,741,824 bytes).
A terabyte is 1024 gigabytes (1,099,511,627,776 bytes).
A petabyte is 1024 terabytes (1,125,899,906,842,624 bytes).
If you're used to SI unit prefixes, you might be wondering why in computers kilo means 1024 instead of 1000 like it normally does. In short, it's for historic reasons. 1024 was close enough, so computer programmers adopted the SI prefixes, albeit with a slightly different value.
And that gets confusing. When I say kilobyte, do I mean 1000 bytes or 1024 bytes?
In almost every single case, kilobyte means 1024 bytes. (Hard drive and SSD sizes are sometimes an exception to this rule.)
To remove the ambiguity, you can use a binary prefix, where you'd say kibibyte if you specifically meant 1024 bytes.
That said, in conversation, if someone says kilobyte, odds are extremely high they mean 1024 bytes, not 1000 bytes. kibibyte is uncommonly used in conversation.
No.
You can assume an int
is at least 16 bits (2 bytes).
There is only one type that has a guaranteed size: sizeof(char)
will always be
1
byte. (Same for unsigned char
and signed char
.)
Never write code that hardcodes or assumes the size of anything other than
char
. Always use sizeof
to get the size.
There's a great Wikipedia article that lists the minimum sizes of the types. If you want your code to be portable to other compilers and systems, choose a type with a minimum size that works for the numbers you need to hold.
In general, use double quotes for your own header files, and angle brackets for
built-in system header files like <stdio.h>
.
When you #include "foo.h"
, it looks for foo.h
in the same directory as the
source file doing the including.
You can also use relative paths, and it'll look relative to the including source file:
#include "../bar.h"
#include "somedir/baz.h"
When you #include <frotz.h>
, it looks in the system include directories for
the header file. This is where all the built-in header files are installed. On
Unix machines, this tends to be the /usr/include
directory, but it depends on
the OS and compiler.
It depends on if you want a thing or not, or if you just want to point to another, already-existing thing.
If there is not an already-existing thing, then making a pointer doesn't make sense. There's no existing thing for it to point to.
This does not declare an int
:
int *p;
There's no int
there. We have an int
pointer, but it's uninitialized, so it
points to garbage and can't be used.
So the question to ask is, "Do I already have an existing thing that I can point to? And if so, do I want to point to it?" If the answer to either is "no", then don't use a pointer.
Example:
int a = 12; // here's an existing thing
So the answer to the first part of the question is yes. And do we want a pointer to it? Sure, why not?
int *p = &a; // and there's a pointer to it
If you're in the main()
function, then no.
If you're in any other function, then yes.
exit()
always exits the running process, no matter where you call it from.
If you're in main()
, return
also exits the running process.
If you're in any other function, return
just returns from that function.
strcmp()
returns the difference between two strings. If the strings are the
same, there is zero difference, so it returns zero.
This gives strcmp()
a little extra power over just returning a boolean
true/false value.
For example, if you run this:
strcmp("Antelope", "Buffalo");
it will return less-than zero because "Antelope" is alphabetically less than "Buffalo".
So not only can it tell you if the strings are the same, it can tell you their
relative sort order. And that means you can pass it in as the comparator
function to the library built-in qsort()
function.
There are a number of things you're allowed to do in C where the compiler is allowed to produce code that can have any indeterminate effect. It could work, it could crash, it could sort of work, it could crash sometimes and not others, it could crash on some machines and not others.
When you write code that does that, we say the code has undefined behavior.
Wikipedia has a number of practical examples, and if you look in the C99 Language Specification, Annex J.2 you can get a list of all the things you can do that cause undefined behavior.
At Lambda, the most common things you can do to get UB is using bad pointer references.
- Accessing memory you've already
free()
d. - Freeing memory more than once.
- Accessing an array off the end of its bounds.
- Dereferencing a pointer that points to garbage.
- Dereferencing a
NULL
pointer. - Returning a pointer to a local variable and dereferencing that.
GCC with -Wall -Wextra
should warn on a lot of these. This is why it's
really important to fix all those warnings.
No.
Furthermore, free()
can't do that even if it wanted to.
int *p = malloc(100 * sizeof(int));
free(p);
When we call free()
, it gets a copy of the pointer we pass in. (All
functions always get copies of all arguments you pass in.) As such,
free()
could set its copy of p
to NULL
, but that doesn't affect our
original p
.
p
remains whatever value was in it until we set it to something else.
int *p = malloc(100 * sizeof(int));
free(p);
p = NULL; // NOW p is NULL
(Note that it's undefined behavior to dereference a pointer after
you've free()
d it. But it's still OK to change that pointer's value.)
You've probably already seen simple cases of #define
like this:
#define antelopes 10
int main(void)
{
printf("Antelopes: %d\n", antelopes); // prints 10
What's actually happening here is the preprocessor runs through the code before the compiler ever sees it. It manipulates the above code to read:
int main(void)
{
printf("Antelopes: %d\n", 10); // prints 10
and then hands it off to the compiler. The compiler itself knows nothing about
#define
.
These #define
macros can also accept parameters that make them behave like
functions in a way.
Example:
#define square(x) x * x // Not quite Right. See below.
int main(void)
{
printf("9 squared is %d\n", square(9));
Then the preprocessor generates this code for the compiler:
int main(void)
{
printf("9 squared is %d\n", 9 * 9);
It just substitutes the parameters in as-is.
Another example:
#define square(x) x * x // Not quite Right. See below.
int main(void)
{
printf("3 + 2 squared is %d\n", square(3 + 2));
Then the preprocessor generates this code for the compiler, merely substituting in exactly what the dev entered as an argument:
int main(void)
{
printf("3 + 2 squared is %d\n", 3 + 2 * 3 + 2);
Except that prints 11
, when it should print 25
(3 + 2 is 5, and 5 squared is
25)! We have a bug!
Of course, this has to do with the order of operations. We wrote:
3 + 2 * 3 + 2
when what we really wanted was:
(3 + 2) * (3 + 2)
For this reason, you should always put extra parentheses around the macro body, and around every parameter in the body:
#define square(x) ((x) * (x))
And now the expansion of our line will be:
((3 + 2) * (3 + 2))
That will work in all expected cases.
This happens when you've called a function, and the linker can't find it in any of the source files or libraries that you're using.
Do you have a warning about an implicit function declaration from the compiler before this error? If so, fix that first.
If not, it could be that you haven't specified all the source files needed on
the command line. If you have two sources one.c
and two.c
, and one calls
functions that are in the other, then you have to pass both into the compiler:
gcc -Wall -Wextra -o myexe one.c two.c
Alternately, is there a Makefile
present? If so, the author of the software
probably intends for you to use that to build the project, rather than trying to
figure out the command line on your own.
Try just running:
make
and seeing if that works. Make will show you the command lines it's running to make the build happen so that you don't have to.
The linker is part of the entire compilation system. Basically, the compiler
takes your C source files, makes sure they're syntactically correct, and turns
them into things called object files, one per source file. These object files
might refer to functions that they don't contain, like printf()
, for example.
Then the linker takes all the object files and libraries and puts them together into a single binary executable that you can run. It makes sure that all the functions used are present in the files specified.
(Normally this whole process takes place behind the scenes and you don't have to
think about it. Sometimes Makefiles will generate object files that you might
see, e.g. foo.o
. .o
is the extension for object files on Unix, or .obj
in
Windows.)
If the linker can't find a function in any of the object files or libraries, it pukes out an error. It can't call a function if it can't find it.
In this example, the code calls a function foobaz()
, but the linker can't find
that in any of the object files:
Undefined symbols for architecture x86_64:
"_foobaz", referenced from:
_main in foo-133c47.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
(Ignore the leading underscores on the function names.)
To fix, we need to figure out which file foobaz()
is defined in, and make sure
to pass that filename to the compiler when we build.
If you have a .c
file and you want to be able to use functions, #define
s, or
globals from that file in another file, you'll need to make a header file
(.h
file) to hold the function prototypes, #define
s, and references to any
globals.
Example:
// square.c
long square(long x)
{
return x * x;
}
If you want to use square()
from a different file, you need a way for that
file to know the square()
function declaration so the compiler can check to
see that you're using it correctly.
For that, we need a corresponding .h
file:
// square.h
#ifndef SQUARE_H // Prevent multiple #includes
#define SQUARE_H
// Function prototypes
extern long square(long x);
#endif
The #ifndef SQUARE_H
is called the guard macro, and is there to prevent the
header file from being included multiple times. (This can be a problem if you
have header files that include other header files in a cycle.) #ifndef
means
"if not defined". Basically, SQUARE_H
is acting as a boolean that gets set the
first time through and so prevents the content of the header file from being
included again.
All header files have wrappers like that. The name of the preprocessor variable
is conventionally FILENAME_H
, but could be anything as long as it's unique in
the project.
The keyword extern
indicates to the compiler that the function in question is
not defined here; it is defined in another file. In this header file, extern
is the default storage class for functions, so it's redundant. But it's really
common to see in any case.
Now that we have a header file, we can #include
that from somewhere else. Use
double quotes in the #include
to indicate that the compiler should look in the
current directory for the header file.
#include "square.h"
int main(void)
{
int x = square(5);
When you build, you must specify all .c
files on the command line:
gcc -Wall -Wextra -o main main.c square.c
IMPORTANT: Any lines shown indented in any Makefile must begin with a
single TAB character! Spaces will not work. If you use spaces to indent,
you'll likely see a Missing separator
error when you try to make
.
myexecutable: mysource1.c mysource2.c
gcc -Wall -Wextra -o myexecutable mysource1.c mysource2.c
The above Makefile says:
"If mysource1.c
or mysource2.c
are newer than myexecutable
, then run the
following commands in the indented block below this line."
And by "newer", we mean they have a more up-to-date timestamp, i.e. they've been
saved more recently than myexecutable
has been created.
If any of the sources are newer than the executable, the executable should be rebuilt to get it up to date. And that's what make does.
We say that myexecutable
depends on mysource1.c
and mysource2.c
. If
either of those dependencies change, myexecutable
must be rebuilt.
This also works:
myexecutable: mysource1.c mysource2.c
gcc -Wall -Wextra -o $@ $^
$@
is a make macro that means "substitute whatever is left of the :
right
here" (in this example, myexecutable
).
$^
is a make macro that means "substitute whatever is to the right of the :
right here" (in this example, mysource1.c mysource2.c
).
You can also define constants:
SRCS=mysource1.c mysource2.c
TARGET=myexecutable
$(TARGET): $(SRCS)
gcc -Wall -Wextra -o $@ $^
You can have multiple recipes per Makefile:
target1: source1.c
gcc -Wall -Wextra -o $@ $^
target2: source2.c
gcc -Wall -Wextra -o $@ $^
If you type make
, it will build the first target in the file by default. A
target is a file that is generated by running make
, i.e. a file to the left of
a :
. You can also make specific targets by specifying them on the command line:
$ make target1
gcc -Wall -Wextra -o target1 source1.c
$ make target2
gcc -Wall -Wextra -o target2 source2.c
If you want all targets to get built by default, you can put a dummy first
target in that depends on the other targets. This target is called all
by
convention. It typically doesn't run any commands and is only there to set up
the dependency hierarchy with the other recipes.
# Recipe `all` depends on `target1` and `target2`:
all: target1 target2
target1: source1.c
gcc -Wall -Wextra -o $@ $^
target2: source2.c
gcc -Wall -Wextra -o $@ $^
.PHONY: all
That .PHONY: all
line is a GNU make extension that indicates that all
is not
a real file. Normally targets refer to real files, and make will check to see if
that file exists on disk or not before trying to build it. But in this case,
all
is not a file; it's just recipe we're using to get all targets to build by
default.
The way to approach it is when you think, "I need something just like
printf()
, except instead of to the screen, it prints to x," then you look in
the man page and see if there's a printf()
variant that suits your needs.
The first letters let you know what speciality each one has:
printf()
: stock, no frills.fprintf()
: "file printf"; print to a specifiedFILE*
instead of tostdout
.sprintf()
: "string printf"; print to a string instead of tostdout
.snprintf()
: "string printf, with a limited count"; print to a string instead of tostdout
, and also specify the maximum number of characters thatsnprintf()
is allowed to store in the buffer. This is good to protect against buffer overruns, and there's a valid argument that you should never usesprintf()
, preferringsnprintf()
instead.vprintf()
: "variadic printf"; anything that starts with av
inprintf
land has to do with variadic functions, i.e. functions with argument lists of variable lengths. These are out of scope at Lambda.- etc.
C has the feature that you have to declare a function before you can use it.
So any functions main()
needs have to be declared before main()
, which means
"above" it in the file.
You can also declare functions with prototypes and then put the definition of
main()
before the definition of the other functions.
It's more common for C devs to put main()
at the bottom of the file that
contains it, and C devs expect it that way, but it's not wrong or frowned upon
to use prototypes to put it at the top instead.
It doesn't have to. The return value from main()
is the exit status of the
process. This is passed back to the program that first launched your program, so
it can do different things based on the exit status of your program.
Think of it like a way for an exiting program to pass a small piece of information (an integer) back to the program that spawned it.
0
by convention means "success". Non-zero means "failure". The idea there is
that there's typically only one way for a program to succeed, but many ways for
it to fail, and you can communicate those different ways with different exit
codes.
Note that you can also use the exit()
call, passing an exit status code to it
as an argument. Using return
in main()
is equivalent to calling exit()
.
In bash, you can look at the exit status of the previous command by echo
ing
the $?
shell variable. In the following example, we use grep
incorrectly,
and it exits with status 2
to indicate that. Whereas we use ls
correctly,
and it exits with successful status 0
:
$ grep
usage: grep [-abcDEFGHhIiJLlmnOoqRSsUVvwxZ] [-A num] [-B num] [-C[num]]
[-e pattern] [-f file] [--binary-files=value] [--color=when]
[--context[=num]] [--directories=action] [--label] [--line-buffered]
[--null] [pattern] [file ...]
$ echo $?
2
$ ls -d .
.
$ echo $?
0
At the OS level, fork()
is used to create a new process, and wait()
is used
to get the exit status back from that process.
Only if you want to have a program that you can run. When you first launch a
program, it looks for a function called main
.
There can only be one main()
in a program. (There can only be one of any
function, for that matter.)
It could be that individual files don't have a main()
in them, but when the
whole project it built, main()
is brought in from another source file.
Also, there's a thing called a
library which is a
collection of functionality that your program makes use of, but doesn't have a
main()
, itself. Your program has the main()
, and it just calls routines
that are in the library.
The C Standard Library is a
library that holds all the standard C functionality (e.g. printf()
, sqrt()
,
etc.) but doesn't have a main()
of its own. Other programs simply use the
library.
No. The function signature for main()
must be one of the following:
int main(void)
int main(int argc, char *argv[])
int main(int argc, char **argv)
Note that the second two are equivalent. Use the first form if you don't need to process command line arguments.
Historically, these were also equivalent, but the second form is now obsolete:
int main(void) // OK
int main() // Obsolete
Yes.
Or, more technically, at the end of every statement or expression.
C won't fill them in automatically like JavaScript will.
A pointer is a memory address. A single memory address, a single index number into your memory array.
As such, it can only point to a single byte in memory.
For single-byte and multi-byte entities, the pointer always points to the first first byte of that entity.
If you have an int
made up of 4 bytes, a pointer to that int
points to the
address in memory of the first byte of that int
.
If you have a struct
, it points to the first byte of that struct
.
If you have an array of a zillion struct
s, it points to the first byte of the
0th struct
in that array.
Pointers themselves are variables.
Variables are stored in memory.
Therefore pointers are also stored in memory.
Remember that a pointer is just an index into memory. It's just a number; in fact it's an integer number. We can store integer numbers in memory without a hassle.
The only difference between a pointer and an integer is that you can dereference the pointer to see what it's pointing to. You can't dereference an integer. In memory, they're both just stored as numbers.
1-projects/Intro-to-C-master/fizzbuzz/
Table of Contents generated with DocToc
Functions in C are not much different from functions in JavaScript. Probably the most notable difference, at least from a syntactic point of view, is that you need to specify types on all your variables and input parameters, along with needing to specify the return type of the function. Remember, C is a strongly typed language, as opposed to JavaScript which is a loosely typed language where types are entirely inferred by the interpreter. The C compiler ensures that you specify your types and that your code is consistent with the types you specify.
Here is a non-comprehensive list of C data types: https://codeforwin.org/2015/05/list-of-all-format-specifiers-in-c-programming.html
To reiterate, you might declare a function in C like this:
int foo(int param1, int param2)
{
...
return 0;
}
This function signature states that it receives two integer parameters and returns an integer.
Here's another example:
void bar(int[])
{
...
}
This function signature states that it receives a single integer array and doesn't return anything. You'll often see this kind of function signature when you want the function to simply mutate the input and/or print the contents of the input.
For printing output, you'll want to use the printf
function, which is included in the stdlib
library.
Your first task is going to be writing good ol' fizzbuzz in C! Your fizzbuzz
function should receive some integer n, then loop up till n, printing out "Fizz" if the current iteration i is divisible by 3, "Buzz" if it's divisible by 5, or "FizzBuzz" if it is divisible by both 3 and 5. Additionally, for each iteration where nothing is printed, your function should increment a counter and return the result of that counter at the end of its execution.
Navigate to the fizzbuzz.c
file. You'll write your code in there. When you want to test it, type make tests
into your terminal (make sure you're doing this from the directory where the Makefile
is located), which will run the Makefile
and compile your program and, if the compilation was successful, run the tests for it as well.
1-projects/Intro-to-C-master/hangman/
Table of Contents generated with DocToc
Write a program that allows you play a game of Hangman. All of your code can be written in the hangman.c
file.
The main loop of the program prints the current state of the game and then waits for input from the player. When the player types in input (either a single letter guess or a word guess), the game checks if the letter is one that is in the target word or if the word guess matches the target word. If the guess is correct, the game state updates accordingly by revealing the guess as part of the target word. If the guess is incorrect, the game state updates accordingly by showing that letter in the 'incorrect guesses' list and adding another limb to the hangman drawing.
You'll compile your program with
gcc -o hangman hangman.c
This will create an executable called hangman
that you'll execute with the command ./hangman
once you've successfully compiled the program.
For this implementation, your program should receive a single word parameter; that will be the word that the player is trying to guess. So running your program might look like this
./hangman antidisestablishmentarianism
This will start the game loop, which will then continue running until the player wins, the player loses, or the player exits the game.
This problem can be broken down into many subproblems. Each subproblem can be further broken down into chunks that you can think about how to implement in code. These include, but are not limited to, the following:
- Reading input from the user and recording it properly
- Figuring out how to parse command line arguments
- Properly recording game state
- Keeping track of all letters/words that have been inputted
- Recording the incorrect guesses
- Printing the proper UI given the game's current state
- Implementing the ability to accept both single letter guesses as well as entire word guesses
- Having the game UI respond appropriately when a player makes a correct / incorrect guess
- Adding the ability for the user to exit the game by typing in the proper keyword
Just in case you happen to be someone who doesn't know the rules of Hangman, we'll list them here.
The game has you guess a word. You're given 8 strikes. If you guess an incorrect letter (that you haven't already guessed before), or take a stab at guessing the entire word and don't get the correct word, that's one strike. The game keeps track of each letter that you've guessed. You win the game when you guess the correct word.
1-projects/Intro-to-C-master/malloc/
Table of Contents generated with DocToc
Remember that a few modules ago when we were talking about arrays in C being entirely static? That's a pretty big limitation since we're forced to know up front what kind of data we want to store in the array and how much data there is before we can fit it into an array. We aren't psychics here. How do we get around this?
The answer to that is the malloc
function. Its signature is this:
void *malloc(size_t size);
A size_t
type is nothing more than a really large int for representing large sizes. The other thing to note is that the malloc
function returns a void
pointer. The void
type simply means the type could be anything; essentially, we don't know the type up front. So malloc
returns us a pointer of unspecified type that points to a chunk of memory with the specified size.
Well, if there's this void
type, what's to stop us from just declaring everything as a void
type? The drawback to the void
type is that the compiler then can't infer much of anything about the data that a void pointer points to. It can't determine how much data a void
pointer is pointing to, plus void
pointers cannot be dereferenced until they are cast (their type is changed) to a known type. Basically, it won't be able to provide us nearly as many compile-time protections as it can if we have all of our types declared. The moral of the story is that the void
type should only be used when you actually do not know the type of the data up front. malloc
returning a void
pointer is a great use-case for this.
Here are some pretty typical malloc
calls:
int *100_ints = malloc(100 * sizeof(int));
char *50_chars = malloc(51);
The first malloc
call allocates enough space for 100 ints. The malloc
call initially returns a void
pointer, but it then gets cast to an int
pointer on the left-hand side. You'll also note that we're using the sizeof
operator in order to find the size of an individual integer, and then multiplying by the number of integers we're looking to store in order to get the total amount of memory we need. We have to do this because integers are not stored in a single byte, and integer sizes may fluctuate from platform to platform.
With the second malloc
call, you'll see we don't do that. We're still performing the cast to a char
pointer, but there's no call to the sizeof
operator. This is because char
s each fit within a single byte, so 51 bytes will hold 51 char
s, which is exactly what we want. Once we have a pointer to the malloc
'd memory, we can work with it exactly how we've been working with pointers.
So, we still need to know how much data we want to fit inside this chunk of malloc
'd memory, which still isn't all that helpful since that's still a hefty limitation. There exist other library functions, such as realloc
, which can receive a pointer to malloc
d memory and then resize that chunk of memory, but for this module we're just going to stick with malloc
.
We'll talk about one of the main usages of malloc
in the next module.
Getting a void pointer back from a malloc
call isn't the only time we'll need to deal with void pointers. Sometimes we'll need to explicitly cast a void pointer that's already referring some data, unlike the chunk of memory we're getting back from malloc
call, which starts off empty and uninitialized.
A common use-case for void pointers is when we want to write a function that is generic over types, i.e., it doesn't care what the types of its inputs are. Let's assume we have the following function signature:
void foo(void *a, void *b);
Here, foo
takes two void pointers, which will contain some data of a certain type, but foo
either doesn't know what those types are or doesn't care. If we want to do something with these two void pointers though, we'll have to explicitly cast them to some actual type we can work with. We can do that like this:
char *cast_a = (char *) a;
char *cast_b = (char *) b;
Here we cast both void pointers to be char pointers. Note that this doesn't actually transform the data these two pointers point to, we aren't changing the underlying data's type. We just need to temporarily assign a concrete type to these pointers so that we can do something with them inside our foo
function.
We pick char *
s here because the char
type is guaranteed by the C specification to be one byte each. This is desirable because it's the most granular type we can pick. If we're going to be touching some memory and not treating as the type that it actually is, then to avoid any sort of memory corruption, we want to be as granular as possible when handling that underlying data, hence the usage or chars and not some other type.
1-projects/Intro-to-C-master/pointers/
Table of Contents generated with DocToc
From the perspective of C, your entire computer is nothing more than a giant array of memory into which values can be written. Given this analogy, when we're dealing with arrays, how do we access some value stored inside of said array?
We do it with indices that point to a specific spot in the array. As it turns out, pointers in C are simply just that: indices into the giant array of memory that is your computer. More formally, a pointer is a memory address that tells the program where to go and find some variable value.
Those funky asterisks you might have seen already indicate a pointer (you might have heard them referred to as references in other languages). Let's look at the function signature we had for the reverse_string
function you wrote in the strings
module:
char *reverse_string(char s[])
{
...
}
The char *
that is in the spot where the return type of the function usually goes is saying that this function will return a pointer to an array of characters.
It turns out that pointers and arrays in C are very much interconnected, so much so that it's pretty difficult to separate the topic of pointers from arrays. Every pointer points to the first spot of a contiguous portion of memory, and as we've already established, C pretty much just treats your computer as a giant array of memory.
Indeed, there are many similarities between how you work with arrays and how you work with pointers. However, let's first talk about the differences between them.
Even though C let's you work with pointers and arrays in many of the same ways, don't think of them as synonomous. C's sizeof
operator allows us to find the size of something in bytes. Let's say for example we had the following array:
int integers[] = { 9, 49, 1, 6, 10, 15 };
Calling sizeof(integers)
gets us the total amount of data in the array. Then let's say we had a pointer to the same chunk of data:
int *pointer_to_integers = integers;
So we have an array named integers
and a pointer called pointer_to_integers
that points to the same spot in memory where the integers
array is stored. If we were to call sizeof(pointer_to_integers)
, we would actually get back the size of the pointer, not the size of the data it's pointing to.
There are a few other such sorts of edge cases, but for the most part they're pretty nuanced. So while, again, you shouldn't be thinking of pointers being arrays and vice versa, you would interface with them in many of the same ways.
As showcased above, declaring a pointer is as simple as putting an asterisk after the type declaration of a variable. This signifies that we have a pointer to the declared type with the specified name.
/* Declaring two ints x and y, and an int array z */
int x = 1, y = 2, z[10];
int *ip; /* ip is a pointer to an int */
ip = &x; /* ip now points to x */
y = *ip; /* y is now 1 */
*ip = 0; /* x is now 0 */
ip = &z[0]; /* ip now points to z[0] */
There's nothing new going on in the first two lines of this block. Starting at the third line with ip = &x;
, we see the &
operator. This means we're grabbing the address of the variable x
, or in other words, we're asking for the address where the value of x
(1
in this case) is being stored. We do this because ip
is a pointer, which stores an address, not a value. If we did ip = x;
, that would be saying "store the value of the variable x in the variable ip
", which would not compile since we've declared ip
to be an integer pointer, not an integer value.
In the next line, y = *ip
, note that when we use the *
operator not in a declaration, it signifies that we're want to grab the value of the operand. So we're saying "set the variable y
to be the value of the pointer ip
". Again, since ip
is a pointer, it stores an address. When we prepend the *
operator in front of a pointer, we're asking for the value that that pointer points to. Put another way, we're indexing into the giant array of memory that is our computer and asking for the value at the given index.
Next we have *ip = 0;
. Here we're setting the value that ip
points at to be 0. Before this, ip
pointed to whatever x
's value was, because of the line ip = &x;
. So now that we changed the value at some address, any other variables or pointers that also referenced that same address also got changed! If we were to print out the value of the x
variable now, it would be 0
!
Lastly, we have ip = &z[0];
, which declaring that ip
now points to the first element of the z
array. Again, we use the &
operator in order to grab the address, not the value, of z[0]
, since ip
is a pointer that stores an address.
When we index into arrays in JavaScript, we can do things like:
const someArray = [];
for (let i = 0; i < array.length; i++) {
someArray[i] = array[i + 1];
}
We can index into arrays by performing arithmetic on the index. With pointers in C, we can do the exact same thing!
Let's say we have a pointer to a string like so:
char *str = "Some string";
We can loop through the characters in this string by doing this:
while (*str != '\0') {
printf("%c", *str);
str++;
}
This loop will print out each character in the string. Indeed, this loop is pretty much analogous to iterating through an array. More precisely though, on each iteration of this while loop, we're incrementing the spot the pointer points to by one. At the beginning of the loop, *str
points to the first character in the string, S
. Then, on the next iteration, it gets incremented and then prints out o
. This keeps going until the pointer points to the null character, which terminates the loop.
Armed with this knowledge regarding pointers and pointer arithmetic, we can rewrite the reverse_string
function from the last module to use pointers instead of allocating additional memory for the reversed string. This has the added benefit of performing the reverse in-place.
void *reverse_string(char *s)
{
char temp;
int n = string_length(s);
for (int i = 0; i < n/2; i++) {
temp = s[i];
s[i] = s[n-i-1];
s[n-i-1] = temp;
}
}
Lastly, let's talk a bit about why pointers are useful. The number 1 most important reason as to why pointers exists, the motivation for their invention in the first place, is that the C compiler needs every type to have a known size at compile time. This is a pretty big restriction, and it's one that comes with the territory of working in a strongly-typed language.
But there's lots of data that we won't know the size of until runtime. What if we need to accept user input? How do we know the size of that input before the user even gives it to us? What if we need to add data to some data structure at runtime? These are all valid questions, and the workaround to them is pointers.
We can not tell the compiler the size of certain types upfront, so what we do instead is use something of a known size to refer to things of unknown size. That is exactly what pointers are. They're a type with a known size that tells us how to access something of an unknown size.
So whenever we need to hold something like a string or a data structure whose size depends on something that can only be known at runtime, you can bet such structures will be referred to by a pointer.
A slightly related use case is passing by reference vs. passing by value when we're talking about passing parameters to functions. You've probably at least heard of these terms used in other languages. Passing by value means that we're passing a copy of the value to a function as a parameter. This results in additional work and memory overhead, but means we have a fresh copy of the data to work with, which is desirable in certain scenarios.
On the flip side, passing by reference means we're passing a pointer to the data. In other words, the function doesn't have access to the data itself, but it is able to find that data in memory via the passed-in pointer. There's no need to copy the data, but then that also means the function doesn't have exclusive access to the data either.
1-projects/Intro-to-C-master/quicksort/
Table of Contents generated with DocToc
For this module, you're going to implement a quicksort function. Feel free to reference prior implementation(s) and simply transpose the code from one language to the other. Typically this is a good way to practice new languages you're trying to learn: by transposing code you've written from one language to another.
In case you haven't seen the quicksort algorithm before, here's a Python implementation that you can use as a reference:
def quicksort(alist, begin=0, end=None):
if end is None:
end = len(alist) - 1
if begin < end:
pivot = partition(alist, begin, end)
quicksort(alist, begin, pivot-1)
quicksort(alist, pivot+1, end)
def partition(alist, begin, end):
pivot = begin
for i in range(begin+1, end+1):
if alist[i] <= alist[begin]:
pivot += 1
alist[i], alist[pivot] = alist[pivot], alist[i]
alist[pivot], alist[begin] = alist[begin], alist[pivot]
return pivot
Keep in mind that since Python is a higher-level language than C, it provides language features and constructs that aren't available in C. For example, the swapping syntax in Python isn't going to work in C without some additional work. The swap
that you implemented earlier in the sprint has been included in this directory in the lib.h
header file though, so you can use it here to swap values within an array in-place. Another Python language feature that you can't replicate in C are the default function parameters.
Navigate to the quicksort.c
file. Implement your quicksort algorithm, then type make tests
to check if you have all the tests passing.
1-projects/Intro-to-C-master/
Table of Contents generated with DocToc
Welcome to your first C sprint!
The two main goals of this sprint are as follows. The first goal is to give students the experience of learning a different programming language. This is important because it is very rarely the case where you are familiar and comfortable with all of the technologies/programming languages that you'll be using on a job as a professional developer. Being able to pick up languages/technologies you aren't familiar with is a skill that we want to cultivate in students during their time here at Lambda, which is why we expose students to both C and Python during their time here.
The second goal is to start peeling away the layers of abstraction that students are used to from working with JavaScript and Python. Indeed, when you boil it all down, both JavaScript and Python are implemented in C in the first place! C supports very few of the abstractions that students are used to, because C has you working directly with the memory on your machine. Higher level languages abstract this fact away from you, at the cost of raw performance and control. Essentially, you're getting exposed to the nitty-gritty seedy underbelly of your computer's inner workings, and being in such a place for extended periods of time is not for everybody.
That being said, we the instructors do believe that every developer needs to get a taste of C in order to really be able to delve into the inner workings of how exactly software communicates and interfaces with hardware. That's not really something JavaScript or Python will expose you to. Additionally, once you get acclimated to C, the language provides you with unparalleled control over how your code gets executed on your machine. Some people find the sheer amount of control that C provides you intoxicating.
But before any of that happens, you've gotta get your feet wet with C. So without further ado, let's get started!
If you haven't gotten your C compiler up and running, please do that first. You'll find instructions on how to do that for your specific platform here: https://github.com/LambdaSchool/CS-Wiki/wiki/Getting-Your-C-Compiler-Installed.
This sprint is structured very much like how your introductory JavaScript sprints are structured. There are independent modules, each with their own set of exercises that you'll be tasked with implementing. There's an associated set of tests for all the exercises in each module, which you'll run against your code to check to see if it behaves and functions correctly. The order in which you should tackle these exercises is this:
- fizzbuzz
- strings
- pointers
- malloc
- structs
Stretch Goal Problems
- queue
- quicksort
- hangman
Inside a module directory, type make tests
(just like with the npm install
command needing a package.json
file, the make
command requires a
Makefile
), which will do a couple of things as specified by the Makefile
.
These include compiling your source code inside that module, linking all of the
included header files and libraries, and running the tests for that module. Once
you've gotten all of the tests to pass for that module, move on to the next one.
The code inside the main
functions are for if you want to compile your file
into an executable for debugging purposes. You don't need to edit any of the
code in the main
functions. Just type make
to compile an executable. Then
type ./NAME_OF_EXECUTABLE
(not in caps) to run it, which will execute the code
inside that program's main
function.
For things that go wrong, check out the troubleshooting doc.
1-projects/Intro-to-C-master/strings/
Table of Contents generated with DocToc
In C, arrays are nothing more than contiguous chunks in memory that store a single type of data. Additionally, arrays are static in size, at least in their most basic form. That means that we'll typically need to know the size and/or the amount of data a particular array will be storing when we initialize it. Unlike in higher-level languages, we can't just simply declare an empty array and then start pushing elements onto it willy-nilly.
If we wanted to declare an array of integers, we might do it like so:
int int_array[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
Note the syntax here. We need the square brackets after the array's name to indicate that it is an array to the compiler, and when we declare the initial values of the array, we surround them with curly braces, not square brackets.
Another way we might declare an array is the following:
int another_int_array[20];
With this, we've declared a statically-sized integer array that has space for 20 integers. There's nothing in it initially, but we can now start populating it with integers (and only integers) up to it's specified capacity.
int n = 20 / sizeof(int);
for (int i = 0; i < n; i++) {
another_int_array[i] = i;
}
While we allocated 20 bytes worth of space into the array, keep in mind that a single integer actually takes up more than a single byte of space in memory. To get around this, we can use the sizeof
operator to find out exactly how many bytes a single int
occupies on your machine, and then divide the array capacity by that to get the actual number of integers that can fit inside the array.
If we try to add more integers than the array has capacity for, we'll get a segmentation fault error, which means we've tried to access memory we don't have permission to access. That's what happens when we go outside of an array's bounds.
We'll talk later on about how to handle dynamically-sized data.
So what do arrays have to do with strings? Everything, as it turns out. Strings in C are actually nothing more than arrays of characters. In fact, when declaring a string, you might do it like this:
char[] = "Hello world!";
Under the hood, this declaration becomes
char[] = { 'H', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd', '!', '\0' };
The \0
character at the end represents the null character; every C string is terminated with one of these, and in fact, if you wanted to write a function to find the number of characters in a string, you'd basically just loop through the character array and increment a counter until you found the \0
character.
IMPORTANT NOTE: So far, every language you've worked in has not differentiated between single and double quotes. In C, these actually make a difference. Single quotes delineate a single character, while double quotes delineate string literals. So for example, "a"
is a string literal complete with a terminating null character at the end of it, as opposed to 'a'
which is just the individual character.
The compiler will yell at you if you try to store multiple characters in single quotes.
1-projects/Intro-to-C-master/structs/
Table of Contents generated with DocToc
Another limitation that exists in C that we haven't brought up yet is the fact that arrays in C can only hold a single type of data. Being able to stick any type of data all into the same array is a feature that you probably take for granted coming from JavaScript. Well, you can't do that in C!
Enter structs. Structs are basically C's version of a poor man's object. We can store values of different types inside a struct, which is awesome, but we need to declare the types of the fields that the struct can hold up front. That being said, structs are instrumental when it comes to implementing data structures and more complex types in C.
Let's look at a simple struct definition:
struct Cat {
char *breed;
char *color;
int age;
};
This declares the shape of the Cat struct. Now we'll need to create an instance of it if we want to want to actually use it. Well, what actually defines an instance of something?
In this case, an instance of a struct is some chunk of memory that has been initialized with the shape of said struct. So we'll need to allocate memory for our Cat struct. We can do that with this:
struct Cat *a_cat = malloc(sizeof(struct Cat));
So we're handed a pointer to a chunk of memory that holds exactly the right amount of data for a single instance of a Cat. We take that and cast it to a pointer with the type of struct Cat
since that's the type that is being held in this chunk of memory. We'll also need to go and initialize the values of our Cat instance like so:
a_cat->breed = NULL;
a_cat->color = NULL;
a_cat->age = 0;
What's with these funky arrows? Coming from JavaScript, you're used to using dot notation for accessing members of an object. Structs are poor man's objects, so shouldn't dot notation work here?
The answer is that dot notation is a thing in C, but because in this case we have a pointer to a struct, we need to perform a dereference first in order to get to the actual data the struct contains. That's what the arrow syntax does. It performs a dereference first and then accesses the struct member.
Basically, you can think of it like this:
a_cat->breed == (*a_cat).breed
Allocating memory for structs is one of the most important functions that malloc
serves. Keep in mind though that when we declare a struct, every type in the struct needs to have a known size. Looking at the Cat struct, char *
s and int
s all have a known size, so the entire size of the struct can be calculated. However, we don't know the sizes of the data that the char *
s may be pointing to.
Let's say we have a function called name_cat
that will assign a Cat instance with a given input name. It might look like this:
void name_cat(struct Cat *cat, char *name)
{
int name_length = string_length(name);
cat->name = malloc(name_length);
string_copy(cat->name, name);
}
That's right, we'll need to call malloc
to allocate the appropriate amount of memory to the cat->name
field, and then we can call string_copy
in order to copy each character in the input name
string to the memory that cat->name
now points to.
Yet another abstraction that you're used to from higher-level languages is the garbage collector. A garbage collector is typically part of a languages runtime, and its job is to clean up memory that is used up by your programs.
For example, after you write some JS program that has a bunch of arrays and objects, what happens to the memory that was needed to order to hold those instances? In a high-level language, a garbage collector goes through and figures out that those arrays and objects are no longer being used. It then deallocates or frees up that memory so that it can be reused by other programs. You the programmer never needs to worry about cleaning up after yourself; it's all handled for you automatically!
C doesn't baby you around like that. It expects you to handle the clean up like the grown up you are. Learning to clean up after yourself can get difficult when you're writing more advanced programs in C. For simple programs though, it can be as simple as calling the function free
after you're done with some piece of malloc
'd memory.
The free
function receives a pointer that points to a piece of malloc
'd memory, and it deallocates it so that that memory may be re-used. As you can imagine, once some malloc
'd memory has been free
'd, whatever data was in that chunk of memory is gone, so make sure you're done with the data before free
ing it!
Let's codify this into a simple heuristic that isn't too hard to memorize:
For every call to
malloc
there should be an accompanying call tofree
.
A couple of common errors that arise when it comes to free
ing memory are:
- Forgetting to call
free
on somemalloc
'd piece of memory. This is a problem because that memory doesn't get cleaned up, and you end up with what's called a 'memory leak'. A single memory leak isn't the end of the world, but if you continually forget tofree
your memory, they'll start to pile up and waste precious memory resources that could be used by other programs that actually need that memory. - Calling
free
on a pointer to memory that has already beenfree
'd. This is called a 'double free', and it should be avoided because it may corrupt the state of the memory manager (which is what keeps track of all of the pieces of memory that have been handed out so far), which might cause existing blocks of memory to get corrupted or for future allocations to fail in bizarre ways (for example, the same memory getting handed out on two different successive calls of malloc).
Going back to our Cat struct, we might want to have a Cat_destroy
function that will handle the cleaning up of a Cat instance for us. It'll free all the memory that was allocated during the Cat instance's lifetime.
void Cat_destroy(struct Cat *cat)
{
if (cat->name != NULL) {
free(cat->name);
}
if (cat->breed != NULL) {
free(cat->breed);
}
if (cat != NULL) {
free(cat);
}
}
In all the previous example code, we've had to prepend every type we created with struct
. That's because struct
is part of the newly-created type's name, and as of now, we can't leave it out whenever we're using one of our own artificial types. C provides the typdef
keyword which will ultimately save us some keystrokes. It will allow us to not have to prepend struct
to any of our created types. Here's how we use it:
typedef struct Cat {
char *breed;
char *color;
int age;
} Cat;
We'll add the typedef
keyword in front of our type definition. Then, after the closing brace of our struct, we specify the aliased type we'd like for this user-created type to have. Here we'll just keep it the same as the name of the struct itself, though you could call it something else if you wanted to.
Now, whenever we want to use our Cat
type, we don't need to prepend struct
in front of it. The compiler now knows that when we just specify Cat
that we're referring to our struct Cat
type definition. It's a one-time cost that we pay when we define our types, but it'll save us a lot of keystrokes later on, especially if we're using our types a lot!
1-projects/Intro-to-C-master/
Table of Contents generated with DocToc
runtests.sh: 4: Syntax error: word unexpected (expecting "do")
- Mac:
malformed object
error when runningmake tests
Chief. Windows
If you see this error:
Running unit tests:
: not foundtests.sh: 2: ./tests/runtests.sh:
./tests/runtests.sh: 4: ./tests/runtests.sh: Syntax error: word unexpected (expecting "do")
You have two options:
-
Open the file
tests/runtests.sh
in VS Code in whatever subproject folder you're working in, e.g.fizzbuzz
. Click on the lower right of the screen where it saysCRLF
. ChooseLF
. Save the file. Then the error should go away. -
You can do this from the command line with the
tr
command:
cd tests
cat runtests.sh | tr -d '\r' > runtests.tmp
mv runtests.tmp runtests.sh
The root of the problem is a setting in git that causes all newlines (LF) to
be converted to carriage-return/newline (CRLF). The script runtests.sh
is a
bash script that bash runs, and bash hates \r
and pukes everywhere.
To cause git to not do newline conversion for future clones, run the following:
git config --global core.autocrlf false
This is caused by an older version of the ar
and ranlib
packages being installed.
Sometimes these conflict with the versions installed with xcode.
If running MacPorts:
sudo port selfupdate
sudo port upgrade cctools
If running Brew:
sudo brew update
sudo brew upgrade gcc
1-projects/JavaScript-III-master/
Table of Contents generated with DocToc
This challenge focuses on using the this
keyword as well as getting comfortable with prototypes by building out a fantasy themed video game.
Follow these steps to set up and work on your project:
- Create a forked copy of this project.
- Add your project manager as collaborator on Github.
- Clone your OWN version of the repository (Not Lambda's by mistake!).
- Create a new branch: git checkout -b
<firstName-lastName>
. - Implement the project on your newly created
<firstName-lastName>
branch, committing changes regularly. - Push commits: git push origin
<firstName-lastName>
.
Follow these steps for completing your project.
- Submit a Pull-Request to merge Branch into master (student's Repo). Please don't merge your own pull request
- Add your project manager as a reviewer on the pull-request
- Your project manager will count the project as complete by merging the branch back into master.
- Complete all the exercises as described inside each assignment file.
- To test your
console.log()
statements, open up the index.html file found in the assignments folder and use the developer tools to view the console.
Having a solid understanding of how this
works will give you a huge advantage when you start building with more advanced frameworks. Use the this.js file to traverse through a few this
problems.
The prototype challenge will focus on building prototypes for a fantasy themed game that includes mages, swordsmen, and archers. Follow the prototypes.js instructions closely to create the beginnings of what could be an awesome JavaScript game.
- Read the instructions found within the file carefully to finish the challenges.
- Remember to un-comment the objects and console logs to test your work at the bottom of the page.
1-projects/JS-Exercise-Classes/
Table of Contents generated with DocToc
This challenge focuses on using the new for ES6 class
syntax.
Find the file index.js
and complete the tasks until all of your tests pass.
You can use yesterday's work to help you. However, if you struggled a lot with that assignment, it is recommended that you attempt to re-write all code without "cheating" (peeking at yesterday's code or copy-pasting it).
Plan to commit & push every time you get a new test passing!. Committing often makes it SO much easier to figure out "what broke my code", and helps your TL keep track of how you're doing.
If you run into trouble while coding, fight the good fight for 20 minutes and then get on the help channel. Remember to formulate your help request in a professional manner - like you would at the job - by including error messages, screenshots, and any other pertinent information about the problem, as well as what things you have attempted already while trying to solve it.
Using VSCode and the Command Line:
- Fork repo and add TL as collaborator on Github.
- Clone your fork (not Lambda's repo by mistake!).
cd
into your newly cloned repository.- Create a new branch by typing
git checkout -b <firstName-lastName>
. - Install dependencies by typing
npm install
. - Run tests by typing
npm run test:watch
. - Work on your branch, push commits and create PR as usual.

1-projects/LS-Data-Structures-I-Solution-master/
Table of Contents generated with DocToc
Topics:
- Big-O Notation (Complexity analysis)
- Stacks
- Queues
- Linked Lists
- Hash Tables
- Should have the methods:
add
,remove
, and a getter for the propertysize
add
should accept a value and place it on top of the stack.remove
should remove and return the top value off of the stack.size
should return how many items are on the stack.
- Should have the methods:
enqueue
,dequeue
, and a getter for the propertysize
enqueue
should add an item to the back of the queue.dequeue
should remove an item from the front of the queue.size
should return the number of items in the queue.
- Should have the methods:
addToTail
,removeHead
, andcontains
. addToTail
replaces the tail with a new value that is passed in.removeHead
removes and returns the head node.contains
should searth through the linked list and return true if a matching value is found.- The
head
property is a reference to the first node and thetail
property is a reference to the last node. These are the only two properties that you need to keep track of an infinite number of nodes. Build your nodes with objects.
- Should have the methods:
insert
,remove
, andretrieve
. insert
should take a key value pair and add the value to the hash table.retrieve
should return the value associated with a key.remove
should removed the given key's value from the hash table.- Should properly handle collisions. If two keys map to the same index in the storage table then you should store a 2d array as the value. Make each key/value pair its own array that is nested inside of the array stored at that index on the table.
- Uncomment the final test in
hash-table.test.js
and make the hash-table rebalance. As a hash table increases in size the associated storage table will typically double in size once it reaches a certain capacity. Change the hash table so that it doubles the size of the storage table once it is 75% full. - If you used arrays as your underlying data structure for implementing stacks, queues, and hash table buckets, convert these to use linked lists instead as the underlying data structure. If you started off with linked lists, convert these to use arrays. In order to do this, you'll need to export your linked list implementation by wrapping it inside a
module.exports
. Just comment out your initial implementation; don't delete perfectly good code! - Make your linked list implementation a doubly linked list.
1-projects/LS-Data-Structures-II-Solution-master/
Table of Contents generated with DocToc
Topics:
- Tree
- Graph
- Binary Search Tree
- Should have the methods:
addChild
, andcontains
- Each node on the tree should have a
value
property and achildren
array. addChild(value)
should accept a value and add it to that node'schildren
array.contains(value)
should returntrue
if the tree or its children the given value.- When you add nodes to the
children
array usenew Tree(value)
to create the node. - You can instantiate the
Tree
class inside of itself.
- Should have the methods:
insert
,contains
,depthFirstForEach
, andbreadthFirstForEach
. insert(value)
inserts the new value at the correct location in the tree.contains(value)
searches the tree and returnstrue
if the the tree contains the specified value.depthFirstForEach(cb)
should iterate over the tree using DFS and passes each node of the tree to the given callback function.breadthFirstForEach(cb)
should iterate over the tree using BFS and passes each node of the tree to the given callback function (hint: you'll need to either re-implement or import a queue data structure for this).
- Should have methods named
addNode
,contains
,removeNode
,addEdge
,getEdge
, andremoveEdge
addNode(newNode, toNode)
should add a new item to the graph. IftoNode
is given then the new node should share an edge with an existing nodetoNode
.contains(value)
should return true if the graph contains the given value.removeNode(value)
should remove the specified value from the graph.addEdge(fromNode, toNode)
should add an edge between the two specified nodes.getEdge(fromNode, toNode)
should returntrue
if an edge exists between the two specified graph nodes.removeEdge(fromNode, toNode)
should remove the edge between the two specified nodes.
- Add a method to the
Graph
class that searches through the graph using edges. Make this search first as a depth first search and then refactor to a breadth first search. - Read up on heaps here. Then implement one!
- Read up on red-black trees here. Then implement one!
1-projects/master/
Table of Contents generated with DocToc
In this project you will be using the concepts learned in the Git for Web Development lesson to fork/clone/push/and submit a PR for each project during this sprint.
This project consists of two parts:
You will need to follow the Lambda School Git Workflow to add a file to this project follow the steps below:
- Create your own version of this repo - Fork
- Clone this repo
- Create a branch
git checkout -b 'firstName-lastName'
- Add a file to the project called
yourFirstName-yourLastName
.txt. This should contain the link to your completed codepen from part 2 as well as the review questions/answers - Run your usual git commands for adding/committing and pushing Be sure to push to your branch!
- Add a file to the project called
- Create a Pull-Request to submit your work
- Use your own student fork as the base (compare across forks, base-fork -> main).
- fork this codepen https://codepen.io/BritHemming/pen/eYYEoPa?editors=1100
- You will be marking up all of the HTML and styling it to look like this: https://codepen.io/BritHemming/full/jONmxOm using CSS
- this should be review from yesterday/ extra practice
- After you are finished please copy the review questions into your .txt file and answer them
- don't forget to add, commit and push your changes.
Stretch Review questions: 1. What is the difference between an inline element and a block element? 2. What happens when an element is positioned absolutely? 3. How do I make an element take up only the amount of space it needs but also have the ability to give it a width? 4. Name 3 elements that are display block by default, 2 elements that are display inline by default, and 1 element that is display inline-block by default 5. In your own words, explain the box model. What is the fix for the box model? Stretch Git Tasks
-
While the processes learned here will set you up to be successful in most situations, they are just the tip of the iceberg in learning Git. Independently research the following topics to learn more about Git.
- Research and understand what a
merge conflict
is and how to resolve it. - Research the Git commands
pull
,rebase
,merge
. These commands will allow you to bring in changes that other developers push to the main branch. - Research the Git commands
reset
,revert
,clean
. These commands will allow you to go back and amends previous commits you have made.
- Research and understand what a
-
Research and set up a Graphical User Interface (GUI) Git console.
-
Research and setup SSH keys with GitHub, so that you do not need to input your username/password each time you push.
1-projects/Mongo-Mini-II-Solution-master/
Table of Contents generated with DocToc
cd
into your project directory.npm install
to receive your dependencies.- fire up your
mongod
server from your root dir or create adata
dir in this project to store your documents from mongo there.mongod --dbpath data
.
- When you open
models.js
you'll see we've already included your Schema. You're welcome. - You'll also notice that this sprint comes with a
people.json
file, and apopulateDbScript.js
. this script will grab thosepeople
and add them into your db as long as you have your mongo server up and running. - RUN:
node populateDbScript.js
get receive all your data.
- write a
GET
request to/users
that simply returns all the people. - write a
GET
request to/users/:direction
that takes the given string and returns back a list of sorted data alphebetically.- hint direction can be
asc
ordesc
so in your.sort()
method you'll have to conditionally check, and we are going to be sorting by userfirstName
- hint direction can be
- write a
GET
request/user-get-friends/:id
that returns a single users's friends.
- lastly write a
PUT
that updates a usersfirstName
lastName
1-projects/nested-data-exercises-master/
Table of Contents generated with DocToc
This challenge will test your ability to work with nested Objects and Arrays.
Uses real-world 'inspired' data.
If you are experienced on this topic, expand the "π‘ Challenge Yourself!" section (following the instructions.)
- Instructions
- Get Started
- Preview Test Data
- Stuck? Check Hints
Task: Complete the 10+ functions in index.js
and pass all tests specified in test/index.test.js
β
The difficulty increases as you progress.
Before you begin coding, review test data below
getName(character)
->Luke Skywalker
getFilmCount(character)
-> 5getFirstStarshipName(character)
->X-wing
getSummary(character)
->Luke Skywalker, 172cm, 77kg. Featured in 5 films.
getVehiclesCostInCreditsSumTotal(character)
-> 8000getStarshipPassengerAndCrewSumTotal(character)
-> 27getNthFilm(character, filmNumber)
filmNumber=1 ->A New Hope
getCargoCapacityTotal(character)
-> 80124getFastestStarshipName(character)
->X-wing
getLargestCargoStarshipModelName(character)
->Lambda-class T-4a shuttle
getSlowestVehicleOrStarshipName(character)
->Imperial Speeder Bike
π‘ Challenge Yourself! (expand for stretch tips)
- Research & use different patterns. (Destructuring, move common code into reusable helper methods, functional programming techniques)
- Trade completed code with a peer:
- Pair program: Take turns (30-60 min.) working through a refactor. Talk through & optimize as needed.
- Trade code for feedback! (Example format: 3&1, 3 things that you liked and 1 to improve.)
- Time yourself. See if you can beat your own time starting over. Speed run!
- See how many tests you can pass/complete before Googling or asking for help.
- When you're finished, refactor & improve readability. Write up why it is improved.
3 options are included below.
The CodeSandbox option is fast & highly recommended.
1. Fastest Option
2. Local Setup Instructions: From Command Line
- Fork & clone to your local computer
cd
into your newly cloned repository- Install using
npm
- Run test command
git clone <insert your git clone url here>
cd <repo folder name>
npm install
npm run test:watch
#####
### Or without fs watching:
# npm test
NOTE: In local development, use the file watcher command: npm run test:watch
.
3. Local Setup Instructions: Run Tests in Browser
- Fork & clone to your local computer
cd
into your newly cloned repository- Install and Start using
npm
git clone <insert your git clone url here>
cd <repo folder name>
npm install
npm start
Example data your code will be tested against.
// Complete Test Data Object (credit: https://SWAPI.co)
// Side note: Yes Star Wars π€ purists. It's a bit out of date. Talk to SWAPI about it.
// Focus & follow instructions above. π€
{
"name": "Luke Skywalker",
"height": "172",
"mass": "77",
"hair_color": "blond",
"skin_color": "fair",
"eye_color": "blue",
"birth_year": "19BBY",
"homeworld": "Tatooine",
"films": [
"A New Hope",
"The Empire Strikes Back",
"Return of the Jedi",
"Revenge of the Sith",
"The Force Awakens"
],
"species": [
"Human"
],
"vehicles": [
{
"name": "Snowspeeder",
"model": "t-47 airspeeder",
"manufacturer": "Incom corporation",
"cost_in_credits": null,
"length": "4.5",
"max_atmosphering_speed": "650",
"crew": 2,
"passengers": 0,
"cargo_capacity": "10"
},
{
"name": "Imperial Speeder Bike",
"model": "74-Z speeder bike",
"manufacturer": "Aratech Repulsor Co