Archive of the autumn 2025 course. This course has ended. The template projects described on this site (RiskCalc, PyMort, EconGames, QSim, SimCLT) are not offered in 2026. The 2026 course is Data Science and Advanced Programming.

INDIVIDUAL PROJECT RULEBOOK

Advanced Programming ยท Fall 2025 ยท HEC Lausanne

Your Final Project = 100% of Your Grade Build a machine learning or data analysis project that demonstrates your programming and analytical skills.


๐ŸŽฏ Project Philosophy

This is your opportunity to apply what youโ€™ve learned to a real problem. Most projects will focus on machine learning and data analysis - comparing models, analyzing datasets, and presenting findings.

Core Principles:

  • Working Code First: If we canโ€™t run python main.py, we canโ€™t grade it
  • Reproducibility: Same code โ†’ same results, every time
  • Clear Documentation: README explains setup, REPORT explains findings
  • Clean Structure: Organized code that others can understand

๐Ÿ“Š Project Focus: Machine Learning

Most projects should follow this pattern:

Research Question โ†’ Data โ†’ Models โ†’ Evaluation โ†’ Report

Example: โ€œWhich model best predicts customer churn: Random Forest, Logistic Regression, or XGBoost?โ€

  • Classification: Predict categories (spam detection, sentiment analysis, disease diagnosis)
  • Regression: Predict values (house prices, sales forecasting, stock returns)
  • Clustering: Find patterns (customer segmentation, anomaly detection)
  • Comparison Studies: Compare 3+ models on the same task

Custom Projects

Want to do something different? As long as you can demonstrate:

  • Data manipulation with pandas/NumPy
  • Some form of analysis or modeling
  • Clear methodology and results
  • Reproducible code

โ€ฆthen propose it!


๐Ÿ“ฆ Deliverables

1. Project Proposal (Due: November 3)

  • Length: 300-500 words
  • Format: PROPOSAL.md in your repository
  • Content: What youโ€™ll build, what data youโ€™ll use, what question youโ€™ll answer

2. GitHub Repository (Due: January 11)

Required Structure:

your-project/
โ”œโ”€โ”€ README.md              # Setup and usage instructions
โ”œโ”€โ”€ PROPOSAL.md            # Your project proposal
โ”œโ”€โ”€ environment.yml        # Conda dependencies
โ”œโ”€โ”€ requirements.txt       # Pip dependencies (alternative)
โ”œโ”€โ”€ main.py               # Entry point - THIS MUST WORK
โ”œโ”€โ”€ src/                  # Source code modules
โ”‚   โ”œโ”€โ”€ __init__.py
โ”‚   โ”œโ”€โ”€ data_loader.py    # Data loading and preprocessing
โ”‚   โ”œโ”€โ”€ models.py         # Model definitions
โ”‚   โ””โ”€โ”€ evaluation.py     # Evaluation and visualization
โ”œโ”€โ”€ data/
โ”‚   โ””โ”€โ”€ raw/              # Original data (or instructions to download)
โ”œโ”€โ”€ results/              # Output figures and metrics
โ””โ”€โ”€ notebooks/            # Jupyter notebooks (optional, for exploration)

Key Requirements:

  • python main.py must run without errors
  • All dependencies listed in environment.yml or requirements.txt
  • Data included or clear download instructions
  • Use random_state for reproducibility

3. Technical Report (Due: January 11)

  • Length: ~10 pages (min 8 pages excluding references)
  • Format: PDF (use provided Markdown or LaTeX template)
  • Structure (8 required sections, aligned with professorโ€™s requirements):
    1. Abstract: Summary of project (~200 words)
    2. Introduction: Research question and motivation
    3. Research Question & Literature: Context, related work, why it matters
    4. Methodology: Data, algorithms, models, evaluation approach
    5. Implementation: Key technical decisions, challenges solved (can be brief)
    6. Codebase & Reproducibility: How to run it, dependencies (can be brief - 2-3 sentences)
    7. Results: Tables, figures, findings, interpretation
    8. Conclusion: Summary, limitations, future work
      • Appendix: AI tools used (ChatGPT, Copilot, etc.) - required if applicable

Download templates from the course website:

  • Markdown template โ†’ PDF with pandoc
  • LaTeX template โ†’ PDF with pdflatex

4. Presentation Video (Due: January 11, Required)

  • Format: Recorded video (MP4, YouTube link, or Loom)
  • Duration: 10-15 minutes (not longer than 15!)
  • Content:
    • Problem motivation (2-3 min)
    • Technical approach and methodology (3-4 min)
    • Demo of your code running (5-6 min)
    • Results and learnings (2-3 min)

Optional: Live presentation (TBA) instead of video, with Q&A


๐Ÿ”ง Technical Requirements

Must Have

Component Requirement
Language Python 3.10+
Entry Point python main.py runs successfully
Dependencies Listed in environment.yml or requirements.txt
Reproducibility random_state set everywhere
Documentation README with setup instructions
Report ~10 page PDF with methodology and results

Nice to Have (But Not Required)

  • Unit tests
  • CI/CD pipeline
  • Docker containerization
  • Type hints
  • 70% test coverage

Focus on making your project work well, not on adding features you donโ€™t need.

Code Quality

  • Formatting: Use consistent style (black/autopep8 recommended)
  • Naming: Clear, descriptive variable and function names
  • Structure: Modular code in src/ directory
  • Comments: Explain why, not what

๐Ÿ“… Timeline

Date Milestone
Nov 3 Project Proposal Due
Nov 10 Proposal Feedback
Nov 24 Feature Freeze - stop adding, start polishing
Dec 8 Documentation Week - finalize README and report
Jan 11 Final Submission
TBA Presentations (optional)

Development Strategy

  1. Week 1-2: Set up structure, get data, basic pipeline working
  2. Week 3-4: Implement models, run experiments
  3. Week 5-6: Analyze results, create visualizations
  4. Week 7: Write report, polish documentation

๐Ÿ“Š What Weโ€™re Looking For

The #1 Grading Criterion

Does python main.py work on our machines?

If we canโ€™t run your code, we canโ€™t grade it. Test on a fresh environment before submitting!

Evaluation Focus

  • Working Code: Runs without errors, produces output
  • Clear Methodology: We understand what you did and why
  • Meaningful Results: You actually answered your research question
  • Professional Presentation: Clean code, clear report, good documentation
  • Reproducibility: We get the same results when we run it

๐Ÿค– AI Tools Policy

We encourage using AI tools (ChatGPT, Copilot, Claude) as learning aids.

โœ… Good uses:

  • Debugging help
  • Learning new libraries
  • Code review suggestions
  • Documentation writing

โŒ Not acceptable:

  • Submitting code you donโ€™t understand
  • Having AI write your entire project

Required: Create AI_USAGE.md documenting how you used AI tools.


โ“ Common Questions

Q: Can I use a dataset from Kaggle? A: Yes! Just cite your source and include download instructions.

Q: Do I need to write tests? A: Not required, but encouraged if you have time.

Q: What if my model doesnโ€™t perform well? A: Thatโ€™s fine! Explain why in your discussion section. Negative results are still results.

Q: Can I work with a partner? A: No, all projects are individual work.

Q: What if I canโ€™t finish everything? A: Focus on having a working main.py and a complete report. A smaller project done well beats an ambitious project that doesnโ€™t run.


๐Ÿš€ Getting Started

  1. Fork the example project from the course repository
  2. Replace the Iris example with your own data and research question
  3. Follow the same structure - it works!
  4. Test on a fresh environment before submitting

See the examples/iris-classification/ folder in the course repository for a complete working example.


๐Ÿ“ฌ How to Submit

Email your submission to all TAs by January 11, 23:59:

  • anna.smirnova@unil.ch
  • francesco.brunamonti@unil.ch
  • zhongshan.chen@unil.ch

Subject line: [AP2025] Final Project - Your Name

Email body:

Name:
Student ID:
Project Title:
GitHub Repository: [link]
Video/Presentation: [link - YouTube, Loom, or Google Drive]

Checklist:
- [ ] python main.py runs without errors
- [ ] requirements.txt or environment.yml included
- [ ] Report (~10 pages PDF) attached OR in repository
- [ ] Video is 10-15 min OR signed up for live presentation (Dec 15)

Note: Report can be attached to email OR included in your repository as report.pdf - both work!


๐ŸŽค Live Presentation Option

Present live on December 15 instead of recording a video!

  • Benefit: No video submission required
  • Sign up by: December 8
  • Not graded: Just an opportunity to practice presenting

Sign up link: [TBA]


๐Ÿ“ง Need Help?

  • Discord: Quick questions and peer help
  • Office Hours: In-depth project discussions
  • Email: Project-specific issues

We want you to succeed! Start early, ask questions, and make something youโ€™re proud of.


*Last updated: December 2025 Deadline: January 11, 2026*