Skip to content

Repository files navigation

Java Projects — Data Structures & Algorithms

A portfolio of Java programming projects completed as part of COMS W3134 (Data Structures in Java) at Columbia University. Each project demonstrates core CS concepts including algorithm design, object-oriented programming, and data structure implementation from scratch.


Projects

01 · Newton's Method Square Root

Directory: square-root/src/SquareRoot.java

Implements the Babylonian (Newton's method) algorithm to compute square roots iteratively to a configurable precision (epsilon). Handles edge cases including negative numbers, zero, NaN, and infinity.

  • Concepts: Iterative numerical methods, error tolerance, command-line argument parsing

    • Key method: sqrt(double num, double epsilon)

    02 · Recursive Algorithms

    Directory: recursive-algorithms/src/Recursion.java

    A suite of six recursive algorithms implemented without any iterative constructs, demonstrating mastery of base cases, recursive decomposition, and helper-method patterns.

    • Concepts: Recursion, tail recursion, string manipulation, array traversal

      • Methods: recursiveMultiplication, reverse, max, isPalindrome, isMember, separateIdentical

      03 · Custom List Implementations

      Directory: custom-list/src/

      From-scratch implementations of ArrayList and LinkedList conforming to a custom MyList interface, plus a MadLibGenerator application that uses the lists to parse and fill in Mad Libs templates.

      • Concepts: Dynamic arrays, doubly-linked lists, generics, iterator pattern

        • Files: MyArrayList.java, MyLinkedList.java, MyList.java, MadLibGenerator.java

        04 · Stack-Based Infix Expression Evaluator

        Directory: expression-evaluator/src/

        Implements a MyStack interface backed by a linked list, then uses two stacks (operands + operators) to evaluate arithmetic infix expressions with full operator precedence and parenthesis support.

        • Concepts: Stack ADT, expression parsing, operator precedence, OOP design

          • Files: MyStack.java, IntCalculator.java, MyArrayList.java

          05 · JUnit Test Suite

          Directory: unit-tests/lib/

          Comprehensive JUnit 5 test suite validating the custom data structure implementations from previous assignments. Covers boundary conditions, exception handling, and correctness of all public APIs.

          • Concepts: Unit testing, test-driven development, JUnit 5, boundary analysis

            • Tools: JUnit Jupiter 5.10, Hamcrest

            06 · Binary Search Tree & Red-Black Tree Map

            Directory: tree-maps/src/

            Full implementations of BSTreeMap and RBTreeMap conforming to a MyMap interface. The Red-Black Tree maintains self-balancing invariants through rotations and recoloring, guaranteeing O(log n) operations.

            • Concepts: BST, self-balancing trees, tree rotations, red-black invariants, map ADT

              • Files: BSTreeMap.java, RBTreeMap.java, MyMap.java, Node.java, RBNode.java

              07 · Hash Map with Separate Chaining

              Directory: hash-map/src/

              Custom MyHashMap implementation using an array of linked lists (separate chaining) for collision resolution, with dynamic resizing and a polynomial rolling hash function.

              • Concepts: Hash tables, separate chaining, load factor, dynamic resizing, hash functions

                • Files: MyHashMap.java, MyMap.java, Entry.java

                08 · Inversion Counter

                Directory: inversion-counter/src/

                Counts the number of inversions in an integer array using a modified merge sort algorithm in O(n log n) time, compared against a brute-force O(n²) baseline.

                • Concepts: Divide and conquer, merge sort, algorithm complexity analysis

                  • Files: InversionCounter.java

                  Tech Stack

                  Tool Version
                  Java 17+
                  JUnit Jupiter 5.10
                  IDE IntelliJ IDEA

                  Course

                  COMS W3134 — Data Structures in Java Columbia University

About

A collection of Java programming projects showcasing data structures, algorithms, and object-oriented design.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages