Leading a Project

Submissions for Project Proposals are Now Open!

Interested in leading a machine learning project and pitching it to the Hatchery NEST?

We are now accepting project proposals for Engineering and Academic projects. If you would like to become a Project Director with UTMIST, work with a team of developers, and present your project at our year-end conference, this opportunity is perfect for you!

For proposal format details and expectations for engineering projects, refer to the following link.

For proposal format details and expectation for academic projects, refer to the following link.

The deadline for submission of project proposals is August 5th and the submission e-mail is utorontomist@gmail.com. If you have any questions, you can message us in the #engineering channel in discord or e-mail us at utorontomist@gmail.com.

Writing a Proposal

When writing a project proposal, you want to demonstrate you:

  • know what the goals and motivations for your project are
  • know what dataset you will use to train your model
  • know where to find resources and help
  • have a rough idea of the type of neural network(s) you will use
  • have a reasonable idea of how you will measure success of your model and project

Building a Project Plan

After you have a well-defined project, use a Gantt Chart to help you develop your plan. Here are some recommendations when building a realistic project plan:

1. Create a work breakdown: Break down the scope of the project into smaller, more manageable deliverables. This will allow you to assign resources to different parts of the project based on the skills needed.

2. Define and sequence project activities: If you have the resources to do so, try to do as many things in parallel as possible.

3. Estimate activities duration: The duration of the project depends on the scope. Proper estimation helps to determine if the plan is viable and set expectations.

4. Always build in contingencies: Unexpected things happen, remember to allocate time in your plan for issues and risks.

5. Document everything: A good documentation helps you clarify your thoughts, monitor progress, and track accomplishment!

6. Set milestones and meetings: Milestones and deadlines are useful to indicate the phase of the project and to remind everyone about the work. It is also good to set up regular meetings accordingly to ensure the project is at a proper pace.

Managing an Effective Team

Team Members

When picking your team members, there are 3 things you can consider:

  1. Trust your gut feeling. It wouldn’t take long for you to figure out if you like the person applying for the position. Is liking important? Absolutely. If you don’t like the person you probably don’t want to spend time working together.
  2. Find the best people possible. Working with excellent individuals will help you grow too.
  3. Capacity. Try to assess their capacity in the following areas:
    • Stress Management: their ability to withstand and overcome pressure, failure, deadlines, and obstacles
    • Skill: their ability to get specific tasks done
    • Thinking: their ability to be creative, develop strategy, solve problems, and adapt
    • Attitude: their ability to remain positive and tenacious amidst negative circumstances

Once you have a team, develop good relationship with your team members, recognize their work and values, and provide in time feedbacks (both good and bad). It is also important to understand your team member’s strengths and weaknesses so you can put the right person on the right position. Lastly, don’t forget to acknowledge your team members' goals and provide resources for personal development.

Dealing with Problems, and Blockers

  1. Find the problems in your team. What if someone is not actively doing stuff? Or if some parts of the work are not done in time? You need to check constantly with team members about their progress, or check with team milestones to make adjustments.
  2. Sync often. If a deadline is set, don’t just meet after the deadline, because problems may occur midway and tasks are not able to be completed. So you need to watch closely with teammates and offer advice or discuss about changes frequently. A good way to sync up is to send updates in the chat group in a regular basis, or have a short meeting report everything weekly.
  3. Blockers. If something blocks the team’s workflow (blockers mean problems that cannot be solved by simple debugging and may require superior knowledge), you should meet with them and discuss potential solutions or changes. Doing extra researches and consulting other experts are also good and necessary steps to deal with blockers.
  4. Document everything! It’s always good to keep every problem in record, so that they can be referred if similar problems occur in the future. Github and Gitlab repositories have Issues section to document the problems, and PRs can be created from those issues. Recent issues can be a topic to be discussed in team meetings.

Maintaining your code base and results

It is important to keep all results and codes of your research project.

  • Results: Profile all performance data or experiment results just like the research paper does. You could document in logs, tables, plots, or just write a paragraph to describe your findings. These results will be helpful when you compare them or make a report in the future. Save the models frequently during training, in case accident happens.
  • Code: It is also a good habit to maintain the code used to produce the result. To sync and contribute among several team members, Git is highly recommended. You could develop your own branch without interfering with others, committing new code and write descriptions, or push and merge your code with others. Also, be sure to push clean code, and the team leader should often check to ensure the repository is not messy.

Tips for Research Projects

Choosing Research Projects

The first thing to keep in mind is that research projects do not guarantee success, and there are usually less resources to help. If you find the project hard to proceed, or problems need a long time solve, then you should consider switching a project. Hence, when you choose a project, you should read the paper of interest and try to understand it before making the decision. Moreover, search for existing code to reproduce the paper, otherwise building the code from scratch to reproduce a paper is very time consuming.

Resources for Research Projects

Code resources: Search for public repositories online. There might also be datasets that you can directly use.

Paper Resources: Check for the references in your research paper, they usually provide direct explanation to something that’s not mentioned in your paper. There are also many academic/research paper search engines online.

The general ways to look for help resources are:

  1. Consulting an expert (VP Research or help channel) if possible. You could also contact someone else like emailing a professor or ask in online forums. Expert’s opinions are usually the most effective, but you may not get the response in time.
  2. Search online, aka. “Google it”. There might be many other researchers having similar problems as you, there is a low chance to get exactly what you want from the searching results. But remember don’t try anything until you have read all of the pages. (From my personal experiences, even if the search question is the same, the suggested solution may not work, so only take for reference instead of believing)
  3. If you still hesitate about what to do, put the question and the summary of your findings into an issue, then discuss with rest of the team during meeting to determine what to do. Research is about team work and teammates are the final resources.

Documentation

Progress Report

The project progress report acts as a check-in to show that you are on track to complete your project. By the project progress date (usually the midpoint), you should have:

  • Obtained all or most of the data
  • Produced at least one qualitative and quantitative result that illustrates model performance. These results could be learning curve or model performance on selected samples of data
  • Adjusted project plan accordingly for the feasibility of completing the project within the time available

Preparing a Presentation

When preparing a presentation, you are welcome to be as creative as you want, and to make your presentation fun! Here are the main contents that you should cover in a presentation:

  • Problem: What is the problem that you are trying to solve? Why is it important?
  • Data: What data did you use or collect? What does it look like? Is the amount/type of data sufficient for the project?
  • Data Processing: What processing did you perform on your data? Why?
  • Model: What model(s) did you build? What kind of models (CNN, RNN, GAN, etc) are they
  • Demonstration: How it works
  • Quantitative Results: How are you measuring and comparing performance? How well did your model perform?
  • Qualitative Results: What are some sample predictions generated by your model? Does it make sense? Did you “cherry-pick” the best results or are you showing a representative sample?
  • (Optional) Takeaways: What did you learn about machine learning from doing this project?

The content doesn’t have to be covered in that precise order. For example, many presentations start with a qualitative result to better explain the problem and piques the audience’s interest. A good presentation keeps the audience in mind. Prioritize delivering a presentation that is interesting for the audience, and that you will be proud of. A successful presentation should draw further interest to your work. An excellent presentation will encourage your audience to talk to you after.

Preparing a Report

A report is usually the last deliverable for your project. Congratulations on getting here! Your report should be structured somewhat like a research paper, and describes what you have done and why, what your results are, and an interpretation of your results.

A habit to have is to note down good sentences while reading research paper. Here are some top papers in Machine Learning: