Each folder contains a Java Project completed either in class or for practice. Projects can be directly loaded in Eclipse or another IDE and run within the application. All work property of Daniel Lesser with assignment prompts the property of Carnegie Mellon University.
Each project built upon the prior homework. The first version sough to create a Java console-based application that helped users track their nutrition. The user had a character user interface (CUI) to interact with the program. Using data provided by the USDA, users could find specific ingredients and nutrients and products that included the specified search terms.
In version 2, the application was extended to incorporate a user's profile. This data was used to recommend key nutrient quantities and was read in via CSV, XML or a GUI where users could input their information. Results were displayed to the user.
In version 3, the GUI was extended further to include graphical representations, search functionality and the ability to add individual products to your diet. This required the extensive use of callbacks, dynamic binding and other Java FX functionality.
These were optional exercises completed to practice Java fundamentals such as Inheritance, Encapsulation, Polymorphism, Java FX, Collections, Exceptions and Multithreading. Each exercise is included within a stand-alone package.
Timed in-class labs that took place each week. A project needed to be completed within an 80 minute time frame adhering to all requirements. Solutions were tested using built in JUnit libraries.
Each folder contains a project completed for Distributed Systems. These projects were primarily completed in Java, though they took advantage of Android Studio, MongoDB, Glassfish, Heroku, Docker and other tools to build distributed applications. Projects were completed using the Netbeans IDE. Each project has been zipped into a deliverable folder with all
Part 1: Built 3 small web applications using MVC design pattern. Required the user to enter a string on a webpage, which was passed to a servlet and then hashed using either MD5 or SHA-256 in a model.
Part 2: Built a web application that screen scraped a website for images of butterflies based on user input. Used HTML code to provide various drop down menus and text fields.
Part 3: Built a web application that kept track of user clicks and worked on both mobile and desktop platforms using appropriate HTTP doGet / doPost calls.
Worked with UDP/RPC/TCP and Digital Signatures using a client/server relationship to pass messages and do simple computations, create RSA public/private key combinations, hash messages and verify hashes.
Built a blockchain program from scratch that allowed users to add transactions, verify the integrity of the chain, view the chain, corrupt the chain, and hide corruption by repairing. Created a client/server relation with messages passed via SOAP requests to the blockchain API. Redesigned the code to utilize a RESTful communication pattern.
A multi-part project that tied together several pieces. An Android application built in Android studio would make HTTP calls to a web service coded in java and deployed to Heroku. The web service would make calls to an external API to request data, transform the data and return it to the android user. The web service would also store all request metadata in a MongoDB noSQL database. A dashboard was created that would make calls on the MongoDB database through the web service to review the metadata formatted in an HTML jsp.
Part 1: Write MapReduce programs on top of hadoop using the heinz-jumbo supercomputer. Various MapReduce programs were created to do wordcounts, find max temperatures and aggregate crimes using latitude/longitude.
Part 2: Used Spark in java to manipulate raw text and display aggregate information.
Developed monopoly-seeking behavior for multiple players in a simulated game of 'Pit'. Controlled player trading behavior using Message Driven Beans, JMS Queues and a JMS Connection Factory. Implemented a Chandy-Lamport Snapshot Algorithm to monitor progress in the game while still in progress.