Skip to content

Latest commit

 

History

History
53 lines (33 loc) · 6.93 KB

syllabus.md

File metadata and controls

53 lines (33 loc) · 6.93 KB

Course Description

This is a course about applying machine learning theory to real-world industrial projects. The problem descriptions and the datasets come from industrial partners. Students will mainly focus on understanding a problem along with the available data and defining machine learning solutions that yield high performance. They will also acquire knowledge specific to software development for machine learning projects such as writing high-quality code and readable documentation in Python, and using collaborative tools and machine learning libraries. Finally, students will develop their (oral and written) communication skills by preparing reports and a presentation explaining the solutions they developed and the results they obtained.

Course structure

The course will cover 3 different projects in parallel, each with their unique characteristics and challenges. Each project will be divided into 3 consecutive blocks of 4 weeks each, with a final presentation at the end of the semester:

progress.png

Machine learning solutions of increasing complexity will be developed as we move from block to block.

Students will work on all 3 projects on a rotation basis: at the beginning of each block, new teams of 4 students each will be created. One third of the teams will work on each project. Those teams will work independently of each other and will each strive to obtain the best possible performance for the tasks defined for the project for the block. At the end of the block, each team will provide a deliverable (code + best model + report). Those deliverables, along with a baseline built by the assistants for the block, will be made available for the teams who will be assigned to the next block of the same project. Those teams will each need to select one of the deliverables or the assistants baseline as a starting point for the work they will do in the next block. This process will continue up to the end of block 3. Each team assigned to a particular project in block 3 will also be responsible for preparing a final presentation for the entire project. The presentations will be delivered in front of the students as well as representatives from the companies.

Instruction Style

Tutorials will be presented during the first week of the course, as well as the first week of each block. The remaining class time will be used by students to work on the projects. Every week, the teams of students will have an appointment with the assistants to discuss their avancement and what they plan to do for the following week. In addition to that, assistants will be available during classes to support students. (It is expected that students will continue to work on the projects outside class hours.)

Evaluation

Each student will be involved in 4 main deliverables: one deliverable (code + best model + report) at the end of each block and one final presentation at the end of the semester. A deliverable is done by a team of 4 students.

Code provided by a team at the end of a block will be peer-reviewed by 2 other teams working on the same project in that block. The code will also be reviewed by the assistants. The reports, best models, and final presentations will all only be reviewed by the assistants.

The full evaluation grid is available here.

Contact

All questions can be sent to the following email address: [email protected]. If you have a question for a specific project, please write the name of the project between brackets (e.g. [ProjectName]: object of the question) in the email header.

Class Schedule

The begins on January 9th 2019 and finishes during the week of April 15th 2019.

Class hours:

  • Wednesday: 3:30pm-5:30pm EST (Mila Auditorium)

  • Friday: 2:30pm-4:30pm EST (Mila Auditorium)

GPU Computing Resources

A set of GPUs will be reserved for 8 hours, starting 30 minutes before the beginning of each class. Outside those reserved periods, the policy to access the cluster is first-come first-served.

NDA

The NDA can be found here (french, english). The document must be signed and returned before January 16th 2019. A paper version can be given to the assistants or a scanned version can be sent to [email protected].

Policy on Contribution

Working in a team is a fundamental part of the professional life of data scientists. By working in a team, you can achieve greater things by contributing to a common project, getting answers to hard questions, being able to brainstorm on new ideas, etc. However, it is not always easy to be part of a team because we do not choose our colleagues; we may have different points of view, different techniques and different skills. Nevertheless, when people in a team are motivated to work towards a common goal, there are different ways to organize the work so that everyone can contribute. Doing so requires a set of interpersonal skills that are not trivial and that you will develop throughout your career.

That being said, you can feel that it is not fair that one member of your team is not contributing as much as you are and nevertheless, the person will receive the same score as you. This is a natural feeling, but you should try to carefully evaluate the contribution of each member. Is it the number of hours spent on the project? Is it the number of lines of codes? Is it the number of theoretical questions solved by reading scientific papers? In fact, quantifying the contribution of a person is really hard because it is not a single value. As everything in real-life, it is multidimensional and probably more qualitative than quantitative.

Now, as we will not tolerate any plagiarism, we will not tolerate that a student is relying solely on others to complete the course. If you think that someone in your team is not contributing at all, start by having a team meeting to discuss with the person on how she/he can contribute. Use a positive and respectful attitude and try to help the person find a way to contribute. As an example, if the person is lacking programming skills, try to organize programming sessions in pairs where one person is programming and the other one is verifying the code, asking questions and making recommendations. Also, remember that everyone must program and so, there should be a turnaround.

If you think the person is not contributing on purpose, send an email to the assistants responsible for your project. After receiving the email, we will schedule a meeting with all team members so that everyone can discuss their point of view. Everyone should be able to justify their position with some relevant material (code, report, emails, etc.). Finally, the assistants and the professors will take actions to resolve the problem.