Skip to content

Repository files navigation

Introduction to Scientific Programming 🧬🐍

Advanced Course for PhD Students in Integrative Neuroscience
University of Coimbra β€’ CNC-UC Polo I

πŸ“… October 10, 2025 – January 30, 2026
πŸ• Friday Afternoons β€’ 14 Sessions
πŸ‘¨β€πŸ« Coordinator: Renato Duarte

Python License GitHub


🎯 Course Overview

This advanced course is designed to equip students with the programming, computational, and software development skills necessary to produce reproducible, efficient, and modern scientific analyses. The course bridges the gap between traditional research programming and professional software development, guiding students from fundamental coding principles to advanced applications in data analysis, visualization, simulation, and machine learning.

πŸ”‘ Key Features

  • πŸ€– AI-Assisted Learning: Integration of modern AI coding tools (GitHub Copilot, ChatGPT, Windsurf) with fundamental programming concepts
  • πŸ”¬ Domain-Specific Focus: Tailored for neuroscience and biological research applications
  • πŸ“Š Real-World Applications: Using authentic research datasets and solving actual scientific problems
  • πŸ‘₯ Collaborative Approach: Shared GitHub repository with peer contributions and code review
  • πŸ› οΈ Professional Skills: Modern development workflows, version control, and software engineering best practices

πŸ—“οΈ Course Schedule

πŸ“… DateπŸ“š Session🎯 Focus
Oct 10Introduction & Modern Development EcosystemAI-assisted coding, environment setup
Oct 17Programming FundamentalsPython basics, data structures
Oct 31Development Tools & WorkflowGit, IDEs, collaboration
Nov 07Numerical Computing FoundationsNumPy, matplotlib, SciPy
Nov 14Data Manipulation & AnalysisPandas, data cleaning
Nov 21Visualization & CommunicationPublication-quality figures
Nov 28Intermediate Programming ConceptsError handling, documentation
Dec 05Machine Learning IStatistics, scikit-learn
Dec 12Project Description and OrganizationProject planning, organization
Dec 19Neural Networks & Deep Learning: From Theory to Biomedical ApplicationsDeep learning, PyTorch, transformers
Jan 09Simulation & Modeling in NeuroscienceDifferential equations, numerical methods, dynamical systems
Jan 16Student ProjectsCustom research solutions
Jan 23Student ProjectsCustom research solutions
Jan 30Student PresentationsProject showcases

πŸ“– Course Structure

πŸ—οΈ Part I: Fundamentals (Days 1-3)

Building the foundation for modern scientific programming

  • Development Environment Setup: VS Code, extensions, terminal basics
  • AI-Assisted Coding: GitHub Copilot, ChatGPT, "vibe coding" techniques
  • Programming Fundamentals: Variables, control structures, functions, OOP
  • Professional Workflows: Git, GitHub, documentation, collaboration

πŸ”¬ Part II: Scientific Computing Core (Days 4-7)

Core tools for scientific data analysis

  • Numerical Computing: NumPy arrays, mathematical operations
  • Data Manipulation: Pandas for data handling and cleaning
  • Visualization: matplotlib, seaborn, plotly for scientific figures
  • Code Quality: Error handling, type hints, debugging strategies

πŸš€ Part III: Advanced Applications (Days 8-12)

Specialized tools and advanced techniques

  • Statistical Analysis: Foundations, hypothesis testing, effect sizes
  • Machine Learning: Supervised/unsupervised learning, scikit-learn
  • Deep Learning: Neural networks, PyTorch, TensorFlow basics
  • Simulation & Modeling: Differential equations, biological modeling
  • Domain Applications: Neuroscience-specific tools and workflows

πŸ‘¨β€πŸŽ“ Part IV: Capstone Projects (Days 13-14)

Applying skills to real research problems

πŸ› οΈ Technology Stack

Category Tools
🐍 Core Language Python 3.11+
πŸ”§ Development Environment VS Code, Anaconda, Git
πŸ€– AI Assistants GitHub Copilot, ChatGPT, Windsurf, Claude
πŸ“Š Data Science NumPy, Pandas, SciPy, matplotlib, seaborn
🧠 Machine Learning scikit-learn, PyTorch, TensorFlow
πŸ”¬ Neuroscience Tools Neo, Elephant, MNE, CAIman, DeepLabCut
πŸ“ˆ Visualization matplotlib, seaborn, plotly
πŸ§ͺ Professional Tools pytest, GitHub Actions, Jupyter

🎯 Learning Objectives

Upon completion of this course, students will be able to:

πŸ”§ Technical Skills

  • βœ… Set up and manage professional scientific development environments
  • βœ… Utilize AI-assisted coding tools effectively while understanding fundamentals
  • βœ… Implement reproducible research workflows with version control
  • βœ… Master numerical computing with NumPy, Pandas, and SciPy
  • βœ… Create publication-quality visualizations and figures
  • βœ… Apply statistical analyses and machine learning techniques
  • βœ… Develop mathematical simulations of biological systems

πŸŽ“ Professional Skills

  • βœ… Write clean, documented, and maintainable code
  • βœ… Debug and troubleshoot complex programming issues
  • βœ… Collaborate effectively using modern development workflows
  • βœ… Package and distribute scientific software
  • βœ… Apply testing and continuous integration practices

🧠 Research Skills

  • βœ… Transform research questions into computational solutions
  • βœ… Analyze complex, multi-dimensional scientific datasets
  • βœ… Integrate diverse data types (neural, behavioral, omics)
  • βœ… Communicate results through interactive visualizations

πŸš€ Getting Started

πŸ“₯ Setup Instructions

  1. Clone the repository:

    git clone https://github.com/CNNC-Lab/intscipro-2025.git
    cd intscipro-2025
  2. Install Python environment:

    # Option A: Using conda (recommended)
    conda env create -f environment.yml
    conda activate scientific-programming
    
    # Option B: Using pip
    pip install -r requirements.txt
  3. Verify installation:

    python -c "import numpy, pandas, matplotlib; print('Setup successful!')"
  4. Follow Day 1 setup tutorial: day01-introduction/setup_tutorial.md

🎯 Quick Start Examples

πŸ” Simple Data Analysis Example
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

# Load sample neuroscience data
data = pd.read_csv('datasets/sample_neuron_data.csv')

# Basic analysis
summary = data.groupby('condition')['spike_count'].describe()
print(summary)

# Visualization
plt.figure(figsize=(10, 6))
sns.boxplot(data=data, x='condition', y='spike_count')
plt.title('Neural Activity by Experimental Condition')
plt.show()
πŸ€– AI-Assisted Coding Example
# Example prompt for ChatGPT/Copilot:
"""
I have electrophysiological data with columns: neuron_id, condition, 
spike_count, isi_mean, burst_frequency. Please create a comprehensive 
analysis including summary statistics, ANOVA testing, and publication-quality 
visualizations comparing conditions.
"""

# AI will generate complete analysis pipeline
# Students learn to review, understand, and modify AI-generated code

πŸ“š Course Materials

πŸ“– Core Resources

  • Textbooks: No required textbook - all materials provided in repository
  • Online Platforms: Jupyter notebooks, GitHub Codespaces support
  • AI Tools: Free tiers of ChatGPT, GitHub Copilot, Claude
  • Datasets: Real and synthetic neuroscience datasets from published research

πŸ”— Recommended Reading

πŸ’¬ Support & Communication

πŸ“§ Contact Information

  • Instructor: Renato Duarte
  • Course Forum: GitHub Discussions (for technical questions)
  • Office Hours: Fridays after class (by appointment)

πŸ†˜ Getting Help

  1. Check the FAQ: resources/troubleshooting.md
  2. Search Issues: Look through existing GitHub issues
  3. Ask on Discussions: Use GitHub Discussions for course-related questions
  4. Emergency Contact: Email instructor for urgent issues

πŸ† Assessment & Certification

πŸ“Š Grading Structure

  • Participation & Exercises: Active participation in the course is strongly encouraged
  • Final Project: Custom solution to a research problem

πŸŽ–οΈ Project Requirements

Students will develop a custom computational solution addressing their specific research needs:

  • Proposal: 1-page project description
  • Implementation: Coding and analysis
  • Presentation: 15-minute presentation + code demo
  • Documentation: Well-documented GitHub repository

πŸ“œ License

This course content is licensed under the MIT License. Students are free to use, modify, and distribute course materials with proper attribution.


University of Coimbra β€’ Center for Neuroscience and Cell Biology (CNC)
Empowering the next generation of neuroscientists

About

Introduction to Scientific Programming (WS 2025/2026)

Resources

Stars

2 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages