Skip to content

Programming2023-24/c-programming-group2-sverghes

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

6 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Review Assignment Due Date

πŸš€ C++ Programming Classroom

Welcome to the C++ Programming Classroom! This repository is set up for automated testing and grading of C++ programming assignments.

πŸ“‹ Course Overview

This classroom provides a complete environment for C++ programming assignments with:

  • βœ… Automated Testing - Your code is tested automatically when you submit
  • πŸ—οΈ CMake Build System - Professional C++ project structure
  • πŸ§ͺ Google Test Framework - Industry-standard unit testing
  • πŸ“Š Autograding - Instant feedback on your submissions
  • 🎯 GitHub Actions CI/CD - Continuous integration and deployment

πŸ—οΈ Repository Structure

πŸ“ c-programming-group2-sverghes/
β”œβ”€β”€ πŸ“ assignments/           # All programming assignments
β”‚   β”œβ”€β”€ πŸ“ assignment1/      # Hello World with Functions
β”‚   β”‚   β”œβ”€β”€ πŸ“ src/          # Your source code (.cpp files)
β”‚   β”‚   β”œβ”€β”€ πŸ“ include/      # Header files (.h/.hpp files)
β”‚   β”‚   β”œβ”€β”€ πŸ“ tests/        # Unit tests
β”‚   β”‚   β”œβ”€β”€ CMakeLists.txt   # Build configuration
β”‚   β”‚   └── README.md        # Assignment instructions
β”‚   └── πŸ“ assignment2/      # Future assignments...
β”œβ”€β”€ πŸ“ template/             # Template for new assignments
β”œβ”€β”€ πŸ“ .github/workflows/    # Automated testing configuration
β”œβ”€β”€ CMakeLists.txt           # Main build configuration
└── README.md               # This file

πŸš€ Getting Started

Prerequisites

  • Git - for version control
  • CMake (3.14+) - build system
  • C++ Compiler - GCC 7+ or Clang 7+ or MSVC 2017+
  • Internet connection - for downloading Google Test

Local Development Setup

  1. Clone the repository

    git clone <your-repo-url>
    cd c-programming-group2-sverghes
  2. Build all assignments

    mkdir build
    cd build
    cmake ..
    make
  3. Run tests

    ctest
  4. Run a specific assignment

    ./assignments/assignment1/assignment1

πŸ“ Working on Assignments

Step 1: Navigate to Your Assignment

cd assignments/assignment1  # or assignment2, etc.

Step 2: Read the Instructions

Each assignment has a README.md with:

  • Objective and requirements
  • Function specifications
  • Expected inputs/outputs
  • Grading criteria

Step 3: Implement Your Solution

  • Write your header files in include/
  • Write your source code in src/
  • Follow the function signatures provided

Step 4: Test Locally

# From the root directory
mkdir -p build && cd build
cmake ..
make
ctest  # Run all tests
./assignments/assignment1/assignment1  # Run your program

Step 5: Submit Your Work

git add .
git commit -m "Complete assignment 1"
git push

πŸ§ͺ Testing and Grading

Automated Testing

When you push code, GitHub Actions will:

  1. Build your project
  2. Run all tests
  3. Generate a grade report
  4. Provide feedback on what passed/failed

Test Types

  • Unit Tests - Test individual functions
  • Integration Tests - Test complete programs
  • Edge Cases - Test boundary conditions
  • Code Quality - Check for warnings/errors

Viewing Results

  • Go to Actions tab in GitHub
  • Click on the latest workflow run
  • View the test results and grade report
  • Download artifacts for detailed feedback

πŸ’‘ Tips for Success

Code Quality

  • βœ… Use meaningful variable names
  • βœ… Add comments for complex logic
  • βœ… Follow consistent formatting
  • βœ… Handle edge cases appropriately

Testing Strategy

  • πŸ§ͺ Test your code before submitting
  • πŸ§ͺ Consider edge cases (empty inputs, negative numbers, etc.)
  • πŸ§ͺ Verify function return types match specifications
  • πŸ§ͺ Test with different input values

Common Issues

❌ Build Failures

  • Check for syntax errors
  • Ensure all required files exist
  • Verify function signatures match headers

❌ Test Failures

  • Read test output carefully
  • Check expected vs actual values
  • Verify your logic handles all cases

❌ Missing Files

  • Ensure you have all required source files
  • Check that headers are included properly
  • Verify CMakeLists.txt references all files

πŸ“š Current Assignments

Assignment 1: Hello World with Functions

Status: βœ… Available
Objective: Learn basic C++ functions, strings, and arithmetic
Due: Check assignment README for deadline

Key Learning Goals:

  • Function declaration and definition
  • String manipulation
  • Basic arithmetic operations
  • Boolean logic

View Assignment 1 β†’

πŸ”§ For Instructors

Adding New Assignments

  1. Copy the template

    cp -r template assignments/assignment3
  2. Update the assignment

    • Modify CMakeLists.txt with new assignment name
    • Write assignment-specific code and tests
    • Update README.md with instructions
  3. Add to build system

    # In root CMakeLists.txt
    add_subdirectory(assignments/assignment3)

Customizing Auto-grading

  • Edit .github/workflows/autograder.yml
  • Add custom test cases in each assignment's tests/ directory
  • Modify grading criteria and point distribution

πŸ†˜ Getting Help

Resources

Support

  • Check the Issues tab for common problems
  • Review failed test outputs in GitHub Actions
  • Ask questions in class or office hours

πŸ“„ License

This classroom repository is for educational purposes. Code submissions are subject to academic integrity policies.


Happy Coding! 🎯 Remember to start early, test often, and don't hesitate to ask for help!

About

c-programming-group2-sverghes created by GitHub Classroom

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 3

  •  
  •  
  •