Projects
My Projects and Coursework at Ohio State University
Here’s a collection of projects and courses I’ve completed as part of my curriculum in Software and Computer Science Engineering at The Ohio State University. Each course and project represents a challenge in problem-solving, coding, and applying foundational concepts in both programming and engineering.
Coursework
-
CSE 2221: Software I - Software Components
Introduction to foundational software engineering principles, focusing on design-by-contract, component-based software, and Java programming. Emphasis on mathematical modeling and problem-solving skills. -
CSE 2231: Software II - Software Development and Design
Covers advanced software engineering concepts, including data structures, object-oriented design, and efficient algorithms. Further exploration into Java and software development practices. -
CSE 1222: Introduction to Computer Programming in C++
A first course in computer programming using C++, teaching fundamental concepts in coding, control structures, arrays, and functions, with a focus on procedural programming. -
CSE 1223: Introduction to Computer Programming in Java
Introductory programming course in Java, focusing on problem-solving and the basics of object-oriented programming, including variables, control statements, and methods. -
CSE 2451: Advanced C Programming
Delves into advanced topics in C programming, including pointers, memory management, data structures, and file I/O, with applications to more complex engineering problems.
Software 1 (CSE 2221): Software Components
This course covers foundational software engineering principles focused on design-by-contract and mathematical modeling. Students learn component-based software design in Java, exploring topics like basic I/O, control structures, and data representation. Key competencies include:
- Java Fundamentals: Core programming concepts and control structures.
- Software Engineering: Design-by-contract, interfaces, and classes.
- Data Structures: Sequences, stacks, queues, and maps.
- Tools and Testing: XMLTree, NaturalNumber components, and JUnit.
- GUI Development: Using Swing and the MVC design pattern.
This course emphasizes software correctness, modularity, and problem-solving, preparing students for advanced projects.
- Project 1: Create Your Own Home Page - This project is an introduction to HTML markup and basic web development using Eclipse. The objectives are to familiarize students with HTML, structured editing in Eclipse, and developing “life-long learning” skills. The task involves creating a personal homepage with various HTML elements, including headings, paragraphs, images, lists, tables, and hyperlinks. Students also learn to validate their HTML using the Markup Validation Service. GitHub Link
- Project 2: Compute Roots Using Newton Iteration - This project focuses on computing square roots using the Newton iteration method, providing exposure to using
double
variables,while
loops, and static methods. The program prompts the user to calculate the square root of a number, estimating the root to within a relative error of 0.01%. Users can repeatedly calculate roots or exit the program based on their input. The project is expanded over multiple iterations, each introducing additional requirements such as handling division by zero, user-defined precision, and root types. GitHub Link - Project 3: Pseudoscience - This project explores a fun application of mathematics and programming by implementing an algorithm based on John Allen Paulos’s description of Cornelis de Jager’s “charming theory.” The goal is to approximate a user-selected physical or mathematical constant, μ, using a formula involving four personal numbers (w, x, y, and z) and specific exponents. The program calculates the combination of exponents that minimizes the relative error of the approximation to μ. Students gain experience with while loops, static methods, and arrays, as well as handling user input validation. GitHub Link
- Project 4: RSS News Reader - This project introduces XML processing and RSS technology by creating a program that reads an RSS 2.0 feed and generates a well-formatted HTML page from it. Students gain familiarity with XMLTrees for handling XML, while loops, and static methods. The program prompts the user for an RSS feed URL and an output file name, then processes the feed to display the news items in a structured table with columns for publication date, source, and title. This project requires careful handling of XML structure and null values to ensure correct parsing and output. GitHub Link
- Project 5: RSS News Aggregator - Building on the previous RSS Reader project, this project involves creating an RSS News Aggregator that reads multiple RSS feeds and generates individual HTML pages for each feed, as well as a central HTML index page linking to all feeds. The program processes an XML file containing a list of RSS feed URLs, then creates a formatted index page with links to HTML pages generated for each feed. This project further develops skills in XML processing, while loops, and static methods, reinforcing previous concepts while introducing multi-feed aggregation. GitHub Link
- Project 6: NaturalNumber Roots - This project involves implementing a
root
method forNaturalNumber
objects, using the interval halving algorithm to compute integer roots. Students apply their understanding of interval halving, adjustingNaturalNumber
objects to the r-th root of their original value. The project reinforces skills withNaturalNumber
methods and interval-based computation while building upon previous coursework. GitHub Link - Project 7: XMLTree Expression Evaluator - This project involves creating two recursive methods to evaluate arithmetic expressions stored as XMLTrees. One version of the method evaluates using
int
values, while the other usesNaturalNumber
objects. Supporting operations like addition, subtraction, multiplication, and division, the project emphasizes recursion, XML processing, and error handling. GitHub Link - Project 8: Cryptographic Utilities - This project explores number-theoretic methods central to cryptography, including modular arithmetic and prime testing, with applications in RSA public-key encryption. Students implement utility methods for cryptographic computations and gain experience with
NaturalNumber
operations, supported by JUnit testing. The project introduces concepts such as Fermat’s little theorem and probabilistic prime testing, essential for modern cryptography. GitHub Link - Project 9: String Reassembly - This project involves reassembling long sequences from overlapping string fragments, simulating challenges in computational biology and the Human Genome Project. Students work with
Set
objects and develop algorithms to merge fragments, building familiarity with sequence-reassembly techniques. JUnit testing is used to validate methods, reinforcing test-driven development practices. GitHub Link - Project 10: Glossary - This project involves designing a component-based application to generate a glossary in HTML format, listing terms with definitions and hyperlinks. The glossary includes a top-level index and individual term pages, with each term linking to other terms in its definition. This project emphasizes independent problem-solving, requiring students to manage file input/output and adhere to strict design constraints, including UI-friendly HTML output. GitHub Link
Software 2 (CSE 2231)
Advanced projects completed in Software 2, focusing on data structures, algorithm design, and more complex problem-solving techniques.
- Project 1 - Description and link to be added.
For the full code and details, visit my GitHub repositories: