Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
93af8fe
Update hello message
minasenturk Sep 20, 2025
7b924bd
added lab 2 stubs
ValRCS Sep 22, 2025
0efcece
updated makefile
ValRCS Sep 22, 2025
ea6544a
added 3 tasks for week 3
ValRCS Sep 28, 2025
986f323
Create Week 3 lab instructions for C programming
ValRCS Sep 28, 2025
baae97b
Add Task 2 instructions for pointers in functions
ValRCS Sep 28, 2025
b6add73
Update Week 3 instructions for string handling task
ValRCS Sep 28, 2025
7383834
Update Week 3 instructions with submission details
ValRCS Sep 28, 2025
884c70c
Update Week 3 instructions with Lab 3 file acquisition
ValRCS Sep 28, 2025
0824d42
Add instructions for syncing fork on GitHub
ValRCS Sep 28, 2025
10e3581
Create LEARNING_RESOURCES.md for C programming
ValRCS Sep 28, 2025
fc04c6e
Update syncing instructions in Week 3 document
ValRCS Sep 28, 2025
85c2044
added math sqrt test with instructions
ValRCS Sep 28, 2025
8dfce1d
updated makefile
ValRCS Sep 28, 2025
276d726
Find my min solved
ValRCS Sep 29, 2025
2270e31
Revise README for C Programming course syllabus
ValRCS Oct 5, 2025
696be97
Add weekly overview section to README
ValRCS Oct 5, 2025
1140b9f
Remove Lab 1 content from README.md
ValRCS Oct 5, 2025
8ce60a2
Add Week 1 C Basics lab instructions
ValRCS Oct 5, 2025
2f7d03d
Updated Makefile for week 4
ValRCS Oct 5, 2025
c601bd4
Added Week 4 Labs
ValRCS Oct 5, 2025
44368a0
Week 4 Instructions
ValRCS Oct 5, 2025
a2d6817
Include resources on dynamic memory and structs in C
ValRCS Oct 5, 2025
b0b2c60
Update submission instructions for clarity
ValRCS Oct 5, 2025
edf7a74
Week 4 Task 3: dynamic Student database (malloc + input + table + free)
minasenturk Oct 10, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
40 changes: 40 additions & 0 deletions LEARNING_RESOURCES.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
# C Learning Resources on GitHub (as of September 2025)

This page lists useful GitHub repositories for learning and practicing C programming.
Each resource includes a description and a suggested difficulty level.

---

## Repository Table

| Repository | Description | Difficulty |
|------------|-------------|------------|
| [CodeWithHarry / The-Ultimate-C-Programming-Course](https://github.com/CodeWithHarry/The-Ultimate-C-Programming-Course) | A structured course with chapters, practice sets, and project code. Good for beginners who want guided progression. | Beginner |
| [nCally / Project-Based-Tutorials-in-C](https://github.com/nCally/Project-Based-Tutorials-in-C) | A collection of tutorials building projects in C (from small programs to advanced topics like emulators and OS concepts). | Intermediate → Advanced |
| [sbccas / c-programming-tutorials](https://github.com/sbccas/c-programming-tutorials) | Tutorials, assignments, and sample programs covering basics and intermediate C programming concepts. | Beginner → Intermediate |
| [h0mbre / Learning-C](https://github.com/h0mbre/Learning-C) | A repository of small programs and exercises created while learning C. Shows practical learning progress. | Beginner |
| [mcinglis / c-style](https://github.com/mcinglis/c-style) | A C style guide with best practices for readability, maintainability, and consistent coding. | All Levels |
| [ShravanDalavi / CProgrammingProjects](https://github.com/ShravanDalavi/CProgrammingProjects) | A set of projects and algorithmic exercises implemented in C. Useful for practice and inspiration. | Intermediate |

---

## Suggested Learning Path

1. **Start Here (Beginner):**
- [CodeWithHarry / The-Ultimate-C-Programming-Course](https://github.com/CodeWithHarry/The-Ultimate-C-Programming-Course)
- [h0mbre / Learning-C](https://github.com/h0mbre/Learning-C)

2. **Next Steps (Beginner → Intermediate):**
- [sbccas / c-programming-tutorials](https://github.com/sbccas/c-programming-tutorials)
- Practice writing small programs and algorithms.

3. **Level Up (Intermediate → Advanced):**
- [nCally / Project-Based-Tutorials-in-C](https://github.com/nCally/Project-Based-Tutorials-in-C)
- [ShravanDalavi / CProgrammingProjects](https://github.com/ShravanDalavi/CProgrammingProjects)

4. **Always Useful:**
- [mcinglis / c-style](https://github.com/mcinglis/c-style) – Follow this style guide throughout your learning.

---

💡 **Tip:** Don’t just read the code — clone the repositories, compile, run, and try modifying the programs yourself!
167 changes: 157 additions & 10 deletions Makefile
Original file line number Diff line number Diff line change
@@ -1,15 +1,22 @@

# Simple Makefile for Lab 1
# Simple Makefile for Lab 1, Lab 2, Lab 3, Lab 4
CC = gcc
CFLAGS = -std=c11 -Wall -Wextra -Wpedantic -O2
LDFLAGS =
LDFLAGS = -lm
BUILD_DIR = bin
SRC_DIR = src

PROGRAMS = $(BUILD_DIR)/hello $(BUILD_DIR)/calculator $(BUILD_DIR)/formats
PROGRAMS = $(BUILD_DIR)/hello $(BUILD_DIR)/calculator $(BUILD_DIR)/formats \
$(BUILD_DIR)/lab2_1 $(BUILD_DIR)/lab2_2 $(BUILD_DIR)/lab2_3 \
$(BUILD_DIR)/lab3_task1 $(BUILD_DIR)/lab3_task2 $(BUILD_DIR)/lab3_task3 \
$(BUILD_DIR)/week4_1_dynamic_array $(BUILD_DIR)/week4_2_struct_student $(BUILD_DIR)/week4_3_struct_database

all: $(PROGRAMS)

# -----------------------
# Lab 1
# -----------------------
lab1: $(BUILD_DIR)/hello $(BUILD_DIR)/calculator $(BUILD_DIR)/formats

$(BUILD_DIR)/hello: $(SRC_DIR)/hello.c
@mkdir -p $(BUILD_DIR)
$(CC) $(CFLAGS) $< -o $@ $(LDFLAGS)
Expand All @@ -22,18 +29,158 @@ $(BUILD_DIR)/formats: $(SRC_DIR)/format_specifiers.c
@mkdir -p $(BUILD_DIR)
$(CC) $(CFLAGS) $< -o $@ $(LDFLAGS)

hello: $(BUILD_DIR)/hello
calculator: $(BUILD_DIR)/calculator
formats: $(BUILD_DIR)/formats
# -----------------------
# Lab 2
# -----------------------
lab2: $(BUILD_DIR)/lab2_1 $(BUILD_DIR)/lab2_2 $(BUILD_DIR)/lab2_3

$(BUILD_DIR)/lab2_1: $(SRC_DIR)/lab2_1.c
@mkdir -p $(BUILD_DIR)
$(CC) $(CFLAGS) $< -o $@ $(LDFLAGS)

$(BUILD_DIR)/lab2_2: $(SRC_DIR)/lab2_2.c
@mkdir -p $(BUILD_DIR)
$(CC) $(CFLAGS) $< -o $@ $(LDFLAGS)

$(BUILD_DIR)/lab2_3: $(SRC_DIR)/lab2_3.c
@mkdir -p $(BUILD_DIR)
$(CC) $(CFLAGS) $< -o $@ $(LDFLAGS)

# -----------------------
# Lab 3
# -----------------------
lab3: $(BUILD_DIR)/lab3_task1 $(BUILD_DIR)/lab3_task2 $(BUILD_DIR)/lab3_task3

$(BUILD_DIR)/lab3_task1: $(SRC_DIR)/lab3_task1.c
@mkdir -p $(BUILD_DIR)
$(CC) $(CFLAGS) $< -o $@ $(LDFLAGS)

$(BUILD_DIR)/lab3_task2: $(SRC_DIR)/lab3_task2.c
@mkdir -p $(BUILD_DIR)
$(CC) $(CFLAGS) $< -o $@ $(LDFLAGS)

$(BUILD_DIR)/lab3_task3: $(SRC_DIR)/lab3_task3.c
@mkdir -p $(BUILD_DIR)
$(CC) $(CFLAGS) $< -o $@ $(LDFLAGS)

# -----------------------
# Lab 4
# -----------------------
lab4: $(BUILD_DIR)/week4_1_dynamic_array $(BUILD_DIR)/week4_2_struct_student $(BUILD_DIR)/week4_3_struct_database

$(BUILD_DIR)/week4_1_dynamic_array: $(SRC_DIR)/week4_1_dynamic_array.c
@mkdir -p $(BUILD_DIR)
$(CC) $(CFLAGS) $< -o $@ $(LDFLAGS)

run-hello: hello
$(BUILD_DIR)/week4_2_struct_student: $(SRC_DIR)/week4_2_struct_student.c
@mkdir -p $(BUILD_DIR)
$(CC) $(CFLAGS) $< -o $@ $(LDFLAGS)

$(BUILD_DIR)/week4_3_struct_database: $(SRC_DIR)/week4_3_struct_database.c
@mkdir -p $(BUILD_DIR)
$(CC) $(CFLAGS) $< -o $@ $(LDFLAGS)

# -----------------------
# Run targets
# -----------------------
run-hello: $(BUILD_DIR)/hello
./$(BUILD_DIR)/hello

run-calculator: calculator
run-calculator: $(BUILD_DIR)/calculator
./$(BUILD_DIR)/calculator

run-formats: formats
run-formats: $(BUILD_DIR)/formats
./$(BUILD_DIR)/formats

run-lab2_1: $(BUILD_DIR)/lab2_1
./$(BUILD_DIR)/lab2_1

run-lab2_2: $(BUILD_DIR)/lab2_2
./$(BUILD_DIR)/lab2_2

run-lab2_3: $(BUILD_DIR)/lab2_3
./$(BUILD_DIR)/lab2_3

run-lab3_task1: $(BUILD_DIR)/lab3_task1
./$(BUILD_DIR)/lab3_task1

run-lab3_task2: $(BUILD_DIR)/lab3_task2
./$(BUILD_DIR)/lab3_task2

run-lab3_task3: $(BUILD_DIR)/lab3_task3
./$(BUILD_DIR)/lab3_task3

run-week4_1_dynamic_array: $(BUILD_DIR)/week4_1_dynamic_array
./$(BUILD_DIR)/week4_1_dynamic_array

run-week4_2_struct_student: $(BUILD_DIR)/week4_2_struct_student
./$(BUILD_DIR)/week4_2_struct_student

run-week4_3_struct_database: $(BUILD_DIR)/week4_3_struct_database
./$(BUILD_DIR)/week4_3_struct_database

# Run all tasks in Lab 2
run-lab2: lab2
./$(BUILD_DIR)/lab2_1
./$(BUILD_DIR)/lab2_2
./$(BUILD_DIR)/lab2_3

# Run all tasks in Lab 3
run-lab3: lab3
./$(BUILD_DIR)/lab3_task1
./$(BUILD_DIR)/lab3_task2
./$(BUILD_DIR)/lab3_task3

# Run all tasks in Lab 4
run-lab4: lab4
./$(BUILD_DIR)/week4_1_dynamic_array
./$(BUILD_DIR)/week4_2_struct_student
./$(BUILD_DIR)/week4_3_struct_database

# Run all labs (Lab 1 → Lab 4)
run-all: all
./$(BUILD_DIR)/hello
./$(BUILD_DIR)/calculator
./$(BUILD_DIR)/formats
./$(BUILD_DIR)/lab2_1
./$(BUILD_DIR)/lab2_2
./$(BUILD_DIR)/lab2_3
./$(BUILD_DIR)/lab3_task1
./$(BUILD_DIR)/lab3_task2
./$(BUILD_DIR)/lab3_task3
./$(BUILD_DIR)/week4_1_dynamic_array
./$(BUILD_DIR)/week4_2_struct_student
./$(BUILD_DIR)/week4_3_struct_database

# -----------------------
# Debug build
# -----------------------
debug:
$(MAKE) clean
$(MAKE) CFLAGS="-std=c11 -Wall -Wextra -Wpedantic -g" all

# -----------------------
# Help
# -----------------------
help:
@echo "Available make targets:"
@echo " make all - Build all labs (1–4)"
@echo " make lab1 - Build Lab 1 programs"
@echo " make lab2 - Build Lab 2 programs"
@echo " make lab3 - Build Lab 3 programs"
@echo " make lab4 - Build Lab 4 programs"
@echo " make run-hello - Run Lab 1 hello program"
@echo " make run-calculator - Run Lab 1 calculator"
@echo " make run-formats - Run Lab 1 format specifiers"
@echo " make run-lab2 - Run all Lab 2 programs"
@echo " make run-lab3 - Run all Lab 3 programs"
@echo " make run-lab4 - Run all Lab 4 programs"
@echo " make run-all - Run all labs (1–4)"
@echo " make debug - Rebuild all with debugging (-g)"
@echo " make clean - Remove build artifacts"

# -----------------------
# Cleanup
# -----------------------
clean:
rm -rf $(BUILD_DIR)/*.o $(PROGRAMS)
Loading