DappCamp - Become a Web 3.0 Developer using Solidity in 3 Weeks - Cohort 2



Last updated: January 28th, 2024

Why I Decided To Apply To The Course

Back in December 2021, I decided to apply to the DappCamp - Become a Web 3.0 developer in 3 weeks course after seeing a tweet from Coinbase's CEO Brian Armstrong. The course was created by Preethi Kasireddy, a former Coinbase Software Engineer.

During the wild bull market of 2021, I spent a lot of time watching cryptocurrency YouTube videos, trying to catch up on the industry after mostly ignoring it since 2017. In the process, I realized it's both difficult and time consuming to chase market narratives. By the time I was learning about a topic, it was almost always too late to invest in it. The developers in this space are ahead of those driving attention to projects and narratives, since they are creating them.

Admission To Course

The course was designed to have a limited amount of people. This would enable individuals and teams to have one-on-one time with a technical coach. In this course, the second cohort, there ended up being 93 people of various backgrounds, and experience levels, from around the world plus 5 coaches/ instructors.

Two coding exercises on HackerRank needed to be completed for an applicant to be considered. These were able to be written in one of many programming languages, I used C#.

The first question was about card sorting and knowing where a specific card was in a deck when shuffled in different ways. The second question was about determining the minimum number of clicks on a remote control to navigate between channels, assuming back, up, down and individual numeric keys could be entered with a large quantity of channels plus an exclusion list. They were both somewhat challenging problems, verified with automated test cases run by the website then reviewed by a course instructor. This process ensured that everyone had a technical background, similar to what's required by most software jobs.

In addition to the coding test, you had to deposit $300 for processing your application. If you ended up being admitted to the course, you were required to pay an additional $2,700, otherwise the original amount was refunded. You could pay for the course with a credit or debit card.

Prerequisites

Course Overview

The course consisted of two main components. One was lectures, discussions, Q&A plus hands on coding. The other was a group project, to create and demo a Dapp with 4-5 people.

Lecture slides and recordings were available for download in case you were unable to attend or wanted to review them, available on Maven. Team and coach communication occurred in Discord as well as over Zoom and Google Hangouts.

Course Lecture Schedule

  • Jan 9 (Sun): individual introductions and course overview
  • Jan 12 (Wed): lecture, break out sessions
  • Jan 13 (Thu): guest lecture by Nader Dabit of The Graph plus Q&A
    • Understanding read limitations in blockchains and how The Graph fits in
  • Jan 15 (Sat): lecture, break out sessions and guest lecture by Jess Sloss of SeedClub plus Q&A
  • Jan 16 (Sun): lecture, coding breakout session and coding Q&A
    • Solidity fundamentals: data types, functions and transactions
    • Remix IDE
    • Homework
      • Quiz
      • Smart Contract: Pet Park - implement add, borrow and giveAnimalBack functions which enable populating a pet park with a list of animals, allowing individuals to borrow those pets (with demographic business logic) and then give them back for others to borrow again
  • Jan 19 (Wed): lecture and coding Q&A
  • Jan 20 (Thu): guest lecture and Q&A by: CoopaTroopa
    • DAOs
    • Community building discussion
    • Non-technical recommendations for participating in projects
  • Jan 22 (Sat): lecture and coding Q&A
  • Jan 23 (Sun): lecture
    • Different solutions for Ethereum 1.0’s transaction throughput problem
      • L1 optimizations, L2 solutions like rollups and sidechains, and how Ethereum 2.0 will scale the network with sharding and proof-of-stake
    • Alternative blockchains (BSC, SOL, and AVAX)
    • Classical and Nakamoto consensus algorithms
    • How Polygon works
  • Jan 25 (Tue): guest lecture plus Q&A by: Zahoor Mohamed
    • Current ethereum setup that consists of the execution engine and the proof-of-work model
    • Ethereum 2.0, how its execution layer, the beacon chain, and POS (Proof-of-Stake) work together
  • Jan 26 (Wed): lecture
    • How to optimize smart contracts to save gas fees
      • Techniques like variable packing, calldata and functions utilization, short-circuiting, and unnecessary assignments prevention
    • Common security practices
      • Exploits which could drain a contract
      • Re-entrancy attack and its prevention techniques
      • Fail-safe modes and the check-effects-interaction pattern
    • Software Engineering principles like Defensive Programming, input validation, and test coverage to Solidity software
    • Solhint and the importance of third-party audits
    • Homework
  • Jan 27 (Thu): guest lecture plus Q&A by: Mudit Gupta
    • Smart contract security
      • High unit tests coverage
      • Code reviews and audits
      • Formal verification of your smart contract
    • Proxy pattern
    • Different tools for testing and development
  • Jan 28 (Fri): lectures
  • Jan 29 (Sat): guest lecture
  • Jan 30 (Sun): demo day

Dapp Project Schedule

  • Jan 9 (Sun) - Jan 12 (Wed): Teams finalized + Begin brainstorming ideas
  • Jan 13 (Thu) - Jan 14 (Fri): Idea finalized + Coach 1:1s completed
  • Jan 15 (Sat) - Jan 16 (Sun): Whitepaper draft complete
  • Jan 17 (Mon) - Jan 25 (Tue): Build
  • Jan 26 (Wed) - Jan 29 (Sat): Polish + Prep for Demo day

End Result

The team I was on and myself were able to successfully make a smart contract which allowed people to do social lending. A user would ask for funds, from here they would get a URL they could share. People could fund the loan with the assumption of payback with interest.

If the loan was paid out, every user would be paid their initial deposit and the interest. Below is the code for the project:

Tests


Comments

No Comments

Post Comment

Prove you are human 6 + 4 =



Join my email list!



ryan
About Me

With 15 years in tech, I've excelled as a senior software engineer, specializing in ASP.NET, C#, SQL, Azure, and front-end technologies. I've led diverse projects across various sectors, from startups to global corporations, particularly during my decade in the San Francisco Bay Area.


Sign Up With SoftSys Hosting! (My host)