The Odin Project - Ruby
Overview
This repository contains a collection of Ruby projects developed as part of The Odin Project's Ruby Curriculum. The curriculum focuses on diving deep into Ruby, covering key concepts such as object-oriented programming, data structures, algorithms, and testing. These projects serve as a hands-on approach to mastering Ruby and improving overall programming skills.
Projects in this Repository
1.Caesar Cipher
- A simple encryption algorithm that shifts characters in a string by a specified number of positions.
- Key Concepts: String manipulation, loops, encryption basics.
2. Substrings
- A method to find how many times each substring appears in a given word or phrase from a provided dictionary.
- Key Concepts: Hashes, loops, string searching.
3. Stock Picker
- A program that determines the best days to buy and sell stocks to maximize profit.
- Key Concepts: Array manipulation, comparison logic.
4. Bubble Sort
- A Ruby implementation of the Bubble Sort algorithm, sorting an array by repeatedly swapping adjacent elements.
- Key Concepts: Sorting algorithms, nested loops.
5. Tic Tac Toe
- A command-line Tic Tac Toe game where two players can play against each other.
- Key Concepts: Object-oriented design, game logic, user input handling.
6. Mastermind
- A command-line version of the popular game Mastermind, where one player tries to guess the color combination set by the other player.
- Key Concepts: Arrays, loops, conditional logic.
7. Event Manager
- A program designed to help manage events by parsing and organizing CSV data, such as attendee details.
- Key Concepts: File I/O, CSV parsing, data processing.
Learning Objectives
-
By completing these projects, I gained a deep understanding of key Ruby programming concepts, including:
-
Object-Oriented Programming (OOP): Understanding how to structure code into classes and objects, creating reusable and maintainable programs.
-
Data Structures: Learning how to work with arrays, hashes, and custom data structures.
-
Algorithmic Thinking: Developing problem-solving skills by implementing sorting algorithms, search methods, and game logic.
-
File I/O: Working with files and external data formats (e.g., CSV) to manage and process data efficiently.
-
Testing: Using Ruby's built-in testing libraries to write unit tests and ensure the reliability of code.