Skip to content

Foundational concepts

The foundational concepts section covers as name suggests foundational aspects of this course to learners to be well-equiped with tools, techniques and fundamental concepts

  • Machine learning fundamentals
  • Cloud computing and Data fundamentals
  • Learn how to use LINUX environment
  • Learn how to work on development environment using VSCode, Docker, Kubernetes
  • Learn Python or R basic programming
  • Get started with GitHub and how to use Git tools to manage code
  • Get started with Huggingface and use Gradio app to build a basic application for prototyping
  • Learn how to work on Jupyter Notebook for data analysis
  • Agile methodology, SCRUM, Pair programming, Continous Improvement (CI), Continous Delivery (CD), GitOps, DevOps, DevSecOps

The foundational section will cover following topics in detail:

Linux Basics:

  • Linux file system structure and navigation.
  • Command-line interface (CLI) usage and common commands.
  • File and directory permissions.
  • Process management and basic system monitoring.
  • Text editing with command-line editors like Vim or Nano.

Containerization Concepts:

  • Understanding the concept of containers and their benefits.
  • Introduction to Docker and its architecture.
  • Docker installation and configuration on Linux.
  • Working with Docker images and containers.
  • Building custom Docker images with Dockerfiles.
  • Docker networking and volume management.

Kubernetes Concepts:

  • Introduction to Kubernetes and its features.
  • Kubernetes architecture and components.
  • Setting up a Kubernetes cluster using Minikube or kubeadm.
  • Deploying and managing applications using Kubernetes manifests (YAML files).
  • Scaling and updating applications in Kubernetes.
  • Kubernetes networking and service discovery.

Container Orchestration:

  • Container orchestration basics and the need for orchestration platforms.
  • Overview of container orchestration tools, with a focus on Kubernetes.
  • Understanding Kubernetes namespaces, deployments, services, and pods.
  • Working with Kubernetes resources and controllers.
  • Container orchestration patterns, such as rolling updates and blue-green deployments.
  • Monitoring, logging, and debugging in Kubernetes.

Linux System Administration for Containers:

  • Managing Linux system resources for containers.
  • Docker daemon and container runtime configuration.
  • Securing Docker and Kubernetes environments.
  • Managing container networking, including network plugins and overlay networks.
  • Storage options for containers in Linux.
  • Linux kernel features related to containers, like namespaces and cgroups.

Containerized Application Development:

  • Developing applications with a container-first mindset.
  • Writing Dockerfiles and building optimized Docker images.
  • Best practices for designing microservices architectures.
  • Containerizing existing applications and deploying them in Kubernetes.
  • Working with environment variables and secrets in containers.
  • CI/CD pipelines for building, testing, and deploying containerized applications.

Troubleshooting and Debugging:

  • Common issues and challenges in containerized environments.
  • Debugging techniques and tools for containers and Kubernetes.
  • Troubleshooting networking problems in containers.
  • Logging and log management in a containerized setup.
  • Monitoring and metrics collection for containerized applications.

These topics provide a solid foundation for understanding and using Linux in conjunction with Kubernetes, Docker, and containerization concepts. Hands-on practice and experimentation with real-world examples are essential to gain practical experience and proficiency in these technologies.

Learn how to work on development environment using VSCode, Docker, Kubernetes

  1. Introduction to Development Environment: Understanding the importance of a development environment and its role in software development.
  2. Visual Studio Code (VSCode): Overview of VSCode as a popular and powerful code editor, including its features, extensions, and customization options.
  3. Installing and Configuring VSCode: Step-by-step instructions on how to download, install, and configure VSCode for your specific operating system and programming languages.
  4. Workspace and Project Management: Understanding how to create and manage workspaces and projects in VSCode for efficient code organization and collaboration.
  5. Code Editing and Productivity Features: Exploring the various code editing and productivity features of VSCode, such as IntelliSense, code snippets, multi-cursor editing, and keyboard shortcuts.
  6. Version Control Integration: Integrating VSCode with version control systems like Git, including features like source control management, viewing diffs, and resolving merge conflicts.
  7. Debugging: Utilizing the built-in debugging capabilities of VSCode to identify and resolve issues in your code, including setting breakpoints, stepping through code, and inspecting variables.
  8. Extensions and Marketplace: Exploring the rich ecosystem of extensions available in the VSCode marketplace, including extensions for specific programming languages, frameworks, and tools.
  9. Introduction to Docker: Understanding Docker and its role in containerization, including its benefits for development and deployment.
  10. Installing Docker: Step-by-step instructions on how to install Docker on your operating system.
  11. Dockerizing Applications: Containerizing applications using Docker, including creating Dockerfiles, building images, and running containers.
  12. Docker Compose: Managing multi-container applications using Docker Compose, including defining services, volumes, and networks in a YAML configuration file.
  13. Introduction to Kubernetes: Overview of Kubernetes as a container orchestration platform and its advantages for managing containerized applications.
  14. Installing Kubernetes: Step-by-step instructions on how to install and set up a local Kubernetes cluster, such as using Minikube or Docker Desktop with Kubernetes.
  15. Deploying Applications on Kubernetes: Deploying containerized applications on Kubernetes, including creating deployment manifests, managing pods, services, and ingress resources.
  16. Scaling and Updating Applications: Scaling application replicas, updating container images, and rolling out deployments in Kubernetes.
  17. Monitoring and Logging: Monitoring and logging containerized applications in Kubernetes using built-in tools or third-party solutions.
  18. CI/CD Integration: Integrating VSCode, Docker, and Kubernetes into a continuous integration and continuous deployment (CI/CD) workflow using tools like Jenkins, GitLab CI/CD, or Azure DevOps.
  19. Best Practices and Tips: Best practices for using VSCode, Docker, and Kubernetes effectively, including code organization, container security, and performance optimization.
  20. Resources and Community: Providing additional resources, tutorials, and community platforms for further learning and staying updated on development environments, VSCode, Docker, and Kubernetes.

Learn Python or R basic programming

TODO

Get started with GitHub and how to use Git tools to manage code

GitHub is a web-based platform that uses Git for version control and collaboration. It allows you to store and manage your code repositories online. Git is a distributed version control system that allows you to track changes in your code over time and collaborate with others on the same project.

To get started with Git, you need to install it on your computer. You can download Git from the official website . Once you have installed Git, you can start using it by creating a new repository or cloning an existing one.

GitHub provides a lot of resources to help you get started with Git. You can find tutorials, documentation, and videos on their website. They also have a learning lab that provides interactive courses on Git and GitHub .

Download Git from https://git-scm.com

git config --global user.name "[name]"

git config --global user.email "[email address]"

Large file storage

To work with large files like audio, videos, datasets, and graphics on GitHub.com

Download Git LFS from https://git-lfs.com

git lfs install

Review changes using

cat ~/.gitconfig
  1. Introduction to Version Control: Understanding the concept of version control and its importance in software development.
  2. Introduction to Git: Overview of Git, a popular distributed version control system, and its benefits for managing code.
  3. Installing Git: Step-by-step instructions on how to install Git on various operating systems.
  4. Configuring Git: Configuring Git with user information, including name and email address.
  5. Git Basics: Understanding the fundamental concepts of Git, such as repositories, commits, branches, and tags.
  6. Creating a Repository: Creating a new Git repository to start tracking changes in code.
  7. Git Workflow: Exploring the typical Git workflow, including staging changes, committing them, and pushing to remote repositories.
  8. Branching and Merging: Understanding branching and merging strategies in Git, including creating branches, switching between branches, merging changes, and resolving conflicts.
  9. Collaborating with Others: Using Git to collaborate with other developers, including cloning repositories, pulling changes, and pushing changes to remote repositories.
  10. Working with Remotes: Managing remote repositories, such as GitHub, GitLab, or Bitbucket, including adding remotes, pushing branches, and fetching changes.
  11. GitHub Basics: Introduction to GitHub, a web-based hosting service for Git repositories, and its features.
  12. Creating a GitHub Repository: Step-by-step instructions on how to create a new repository on GitHub and push local code to it.
  13. Pull Requests: Understanding the concept of pull requests on GitHub and how they facilitate code review and collaboration.
  14. Branch Protection and Code Reviews: Configuring branch protection rules on GitHub to enforce code review before merging changes.
  15. Forking and Contributing to Projects: Forking a repository on GitHub, making changes, and creating pull requests to contribute to open-source projects.
  16. Git Tools and Utilities: Exploring useful Git tools and utilities, such as Git GUI clients, diff tools, and code editors with Git integrations.
  17. Git Best Practices: Best practices for using Git effectively, including commit guidelines, branch naming conventions, and code organization strategies.
  18. Troubleshooting and Tips: Common issues and troubleshooting techniques in Git, as well as tips and tricks for optimizing Git usage.
  19. Git Resources and Community: Providing additional resources, tutorials, and community platforms for further learning and staying updated on Git and GitHub.

Get started with Huggingface and use Gradio app to build a basic application for prototyping

  1. Introduction to Huggingface: Overview of what Huggingface is and its role in natural language processing (NLP) tasks.
  2. Huggingface Transformers: Understanding the Transformers library and its various components for NLP tasks, including pre-trained models, tokenizers, and pipelines.
  3. Setting up the Environment: Steps to install Huggingface and its dependencies, such as PyTorch or TensorFlow.
  4. Tokenization with Huggingface: Exploring different tokenization techniques provided by Huggingface and their significance in NLP tasks.
  5. Loading Pre-trained Models: How to load and use pre-trained models from Huggingface's model hub for various NLP tasks, such as text classification, named entity recognition, or question-answering.
  6. Fine-tuning Models: Overview of fine-tuning pre-trained models with custom datasets and specific tasks using Huggingface's library.
  7. Introduction to Gradio: Understanding Gradio and its role in building user-friendly UIs for machine learning models.
  8. Installing Gradio: Step-by-step instructions to install Gradio and its dependencies.
  9. Building Gradio UIs: Creating interactive interfaces for Huggingface models using Gradio, including input and output components.
  10. Integrating Huggingface with Gradio: Demonstrating how to combine the power of Huggingface models and Gradio UIs to create interactive NLP applications.
  11. Deploying Gradio Apps: Deploying Gradio apps on local machines or on cloud platforms, such as Heroku or Google Cloud, to make them accessible to others.
  12. Best Practices and Tips: Providing tips and best practices for working with Huggingface and Gradio, including optimizing performance, handling large datasets, and improving user experience.
  13. Advanced Topics: Exploring advanced topics related to Huggingface and Gradio, such as model interpretation, ensemble models, or building multi-modal applications.
  14. Resources and Community: Sharing additional resources, documentation, and community forums where learners can find support, tutorials, and stay up-to-date with the latest developments in Huggingface and Gradio.

Learn how to work on Jupyter Notebook for data analysis

  1. Introduction to Jupyter Notebook: Overview of Jupyter Notebook and its significance in data analysis and interactive computing.
  2. Installing Jupyter Notebook: Step-by-step instructions to install Jupyter Notebook on your local machine.
  3. Jupyter Notebook Interface: Exploring the Jupyter Notebook interface and understanding its various components, such as cells, toolbars, and menus.
  4. Creating and Managing Notebooks: Creating new notebooks, opening existing ones, and managing notebook files.
  5. Markdown Cells: Understanding the Markdown language and how to use Markdown cells in Jupyter Notebook for documentation and formatting.
  6. Code Cells: Writing and executing code in Jupyter Notebook using code cells.
  7. Keyboard Shortcuts: Learning useful keyboard shortcuts for navigating, editing, and running code in Jupyter Notebook efficiently.
  8. Working with Data: Loading and manipulating data in Jupyter Notebook, including reading data from files, working with different data formats (e.g., CSV, Excel), and cleaning and transforming data.
  9. Data Visualization: Creating interactive and informative visualizations using popular Python libraries like Matplotlib, Seaborn, and Plotly in Jupyter Notebook.
  10. Exploratory Data Analysis (EDA): Performing EDA tasks in Jupyter Notebook, such as data profiling, summary statistics, data exploration, and data visualization.
  11. Statistical Analysis: Conducting statistical analysis using Python libraries like NumPy, Pandas, and SciPy in Jupyter Notebook, including descriptive statistics, hypothesis testing, and regression analysis.
  12. Machine Learning with Jupyter Notebook: Overview of using Jupyter Notebook for machine learning tasks, including model training, evaluation, and hyperparameter tuning using libraries like Scikit-learn or TensorFlow.
  13. Interactive Widgets: Enhancing interactivity in Jupyter Notebook using interactive widgets like sliders, dropdowns, and buttons.
  14. Notebook Extensions and Magic Commands: Exploring useful notebook extensions and magic commands to extend the functionality and capabilities of Jupyter Notebook.
  15. Sharing Notebooks: Different ways to share Jupyter Notebooks with others, including exporting notebooks to different formats (e.g., HTML, PDF) and sharing notebooks on platforms like GitHub or Jupyter Notebook Viewer.
  16. Jupyter Notebook in Data Science Workflow: Understanding the role of Jupyter Notebook in the data science workflow and integrating it with other tools and frameworks like Git or Docker.
  17. Best Practices and Tips: Tips for organizing and structuring notebooks, documenting code, and following best practices for reproducibility and collaboration.
  18. Jupyter Notebook Extensions: Overview of popular Jupyter Notebook extensions for enhancing productivity and adding additional functionalities.
  19. Resources and Community: Providing additional resources, tutorials, and community platforms for further learning and staying updated on Jupyter Notebook and data analysis techniques.

Agile methodology, SCRUM, Pair programming, Continous Improvement (CI), Continous Delivery (CD), GitOps, DevOps, DevSecOps

  1. Introduction to Agile Methodology: Overview of Agile principles and values, and its significance in modern software development.
  2. Scrum Framework: Understanding the Scrum framework within Agile, including roles (Scrum Master, Product Owner, Development Team), ceremonies (Sprint Planning, Daily Standup, Sprint Review, Sprint Retrospective), and artifacts (Product Backlog, Sprint Backlog, Increment).
  3. Pair Programming: Exploring the concept of pair programming, its benefits, and best practices for effective collaboration and knowledge sharing.
  4. Continuous Improvement (CI): Understanding the concept of Continuous Improvement and its role in Agile development, including practices such as retrospectives, feedback loops, and process optimization.
  5. Continuous Delivery (CD): Overview of Continuous Delivery practices and techniques, including automated builds, automated testing, and deployment pipelines, to ensure frequent and reliable software releases.
  6. GitOps: Understanding the GitOps approach and its benefits in managing infrastructure and deployments through declarative configuration stored in Git repositories.
  7. DevOps: Overview of DevOps culture, practices, and principles, focusing on collaboration between development and operations teams to streamline software development and deployment.
  8. DevSecOps: Exploring the integration of security practices and principles into the DevOps workflow, including security automation, code scanning, vulnerability management, and secure deployment pipelines.
  9. Agile Project Management Tools: Introduction to popular Agile project management tools, such as Jira, Trello, or Azure Boards, for managing Agile projects, backlogs, and sprint planning.
  10. Agile Metrics and Reporting: Understanding the importance of metrics in Agile projects, including velocity, burn-down charts, and cycle time, and how to effectively report progress and performance.
  11. Agile Estimation Techniques: Exploring different Agile estimation techniques, such as story points, planning poker, or t-shirt sizing, for estimating effort and complexity of user stories or tasks.
  12. Agile and Distributed Teams: Best practices for managing Agile projects with distributed teams, including remote collaboration tools, communication strategies, and adapting ceremonies for remote work.
  13. Agile Transformation: Strategies and challenges in implementing Agile methodologies within organizations, including change management, team empowerment, and cultural shifts.
  14. Agile and Product Management: Integration of Agile practices with product management, including user story mapping, prioritization techniques, and feature release planning.
  15. Agile and Quality Assurance: Incorporating quality assurance practices within Agile development, such as automated testing, test-driven development (TDD), and continuous integration.
  16. Agile and User Experience (UX): Collaboration between Agile development teams and UX designers, including user research, iterative prototyping, and user-centered design in Agile workflows.
  17. Agile and Stakeholder Management: Effective stakeholder engagement and communication in Agile projects, including sprint reviews, demos, and managing stakeholder expectations.
  18. Agile in Different Industries: Exploring the application of Agile methodologies beyond software development, such as Agile marketing, Agile HR, or Agile in manufacturing.
  19. Resources and Community: Providing additional resources, books, certifications, and community platforms for further learning and staying updated on Agile methodologies, Scrum, DevOps, and related topics.