{"id":49577405,"url":"https://github.com/panastasiadis/oop-assignments","last_synced_at":"2026-05-03T17:37:05.677Z","repository":{"id":145074899,"uuid":"244873916","full_name":"panastasiadis/oop-assignments","owner":"panastasiadis","description":"The repository contains a collection of Object-Oriented Programming assignments in Java and C++. It includes implementations of data structures such as Trie and AVL tree, image processing application, file manager GUI, and a graph manipulation program.","archived":false,"fork":false,"pushed_at":"2023-02-20T13:29:25.000Z","size":77648,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2023-09-11T10:28:55.213Z","etag":null,"topics":["avltree","beginnerfriendly","codeexamples","computerscienceeducation","cplusplusprogramming","datastructures","filemanagement","imageprocessing","javaprogramming","learningtocode","programmingassignments","triedatastructure"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/panastasiadis.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2020-03-04T10:40:00.000Z","updated_at":"2023-09-11T10:28:57.490Z","dependencies_parsed_at":"2023-09-11T10:39:04.121Z","dependency_job_id":null,"html_url":"https://github.com/panastasiadis/oop-assignments","commit_stats":null,"previous_names":["panastasiadis/oop-assignments"],"tags_count":null,"template":null,"template_full_name":null,"purl":"pkg:github/panastasiadis/oop-assignments","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/panastasiadis%2Foop-assignments","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/panastasiadis%2Foop-assignments/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/panastasiadis%2Foop-assignments/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/panastasiadis%2Foop-assignments/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/panastasiadis","download_url":"https://codeload.github.com/panastasiadis/oop-assignments/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/panastasiadis%2Foop-assignments/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32579079,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-03T06:36:36.687Z","status":"ssl_error","status_checked_at":"2026-05-03T06:36:09.306Z","response_time":103,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["avltree","beginnerfriendly","codeexamples","computerscienceeducation","cplusplusprogramming","datastructures","filemanagement","imageprocessing","javaprogramming","learningtocode","programmingassignments","triedatastructure"],"created_at":"2026-05-03T17:37:05.182Z","updated_at":"2026-05-03T17:37:05.664Z","avatar_url":"https://github.com/panastasiadis.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Assignments on Object-Oriented Programming\nCollection of my Java and C++ homework assignments.\n\n## Java Assignments\n\n### HW1 - Trie\n\nThe application takes two command-line arguments: the first argument is the path to a text file that contains a list of words, and the second argument specifies the operation to perform on the words. The supported operations are:\n\n* `size`: Prints the number of unique words in the text file.\n* `contains_word`: Prints whether a given word is in the text file.\n* `print_preorder`: Prints the words in the text file in pre-order traversal of the Trie.\n* `print_dot`: Writes a Graphviz DOT file that represents the Trie and converts it to a PNG image.\n* `distant_words`: Prints all the words in the text file that are a certain distance away from a given word, where the distance is defined as the number of characters that are different between the two words.\n* `prefixed_words`: Prints all the words in the text file that start with a given prefix.\n\nThe program reads the text file using a utility class called `Utilities` and constructs a Trie data structure from the words. Depending on the command-line argument, it performs the corresponding operation using methods provided by the `Trie` class. If the command-line arguments are not valid, the program prints an error message.\n\n### HW2 - Image Processing\n\nThis application is for opening and processing image files. \nIt creates a user interface that enables the user to open PPM and YUV image files, and display the image in a graphical user interface. \nThe program is also able to convert the YUV image format into PPM, which is a more commonly used format.\n\nThe user interface includes a main window with a scrollable panel for displaying images, a menu bar that provides options to open and save files, and labels that display the current image filename. \nThe program includes methods for converting between different image formats, such as RGB and PPM, and handles errors with file loading and format conversions by displaying error messages to the user. \nThe code makes use of the `javax.swing`, `java.awt`, `java.awt.image`, and `javax.imageio` packages.\n\n### HW3 - File Manager\n\nThis Java application provides a user interface to browse, search and manipulate files and directories on the computer.\n\nThe GUI consists of several panels such as a favorites panel, a search bar, a path bar, and a contents panel where the files and directories are displayed. \nThe application also includes a menu bar that allows the user to access different functionalities like opening a new window, editing, and searching.\n\nThe FileManagerGui class initializes and sets up the window with a JFrame, layouts, panels, and menus. \nIt also instantiates the EditMenu and BrowserUtilities classes that provide additional functionality like renaming, copying, pasting files, and navigation between directories.\n\nThe user can navigate the file system and select files and directories using the mouse or the keyboard. \nAdditionally, the search bar allows the user to search for files and directories by name or type.\n\nThis application uses the Java Swing library to create the GUI.\n\n## C++ Assignments\n\n### HW4 - AVL Tree\n\nThis code implements an AVL tree, a self-balancing binary search tree. \nThe tree is defined by its nodes, which store elements of the same type as the one the user wants to use.\n\nThe implementation of the AVL tree follows the object-oriented programming paradigm. \nNamely, a Node class represents each node of the tree. \nThe Node class is defined within the AVL class, which represents the AVL tree.\n\nThe Node class has a constructor, getters, and setters for the element, parent, left and right children of each node, \nand methods to find if a node is the left or right child of its parent, to calculate the height of its children, and to check if the node is balanced.\n\nThe AVL class implements the insert and remove functions for the AVL tree. \nFurthermore, it provides an Iterator class that implements the necessary methods to traverse the tree in order. \nThe AVL tree supports insertions, removals, and finding elements in O(log n) time complexity, where n is the number of elements in the tree.\n\n### HW5 - Graphs\n\nThis program allows the user to create and manipulate graphs in a user-friendly way. \nThe user can create directed and undirected graphs, add and remove vertices and edges, \nand perform various operations on the graphs such as computing the minimum spanning tree, finding shortest paths, \nand traversing the graphs using breadth-first search and depth-first search.\n\nThe program is written in C++ and uses templates to allow for the use of different data types for vertices. \nThe Graph class provides the underlying data structure for storing the graph, \nand the GraphUI class provides the user interface for interacting with the graph.\n\nTo use the program, simply run the executable and enter commands in the format \"option parameters\", \nwhere \"option\" is one of the available commands and \"parameters\" depend on the command. Available commands are:\n\n* `digraph`: creates a directed graph.\n* `av vertex`: adds a vertex to the graph.\n* `rv vertex`: removes a vertex from the graph.\n* `ae from_vertex to_vertex distance`: adds an edge from \"from_vertex\" to \"to_vertex\" with a given \"distance\".\n* `re from_vertex to_vertex`: removes an edge from \"from_vertex\" to \"to_vertex\".\n* `dot filename`: outputs the graph in Graphviz DOT format to a file with the given \"filename\" and generates a PNG image of the graph using the Graphviz \"dot\" command.\n* `bfs start_vertex`: performs a breadth-first search of the graph starting at \"start_vertex\".\n* `dfs start_vertex`: performs a depth-first search of the graph starting at \"start_vertex\".\n* `dijkstra from_vertex to_vertex`: computes the shortest path between \"from_vertex\" and \"to_vertex\" using Dijkstra's algorithm.\n* `bellman-ford from_vertex to_vertex`: computes the shortest path between \"from_vertex\" and \"to_vertex\" using the Bellman-Ford algorithm.\n* `mst`: computes the minimum spanning tree of the graph.\n\nNote that the program expects vertices to be entered as strings, and distances to be entered as integers.\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpanastasiadis%2Foop-assignments","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpanastasiadis%2Foop-assignments","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpanastasiadis%2Foop-assignments/lists"}