diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml new file mode 100644 index 0000000..85c9d65 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -0,0 +1,111 @@ +name: Bug Report +description: Report a bug in the code or documentation +title: "[Bug]: " +labels: ["bug"] +assignees: [] + +body: + - type: markdown + attributes: + value: | + Thanks for taking the time to report a bug! Please fill out the form below. + + - type: dropdown + id: bug-type + attributes: + label: Bug Type + description: What type of bug are you reporting? + options: + - Code Compilation Error + - Code Runtime Error + - Documentation Error + - Typo/Grammar Issue + - Other + validations: + required: true + + - type: dropdown + id: language + attributes: + label: Programming Language + description: Which language does this bug affect? + options: + - C++ + - Java + - Both + - Not Applicable + validations: + required: true + + - type: input + id: location + attributes: + label: File/Folder Location + description: Where is the bug located? + placeholder: "e.g., OOP in C++/Lecture_02/1.cpp" + validations: + required: true + + - type: textarea + id: description + attributes: + label: Bug Description + description: A clear description of what the bug is + placeholder: Describe the bug in detail + validations: + required: true + + - type: textarea + id: expected + attributes: + label: Expected Behavior + description: What did you expect to happen? + placeholder: Describe expected behavior + validations: + required: true + + - type: textarea + id: actual + attributes: + label: Actual Behavior + description: What actually happened? + placeholder: Describe actual behavior + validations: + required: true + + - type: textarea + id: steps + attributes: + label: Steps to Reproduce + description: How can we reproduce this bug? + placeholder: | + 1. Navigate to '...' + 2. Compile with '...' + 3. Run '...' + 4. See error + validations: + required: false + + - type: textarea + id: environment + attributes: + label: Environment + description: Your development environment + placeholder: | + - OS: [e.g., Ubuntu 22.04, Windows 11, macOS 14] + - Compiler: [e.g., g++ 11.3, MSVC 2022, clang 14] + - Java Version: [e.g., JDK 17, JDK 21] + value: | + - OS: + - Compiler/JDK: + validations: + required: false + + - type: textarea + id: additional + attributes: + label: Additional Context + description: Add any other context, screenshots, or error messages + placeholder: Any additional information + validations: + required: false diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml new file mode 100644 index 0000000..b6d6070 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -0,0 +1,11 @@ +blank_issues_enabled: false +contact_links: + - name: Course Discussion Forum + url: https://github.com/M-F-Tushar/CSE-1201-Object-Oriented-Programming-Language/discussions + about: Ask questions and discuss topics with the community + - name: Contributing Guidelines + url: https://github.com/M-F-Tushar/CSE-1201-Object-Oriented-Programming-Language/blob/main/CONTRIBUTING.md + about: Learn how to contribute to this repository + - name: Getting Started Guide + url: https://github.com/M-F-Tushar/CSE-1201-Object-Oriented-Programming-Language/blob/main/GETTING_STARTED.md + about: Setup instructions and beginner's guide diff --git a/.github/ISSUE_TEMPLATE/feature_request.yml b/.github/ISSUE_TEMPLATE/feature_request.yml new file mode 100644 index 0000000..37fd90c --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature_request.yml @@ -0,0 +1,116 @@ +name: Feature Request +description: Suggest a new feature or improvement +title: "[Feature]: " +labels: ["enhancement"] +assignees: [] + +body: + - type: markdown + attributes: + value: | + Thanks for suggesting a feature! Please describe your idea below. + + - type: dropdown + id: feature-type + attributes: + label: Feature Type + description: What type of feature are you requesting? + options: + - New Code Example + - New Documentation + - Repository Enhancement + - CI/CD Improvement + - Other + validations: + required: true + + - type: dropdown + id: language + attributes: + label: Programming Language + description: Which language does this feature relate to? + options: + - C++ + - Java + - Both + - Not Applicable + validations: + required: true + + - type: input + id: topic + attributes: + label: Related Topic/Lecture + description: Which topic or lecture is this related to? + placeholder: "e.g., Lecture 05: Function Overloading" + validations: + required: false + + - type: textarea + id: problem + attributes: + label: Problem Statement + description: Is your feature request related to a problem? Please describe. + placeholder: "A clear description of what the problem is. Ex. I'm always frustrated when [...]" + validations: + required: true + + - type: textarea + id: solution + attributes: + label: Proposed Solution + description: Describe the solution you'd like + placeholder: A clear description of what you want to happen + validations: + required: true + + - type: textarea + id: alternatives + attributes: + label: Alternatives Considered + description: Describe alternatives you've considered + placeholder: Any alternative solutions or features you've considered + validations: + required: false + + - type: textarea + id: benefits + attributes: + label: Expected Benefits + description: How would this feature help students learning OOP? + placeholder: | + - Better understanding of concepts + - More practical examples + - Improved documentation + validations: + required: false + + - type: dropdown + id: priority + attributes: + label: Priority + description: How important is this feature to you? + options: + - Low - Nice to have + - Medium - Would be helpful + - High - Very important + validations: + required: false + + - type: textarea + id: additional + attributes: + label: Additional Context + description: Add any other context or screenshots about the feature request + placeholder: Any additional information + validations: + required: false + + - type: checkboxes + id: contribution + attributes: + label: Contribution + description: Would you be willing to contribute this feature? + options: + - label: I'm willing to submit a pull request for this feature + required: false diff --git a/.github/ISSUE_TEMPLATE/question.yml b/.github/ISSUE_TEMPLATE/question.yml new file mode 100644 index 0000000..c7e15d9 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/question.yml @@ -0,0 +1,94 @@ +name: Question +description: Ask a question about the course material +title: "[Question]: " +labels: ["question"] +assignees: [] + +body: + - type: markdown + attributes: + value: | + Have a question about OOP concepts or code? Ask away! + + - type: dropdown + id: question-type + attributes: + label: Question Type + description: What is your question about? + options: + - Concept Clarification + - Code Understanding + - Setup/Installation Help + - Best Practices + - Other + validations: + required: true + + - type: dropdown + id: language + attributes: + label: Programming Language + description: Which language does your question relate to? + options: + - C++ + - Java + - Both + - General OOP Concepts + validations: + required: true + + - type: input + id: topic + attributes: + label: Related Topic/Lecture + description: Which topic or lecture is this question about? + placeholder: "e.g., Lecture 07: Inheritance" + validations: + required: false + + - type: textarea + id: question + attributes: + label: Your Question + description: What would you like to know? + placeholder: Ask your question here in detail + validations: + required: true + + - type: textarea + id: context + attributes: + label: Context + description: Provide any relevant context or what you've tried so far + placeholder: | + - What have you already tried? + - What do you already understand? + - Where are you stuck? + validations: + required: false + + - type: textarea + id: code + attributes: + label: Related Code (if applicable) + description: Share any relevant code snippets + placeholder: | + ```cpp + // Your code here + ``` + render: cpp + validations: + required: false + + - type: textarea + id: resources + attributes: + label: Resources Consulted + description: What resources have you already checked? + placeholder: | + - [ ] README documentation + - [ ] Lecture notes + - [ ] GETTING_STARTED guide + - [ ] Online tutorials + validations: + required: false diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 0000000..a8e4c9c --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,85 @@ +# Description + +Please provide a brief description of your changes. + +## Type of Change + +Please check the relevant option(s): + +- [ ] πŸ› Bug fix (fixes an issue) +- [ ] ✨ New code example +- [ ] πŸ“š Documentation update +- [ ] 🎯 Practice problem/exercise +- [ ] ♻️ Code refactoring +- [ ] πŸ”§ Configuration/build changes +- [ ] Other (please describe): + +## Related Topic + +Which lecture/chapter does this relate to? + +- **Lecture/Chapter**: +- **Topic**: + +## Changes Made + +Please describe the changes you've made: + +- +- +- + +## Testing Checklist + +- [ ] Code compiles without errors +- [ ] Code runs as expected +- [ ] Comments are clear and helpful +- [ ] Code follows existing style conventions +- [ ] Documentation is updated (if applicable) +- [ ] No sensitive information included + +## Programming Language + +- [ ] C++ +- [ ] Java +- [ ] Both +- [ ] Documentation only + +## Compiler/Environment Details + +If code changes, please specify: + +- **C++ Compiler**: (e.g., g++ 11.3, clang 14, MSVC 2022) +- **Java Version**: (e.g., JDK 17, JDK 21) +- **OS**: (e.g., Ubuntu 22.04, Windows 11, macOS 14) + +## Screenshots (if applicable) + +If your changes include visual elements or output, please add screenshots: + +## Additional Context + +Add any other context about the pull request here: + +## Checklist + +Before submitting, please ensure: + +- [ ] I have read the [CONTRIBUTING.md](../CONTRIBUTING.md) guidelines +- [ ] I have read the [CODE_OF_CONDUCT.md](../CODE_OF_CONDUCT.md) +- [ ] My code follows the repository's coding standards +- [ ] I have added appropriate comments to my code +- [ ] This is my original work or properly attributed +- [ ] I have tested my changes thoroughly +- [ ] My changes do not introduce new warnings or errors + +## For Repository Maintainers + +- [ ] Code review completed +- [ ] Changes tested locally +- [ ] Documentation reviewed +- [ ] Ready to merge + +--- + +Thank you for contributing to CSE 1201 - Object Oriented Programming Language! πŸŽ“ diff --git a/.github/workflows/cpp-build.yml b/.github/workflows/cpp-build.yml index c378227..d7e1b13 100644 --- a/.github/workflows/cpp-build.yml +++ b/.github/workflows/cpp-build.yml @@ -32,16 +32,50 @@ jobs: sudo apt-get install -y g++ build-essential - name: Verify g++ Installation - run: g++ --version + run: | + echo "πŸ“¦ Compiler Information:" + g++ --version + echo "" - name: Find and Compile C++ Files run: | echo "πŸ” Finding C++ source files..." - find . -name "*.cpp" -type f | while read file; do - echo "πŸ“ Compiling: $file" - g++ -std=c++17 -c "$file" -o "${file%.cpp}.o" || echo "⚠️ Warning: $file failed to compile" - done - echo "βœ… Compilation check complete!" + FAILED_FILES=0 + SUCCESS_FILES=0 + TOTAL_FILES=0 + + while IFS= read -r file; do + TOTAL_FILES=$((TOTAL_FILES + 1)) + echo "" + echo "πŸ“ Compiling ($TOTAL_FILES): $file" + if g++ -std=c++17 -Wall -Wextra -c "$file" -o "${file%.cpp}.o" 2>&1; then + echo "βœ… Success: $file" + SUCCESS_FILES=$((SUCCESS_FILES + 1)) + else + echo "❌ Failed: $file" + FAILED_FILES=$((FAILED_FILES + 1)) + fi + done < <(find . -name "*.cpp" -type f) + + echo "" + echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" + echo "πŸ“Š Compilation Summary:" + echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" + echo "Total files: $TOTAL_FILES" + echo "βœ… Successful: $SUCCESS_FILES" + echo "❌ Failed: $FAILED_FILES" + echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" + + if [ $FAILED_FILES -gt 0 ]; then + echo "" + echo "⚠️ Warning: Some files failed to compile" + echo "This is expected for educational examples that may contain intentional errors." + exit 0 + else + echo "" + echo "πŸŽ‰ All files compiled successfully!" + fi - name: Clean Up Object Files + if: always() run: find . -name "*.o" -delete diff --git a/.github/workflows/java-build.yml b/.github/workflows/java-build.yml index 11664f7..bd45890 100644 --- a/.github/workflows/java-build.yml +++ b/.github/workflows/java-build.yml @@ -30,17 +30,50 @@ jobs: - name: Verify Java Installation run: | + echo "πŸ“¦ Java Information:" java -version javac -version + echo "" - name: Find and Compile Java Files run: | echo "πŸ” Finding Java source files..." - find . -name "*.java" -type f | while read file; do - echo "πŸ“ Compiling: $file" - javac "$file" || echo "⚠️ Warning: $file failed to compile" - done - echo "βœ… Compilation check complete!" + FAILED_FILES=0 + SUCCESS_FILES=0 + TOTAL_FILES=0 + + while IFS= read -r file; do + TOTAL_FILES=$((TOTAL_FILES + 1)) + echo "" + echo "πŸ“ Compiling ($TOTAL_FILES): $file" + if javac -Xlint:all "$file" 2>&1; then + echo "βœ… Success: $file" + SUCCESS_FILES=$((SUCCESS_FILES + 1)) + else + echo "❌ Failed: $file" + FAILED_FILES=$((FAILED_FILES + 1)) + fi + done < <(find . -name "*.java" -type f) + + echo "" + echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" + echo "πŸ“Š Compilation Summary:" + echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" + echo "Total files: $TOTAL_FILES" + echo "βœ… Successful: $SUCCESS_FILES" + echo "❌ Failed: $FAILED_FILES" + echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" + + if [ $FAILED_FILES -gt 0 ]; then + echo "" + echo "⚠️ Warning: Some files failed to compile" + echo "This is expected for educational examples that may contain intentional errors." + exit 0 + else + echo "" + echo "πŸŽ‰ All files compiled successfully!" + fi - name: Clean Up Class Files + if: always() run: find . -name "*.class" -delete diff --git a/CHANGELOG.md b/CHANGELOG.md index 2975992..ad2504a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,8 +11,113 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Visual diagrams for OOP concepts - Video tutorials for complex topics - GitHub Pages site for better browsing -- Pull request and issue templates - More real-world application examples +- Automated code formatting checks (clang-format for C++, checkstyle for Java) + +## [2.1.0] - 2024-11-05 + +### Added - Repository Quality Improvements + +#### Folder Structure +- βœ… Fixed naming inconsistency: Renamed "Leacture" folders to "Lecture" (Lectures 01-06) +- βœ… Fixed spacing in Lecture_08 folder name for consistency + +#### Community Templates +- **Issue Templates** - Professional issue reporting system + - Bug Report template with structured fields + - Feature Request template for suggestions + - Question template for course-related questions + - Issue template configuration with helpful links + +- **Pull Request Template** - Standardized PR submission format + - Type of change checkboxes + - Testing checklist + - Environment details section + - Contribution guidelines reference + +#### Policy Documents +- **SECURITY.md** - Comprehensive security policy + - Vulnerability reporting guidelines + - Security best practices for C++ and Java + - Response timeline commitments + - Educational context considerations + +- **SUPPORT.md** - Community support guide + - Getting help resources + - Common questions and answers + - Learning resources (internal and external) + - Bug reporting process + - Community guidelines + +#### New Documentation Files +- **QUICK_REFERENCE.md** - Fast reference guide + - Quick start commands for C++ and Java + - Core OOP concepts overview + - Common code patterns + - Troubleshooting tips + - Navigation shortcuts + +- **CODE_STYLE.md** - Coding standards guide + - C++ style guidelines + - Java style guidelines + - Documentation standards + - File organization rules + - Code review checklist + +- **CONTRIBUTORS.md** - Contributor recognition + - List of maintainers and instructors + - Contribution guidelines + - Recognition policy + +#### CI/CD Improvements +- **Enhanced C++ Build Workflow** + - Improved error reporting with detailed statistics + - Compilation summary with success/failure counts + - Warning flags enabled (-Wall -Wextra) + - Better visual feedback with emojis + +- **Enhanced Java Build Workflow** + - Improved error reporting with detailed statistics + - Compilation summary with success/failure counts + - Lint warnings enabled (-Xlint:all) + - Better visual feedback with emojis + +#### Documentation Updates +- **README.md** - Enhanced main documentation + - Added CI/CD status badges for C++ and Java builds + - Added comprehensive Community section with all new files + - Added Quick Reference link in callout boxes + - Links to all new policy documents + - Improved navigation with Support Guide reference + +- **KNOWN_ISSUES.md** - Updated status + - Marked folder naming issues as FIXED + - Added completion dates + - Updated with all corrected folder names + +### Changed +- CI/CD workflows now provide detailed compilation statistics +- Issue tracking system now uses modern YAML templates +- Community engagement improved with better documentation +- README structure enhanced with more comprehensive sections + +### Fixed +- Folder naming inconsistency (Leacture β†’ Lecture) across C++ lectures 01-06 +- Missing space in Lecture_08 folder name +- Lack of structured issue reporting +- Insufficient community guidelines +- No security vulnerability reporting process +- Missing quick reference for common tasks +- No coding style guidelines + +### Improved +- GitHub Actions workflows with better error reporting +- Community engagement through templates and guides +- Documentation organization and accessibility +- Repository discoverability with status badges +- Learning experience with quick reference guide +- Code quality standards with style guide +- Contributor recognition and acknowledgment ## [2.0.0] - 2024-11-02 diff --git a/CODE_STYLE.md b/CODE_STYLE.md new file mode 100644 index 0000000..f150199 --- /dev/null +++ b/CODE_STYLE.md @@ -0,0 +1,509 @@ +# Code Style Guide + +This document outlines the coding standards and style guidelines for the CSE 1201 repository. Following these guidelines helps maintain code quality, readability, and consistency. + +--- + +## πŸ“‹ Table of Contents + +- [General Principles](#general-principles) +- [C++ Style Guide](#c-style-guide) +- [Java Style Guide](#java-style-guide) +- [Documentation Standards](#documentation-standards) +- [File Organization](#file-organization) + +--- + +## 🎯 General Principles + +### Code Quality Goals + +1. **Readability**: Code should be easy to understand +2. **Consistency**: Follow established patterns +3. **Simplicity**: Keep it simple and clear +4. **Educational**: Code should teach, not confuse +5. **Maintainability**: Easy to update and improve + +### Universal Rules + +βœ… **DO:** +- Write clear, self-documenting code +- Use meaningful variable and function names +- Add comments for complex logic +- Keep functions small and focused +- Handle errors appropriately +- Follow the DRY principle (Don't Repeat Yourself) + +❌ **DON'T:** +- Use cryptic abbreviations +- Write overly complex code +- Ignore compiler warnings +- Leave commented-out code +- Use magic numbers without explanation +- Mix tabs and spaces + +--- + +## πŸ”· C++ Style Guide + +### Naming Conventions + +```cpp +// Classes: PascalCase +class StudentRecord { }; +class BankAccount { }; + +// Functions and methods: camelCase +void calculateTotal() { } +int getStudentAge() { } + +// Variables: camelCase +int studentCount; +double accountBalance; + +// Constants: UPPER_CASE or kConstant +const int MAX_STUDENTS = 100; +const double PI = 3.14159; + +// Member variables: prefix with m_ or suffix with _ +class MyClass { +private: + int m_value; // or + int value_; +}; +``` + +### Formatting + +```cpp +// Indentation: 4 spaces (no tabs) +class Example { +public: + void method() { + if (condition) { + // Code here + } + } +}; + +// Braces: Same line for functions, next line for classes +void function() { + // Code +} + +class MyClass +{ + // Code +}; + +// Or consistently on the same line +class MyClass { + // Code +}; + +// Spacing around operators +int sum = a + b; +bool result = (x > 5) && (y < 10); + +// Pointer/Reference placement +int* ptr; // or +int *ptr; // Choose one style and be consistent +int& ref; +``` + +### Comments + +```cpp +// Single-line comments for brief explanations +int count = 0; // Initialize counter + +/* Multi-line comments for detailed explanations + that span multiple lines */ + +/** + * Function documentation + * Describes what the function does + * @param input Description of parameter + * @return Description of return value + */ +int processData(int input) { + return input * 2; +} +``` + +### Best Practices + +```cpp +// 1. Use const when appropriate +const int SIZE = 100; +void display() const { } + +// 2. Initialize variables +int count = 0; +double rate = 0.0; + +// 3. Use smart pointers (C++11+) +#include +std::unique_ptr ptr = std::make_unique(10); + +// 4. Prefer range-based for loops (C++11+) +std::vector numbers = {1, 2, 3, 4, 5}; +for (const auto& num : numbers) { + std::cout << num << std::endl; +} + +// 5. Use auto for complex types (C++11+) +auto it = myMap.begin(); + +// 6. Avoid raw arrays, use std::vector +std::vector data(10); // instead of int data[10]; + +// 7. Use nullptr instead of NULL (C++11+) +int* ptr = nullptr; + +// 8. Always use explicit for single-argument constructors +explicit MyClass(int value) : m_value(value) { } +``` + +### File Structure + +```cpp +// header.h +#ifndef HEADER_H +#define HEADER_H + +// Includes +#include +#include + +// Class declaration +class MyClass { +private: + int m_value; + +public: + MyClass(); + void display() const; +}; + +#endif // HEADER_H + +// implementation.cpp +#include "header.h" + +// Constructor implementation +MyClass::MyClass() : m_value(0) { + // Implementation +} + +// Method implementation +void MyClass::display() const { + std::cout << m_value << std::endl; +} +``` + +--- + +## β˜• Java Style Guide + +### Naming Conventions + +```java +// Classes and Interfaces: PascalCase +public class StudentRecord { } +public interface Drawable { } + +// Methods: camelCase +public void calculateTotal() { } +public int getStudentAge() { } + +// Variables: camelCase +int studentCount; +double accountBalance; + +// Constants: UPPER_CASE +public static final int MAX_STUDENTS = 100; +public static final double PI = 3.14159; + +// Packages: lowercase +package com.university.courses; +``` + +### Formatting + +```java +// Indentation: 4 spaces +public class Example { + public void method() { + if (condition) { + // Code here + } + } +} + +// Braces: Opening brace on same line +public void method() { + // Code +} + +// Spacing +int sum = a + b; +boolean result = (x > 5) && (y < 10); + +// Method parameters +public void processData(int value, String name) { + // Code +} +``` + +### Comments + +```java +// Single-line comment +int count = 0; // Initialize counter + +/* + * Multi-line comment + * for longer explanations + */ + +/** + * Javadoc comment for methods + * @param input Description of parameter + * @return Description of return value + */ +public int processData(int input) { + return input * 2; +} +``` + +### Best Practices + +```java +// 1. Use final for constants +public static final int MAX_SIZE = 100; + +// 2. Initialize variables +int count = 0; +String name = ""; + +// 3. Use enhanced for loop +List numbers = Arrays.asList(1, 2, 3, 4, 5); +for (Integer num : numbers) { + System.out.println(num); +} + +// 4. Use try-with-resources (Java 7+) +try (BufferedReader br = new BufferedReader(new FileReader("file.txt"))) { + String line = br.readLine(); +} catch (IOException e) { + e.printStackTrace(); +} + +// 5. Use @Override annotation +@Override +public void method() { + // Implementation +} + +// 6. Use meaningful exception handling +try { + // Code +} catch (SpecificException e) { + // Handle specific exception + System.err.println("Error: " + e.getMessage()); +} + +// 7. Use proper access modifiers +public class MyClass { + private int value; // Private by default + + public int getValue() { // Public accessor + return value; + } +} + +// 8. Follow the single responsibility principle +public class Student { + // Only student-related functionality +} +``` + +### File Structure + +```java +// One public class per file +// Filename must match class name + +// MyClass.java +package com.example; + +// Imports +import java.util.List; +import java.util.ArrayList; + +/** + * Class documentation + */ +public class MyClass { + // Constants + private static final int MAX_VALUE = 100; + + // Instance variables + private int value; + + // Constructor + public MyClass(int value) { + this.value = value; + } + + // Methods + public void display() { + System.out.println(value); + } +} +``` + +--- + +## πŸ“ Documentation Standards + +### File Headers + +```cpp +/** + * Filename: example.cpp + * Description: Brief description of what this file does + * Author: Your Name + * Date: YYYY-MM-DD + * Course: CSE 1201 - Object Oriented Programming + * Topic: Relevant lecture or chapter + */ +``` + +### Function Documentation + +```cpp +/** + * Calculate the area of a circle + * + * This function takes a radius and returns the area + * using the formula: Ο€ * rΒ² + * + * @param radius The radius of the circle (must be positive) + * @return The area of the circle + * @throws IllegalArgumentException if radius is negative + */ +double calculateCircleArea(double radius) { + if (radius < 0) { + throw std::invalid_argument("Radius must be positive"); + } + return 3.14159 * radius * radius; +} +``` + +### Inline Comments + +```cpp +// Good: Explains WHY, not WHAT +// Use binary search for better performance on sorted array +int index = binarySearch(arr, target); + +// Bad: States the obvious +// Loop through array +for (int i = 0; i < size; i++) { + // Print element + cout << arr[i]; +} +``` + +--- + +## πŸ“ File Organization + +### Directory Structure + +``` +Topic/ +β”œβ”€β”€ README.md # Topic overview +β”œβ”€β”€ examples/ # Example code +β”‚ β”œβ”€β”€ basic.cpp +β”‚ β”œβ”€β”€ advanced.cpp +β”œβ”€β”€ exercises/ # Practice problems +β”‚ β”œβ”€β”€ exercise1.cpp +β”œβ”€β”€ solutions/ # Exercise solutions +β”‚ β”œβ”€β”€ exercise1_solution.cpp +``` + +### File Naming + +- **C++ Files**: + - Source: `descriptive_name.cpp` + - Headers: `descriptive_name.h` + - Example: `bank_account.cpp`, `bank_account.h` + +- **Java Files**: + - Must match class name + - Example: `BankAccount.java` + +- **Documentation**: + - Use snake_case or kebab-case + - Example: `installation_guide.md`, `cpp-style-guide.md` + +--- + +## βœ… Before Submitting Code + +Use this checklist: + +- [ ] Code compiles without errors +- [ ] Code follows style guidelines +- [ ] Meaningful variable and function names +- [ ] Appropriate comments added +- [ ] No compiler warnings +- [ ] Code is properly indented +- [ ] No trailing whitespace +- [ ] Final newline at end of file +- [ ] Copyright/license information (if required) +- [ ] Documentation updated (if needed) + +--- + +## πŸ” Code Review Criteria + +When reviewing code, check for: + +1. **Functionality**: Does it work correctly? +2. **Style**: Does it follow guidelines? +3. **Readability**: Is it easy to understand? +4. **Efficiency**: Is it reasonably optimized? +5. **Safety**: Are there potential bugs or security issues? +6. **Documentation**: Are comments helpful and accurate? + +--- + +## πŸ“š Additional Resources + +- [Google C++ Style Guide](https://google.github.io/styleguide/cppguide.html) +- [Google Java Style Guide](https://google.github.io/styleguide/javaguide.html) +- [C++ Core Guidelines](https://isocpp.github.io/CppCoreGuidelines/) +- [Oracle Java Code Conventions](https://www.oracle.com/java/technologies/javase/codeconventions-contents.html) + +--- + +## 🀝 Questions? + +If you have questions about code style: + +1. Check this guide +2. Look at existing code examples +3. Ask in [discussions](https://github.com/M-F-Tushar/CSE-1201-Object-Oriented-Programming-Language/discussions) +4. Create an issue with the `question` label + +--- + +**Remember**: Consistency is more important than personal preference. When in doubt, follow the existing style in the repository. + +--- + +*Last Updated: November 2024* diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md new file mode 100644 index 0000000..ca7660f --- /dev/null +++ b/CONTRIBUTORS.md @@ -0,0 +1,90 @@ +# Contributors + +Thank you to everyone who has contributed to making this educational repository better! πŸŽ“ + +## 🌟 Repository Maintainers + +### Primary Maintainer +- **[M-F-Tushar](https://github.com/M-F-Tushar)** - Repository Owner + +## πŸ‘¨β€πŸ« Course Instructors + +**Md. Jahidul Islam** +Chairman, Department of Computer Science and Engineering +Chandpur Science and Technology University + +**Mostafiz Ahammed** +Lecturer, Department of Computer Science and Engineering +Chandpur Science and Technology University (Previously) + +## 🀝 Contributors + +This repository is built on the collective effort of: + +- Students who have reported issues and suggested improvements +- Contributors who have submitted code examples +- Community members who have improved documentation +- Everyone who has helped make this a better learning resource + +### How to Be Listed Here + +When you contribute to this repository, you'll be automatically recognized! Ways to contribute: + +- πŸ“ Submit code examples or improvements +- πŸ› Report bugs or issues +- πŸ“š Improve documentation +- πŸ’‘ Suggest features +- ❓ Answer questions in discussions +- ⭐ Star the repository + +## πŸ™ Special Thanks + +Special thanks to: + +- All students who have used this repository for learning +- The open-source community for tools and resources +- Herbert Schildt for "Teach Yourself C++" +- Y. Daniel Liang for "Introduction to Java Programming" + +## πŸ“Š Contribution Statistics + +Contributions are tracked through: +- GitHub Issues +- Pull Requests +- Discussions +- Code Reviews + +To see detailed contribution statistics, visit the [Contributors page](https://github.com/M-F-Tushar/CSE-1201-Object-Oriented-Programming-Language/graphs/contributors). + +## 🎯 Become a Contributor + +Want to see your name here? Here's how: + +1. Read the [Contributing Guidelines](CONTRIBUTING.md) +2. Pick an issue or suggest an improvement +3. Submit your contribution via Pull Request +4. Help review others' contributions + +Every contribution, no matter how small, is valuable and appreciated! + +## πŸ“œ Recognition Policy + +We recognize contributors through: +- GitHub's built-in contributor tracking +- Acknowledgment in release notes (CHANGELOG.md) +- Mentions in relevant documentation +- Credit in improved code sections + +## πŸ’– Thank You + +Your contributions help countless students learn Object-Oriented Programming. Thank you for being part of this educational journey! + +--- + +**"The best way to learn is to teach."** - Thank you for helping others learn! 🌟 + +--- + +*Last Updated: November 2024* + +*This list is automatically updated when new contributors join. For real-time contributor data, see the [GitHub Contributors page](https://github.com/M-F-Tushar/CSE-1201-Object-Oriented-Programming-Language/graphs/contributors).* diff --git a/KNOWN_ISSUES.md b/KNOWN_ISSUES.md index 4dbba54..f4a8f62 100644 --- a/KNOWN_ISSUES.md +++ b/KNOWN_ISSUES.md @@ -4,40 +4,29 @@ This document tracks known issues, typos, and planned improvements for the repos ## πŸ“ Naming Inconsistencies -### Folder Name Typo: "Leacture" vs "Lecture" - -**Issue:** Some C++ lecture folders use "Leacture" instead of "Lecture" - -**Affected Folders:** -- `OOP in C++/Leacture_01: An Overview of C++/` -- `OOP in C++/Leacture_02: Introducing Classes/` -- `OOP in C++/Leacture_03: A Closer Look at Classes/` -- `OOP in C++/Leacture_04: Arrays, Pointers, and References/` -- `OOP in C++/Leacture_05: Function Overloading/` -- `OOP in C++/Leacture_06: Introducing Operator Overloading/` - -**Correctly Named Folders:** -- `OOP in C++/Lecture_07: Inheritance/` -- `OOP in C++/Lecture_08: Introducing the C++ IO System/` -- `OOP in C++/Lecture_09: Advanced C++ IO/` -- `OOP in C++/Lecture_10: Virtual Functions/` -- `OOP in C++/Lecture_11: Generic Functions/` -- `OOP in C++/Lecture_12: Run-Time Type Identification and the Casting Operators/` -- `OOP in C++/Lecture_13: Namespaces, Conversion Functions, and Miscellaneous Topics/` -- `OOP in C++/Lecture_14: Introducing the Standard Template Library/` - -**Status:** Documented -**Impact:** Low - Does not affect functionality -**Workaround:** None needed - folders work as-is - -**Reason Not Fixed:** -- Renaming would break existing bookmarks and external references -- Git history would show large changes -- All documentation has been updated to reflect current names -- Functionality is not impacted - -**Future Consideration:** -If there's a major repository restructuring in the future, this can be addressed. For now, all documentation (README, CONTENT_INDEX, GETTING_STARTED) uses the correct spelling in descriptions while maintaining actual folder names for accuracy. +### βœ… FIXED: Folder Name Typo: "Leacture" vs "Lecture" + +**Status:** Fixed (November 2024) + +**Issue:** Some C++ lecture folders used "Leacture" instead of "Lecture" + +**Resolution:** All affected folders have been renamed to use correct spelling "Lecture": +- βœ… `OOP in C++/Lecture_01: An Overview of C++/` +- βœ… `OOP in C++/Lecture_02: Introducing Classes/` +- βœ… `OOP in C++/Lecture_03: A Closer Look at Classes/` +- βœ… `OOP in C++/Lecture_04: Arrays, Pointers, and References/` +- βœ… `OOP in C++/Lecture_05: Function Overloading/` +- βœ… `OOP in C++/Lecture_06: Introducing Operator Overloading/` +- βœ… `OOP in C++/Lecture_07: Inheritance/` +- βœ… `OOP in C++/Lecture_08: Introducing the C++ IO System/` (also fixed spacing) +- βœ… `OOP in C++/Lecture_09: Advanced C++ IO/` +- βœ… `OOP in C++/Lecture_10: Virtual Functions/` +- βœ… `OOP in C++/Lecture_11: Generic Functions/` +- βœ… `OOP in C++/Lecture_12: Run-Time Type Identification and the Casting Operators/` +- βœ… `OOP in C++/Lecture_13: Namespaces, Conversion Functions, and Miscellaneous Topics/` +- βœ… `OOP in C++/Lecture_14: Introducing the Standard Template Library/` + +All folder names now consistently use "Lecture" with proper spacing throughout the repository. --- diff --git a/OOP in C++/Leacture_01: An Overview of C++/1. C++ Console I and O/1.cpp b/OOP in C++/Lecture_01: An Overview of C++/1. C++ Console I and O/1.cpp similarity index 100% rename from OOP in C++/Leacture_01: An Overview of C++/1. C++ Console I and O/1.cpp rename to OOP in C++/Lecture_01: An Overview of C++/1. C++ Console I and O/1.cpp diff --git a/OOP in C++/Leacture_01: An Overview of C++/1. C++ Console I and O/2.cpp b/OOP in C++/Lecture_01: An Overview of C++/1. C++ Console I and O/2.cpp similarity index 100% rename from OOP in C++/Leacture_01: An Overview of C++/1. C++ Console I and O/2.cpp rename to OOP in C++/Lecture_01: An Overview of C++/1. C++ Console I and O/2.cpp diff --git a/OOP in C++/Leacture_01: An Overview of C++/1. C++ Console I and O/3.cpp b/OOP in C++/Lecture_01: An Overview of C++/1. C++ Console I and O/3.cpp similarity index 100% rename from OOP in C++/Leacture_01: An Overview of C++/1. C++ Console I and O/3.cpp rename to OOP in C++/Lecture_01: An Overview of C++/1. C++ Console I and O/3.cpp diff --git a/OOP in C++/Leacture_01: An Overview of C++/1. C++ Console I and O/4.cpp b/OOP in C++/Lecture_01: An Overview of C++/1. C++ Console I and O/4.cpp similarity index 100% rename from OOP in C++/Leacture_01: An Overview of C++/1. C++ Console I and O/4.cpp rename to OOP in C++/Lecture_01: An Overview of C++/1. C++ Console I and O/4.cpp diff --git a/OOP in C++/Leacture_01: An Overview of C++/1. C++ Console I and O/5.cpp b/OOP in C++/Lecture_01: An Overview of C++/1. C++ Console I and O/5.cpp similarity index 100% rename from OOP in C++/Leacture_01: An Overview of C++/1. C++ Console I and O/5.cpp rename to OOP in C++/Lecture_01: An Overview of C++/1. C++ Console I and O/5.cpp diff --git a/OOP in C++/Leacture_01: An Overview of C++/2. C++ Comments/temp b/OOP in C++/Lecture_01: An Overview of C++/2. C++ Comments/temp similarity index 100% rename from OOP in C++/Leacture_01: An Overview of C++/2. C++ Comments/temp rename to OOP in C++/Lecture_01: An Overview of C++/2. C++ Comments/temp diff --git a/OOP in C++/Leacture_01: An Overview of C++/2.cpp_versions_summary.md b/OOP in C++/Lecture_01: An Overview of C++/2.cpp_versions_summary.md similarity index 100% rename from OOP in C++/Leacture_01: An Overview of C++/2.cpp_versions_summary.md rename to OOP in C++/Lecture_01: An Overview of C++/2.cpp_versions_summary.md diff --git a/OOP in C++/Leacture_01: An Overview of C++/3. Classes : A First Look/1.cpp b/OOP in C++/Lecture_01: An Overview of C++/3. Classes : A First Look/1.cpp similarity index 100% rename from OOP in C++/Leacture_01: An Overview of C++/3. Classes : A First Look/1.cpp rename to OOP in C++/Lecture_01: An Overview of C++/3. Classes : A First Look/1.cpp diff --git a/OOP in C++/Leacture_01: An Overview of C++/3. Classes : A First Look/2.cpp b/OOP in C++/Lecture_01: An Overview of C++/3. Classes : A First Look/2.cpp similarity index 100% rename from OOP in C++/Leacture_01: An Overview of C++/3. Classes : A First Look/2.cpp rename to OOP in C++/Lecture_01: An Overview of C++/3. Classes : A First Look/2.cpp diff --git a/OOP in C++/Leacture_01: An Overview of C++/3. Classes : A First Look/3.cpp b/OOP in C++/Lecture_01: An Overview of C++/3. Classes : A First Look/3.cpp similarity index 100% rename from OOP in C++/Leacture_01: An Overview of C++/3. Classes : A First Look/3.cpp rename to OOP in C++/Lecture_01: An Overview of C++/3. Classes : A First Look/3.cpp diff --git a/OOP in C++/Leacture_01: An Overview of C++/3. Classes : A First Look/4.cpp b/OOP in C++/Lecture_01: An Overview of C++/3. Classes : A First Look/4.cpp similarity index 100% rename from OOP in C++/Leacture_01: An Overview of C++/3. Classes : A First Look/4.cpp rename to OOP in C++/Lecture_01: An Overview of C++/3. Classes : A First Look/4.cpp diff --git a/OOP in C++/Leacture_01: An Overview of C++/3.cpp_console_io_summary.md b/OOP in C++/Lecture_01: An Overview of C++/3.cpp_console_io_summary.md similarity index 100% rename from OOP in C++/Leacture_01: An Overview of C++/3.cpp_console_io_summary.md rename to OOP in C++/Lecture_01: An Overview of C++/3.cpp_console_io_summary.md diff --git a/OOP in C++/Leacture_01: An Overview of C++/4.cpp_comments_structured.md b/OOP in C++/Lecture_01: An Overview of C++/4.cpp_comments_structured.md similarity index 100% rename from OOP in C++/Leacture_01: An Overview of C++/4.cpp_comments_structured.md rename to OOP in C++/Lecture_01: An Overview of C++/4.cpp_comments_structured.md diff --git a/OOP in C++/Leacture_01: An Overview of C++/5.cpp_classes_structured.md b/OOP in C++/Lecture_01: An Overview of C++/5.cpp_classes_structured.md similarity index 100% rename from OOP in C++/Leacture_01: An Overview of C++/5.cpp_classes_structured.md rename to OOP in C++/Lecture_01: An Overview of C++/5.cpp_classes_structured.md diff --git a/OOP in C++/Leacture_01: An Overview of C++/6.cpp_differences_overloading_structured.md b/OOP in C++/Lecture_01: An Overview of C++/6.cpp_differences_overloading_structured.md similarity index 100% rename from OOP in C++/Leacture_01: An Overview of C++/6.cpp_differences_overloading_structured.md rename to OOP in C++/Lecture_01: An Overview of C++/6.cpp_differences_overloading_structured.md diff --git a/OOP in C++/Leacture_01: An Overview of C++/7.cpp_keywords_structured.md b/OOP in C++/Lecture_01: An Overview of C++/7.cpp_keywords_structured.md similarity index 100% rename from OOP in C++/Leacture_01: An Overview of C++/7.cpp_keywords_structured.md rename to OOP in C++/Lecture_01: An Overview of C++/7.cpp_keywords_structured.md diff --git a/OOP in C++/Leacture_01: An Overview of C++/cpp_skills_check.md b/OOP in C++/Lecture_01: An Overview of C++/cpp_skills_check.md similarity index 100% rename from OOP in C++/Leacture_01: An Overview of C++/cpp_skills_check.md rename to OOP in C++/Lecture_01: An Overview of C++/cpp_skills_check.md diff --git a/OOP in C++/Leacture_02: Introducing Classes/1. Constructor and Destructor Function/1.cpp b/OOP in C++/Lecture_02: Introducing Classes/1. Constructor and Destructor Function/1.cpp similarity index 100% rename from OOP in C++/Leacture_02: Introducing Classes/1. Constructor and Destructor Function/1.cpp rename to OOP in C++/Lecture_02: Introducing Classes/1. Constructor and Destructor Function/1.cpp diff --git a/OOP in C++/Leacture_02: Introducing Classes/1. Constructor and Destructor Function/2.cpp b/OOP in C++/Lecture_02: Introducing Classes/1. Constructor and Destructor Function/2.cpp similarity index 100% rename from OOP in C++/Leacture_02: Introducing Classes/1. Constructor and Destructor Function/2.cpp rename to OOP in C++/Lecture_02: Introducing Classes/1. Constructor and Destructor Function/2.cpp diff --git a/OOP in C++/Leacture_02: Introducing Classes/1. Constructor and Destructor Function/Example/1.cpp b/OOP in C++/Lecture_02: Introducing Classes/1. Constructor and Destructor Function/Example/1.cpp similarity index 100% rename from OOP in C++/Leacture_02: Introducing Classes/1. Constructor and Destructor Function/Example/1.cpp rename to OOP in C++/Lecture_02: Introducing Classes/1. Constructor and Destructor Function/Example/1.cpp diff --git a/OOP in C++/Leacture_02: Introducing Classes/1. Constructor and Destructor Function/Example/2.cpp b/OOP in C++/Lecture_02: Introducing Classes/1. Constructor and Destructor Function/Example/2.cpp similarity index 100% rename from OOP in C++/Leacture_02: Introducing Classes/1. Constructor and Destructor Function/Example/2.cpp rename to OOP in C++/Lecture_02: Introducing Classes/1. Constructor and Destructor Function/Example/2.cpp diff --git a/OOP in C++/Leacture_02: Introducing Classes/1. Constructor and Destructor Function/Example/3.cpp b/OOP in C++/Lecture_02: Introducing Classes/1. Constructor and Destructor Function/Example/3.cpp similarity index 100% rename from OOP in C++/Leacture_02: Introducing Classes/1. Constructor and Destructor Function/Example/3.cpp rename to OOP in C++/Lecture_02: Introducing Classes/1. Constructor and Destructor Function/Example/3.cpp diff --git a/OOP in C++/Leacture_02: Introducing Classes/1.constructor_destructor_guide.md b/OOP in C++/Lecture_02: Introducing Classes/1.constructor_destructor_guide.md similarity index 100% rename from OOP in C++/Leacture_02: Introducing Classes/1.constructor_destructor_guide.md rename to OOP in C++/Lecture_02: Introducing Classes/1.constructor_destructor_guide.md diff --git a/OOP in C++/Leacture_02: Introducing Classes/2. Constructor That Take Parameters/1.cpp b/OOP in C++/Lecture_02: Introducing Classes/2. Constructor That Take Parameters/1.cpp similarity index 100% rename from OOP in C++/Leacture_02: Introducing Classes/2. Constructor That Take Parameters/1.cpp rename to OOP in C++/Lecture_02: Introducing Classes/2. Constructor That Take Parameters/1.cpp diff --git a/OOP in C++/Leacture_02: Introducing Classes/2. Constructor That Take Parameters/Example/1.cpp b/OOP in C++/Lecture_02: Introducing Classes/2. Constructor That Take Parameters/Example/1.cpp similarity index 100% rename from OOP in C++/Leacture_02: Introducing Classes/2. Constructor That Take Parameters/Example/1.cpp rename to OOP in C++/Lecture_02: Introducing Classes/2. Constructor That Take Parameters/Example/1.cpp diff --git a/OOP in C++/Leacture_02: Introducing Classes/2. Constructor That Take Parameters/Example/2.cpp b/OOP in C++/Lecture_02: Introducing Classes/2. Constructor That Take Parameters/Example/2.cpp similarity index 100% rename from OOP in C++/Leacture_02: Introducing Classes/2. Constructor That Take Parameters/Example/2.cpp rename to OOP in C++/Lecture_02: Introducing Classes/2. Constructor That Take Parameters/Example/2.cpp diff --git a/OOP in C++/Leacture_02: Introducing Classes/2. Constructor That Take Parameters/Example/4.cpp b/OOP in C++/Lecture_02: Introducing Classes/2. Constructor That Take Parameters/Example/4.cpp similarity index 100% rename from OOP in C++/Leacture_02: Introducing Classes/2. Constructor That Take Parameters/Example/4.cpp rename to OOP in C++/Lecture_02: Introducing Classes/2. Constructor That Take Parameters/Example/4.cpp diff --git a/OOP in C++/Leacture_02: Introducing Classes/2.parameterized_constructors_guide.md b/OOP in C++/Lecture_02: Introducing Classes/2.parameterized_constructors_guide.md similarity index 100% rename from OOP in C++/Leacture_02: Introducing Classes/2.parameterized_constructors_guide.md rename to OOP in C++/Lecture_02: Introducing Classes/2.parameterized_constructors_guide.md diff --git a/OOP in C++/Leacture_02: Introducing Classes/3. Introducing Inheritance/1.cpp b/OOP in C++/Lecture_02: Introducing Classes/3. Introducing Inheritance/1.cpp similarity index 100% rename from OOP in C++/Leacture_02: Introducing Classes/3. Introducing Inheritance/1.cpp rename to OOP in C++/Lecture_02: Introducing Classes/3. Introducing Inheritance/1.cpp diff --git a/OOP in C++/Leacture_02: Introducing Classes/3. Introducing Inheritance/Example/1.cpp b/OOP in C++/Lecture_02: Introducing Classes/3. Introducing Inheritance/Example/1.cpp similarity index 100% rename from OOP in C++/Leacture_02: Introducing Classes/3. Introducing Inheritance/Example/1.cpp rename to OOP in C++/Lecture_02: Introducing Classes/3. Introducing Inheritance/Example/1.cpp diff --git a/OOP in C++/Leacture_02: Introducing Classes/3.cpp_inheritance_guide .md b/OOP in C++/Lecture_02: Introducing Classes/3.cpp_inheritance_guide .md similarity index 100% rename from OOP in C++/Leacture_02: Introducing Classes/3.cpp_inheritance_guide .md rename to OOP in C++/Lecture_02: Introducing Classes/3.cpp_inheritance_guide .md diff --git a/OOP in C++/Leacture_02: Introducing Classes/4. Object Pointers/1.cpp b/OOP in C++/Lecture_02: Introducing Classes/4. Object Pointers/1.cpp similarity index 100% rename from OOP in C++/Leacture_02: Introducing Classes/4. Object Pointers/1.cpp rename to OOP in C++/Lecture_02: Introducing Classes/4. Object Pointers/1.cpp diff --git a/OOP in C++/Leacture_02: Introducing Classes/4.cpp_object_pointers_guide.md b/OOP in C++/Lecture_02: Introducing Classes/4.cpp_object_pointers_guide.md similarity index 100% rename from OOP in C++/Leacture_02: Introducing Classes/4.cpp_object_pointers_guide.md rename to OOP in C++/Lecture_02: Introducing Classes/4.cpp_object_pointers_guide.md diff --git a/OOP in C++/Leacture_02: Introducing Classes/5. Classes, Structures and Unions are Related/1.cpp b/OOP in C++/Lecture_02: Introducing Classes/5. Classes, Structures and Unions are Related/1.cpp similarity index 100% rename from OOP in C++/Leacture_02: Introducing Classes/5. Classes, Structures and Unions are Related/1.cpp rename to OOP in C++/Lecture_02: Introducing Classes/5. Classes, Structures and Unions are Related/1.cpp diff --git a/OOP in C++/Leacture_02: Introducing Classes/5. Classes, Structures and Unions are Related/2.cpp b/OOP in C++/Lecture_02: Introducing Classes/5. Classes, Structures and Unions are Related/2.cpp similarity index 100% rename from OOP in C++/Leacture_02: Introducing Classes/5. Classes, Structures and Unions are Related/2.cpp rename to OOP in C++/Lecture_02: Introducing Classes/5. Classes, Structures and Unions are Related/2.cpp diff --git a/OOP in C++/Leacture_02: Introducing Classes/5. Classes, Structures and Unions are Related/temp b/OOP in C++/Lecture_02: Introducing Classes/5. Classes, Structures and Unions are Related/temp similarity index 100% rename from OOP in C++/Leacture_02: Introducing Classes/5. Classes, Structures and Unions are Related/temp rename to OOP in C++/Lecture_02: Introducing Classes/5. Classes, Structures and Unions are Related/temp diff --git a/OOP in C++/Leacture_02: Introducing Classes/5.cpp_class_struct_union_guide.md b/OOP in C++/Lecture_02: Introducing Classes/5.cpp_class_struct_union_guide.md similarity index 100% rename from OOP in C++/Leacture_02: Introducing Classes/5.cpp_class_struct_union_guide.md rename to OOP in C++/Lecture_02: Introducing Classes/5.cpp_class_struct_union_guide.md diff --git a/OOP in C++/Leacture_02: Introducing Classes/6.cpp_inline_functions_guide.md b/OOP in C++/Lecture_02: Introducing Classes/6.cpp_inline_functions_guide.md similarity index 100% rename from OOP in C++/Leacture_02: Introducing Classes/6.cpp_inline_functions_guide.md rename to OOP in C++/Lecture_02: Introducing Classes/6.cpp_inline_functions_guide.md diff --git a/OOP in C++/Leacture_02: Introducing Classes/7.cpp_automatic_inlining_guide.md b/OOP in C++/Lecture_02: Introducing Classes/7.cpp_automatic_inlining_guide.md similarity index 100% rename from OOP in C++/Leacture_02: Introducing Classes/7.cpp_automatic_inlining_guide.md rename to OOP in C++/Lecture_02: Introducing Classes/7.cpp_automatic_inlining_guide.md diff --git a/OOP in C++/Leacture_02: Introducing Classes/Class Work/1.cpp b/OOP in C++/Lecture_02: Introducing Classes/Class Work/1.cpp similarity index 100% rename from OOP in C++/Leacture_02: Introducing Classes/Class Work/1.cpp rename to OOP in C++/Lecture_02: Introducing Classes/Class Work/1.cpp diff --git a/OOP in C++/Leacture_02: Introducing Classes/Class Work/2.cpp b/OOP in C++/Lecture_02: Introducing Classes/Class Work/2.cpp similarity index 100% rename from OOP in C++/Leacture_02: Introducing Classes/Class Work/2.cpp rename to OOP in C++/Lecture_02: Introducing Classes/Class Work/2.cpp diff --git a/OOP in C++/Leacture_03: A Closer Look at Classes/1. Assigning Objects/1.cpp b/OOP in C++/Lecture_03: A Closer Look at Classes/1. Assigning Objects/1.cpp similarity index 100% rename from OOP in C++/Leacture_03: A Closer Look at Classes/1. Assigning Objects/1.cpp rename to OOP in C++/Lecture_03: A Closer Look at Classes/1. Assigning Objects/1.cpp diff --git a/OOP in C++/Leacture_03: A Closer Look at Classes/1. Assigning Objects/Example/1.cpp b/OOP in C++/Lecture_03: A Closer Look at Classes/1. Assigning Objects/Example/1.cpp similarity index 100% rename from OOP in C++/Leacture_03: A Closer Look at Classes/1. Assigning Objects/Example/1.cpp rename to OOP in C++/Lecture_03: A Closer Look at Classes/1. Assigning Objects/Example/1.cpp diff --git a/OOP in C++/Leacture_03: A Closer Look at Classes/1. Assigning Objects/Example/2.cpp b/OOP in C++/Lecture_03: A Closer Look at Classes/1. Assigning Objects/Example/2.cpp similarity index 100% rename from OOP in C++/Leacture_03: A Closer Look at Classes/1. Assigning Objects/Example/2.cpp rename to OOP in C++/Lecture_03: A Closer Look at Classes/1. Assigning Objects/Example/2.cpp diff --git a/OOP in C++/Leacture_03: A Closer Look at Classes/1. Assigning Objects/Example/3.cpp b/OOP in C++/Lecture_03: A Closer Look at Classes/1. Assigning Objects/Example/3.cpp similarity index 100% rename from OOP in C++/Leacture_03: A Closer Look at Classes/1. Assigning Objects/Example/3.cpp rename to OOP in C++/Lecture_03: A Closer Look at Classes/1. Assigning Objects/Example/3.cpp diff --git a/OOP in C++/Leacture_03: A Closer Look at Classes/1.cpp_object_assignment_guide.md b/OOP in C++/Lecture_03: A Closer Look at Classes/1.cpp_object_assignment_guide.md similarity index 100% rename from OOP in C++/Leacture_03: A Closer Look at Classes/1.cpp_object_assignment_guide.md rename to OOP in C++/Lecture_03: A Closer Look at Classes/1.cpp_object_assignment_guide.md diff --git a/OOP in C++/Leacture_03: A Closer Look at Classes/2. Passing Objecs to Functions/1.cpp b/OOP in C++/Lecture_03: A Closer Look at Classes/2. Passing Objecs to Functions/1.cpp similarity index 100% rename from OOP in C++/Leacture_03: A Closer Look at Classes/2. Passing Objecs to Functions/1.cpp rename to OOP in C++/Lecture_03: A Closer Look at Classes/2. Passing Objecs to Functions/1.cpp diff --git a/OOP in C++/Leacture_03: A Closer Look at Classes/2. Passing Objecs to Functions/Example/1.cpp b/OOP in C++/Lecture_03: A Closer Look at Classes/2. Passing Objecs to Functions/Example/1.cpp similarity index 100% rename from OOP in C++/Leacture_03: A Closer Look at Classes/2. Passing Objecs to Functions/Example/1.cpp rename to OOP in C++/Lecture_03: A Closer Look at Classes/2. Passing Objecs to Functions/Example/1.cpp diff --git a/OOP in C++/Leacture_03: A Closer Look at Classes/2. Passing Objecs to Functions/Example/2.cpp b/OOP in C++/Lecture_03: A Closer Look at Classes/2. Passing Objecs to Functions/Example/2.cpp similarity index 100% rename from OOP in C++/Leacture_03: A Closer Look at Classes/2. Passing Objecs to Functions/Example/2.cpp rename to OOP in C++/Lecture_03: A Closer Look at Classes/2. Passing Objecs to Functions/Example/2.cpp diff --git a/OOP in C++/Leacture_03: A Closer Look at Classes/2. Passing Objecs to Functions/Example/3.cpp b/OOP in C++/Lecture_03: A Closer Look at Classes/2. Passing Objecs to Functions/Example/3.cpp similarity index 100% rename from OOP in C++/Leacture_03: A Closer Look at Classes/2. Passing Objecs to Functions/Example/3.cpp rename to OOP in C++/Lecture_03: A Closer Look at Classes/2. Passing Objecs to Functions/Example/3.cpp diff --git a/OOP in C++/Leacture_03: A Closer Look at Classes/2. Passing Objecs to Functions/Example/4.cpp b/OOP in C++/Lecture_03: A Closer Look at Classes/2. Passing Objecs to Functions/Example/4.cpp similarity index 100% rename from OOP in C++/Leacture_03: A Closer Look at Classes/2. Passing Objecs to Functions/Example/4.cpp rename to OOP in C++/Lecture_03: A Closer Look at Classes/2. Passing Objecs to Functions/Example/4.cpp diff --git a/OOP in C++/Leacture_03: A Closer Look at Classes/2.cpp_objects_functions.md b/OOP in C++/Lecture_03: A Closer Look at Classes/2.cpp_objects_functions.md similarity index 100% rename from OOP in C++/Leacture_03: A Closer Look at Classes/2.cpp_objects_functions.md rename to OOP in C++/Lecture_03: A Closer Look at Classes/2.cpp_objects_functions.md diff --git a/OOP in C++/Leacture_03: A Closer Look at Classes/3. Returning Objects From Functions/Example/1.cpp b/OOP in C++/Lecture_03: A Closer Look at Classes/3. Returning Objects From Functions/Example/1.cpp similarity index 100% rename from OOP in C++/Leacture_03: A Closer Look at Classes/3. Returning Objects From Functions/Example/1.cpp rename to OOP in C++/Lecture_03: A Closer Look at Classes/3. Returning Objects From Functions/Example/1.cpp diff --git a/OOP in C++/Leacture_03: A Closer Look at Classes/3. Returning Objects From Functions/Example/2.cpp b/OOP in C++/Lecture_03: A Closer Look at Classes/3. Returning Objects From Functions/Example/2.cpp similarity index 100% rename from OOP in C++/Leacture_03: A Closer Look at Classes/3. Returning Objects From Functions/Example/2.cpp rename to OOP in C++/Lecture_03: A Closer Look at Classes/3. Returning Objects From Functions/Example/2.cpp diff --git a/OOP in C++/Leacture_03: A Closer Look at Classes/3.cpp_returning_objects.md b/OOP in C++/Lecture_03: A Closer Look at Classes/3.cpp_returning_objects.md similarity index 100% rename from OOP in C++/Leacture_03: A Closer Look at Classes/3.cpp_returning_objects.md rename to OOP in C++/Lecture_03: A Closer Look at Classes/3.cpp_returning_objects.md diff --git a/OOP in C++/Leacture_03: A Closer Look at Classes/4. An Introduction to Friend Functions/1.cpp b/OOP in C++/Lecture_03: A Closer Look at Classes/4. An Introduction to Friend Functions/1.cpp similarity index 100% rename from OOP in C++/Leacture_03: A Closer Look at Classes/4. An Introduction to Friend Functions/1.cpp rename to OOP in C++/Lecture_03: A Closer Look at Classes/4. An Introduction to Friend Functions/1.cpp diff --git a/OOP in C++/Leacture_03: A Closer Look at Classes/4. An Introduction to Friend Functions/temp b/OOP in C++/Lecture_03: A Closer Look at Classes/4. An Introduction to Friend Functions/temp similarity index 100% rename from OOP in C++/Leacture_03: A Closer Look at Classes/4. An Introduction to Friend Functions/temp rename to OOP in C++/Lecture_03: A Closer Look at Classes/4. An Introduction to Friend Functions/temp diff --git a/OOP in C++/Leacture_03: A Closer Look at Classes/4.cpp_friend_functions.md b/OOP in C++/Lecture_03: A Closer Look at Classes/4.cpp_friend_functions.md similarity index 100% rename from OOP in C++/Leacture_03: A Closer Look at Classes/4.cpp_friend_functions.md rename to OOP in C++/Lecture_03: A Closer Look at Classes/4.cpp_friend_functions.md diff --git a/OOP in C++/Leacture_04: Arrays, Pointers, and References/1. Arrays of objects/1.cpp b/OOP in C++/Lecture_04: Arrays, Pointers, and References/1. Arrays of objects/1.cpp similarity index 100% rename from OOP in C++/Leacture_04: Arrays, Pointers, and References/1. Arrays of objects/1.cpp rename to OOP in C++/Lecture_04: Arrays, Pointers, and References/1. Arrays of objects/1.cpp diff --git a/OOP in C++/Leacture_04: Arrays, Pointers, and References/1. Arrays of objects/2.cpp b/OOP in C++/Lecture_04: Arrays, Pointers, and References/1. Arrays of objects/2.cpp similarity index 100% rename from OOP in C++/Leacture_04: Arrays, Pointers, and References/1. Arrays of objects/2.cpp rename to OOP in C++/Lecture_04: Arrays, Pointers, and References/1. Arrays of objects/2.cpp diff --git a/OOP in C++/Leacture_04: Arrays, Pointers, and References/1. Arrays of objects/3.cpp b/OOP in C++/Lecture_04: Arrays, Pointers, and References/1. Arrays of objects/3.cpp similarity index 100% rename from OOP in C++/Leacture_04: Arrays, Pointers, and References/1. Arrays of objects/3.cpp rename to OOP in C++/Lecture_04: Arrays, Pointers, and References/1. Arrays of objects/3.cpp diff --git a/OOP in C++/Leacture_04: Arrays, Pointers, and References/1. Arrays of objects/4.cpp b/OOP in C++/Lecture_04: Arrays, Pointers, and References/1. Arrays of objects/4.cpp similarity index 100% rename from OOP in C++/Leacture_04: Arrays, Pointers, and References/1. Arrays of objects/4.cpp rename to OOP in C++/Lecture_04: Arrays, Pointers, and References/1. Arrays of objects/4.cpp diff --git a/OOP in C++/Leacture_04: Arrays, Pointers, and References/1.cpp_arrays_objects_tutorial.md b/OOP in C++/Lecture_04: Arrays, Pointers, and References/1.cpp_arrays_objects_tutorial.md similarity index 100% rename from OOP in C++/Leacture_04: Arrays, Pointers, and References/1.cpp_arrays_objects_tutorial.md rename to OOP in C++/Lecture_04: Arrays, Pointers, and References/1.cpp_arrays_objects_tutorial.md diff --git a/OOP in C++/Leacture_04: Arrays, Pointers, and References/2. Using Pointer To Objects/1.cpp b/OOP in C++/Lecture_04: Arrays, Pointers, and References/2. Using Pointer To Objects/1.cpp similarity index 100% rename from OOP in C++/Leacture_04: Arrays, Pointers, and References/2. Using Pointer To Objects/1.cpp rename to OOP in C++/Lecture_04: Arrays, Pointers, and References/2. Using Pointer To Objects/1.cpp diff --git a/OOP in C++/Leacture_04: Arrays, Pointers, and References/2. Using Pointer To Objects/temp b/OOP in C++/Lecture_04: Arrays, Pointers, and References/2. Using Pointer To Objects/temp similarity index 100% rename from OOP in C++/Leacture_04: Arrays, Pointers, and References/2. Using Pointer To Objects/temp rename to OOP in C++/Lecture_04: Arrays, Pointers, and References/2. Using Pointer To Objects/temp diff --git a/OOP in C++/Leacture_04: Arrays, Pointers, and References/2.cpp_pointers_objects_tutorial.md b/OOP in C++/Lecture_04: Arrays, Pointers, and References/2.cpp_pointers_objects_tutorial.md similarity index 100% rename from OOP in C++/Leacture_04: Arrays, Pointers, and References/2.cpp_pointers_objects_tutorial.md rename to OOP in C++/Lecture_04: Arrays, Pointers, and References/2.cpp_pointers_objects_tutorial.md diff --git a/OOP in C++/Leacture_04: Arrays, Pointers, and References/3. The this Pointer/1.cpp b/OOP in C++/Lecture_04: Arrays, Pointers, and References/3. The this Pointer/1.cpp similarity index 100% rename from OOP in C++/Leacture_04: Arrays, Pointers, and References/3. The this Pointer/1.cpp rename to OOP in C++/Lecture_04: Arrays, Pointers, and References/3. The this Pointer/1.cpp diff --git a/OOP in C++/Leacture_04: Arrays, Pointers, and References/3. The this Pointer/2.cpp b/OOP in C++/Lecture_04: Arrays, Pointers, and References/3. The this Pointer/2.cpp similarity index 100% rename from OOP in C++/Leacture_04: Arrays, Pointers, and References/3. The this Pointer/2.cpp rename to OOP in C++/Lecture_04: Arrays, Pointers, and References/3. The this Pointer/2.cpp diff --git a/OOP in C++/Leacture_04: Arrays, Pointers, and References/3.cpp_this_pointer_tutorial.md b/OOP in C++/Lecture_04: Arrays, Pointers, and References/3.cpp_this_pointer_tutorial.md similarity index 100% rename from OOP in C++/Leacture_04: Arrays, Pointers, and References/3.cpp_this_pointer_tutorial.md rename to OOP in C++/Lecture_04: Arrays, Pointers, and References/3.cpp_this_pointer_tutorial.md diff --git a/OOP in C++/Leacture_04: Arrays, Pointers, and References/4. Using new And delete/1.cpp b/OOP in C++/Lecture_04: Arrays, Pointers, and References/4. Using new And delete/1.cpp similarity index 100% rename from OOP in C++/Leacture_04: Arrays, Pointers, and References/4. Using new And delete/1.cpp rename to OOP in C++/Lecture_04: Arrays, Pointers, and References/4. Using new And delete/1.cpp diff --git a/OOP in C++/Leacture_04: Arrays, Pointers, and References/4. Using new And delete/2.cpp b/OOP in C++/Lecture_04: Arrays, Pointers, and References/4. Using new And delete/2.cpp similarity index 100% rename from OOP in C++/Leacture_04: Arrays, Pointers, and References/4. Using new And delete/2.cpp rename to OOP in C++/Lecture_04: Arrays, Pointers, and References/4. Using new And delete/2.cpp diff --git a/OOP in C++/Leacture_04: Arrays, Pointers, and References/4.cpp_new_delete_guide.md b/OOP in C++/Lecture_04: Arrays, Pointers, and References/4.cpp_new_delete_guide.md similarity index 100% rename from OOP in C++/Leacture_04: Arrays, Pointers, and References/4.cpp_new_delete_guide.md rename to OOP in C++/Lecture_04: Arrays, Pointers, and References/4.cpp_new_delete_guide.md diff --git a/OOP in C++/Leacture_04: Arrays, Pointers, and References/5. More About new And delete/1.cpp b/OOP in C++/Lecture_04: Arrays, Pointers, and References/5. More About new And delete/1.cpp similarity index 100% rename from OOP in C++/Leacture_04: Arrays, Pointers, and References/5. More About new And delete/1.cpp rename to OOP in C++/Lecture_04: Arrays, Pointers, and References/5. More About new And delete/1.cpp diff --git a/OOP in C++/Leacture_04: Arrays, Pointers, and References/5. More About new And delete/2.cpp b/OOP in C++/Lecture_04: Arrays, Pointers, and References/5. More About new And delete/2.cpp similarity index 100% rename from OOP in C++/Leacture_04: Arrays, Pointers, and References/5. More About new And delete/2.cpp rename to OOP in C++/Lecture_04: Arrays, Pointers, and References/5. More About new And delete/2.cpp diff --git a/OOP in C++/Leacture_04: Arrays, Pointers, and References/5.cpp_advanced_new_delete.md b/OOP in C++/Lecture_04: Arrays, Pointers, and References/5.cpp_advanced_new_delete.md similarity index 100% rename from OOP in C++/Leacture_04: Arrays, Pointers, and References/5.cpp_advanced_new_delete.md rename to OOP in C++/Lecture_04: Arrays, Pointers, and References/5.cpp_advanced_new_delete.md diff --git a/OOP in C++/Leacture_04: Arrays, Pointers, and References/6. References/temp b/OOP in C++/Lecture_04: Arrays, Pointers, and References/6. References/temp similarity index 100% rename from OOP in C++/Leacture_04: Arrays, Pointers, and References/6. References/temp rename to OOP in C++/Lecture_04: Arrays, Pointers, and References/6. References/temp diff --git a/OOP in C++/Leacture_04: Arrays, Pointers, and References/6.cpp_references_guide.md b/OOP in C++/Lecture_04: Arrays, Pointers, and References/6.cpp_references_guide.md similarity index 100% rename from OOP in C++/Leacture_04: Arrays, Pointers, and References/6.cpp_references_guide.md rename to OOP in C++/Lecture_04: Arrays, Pointers, and References/6.cpp_references_guide.md diff --git a/OOP in C++/Leacture_04: Arrays, Pointers, and References/7. Passing References to Objects/temp b/OOP in C++/Lecture_04: Arrays, Pointers, and References/7. Passing References to Objects/temp similarity index 100% rename from OOP in C++/Leacture_04: Arrays, Pointers, and References/7. Passing References to Objects/temp rename to OOP in C++/Lecture_04: Arrays, Pointers, and References/7. Passing References to Objects/temp diff --git a/OOP in C++/Leacture_04: Arrays, Pointers, and References/7.cpp_object_references_guide.md b/OOP in C++/Lecture_04: Arrays, Pointers, and References/7.cpp_object_references_guide.md similarity index 100% rename from OOP in C++/Leacture_04: Arrays, Pointers, and References/7.cpp_object_references_guide.md rename to OOP in C++/Lecture_04: Arrays, Pointers, and References/7.cpp_object_references_guide.md diff --git a/OOP in C++/Leacture_04: Arrays, Pointers, and References/8. Returning References/temp b/OOP in C++/Lecture_04: Arrays, Pointers, and References/8. Returning References/temp similarity index 100% rename from OOP in C++/Leacture_04: Arrays, Pointers, and References/8. Returning References/temp rename to OOP in C++/Lecture_04: Arrays, Pointers, and References/8. Returning References/temp diff --git a/OOP in C++/Leacture_04: Arrays, Pointers, and References/8.cpp_returning_references.md b/OOP in C++/Lecture_04: Arrays, Pointers, and References/8.cpp_returning_references.md similarity index 100% rename from OOP in C++/Leacture_04: Arrays, Pointers, and References/8.cpp_returning_references.md rename to OOP in C++/Lecture_04: Arrays, Pointers, and References/8.cpp_returning_references.md diff --git a/OOP in C++/Leacture_04: Arrays, Pointers, and References/9. Independent References and Restrictions/temp b/OOP in C++/Lecture_04: Arrays, Pointers, and References/9. Independent References and Restrictions/temp similarity index 100% rename from OOP in C++/Leacture_04: Arrays, Pointers, and References/9. Independent References and Restrictions/temp rename to OOP in C++/Lecture_04: Arrays, Pointers, and References/9. Independent References and Restrictions/temp diff --git a/OOP in C++/Leacture_04: Arrays, Pointers, and References/9.cpp_independent_references.md b/OOP in C++/Lecture_04: Arrays, Pointers, and References/9.cpp_independent_references.md similarity index 100% rename from OOP in C++/Leacture_04: Arrays, Pointers, and References/9.cpp_independent_references.md rename to OOP in C++/Lecture_04: Arrays, Pointers, and References/9.cpp_independent_references.md diff --git a/OOP in C++/Leacture_05: Function Overloading/1.cpp_constructor_overloading.md b/OOP in C++/Lecture_05: Function Overloading/1.cpp_constructor_overloading.md similarity index 100% rename from OOP in C++/Leacture_05: Function Overloading/1.cpp_constructor_overloading.md rename to OOP in C++/Lecture_05: Function Overloading/1.cpp_constructor_overloading.md diff --git a/OOP in C++/Leacture_05: Function Overloading/2.cpp_copy_constructor_guide.md b/OOP in C++/Lecture_05: Function Overloading/2.cpp_copy_constructor_guide.md similarity index 100% rename from OOP in C++/Leacture_05: Function Overloading/2.cpp_copy_constructor_guide.md rename to OOP in C++/Lecture_05: Function Overloading/2.cpp_copy_constructor_guide.md diff --git a/OOP in C++/Leacture_05: Function Overloading/3.cpp_default_arguments.md b/OOP in C++/Lecture_05: Function Overloading/3.cpp_default_arguments.md similarity index 100% rename from OOP in C++/Leacture_05: Function Overloading/3.cpp_default_arguments.md rename to OOP in C++/Lecture_05: Function Overloading/3.cpp_default_arguments.md diff --git a/OOP in C++/Leacture_05: Function Overloading/4.cpp_overloading_ambiguity.md b/OOP in C++/Lecture_05: Function Overloading/4.cpp_overloading_ambiguity.md similarity index 100% rename from OOP in C++/Leacture_05: Function Overloading/4.cpp_overloading_ambiguity.md rename to OOP in C++/Lecture_05: Function Overloading/4.cpp_overloading_ambiguity.md diff --git a/OOP in C++/Leacture_05: Function Overloading/5.overloaded_function_address.md b/OOP in C++/Lecture_05: Function Overloading/5.overloaded_function_address.md similarity index 100% rename from OOP in C++/Leacture_05: Function Overloading/5.overloaded_function_address.md rename to OOP in C++/Lecture_05: Function Overloading/5.overloaded_function_address.md diff --git a/OOP in C++/Leacture_05: Function Overloading/Code_Example/1.cpp b/OOP in C++/Lecture_05: Function Overloading/Code_Example/1.cpp similarity index 100% rename from OOP in C++/Leacture_05: Function Overloading/Code_Example/1.cpp rename to OOP in C++/Lecture_05: Function Overloading/Code_Example/1.cpp diff --git a/OOP in C++/Leacture_05: Function Overloading/Code_Example/2.cpp b/OOP in C++/Lecture_05: Function Overloading/Code_Example/2.cpp similarity index 100% rename from OOP in C++/Leacture_05: Function Overloading/Code_Example/2.cpp rename to OOP in C++/Lecture_05: Function Overloading/Code_Example/2.cpp diff --git a/OOP in C++/Leacture_05: Function Overloading/Code_Example/3.cpp b/OOP in C++/Lecture_05: Function Overloading/Code_Example/3.cpp similarity index 100% rename from OOP in C++/Leacture_05: Function Overloading/Code_Example/3.cpp rename to OOP in C++/Lecture_05: Function Overloading/Code_Example/3.cpp diff --git a/OOP in C++/Leacture_06: Introducing Operator Overloading/1.operator_overloading_basics.md b/OOP in C++/Lecture_06: Introducing Operator Overloading/1.operator_overloading_basics.md similarity index 100% rename from OOP in C++/Leacture_06: Introducing Operator Overloading/1.operator_overloading_basics.md rename to OOP in C++/Lecture_06: Introducing Operator Overloading/1.operator_overloading_basics.md diff --git a/OOP in C++/Leacture_06: Introducing Operator Overloading/2.binary_operator_overloading.md b/OOP in C++/Lecture_06: Introducing Operator Overloading/2.binary_operator_overloading.md similarity index 100% rename from OOP in C++/Leacture_06: Introducing Operator Overloading/2.binary_operator_overloading.md rename to OOP in C++/Lecture_06: Introducing Operator Overloading/2.binary_operator_overloading.md diff --git a/OOP in C++/Leacture_06: Introducing Operator Overloading/3.relational_logical_operators.md b/OOP in C++/Lecture_06: Introducing Operator Overloading/3.relational_logical_operators.md similarity index 100% rename from OOP in C++/Leacture_06: Introducing Operator Overloading/3.relational_logical_operators.md rename to OOP in C++/Lecture_06: Introducing Operator Overloading/3.relational_logical_operators.md diff --git a/OOP in C++/Leacture_06: Introducing Operator Overloading/4.unary_operator_overloading.md b/OOP in C++/Lecture_06: Introducing Operator Overloading/4.unary_operator_overloading.md similarity index 100% rename from OOP in C++/Leacture_06: Introducing Operator Overloading/4.unary_operator_overloading.md rename to OOP in C++/Lecture_06: Introducing Operator Overloading/4.unary_operator_overloading.md diff --git a/OOP in C++/Leacture_06: Introducing Operator Overloading/5.friend_operator_functions.md b/OOP in C++/Lecture_06: Introducing Operator Overloading/5.friend_operator_functions.md similarity index 100% rename from OOP in C++/Leacture_06: Introducing Operator Overloading/5.friend_operator_functions.md rename to OOP in C++/Lecture_06: Introducing Operator Overloading/5.friend_operator_functions.md diff --git a/OOP in C++/Leacture_06: Introducing Operator Overloading/6.assignment_operator_guide.md b/OOP in C++/Lecture_06: Introducing Operator Overloading/6.assignment_operator_guide.md similarity index 100% rename from OOP in C++/Leacture_06: Introducing Operator Overloading/6.assignment_operator_guide.md rename to OOP in C++/Lecture_06: Introducing Operator Overloading/6.assignment_operator_guide.md diff --git a/OOP in C++/Leacture_06: Introducing Operator Overloading/Code_Example/1.cpp b/OOP in C++/Lecture_06: Introducing Operator Overloading/Code_Example/1.cpp similarity index 100% rename from OOP in C++/Leacture_06: Introducing Operator Overloading/Code_Example/1.cpp rename to OOP in C++/Lecture_06: Introducing Operator Overloading/Code_Example/1.cpp diff --git a/OOP in C++/Leacture_06: Introducing Operator Overloading/Code_Example/2.cpp b/OOP in C++/Lecture_06: Introducing Operator Overloading/Code_Example/2.cpp similarity index 100% rename from OOP in C++/Leacture_06: Introducing Operator Overloading/Code_Example/2.cpp rename to OOP in C++/Lecture_06: Introducing Operator Overloading/Code_Example/2.cpp diff --git a/OOP in C++/Lecture_08:Introducing the C++ IO System/1.cpp_io_basics.md b/OOP in C++/Lecture_08: Introducing the C++ IO System/1.cpp_io_basics.md similarity index 100% rename from OOP in C++/Lecture_08:Introducing the C++ IO System/1.cpp_io_basics.md rename to OOP in C++/Lecture_08: Introducing the C++ IO System/1.cpp_io_basics.md diff --git a/OOP in C++/Lecture_08:Introducing the C++ IO System/2.cpp_formatted_io.md b/OOP in C++/Lecture_08: Introducing the C++ IO System/2.cpp_formatted_io.md similarity index 100% rename from OOP in C++/Lecture_08:Introducing the C++ IO System/2.cpp_formatted_io.md rename to OOP in C++/Lecture_08: Introducing the C++ IO System/2.cpp_formatted_io.md diff --git a/OOP in C++/Lecture_08:Introducing the C++ IO System/3.cpp_width_precision_fill.md b/OOP in C++/Lecture_08: Introducing the C++ IO System/3.cpp_width_precision_fill.md similarity index 100% rename from OOP in C++/Lecture_08:Introducing the C++ IO System/3.cpp_width_precision_fill.md rename to OOP in C++/Lecture_08: Introducing the C++ IO System/3.cpp_width_precision_fill.md diff --git a/OOP in C++/Lecture_08:Introducing the C++ IO System/4.cpp_io_manipulators.md b/OOP in C++/Lecture_08: Introducing the C++ IO System/4.cpp_io_manipulators.md similarity index 100% rename from OOP in C++/Lecture_08:Introducing the C++ IO System/4.cpp_io_manipulators.md rename to OOP in C++/Lecture_08: Introducing the C++ IO System/4.cpp_io_manipulators.md diff --git a/OOP in C++/Lecture_08:Introducing the C++ IO System/5.cpp_inserters_guide.md b/OOP in C++/Lecture_08: Introducing the C++ IO System/5.cpp_inserters_guide.md similarity index 100% rename from OOP in C++/Lecture_08:Introducing the C++ IO System/5.cpp_inserters_guide.md rename to OOP in C++/Lecture_08: Introducing the C++ IO System/5.cpp_inserters_guide.md diff --git a/OOP in C++/Lecture_08:Introducing the C++ IO System/6.cpp_extractors_guide.md b/OOP in C++/Lecture_08: Introducing the C++ IO System/6.cpp_extractors_guide.md similarity index 100% rename from OOP in C++/Lecture_08:Introducing the C++ IO System/6.cpp_extractors_guide.md rename to OOP in C++/Lecture_08: Introducing the C++ IO System/6.cpp_extractors_guide.md diff --git a/QUICK_REFERENCE.md b/QUICK_REFERENCE.md new file mode 100644 index 0000000..a3a4241 --- /dev/null +++ b/QUICK_REFERENCE.md @@ -0,0 +1,351 @@ +# πŸ“– Quick Reference Guide + +A fast reference to common OOP concepts, commands, and resources in this repository. + +--- + +## πŸš€ Quick Start Commands + +### C++ Compilation + +```bash +# Basic compilation +g++ filename.cpp -o output + +# With C++17 standard and warnings +g++ -std=c++17 -Wall -Wextra filename.cpp -o output + +# Multiple files +g++ file1.cpp file2.cpp -o output + +# Run the program +./output # Linux/Mac +output.exe # Windows +``` + +### Java Compilation + +```bash +# Compile +javac ClassName.java + +# Run +java ClassName + +# Compile with warnings +javac -Xlint:all ClassName.java +``` + +--- + +## πŸ“š Core OOP Concepts + +### The Four Pillars of OOP + +1. **Encapsulation** πŸ”’ + - Bundling data and methods together + - Using access modifiers (private, public, protected) + - See: [C++ Lecture 02](OOP%20in%20C++/Lecture_02:%20Introducing%20Classes/), [Java Chapter 9](OOP%20in%20Java/Chapter%209%20-%20Objects%20and%20Classes/) + +2. **Inheritance** 🌳 + - Creating new classes from existing ones + - Code reusability through parent-child relationships + - See: [C++ Lecture 07](OOP%20in%20C++/Lecture_07:%20Inheritance/), [Java Chapter 11](OOP%20in%20Java/Chapter%2011%20-%20Inheritance%20and%20Polymorphism/) + +3. **Polymorphism** 🎭 + - Same interface, different implementations + - Method overloading and overriding + - See: [C++ Lecture 05-06, 10](OOP%20in%20C++/), [Java Chapter 11](OOP%20in%20Java/Chapter%2011%20-%20Inheritance%20and%20Polymorphism/) + +4. **Abstraction** 🎨 + - Hiding complex implementation details + - Using abstract classes and interfaces + - See: [C++ Lecture 10](OOP%20in%20C++/Lecture_10:%20Virtual%20Functions/), [Java Chapter 13](OOP%20in%20Java/Chapter%2013%20-%20Abstract%20Classes%20and%20Interfaces/) + +--- + +## πŸ”‘ Key C++ Concepts + +### Classes and Objects +```cpp +class MyClass { +private: + int data; +public: + MyClass(int d) : data(d) {} // Constructor + ~MyClass() {} // Destructor + void display() { cout << data; } +}; + +MyClass obj(10); // Object creation +``` + +### Pointers and References +```cpp +int* ptr = new int(10); // Pointer +int& ref = *ptr; // Reference +delete ptr; // Memory cleanup +``` + +### Inheritance +```cpp +class Base { + // Base class +}; + +class Derived : public Base { + // Derived class +}; +``` + +### Virtual Functions +```cpp +class Base { +public: + virtual void display() { + // Can be overridden + } +}; +``` + +--- + +## β˜• Key Java Concepts + +### Classes and Objects +```java +public class MyClass { + private int data; + + public MyClass(int d) { // Constructor + this.data = d; + } + + public void display() { + System.out.println(data); + } +} + +MyClass obj = new MyClass(10); // Object creation +``` + +### Inheritance +```java +public class Base { + // Base class +} + +public class Derived extends Base { + // Derived class +} +``` + +### Interfaces +```java +public interface MyInterface { + void method(); // Abstract method +} + +public class MyClass implements MyInterface { + public void method() { + // Implementation + } +} +``` + +### Exception Handling +```java +try { + // Code that may throw exception +} catch (Exception e) { + // Handle exception +} finally { + // Always executes +} +``` + +--- + +## πŸ“‚ Repository Navigation + +### By Topic + +| Topic | C++ Location | Java Location | +|-------|--------------|---------------| +| **Basics** | [Lecture 01](OOP%20in%20C++/Lecture_01:%20An%20Overview%20of%20C++/) | [Chapter 1-2](OOP%20in%20Java/Chapter%201%20-%20Introduction%20to%20Computers,%20Programs,%20and%20Java/) | +| **Classes** | [Lecture 02-03](OOP%20in%20C++/Lecture_02:%20Introducing%20Classes/) | [Chapter 9](OOP%20in%20Java/Chapter%209%20-%20Objects%20and%20Classes/) | +| **Memory Management** | [Lecture 04](OOP%20in%20C++/Lecture_04:%20Arrays,%20Pointers,%20and%20References/) | N/A (Automatic) | +| **Overloading** | [Lecture 05-06](OOP%20in%20C++/Lecture_05:%20Function%20Overloading/) | [Chapter 6, 11](OOP%20in%20Java/Chapter%206%20-%20Methods/) | +| **Inheritance** | [Lecture 07](OOP%20in%20C++/Lecture_07:%20Inheritance/) | [Chapter 11](OOP%20in%20Java/Chapter%2011%20-%20Inheritance%20and%20Polymorphism/) | +| **I/O** | [Lecture 08-09](OOP%20in%20C++/Lecture_08:%20Introducing%20the%20C++%20IO%20System/) | [Chapter 12](OOP%20in%20Java/Chapter%2012%20-%20Exception%20Handling%20and%20Text%20I%20and%20O/) | +| **Polymorphism** | [Lecture 10](OOP%20in%20C++/Lecture_10:%20Virtual%20Functions/) | [Chapter 11](OOP%20in%20Java/Chapter%2011%20-%20Inheritance%20and%20Polymorphism/) | +| **Templates/Generics** | [Lecture 11, 14](OOP%20in%20C++/Lecture_11:%20Generic%20Functions/) | N/A (Built-in) | +| **Exceptions** | [Lecture 11](OOP%20in%20C++/Lecture_11:%20Generic%20Functions/) | [Chapter 12](OOP%20in%20Java/Chapter%2012%20-%20Exception%20Handling%20and%20Text%20I%20and%20O/) | +| **Abstract Classes** | [Lecture 10](OOP%20in%20C++/Lecture_10:%20Virtual%20Functions/) | [Chapter 13](OOP%20in%20Java/Chapter%2013%20-%20Abstract%20Classes%20and%20Interfaces/) | + +### By Difficulty + +- **Beginner**: Lectures 01-02, Chapters 1-4 +- **Intermediate**: Lectures 03-07, Chapters 5-9 +- **Advanced**: Lectures 08-14, Chapters 10-13 + +--- + +## πŸ› οΈ Common Issues & Solutions + +### C++ Issues + +**Problem**: `undefined reference to...` +```bash +# Solution: Link all required files +g++ main.cpp class.cpp -o output +``` + +**Problem**: Memory leaks +```cpp +// Solution: Always delete allocated memory +int* ptr = new int(10); +delete ptr; // Don't forget! +``` + +**Problem**: Segmentation fault +```cpp +// Solution: Check for null pointers +if (ptr != nullptr) { + // Use pointer +} +``` + +### Java Issues + +**Problem**: `Could not find or load main class` +```bash +# Solution: Ensure class name matches filename +javac ClassName.java +java ClassName # Not ClassName.java +``` + +**Problem**: `NullPointerException` +```java +// Solution: Check for null +if (obj != null) { + obj.method(); +} +``` + +--- + +## πŸ“ Useful Documentation + +### Repository Guides +- πŸ“– [Getting Started](GETTING_STARTED.md) - Setup and installation +- πŸ—ΊοΈ [Content Index](CONTENT_INDEX.md) - All materials catalog +- 🀝 [Contributing](CONTRIBUTING.md) - How to contribute +- πŸ’¬ [Support](SUPPORT.md) - Getting help +- πŸ”’ [Security](SECURITY.md) - Security policy + +### External Resources + +#### C++ +- [cppreference.com](https://en.cppreference.com/) - Complete C++ reference +- [cplusplus.com](http://www.cplusplus.com/) - Tutorials and reference +- [LearnCpp.com](https://www.learncpp.com/) - Free tutorials + +#### Java +- [Oracle Java Docs](https://docs.oracle.com/en/java/) - Official documentation +- [Java Tutorials](https://docs.oracle.com/javase/tutorial/) - Official tutorials +- [W3Schools Java](https://www.w3schools.com/java/) - Quick reference + +#### General OOP +- [GeeksforGeeks](https://www.geeksforgeeks.org/) - Concepts and examples +- [Design Patterns](https://refactoring.guru/design-patterns) - Common patterns + +--- + +## πŸŽ“ Study Tips + +1. **Start Sequential**: Begin with Lecture 1/Chapter 1 +2. **Practice Daily**: Code along with examples +3. **Understand Don't Memorize**: Focus on concepts +4. **Debug Often**: Learn from errors +5. **Use Documentation**: Check guides when stuck +6. **Ask Questions**: Use [issue templates](.github/ISSUE_TEMPLATE/) +7. **Review Regularly**: Revisit earlier topics + +--- + +## πŸ” Search Tips + +### GitHub Search +- Find specific topics: `keyword in:path` +- Search code: `function_name language:cpp` +- Find files: `filename:*.cpp` + +### In This Repo +- Use [Content Index](CONTENT_INDEX.md) for organized navigation +- Check folder README files for detailed info +- Use Ctrl+F to search within files + +--- + +## πŸ“Š Repository Statistics + +- **C++ Programs**: 139+ +- **Java Programs**: 17+ +- **Documentation Files**: 80+ +- **Lectures/Chapters**: 27 +- **Topics Covered**: 50+ + +--- + +## ⚑ Quick Links + +| Need | Link | +|------|------| +| Setup Help | [Getting Started](GETTING_STARTED.md) | +| Find Topic | [Content Index](CONTENT_INDEX.md) | +| Report Bug | [Bug Report](.github/ISSUE_TEMPLATE/bug_report.yml) | +| Ask Question | [Question Template](.github/ISSUE_TEMPLATE/question.yml) | +| Suggest Feature | [Feature Request](.github/ISSUE_TEMPLATE/feature_request.yml) | +| Get Support | [Support Guide](SUPPORT.md) | +| Contribute | [Contributing Guide](CONTRIBUTING.md) | + +--- + +## 🎯 Common Tasks + +### Setting Up Development Environment +1. Install compiler/JDK ([guide](GETTING_STARTED.md#installation)) +2. Clone repository +3. Navigate to desired topic +4. Compile and run examples + +### Studying a New Topic +1. Read topic's README.md +2. Review code examples +3. Understand concepts +4. Try practice problems +5. Test your understanding + +### Getting Help +1. Check relevant documentation +2. Search existing issues +3. Ask in [discussions](https://github.com/M-F-Tushar/CSE-1201-Object-Oriented-Programming-Language/discussions) +4. Create an issue if needed + +--- + +## πŸ“± Keep Learning + +Remember: +- βœ… Make mistakes - they're learning opportunities +- βœ… Practice regularly - consistency is key +- βœ… Ask questions - no question is too small +- βœ… Help others - teaching reinforces learning +- βœ… Have fun - enjoy the journey! + +--- + +**Happy Coding! πŸš€** + +*For detailed information, always refer to the complete documentation in the repository.* diff --git a/README.md b/README.md index 3076bdb..211c672 100644 --- a/README.md +++ b/README.md @@ -4,6 +4,8 @@ [![GitHub Stars](https://img.shields.io/github/stars/M-F-Tushar/CSE-1201-Object-Oriented-Programming-Language?style=social)](https://github.com/M-F-Tushar/CSE-1201-Object-Oriented-Programming-Language/stargazers) [![GitHub Forks](https://img.shields.io/github/forks/M-F-Tushar/CSE-1201-Object-Oriented-Programming-Language?style=social)](https://github.com/M-F-Tushar/CSE-1201-Object-Oriented-Programming-Language/network/members) [![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](CONTRIBUTING.md) +[![C++ Build](https://github.com/M-F-Tushar/CSE-1201-Object-Oriented-Programming-Language/actions/workflows/cpp-build.yml/badge.svg)](https://github.com/M-F-Tushar/CSE-1201-Object-Oriented-Programming-Language/actions/workflows/cpp-build.yml) +[![Java Build](https://github.com/M-F-Tushar/CSE-1201-Object-Oriented-Programming-Language/actions/workflows/java-build.yml/badge.svg)](https://github.com/M-F-Tushar/CSE-1201-Object-Oriented-Programming-Language/actions/workflows/java-build.yml) > πŸ“š A comprehensive collection of Object-Oriented Programming course materials, examples, and assignments using C++ and Java @@ -19,11 +21,16 @@ This repository contains all the programs, practicals, and assignments for **CSE - [Main Textbook](#-main-textbook) - [How to Use This Repository](#-how-to-use-this-repository) - [Contributing](#-contributing) +- [Community](#-community) - [License](#-license) > πŸ“š **New to this repository?** Check out the [Getting Started Guide](GETTING_STARTED.md) for setup instructions! > > πŸ—ΊοΈ **Looking for specific topics?** See the [Complete Content Index](CONTENT_INDEX.md) for a detailed catalog of all materials! +> +> ⚑ **Need quick answers?** Visit the [Quick Reference Guide](QUICK_REFERENCE.md) for commands and common concepts! +> +> πŸ’¬ **Need help?** Visit our [Support Guide](SUPPORT.md) for assistance! ## πŸ“˜ About the Course @@ -217,6 +224,40 @@ Contributions are welcome! This repository is for academic and self-learning pur Please read [CONTRIBUTING.md](CONTRIBUTING.md) for detailed guidelines. +## πŸ‘₯ Community + +We believe in building a supportive learning community! Here's how you can engage: + +### πŸ“– Documentation & Resources + +- **[Getting Started Guide](GETTING_STARTED.md)** - Setup and installation instructions +- **[Quick Reference Guide](QUICK_REFERENCE.md)** - Fast reference for commands and concepts +- **[Content Index](CONTENT_INDEX.md)** - Complete catalog of all materials +- **[Support Guide](SUPPORT.md)** - Community support and help resources +- **[Known Issues](KNOWN_ISSUES.md)** - Known issues and their status +- **[Code Style Guide](CODE_STYLE.md)** - Coding standards and best practices + +### πŸ›‘οΈ Policies & Guidelines + +- **[Code of Conduct](CODE_OF_CONDUCT.md)** - Community standards and expectations +- **[Security Policy](SECURITY.md)** - Reporting security vulnerabilities +- **[Contributing Guidelines](CONTRIBUTING.md)** - How to contribute effectively +- **[Contributors](CONTRIBUTORS.md)** - Recognition of all contributors + +### πŸ› Issue Templates + +We've created templates to make it easier to report issues: + +- **[Bug Report](.github/ISSUE_TEMPLATE/bug_report.yml)** - Report compilation errors, bugs, or issues +- **[Feature Request](.github/ISSUE_TEMPLATE/feature_request.yml)** - Suggest new features or improvements +- **[Question](.github/ISSUE_TEMPLATE/question.yml)** - Ask questions about the course material + +### πŸ’¬ Get Help + +- **Issues**: [Open an issue](https://github.com/M-F-Tushar/CSE-1201-Object-Oriented-Programming-Language/issues/new/choose) +- **Discussions**: [Join discussions](https://github.com/M-F-Tushar/CSE-1201-Object-Oriented-Programming-Language/discussions) (if enabled) +- **Support**: Read the [Support Guide](SUPPORT.md) + ## πŸ“œ License This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details. diff --git a/SECURITY.md b/SECURITY.md new file mode 100644 index 0000000..5cb80f2 --- /dev/null +++ b/SECURITY.md @@ -0,0 +1,167 @@ +# Security Policy + +## Overview + +The CSE 1201 - Object Oriented Programming Language repository is an educational resource containing code examples and learning materials. While this is primarily an educational repository, we take security seriously to ensure students learn secure coding practices. + +## Scope + +This security policy covers: + +- Code examples in C++ and Java +- Build and CI/CD configurations +- Documentation and scripts +- Repository infrastructure + +## Supported Versions + +As an educational repository, we maintain: + +| Version | Support Status | +| ------- | -------------- | +| Latest (main branch) | βœ… Actively maintained | +| Development branches | ⚠️ Experimental - may contain issues | +| Archived versions | ❌ No longer supported | + +## Reporting a Vulnerability + +If you discover a security vulnerability in this repository, please report it responsibly. + +### What to Report + +Please report issues including but not limited to: + +- **Code vulnerabilities**: Buffer overflows, memory leaks, unsafe operations +- **Dependency vulnerabilities**: Issues in GitHub Actions or third-party tools +- **Configuration issues**: Insecure settings in CI/CD or build files +- **Documentation issues**: Instructions that could lead to security problems + +### How to Report + +**For security vulnerabilities, please do NOT create a public issue.** + +Instead, please report privately through one of these methods: + +1. **GitHub Security Advisories** (Preferred): + - Go to the Security tab of this repository + - Click "Report a vulnerability" + - Fill out the advisory form + +2. **Email**: + - Contact the repository maintainers directly + - Include "SECURITY" in the subject line + - Provide detailed information about the vulnerability + +### What to Include + +When reporting a vulnerability, please include: + +- **Description**: Clear description of the vulnerability +- **Location**: File path and line numbers +- **Impact**: Potential security impact +- **Steps to reproduce**: How to demonstrate the issue +- **Suggested fix**: If you have one (optional) +- **Your environment**: Compiler/JDK version, OS, etc. + +### Response Timeline + +- **Initial Response**: Within 48-72 hours +- **Status Update**: Within 1 week +- **Resolution**: Depends on severity and complexity + +We will: +1. Confirm receipt of your report +2. Assess the vulnerability +3. Develop and test a fix +4. Release the fix and credit you (if desired) + +## Security Best Practices for Contributors + +When contributing to this repository, please follow these security guidelines: + +### For C++ Code + +- βœ… Use modern C++ standards (C++11 or later) +- βœ… Avoid raw pointers; prefer smart pointers +- βœ… Check array bounds +- βœ… Validate user input +- βœ… Handle exceptions properly +- βœ… Avoid buffer overflows +- ❌ Don't use unsafe functions (strcpy, gets, etc.) +- ❌ Don't ignore compiler warnings + +### For Java Code + +- βœ… Validate all inputs +- βœ… Use try-catch blocks appropriately +- βœ… Close resources properly (use try-with-resources) +- βœ… Avoid hardcoding sensitive information +- βœ… Use secure random number generators when needed +- ❌ Don't ignore exceptions +- ❌ Don't use deprecated or unsafe methods + +### General Guidelines + +- βœ… Keep dependencies updated +- βœ… Review code before committing +- βœ… Test code thoroughly +- βœ… Document security considerations +- βœ… Follow principle of least privilege +- ❌ Don't commit secrets, passwords, or API keys +- ❌ Don't use outdated or vulnerable libraries + +## Educational Context + +This repository is designed for learning. Some code examples may intentionally demonstrate: + +- Common mistakes students make +- Vulnerabilities to avoid +- Before/after comparisons + +Such examples should: +- Be clearly marked as "Bad Example" or "Insecure Example" +- Include explanations of why they're problematic +- Provide secure alternatives +- Not be used in production code + +## Out of Scope + +The following are generally out of scope for security reports: + +- Theoretical vulnerabilities without proof of concept +- Issues in student-submitted homework or practice code +- Vulnerabilities in external textbooks or references +- General programming questions or suggestions + +## Recognition + +We appreciate security researchers and contributors who help keep this repository secure. If you report a valid security issue: + +- We will acknowledge your contribution (with your permission) +- Your name will be added to our security hall of fame +- You can choose to remain anonymous + +## Additional Resources + +- [OWASP Top 10](https://owasp.org/www-project-top-ten/) +- [CWE Top 25 Most Dangerous Software Weaknesses](https://cwe.mitre.org/top25/) +- [CERT C++ Coding Standard](https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?pageId=88046682) +- [CERT Oracle Secure Coding Standard for Java](https://wiki.sei.cmu.edu/confluence/display/java/SEI+CERT+Oracle+Coding+Standard+for+Java) + +## Contact + +For security-related questions or concerns: + +- Use GitHub Security Advisories (preferred) +- Open a private security issue +- Follow responsible disclosure practices + +## Updates to This Policy + +This security policy may be updated periodically. Check back regularly for the latest version. + +--- + +**Last Updated**: November 2024 + +Thank you for helping keep CSE 1201 educational materials secure! πŸ”’ diff --git a/SUPPORT.md b/SUPPORT.md new file mode 100644 index 0000000..358f7c8 --- /dev/null +++ b/SUPPORT.md @@ -0,0 +1,204 @@ +# Support + +Welcome to the CSE 1201 - Object Oriented Programming Language repository support page! We're here to help you learn OOP concepts effectively. + +## πŸ“š Getting Help + +### Before Asking for Help + +Please check these resources first: + +1. **[README.md](README.md)** - Overview of the repository and course +2. **[GETTING_STARTED.md](GETTING_STARTED.md)** - Setup instructions and quick start guide +3. **[CONTENT_INDEX.md](CONTENT_INDEX.md)** - Complete catalog of all materials +4. **[KNOWN_ISSUES.md](KNOWN_ISSUES.md)** - List of known issues and solutions +5. **Lecture/Chapter README files** - Detailed documentation for each topic + +### Common Questions + +#### Setup and Installation + +**Q: How do I install the C++ compiler?** +- See the [GETTING_STARTED.md](GETTING_STARTED.md#installing-c-compiler) guide for detailed instructions for Windows, macOS, and Linux. + +**Q: How do I install Java?** +- See the [GETTING_STARTED.md](GETTING_STARTED.md#installing-java) guide for JDK installation instructions. + +**Q: My code won't compile. What should I do?** +- Check that you have the correct compiler/JDK version installed +- Verify the file path and filename +- Look for compilation errors and warnings +- Compare with working examples in the repository + +#### Using the Repository + +**Q: Where should I start?** +- Begin with the [GETTING_STARTED.md](GETTING_STARTED.md#learning-path) for a structured learning path +- Start with Lecture 1/Chapter 1 and progress sequentially + +**Q: How do I find specific topics?** +- Use the [CONTENT_INDEX.md](CONTENT_INDEX.md) to locate topics +- Use GitHub's search functionality +- Check the repository structure in the README + +**Q: Can I use this code for my assignments?** +- This repository is for learning and reference +- Understand the code thoroughly before using it +- Follow your institution's academic integrity policies +- Give proper attribution when required + +## 🀝 Ways to Get Support + +### 1. GitHub Discussions (Recommended) + +For general questions, discussions, and community support: + +- Visit the [Discussions](https://github.com/M-F-Tushar/CSE-1201-Object-Oriented-Programming-Language/discussions) tab +- Search existing discussions first +- Create a new discussion if your question hasn't been asked +- Help answer other students' questions + +**Discussion Categories:** +- πŸ’¬ **General** - General discussions about OOP +- πŸ’‘ **Q&A** - Questions and answers +- πŸ™Œ **Show and Tell** - Share your projects +- πŸ’» **Code Help** - Get help with specific code issues + +### 2. GitHub Issues + +For specific problems with the repository: + +- **Bug Reports**: [Create a bug report](.github/ISSUE_TEMPLATE/bug_report.yml) +- **Feature Requests**: [Request a feature](.github/ISSUE_TEMPLATE/feature_request.yml) +- **Questions**: [Ask a question](.github/ISSUE_TEMPLATE/question.yml) + +Before creating an issue: +- Search existing issues to avoid duplicates +- Use the appropriate issue template +- Provide clear, detailed information +- Include code examples and error messages + +### 3. Contributing + +Help improve the repository: + +- Read the [CONTRIBUTING.md](CONTRIBUTING.md) guidelines +- Submit pull requests for improvements +- Help review others' contributions +- Report typos or errors in documentation + +## πŸ“– Learning Resources + +### In This Repository + +- **Code Examples**: Well-commented examples in each lecture/chapter folder +- **Documentation**: Markdown guides explaining concepts +- **Practice Problems**: Exercises in the Practice folders +- **Exam Materials**: Past exams and practice tests + +### External Resources + +#### C++ Resources +- [cplusplus.com](http://www.cplusplus.com/) - C++ reference and tutorials +- [cppreference.com](https://en.cppreference.com/) - Comprehensive C++ documentation +- [LearnCpp.com](https://www.learncpp.com/) - Free C++ tutorial site + +#### Java Resources +- [Oracle Java Tutorials](https://docs.oracle.com/javase/tutorial/) - Official Java tutorials +- [Java Documentation](https://docs.oracle.com/en/java/) - Official Java docs +- [W3Schools Java](https://www.w3schools.com/java/) - Java tutorials + +#### OOP Concepts +- [GeeksforGeeks OOP](https://www.geeksforgeeks.org/object-oriented-programming-oops-concept-in-java/) - OOP concepts explained +- [Refactoring.guru](https://refactoring.guru/design-patterns) - Design patterns + +## πŸ› Reporting Bugs + +Found a bug in the code or documentation? + +1. Check [KNOWN_ISSUES.md](KNOWN_ISSUES.md) to see if it's already documented +2. Search existing [issues](https://github.com/M-F-Tushar/CSE-1201-Object-Oriented-Programming-Language/issues) +3. If not found, [create a bug report](.github/ISSUE_TEMPLATE/bug_report.yml) + +Include: +- Clear description of the bug +- File location +- Steps to reproduce +- Expected vs. actual behavior +- Your environment (OS, compiler version, etc.) + +## πŸ”’ Security Issues + +Found a security vulnerability? + +- **DO NOT** create a public issue +- See [SECURITY.md](SECURITY.md) for responsible disclosure guidelines +- Report through GitHub Security Advisories + +## ⏱️ Response Times + +This is an educational repository maintained by volunteers. Please be patient: + +- **Issues/Questions**: Usually responded to within 2-3 days +- **Pull Requests**: Reviewed within 1 week +- **Security Issues**: Initial response within 48-72 hours + +## 🌟 Community Guidelines + +When seeking or providing support: + +- βœ… Be respectful and professional +- βœ… Be clear and specific in your questions +- βœ… Provide relevant code and error messages +- βœ… Thank those who help you +- βœ… Share your solutions to help others +- βœ… Follow the [Code of Conduct](CODE_OF_CONDUCT.md) +- ❌ Don't ask for homework solutions +- ❌ Don't share assignment answers publicly +- ❌ Don't expect immediate responses +- ❌ Don't post personal information + +## πŸ“§ Direct Contact + +For issues that cannot be handled through public channels: + +- Use GitHub's private reporting features +- Check if instructors have provided contact information +- Respect response time expectations + +## πŸŽ“ Academic Integrity + +This repository is for educational purposes: + +- Use it to **learn** and **understand** concepts +- Don't copy code without understanding it +- Follow your institution's academic integrity policies +- Give credit where credit is due +- Cite sources appropriately + +## πŸ“Š Help Us Help You + +You can help improve support by: + +- ⭐ Star the repository if it helps you +- πŸ“ Improve documentation through pull requests +- πŸ› Report bugs and issues +- πŸ’¬ Answer questions in discussions +- πŸ”— Share the repository with classmates +- ✍️ Write helpful guides or tutorials + +## πŸ“± Stay Updated + +- Watch the repository for updates +- Check [CHANGELOG.md](CHANGELOG.md) for recent changes +- Follow releases for major updates + +## πŸ™ Thank You + +Thank you for being part of the CSE 1201 learning community! Your questions, contributions, and feedback help make this repository better for everyone. + +--- + +**Remember**: The best way to learn programming is by doing. Don't be afraid to experiment, make mistakes, and ask questions! + +Happy Coding! πŸš€