CS Masterclass - Daywise Plan

Day 0: Pre-Preparation

  • Ensure a working development setup for your language of choice, where you can debug the code
  • Ensure there is git installed and working

Day 1: Getting Started

  • Welcome and Overview of the Masterclass
    • Reviewing and updating the day-wise plan
  • Version Control
    • Creating a Gitlab project
    • Git branching
    • protect the main branch
    • using merge requests
  • Setting up the Development Environment
    • Configuring VSCode with devcontainers
  • Hands-on
    • Setting up the Project Structure
    • Sum of 'n' numbers application
    • Use ChatGPT and write Automated verification of the function
    • Debugging Techniques in VSCode
    • Implementing Console Input and Output
  • If you get done with assignments
    • Use Test frameworks in the language
    • Try more problems like fibonacci, or pick up from LeetCode

Day 2: More Tests, and Expense Tracker

  • Summarise previous day's learnings
    • Discussions:
      • Understanding "Functions" and Data
      • Functional Style Programming vs OOP
      • CPU architecture, Memory Communication, and memory pages (Code+Data)
    • Continue building Tests with examples from LeetCode
    • Add dynamic tests, and longevity testing concepts
  • Introduction to Expense Tracker - Details in the Assignment section
  • Hands-on
    • Implementation of the Expense Tracker (in-memory)
    • Automated Tests

Day 3: Expense Tracker - 2 tier

  • Summarise previous learnings
  • Discussion
    • Distributed computing concepts
  • Hands-on
    • Splitting the Project into "Console" and "Business Logic Server (in-memory)"
    • Automated Tests
      • Local inside business logic
      • Over the network
      • Longevity tests

Day 4: Database Persistence

  • Summarise previous learnings
  • Discussion:
    • Introduction to Database Concepts
    • Records, Indexes
  • Hands-on
    • Split business logic and DB
    • Implementing DB write to a Persistent Store
    • Automated tests

Day 5: Cluster

  • Summarise previous learnings
  • Discussion
    • Distributed computing concepts - More
    • Network, need and related challenges
  • Hands on
    • Setting up a network on Docker / Docker Compose
    • Running multiple servers
    • Running tests against multiple servers

Day 6:

  • Discussion
    • DB Sync strategies
  • Hands on
    • Implement DB Sync strategies
    • Test against failure

Day 7:

  • Discussion
    • Addressing Challenges
    • Q&A Session
  • Hands on
    • Complete open tasks


Expense Tracker

  • Have at least two users whose expense we will be tracking, two or more as per your convenience

  • Each person will have its expense tracker which will be in memory. Now it is up to you how to want to create the array, either one array containing the whole expense tracker or multiple arrays for multiple fields or one array per user

  • Keep a track of receiving and spending

For the Receiving part, the data needed to be tracked is:

  • Date when the user received the money
  • The amount the user received

For the Spending part, the data needed to be tracked is:

  • Date when the user spent the money
  • Amount the user spent
  • And on what the money was spent

Build a console based, menu driven application to do the following:

  • Money received
  • Money spent
  • The list of all the transactions
  • The current balance

Test cases are required for each function, they should cover all the scenarios edge cases, boundary condition validations, and valid conditions