Back to projects
May 24, 2023
4 min read

Projects During My Exchange at the University of Michigan

An overview of the projects I completed during my two-month exchange at the University of Michigan, focusing on data analysis and machine learning in Python, and object-oriented programming in Java.

Projects During My Exchange at the University of Michigan

In May 2023, I had the incredible opportunity to participate in a two-month exchange program at the University of Michigan in the United States. During this exchange, I worked on various projects that significantly enhanced my skills in Python for data analysis and machine learning, as well as in Java for object-oriented programming (OOP). Here, I will share my experiences and what I learned from these projects.

Python Projects: Data Analysis and Machine Learning

The Python projects I worked on focused heavily on data analysis and machine learning. The repository for these projects can be found here.

Key Learning Points:

  1. Data Cleaning and Preprocessing:

    • I learned how to clean and preprocess datasets to prepare them for analysis. This involved handling missing values, normalizing data, and performing feature engineering to enhance the predictive power of our models.
  2. Exploratory Data Analysis (EDA):

    • Through EDA, I gained insights into the datasets by visualizing distributions, correlations, and patterns using libraries like Matplotlib and Seaborn. This step was crucial in understanding the data and guiding the modeling process.
  3. Machine Learning Models:

    • I implemented various machine learning algorithms, including linear regression, decision trees, and clustering techniques. Using libraries like Scikit-learn, I was able to build, evaluate, and optimize models to achieve the best performance on our datasets.
  4. Model Evaluation and Validation:

    • I learned the importance of model evaluation metrics such as accuracy, precision, recall, and F1-score. Techniques like cross-validation were employed to ensure our models generalized well to unseen data.
  5. Project Management and Collaboration:

    • Working on these projects taught me how to manage and collaborate on coding projects effectively. Using Git for version control and Jupyter Notebooks for interactive coding and documentation was essential in maintaining a clear and organized workflow.

Java Projects: Object-Oriented Programming

In addition to Python, I also worked on several labs focused on object-oriented programming (OOP) in Java. The repository for these labs can be found here.

Key Learning Points:

  1. Class Design and Implementation:

    • I gained a deep understanding of designing and implementing classes. This included defining attributes, methods, and constructors, as well as understanding the principles of encapsulation and information hiding.
  2. Inheritance and Polymorphism:

    • By working on projects that involved inheritance and polymorphism, I learned how to create hierarchical class structures and use polymorphic behavior to design flexible and reusable code.
  3. Interfaces and Abstract Classes:

    • The labs introduced me to interfaces and abstract classes, which are powerful tools for defining contracts and creating abstract definitions that can be implemented by concrete classes.
  4. Organizing and Managing Code:

    • I learned how to organize and manage code in Java projects, including the use of packages and access modifiers to control visibility and maintain a clean codebase.
  5. Exception Handling and Debugging:

    • Proper exception handling and debugging were emphasized, teaching me how to write robust code that can handle unexpected situations gracefully and how to use debugging tools to troubleshoot issues effectively.

Reflections

The exchange program at the University of Michigan was an enriching experience that broadened my technical skills and provided a deeper understanding of both Python and Java. The hands-on projects allowed me to apply theoretical knowledge to practical problems, enhancing my problem-solving abilities and coding proficiency.

Conclusion

Participating in these projects during my exchange at the University of Michigan was a pivotal moment in my development as a programmer. I am grateful for the opportunity and the knowledge I gained, which continues to influence my approach to new challenges in the fields of data analysis, machine learning, and software development.

If you’re interested in exploring the projects, you can find the Python repository here and the Java repository here.

Thank you for reading! I hope this overview provides insights into the valuable learning experiences I had during my time at the University of Michigan.