diff --git a/2024-02-undp/figures/female figure walking on a manicured path in an avenue of trees.png b/2024-02-undp/figures/female figure walking on a manicured path in an avenue of trees.png new file mode 100644 index 0000000..e4175d3 Binary files /dev/null and b/2024-02-undp/figures/female figure walking on a manicured path in an avenue of trees.png differ diff --git a/2024-02-undp/figures/female figure walking on a manicured path in an avenue of trees.webp b/2024-02-undp/figures/female figure walking on a manicured path in an avenue of trees.webp new file mode 100644 index 0000000..c720015 Binary files /dev/null and b/2024-02-undp/figures/female figure walking on a manicured path in an avenue of trees.webp differ diff --git a/2024-02-undp/undp.org b/2024-02-undp/undp.org new file mode 100644 index 0000000..2e0615a --- /dev/null +++ b/2024-02-undp/undp.org @@ -0,0 +1,17 @@ +#+title: IoT for Smarter Buildings +#+date: 11 January 2024 +#+property: header-args:ipython :session session1 :results output raw drawer :exports both +#+options: toc:nil H:1 +#+startup: beamer +#+latex_class: beamer +#+latex_class_options: +#+beamer_theme: Boadilla +#+latex_header: \usepackage{natbib} +#+description: +#+keywords: +#+subtitle: +#+latex_compiler: pdflatex + +* Where are we going? +[[file:figures/female figure walking on a manicured path in an avenue of trees.png]] + diff --git a/2024-02-undp/undp.pdf b/2024-02-undp/undp.pdf new file mode 100644 index 0000000..4c45525 Binary files /dev/null and b/2024-02-undp/undp.pdf differ diff --git a/2024-03-supervision/2024-03-supervision.html b/2024-03-supervision/2024-03-supervision.html new file mode 100644 index 0000000..6966c13 --- /dev/null +++ b/2024-03-supervision/2024-03-supervision.html @@ -0,0 +1,363 @@ + + + + +Enabling Supervision + + + + + + + + + + + +
+
+

Enabling Supervision

A two way process

+

James Brusey

5 March 2024

+
+
+
+ +
+
+

Set ground rules at the start

+
+
+
+
+

Ground rules for you

+
    +
  • Meet regularly
  • +
  • Public praise, private criticism
  • +
  • Rapid turnaround for drafts
  • +
  • Be part of the team, not just the boss
  • +
  • Allow recording
  • + +
+ +
+
+

Ground rules for the student

+
    +
  • Organise, run meetings, write minutes
  • +
  • Criticise supervisor privately first
  • +
  • Rapid turnaround for drafts
  • +
  • Show up (like a normal job)
  • +
  • Take ownership of the PhD
  • +
  • Understand and obey the Vancouver protocol
  • +
  • Understand and avoid plagiarism
  • +
  • Learn the tools
  • +
  • Backup your work
  • +
  • Yes - you can buy stuff
  • +
  • Be part of the team
  • + +
+ +
+
+

Here is the ground rules document that I use

+

+https://tinyurl.com/phdgroundrules +

+ +
+
+
+
+

How to run a meeting (advice for student)

+
    +
  • Send documents in advance
  • +
  • Don't expect technical feedback on something just presented in the meeting
  • +
  • If you get feedback, act, and show that you acted
  • +
  • If there is nothing to discuss, don't take an hour
  • +
  • Write minutes on the same day
  • + +
+ +
+
+

Possible agenda

+
    +
  • Review previous minutes, including plan
  • +
  • What you actually did
  • +
  • Issues, problems
  • +
  • Plan for next period
  • + +
+ +
+
+

Why the supervisor needs an agenda

+ +
+

phd080905s.gif +

+
+ +
+
+
+
+

Project management

+
+
+
+
+

Use a gantt chart, right?

+ +
+

example_gantt_chart.png +

+
+ +

+#+comment 8985882aeb1d44495e6196fad9689142.jpg +

+ +
+
+

Wrong!

+
    +
  • To produce a nice looking gantt chart, you'll need hours with project management software (or a spreadsheet)
  • +
  • Everyone uses different software anyway
  • +
  • Either too high-level or too low-level
  • +
  • Too hard to update (so it won't be updated!)
  • +
  • It doesn't necessarily keep your project on track
  • +
  • Research is lumpy +
      +
    • hard to estimate how long something will take
    • +
    • new tasks appear frequently
    • + +
  • + +
+ +
+
+

Alternative – use Scrum

+
    +
  • Scrum is designed about a product backlog or list of features
  • +
  • A backlog is not about doing things on time but more about rate of progress
  • +
  • Supervisor and student agree on a priority order for the backlog
  • +
  • Group features into a sprint (these 3 items will be done by the next meeting)
  • + +
+ + +
+
+

Example backlog

+ + + +++ + + + + + + + + + + + + + + + + + + + + + + + + + + +
Feature
Lit review on thermal comfort
Clean data
Try linear regression
Try Neural network
+ +
+
+

Can also add a difficulty estimate (story points)

+ + + +++ ++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FeaturePoints
Lit review on thermal comfort100
Clean data50
Try linear regression20
Try Neural network20
 
+ +
+
+

Burn chart

+ +
+

burn.png +

+
+ +
+
+

Also consider word count trackers

+ + +
+
+
+
+

Match your approach to the student

+
+
+
+
+

Give flexibility to stronger students

+
    +
  • They get to choose the topic more
  • +
  • Meet when they have a result
  • +
  • Meeting agenda flexes to what they think is most important
  • +
  • Attendance not as important as progress
  • + +
+ +
+
+

Give discipline to weaker ones

+
    +
  • 10am latest starting time
  • +
  • Always review with them the previous minutes to pick up what they are avoiding
  • +
  • Bring them back to the agenda when they go off on a tangent
  • +
  • Give them a topic that you know will work and produce a viable thesis
  • +
  • Keep in mind: +
      +
    • you are not punishing for poor performance - just adjusting your style to their needs
    • + +
  • + +
+ +
+
+
+
+

Engender self-respect and ownership

+
+
+
+
+

Good students care about every aspect of the quality of their work

+
    +
  • Software should have unit-tests
  • +
  • Experiments should be reproducible
  • +
  • Outputs, graphs, tables well-proportioned, graceful, aesthetically pleasing, informative
  • +
  • Written work should be readable by a lay audience
  • + +
+ +
+
+

How do we get there?

+
    +
  • Have high standards and diligently point out issues
  • +
  • Make sure it is not just about the supervisor - enable other feedback too +
      +
    • journal / conference reviewers
    • +
    • wider community (e.g., stackoverflow, open source developers)
    • +
    • personal reward systems (e.g., chocolate 😋)
    • + +
  • +
  • Show them great examples
  • +
  • Also see Writing for Computer Science (Zobel)
  • + +
+ +
+
+
+
+

Conclusion

+
    +
  • + +
+
+
+
+
+ + + + + + + + + diff --git a/2024-03-supervision/2024-03-supervision.org b/2024-03-supervision/2024-03-supervision.org new file mode 100644 index 0000000..8dcb37d --- /dev/null +++ b/2024-03-supervision/2024-03-supervision.org @@ -0,0 +1,240 @@ +:REVEAL_PROPERTIES: +#+REVEAL_ROOT: https://cdn.jsdelivr.net/npm/reveal.js +#+REVEAL_REVEAL_JS_VERSION: 4 +#+options: timestamp:nil toc:1 num:nil +#+REVEAL_INIT_OPTIONS: width:1200, height:800, margin: 0.1, minScale:0.2, maxScale:2.5, transition:'cube', slideNumber:true +#+REVEAL_HEAD_PREAMBLE: +:END: +#+title: Enabling Supervision +#+subtitle: A two way process +#+date: 5 March 2024 +#+author: James Brusey + +* Set ground rules at the start + +** Ground rules for you + ++ Meet regularly ++ Public praise, private criticism ++ Rapid turnaround for drafts ++ Be part of the team, not just the boss ++ Allow recording + +** Ground rules for the student + ++ Organise, run meetings, write minutes ++ Criticise supervisor privately first ++ Rapid turnaround for drafts ++ Show up (like a normal job) ++ Take ownership of the PhD ++ Understand and obey the Vancouver protocol ++ Understand and avoid plagiarism ++ Learn the tools ++ Backup your work ++ Yes - you can buy stuff ++ Be part of the team + +** Here is the ground rules document that I use + +https://tinyurl.com/phdgroundrules + +* How to run a meeting (advice for student) + ++ Send documents in advance ++ Don't expect technical feedback on something just presented in the meeting ++ If you get feedback, act, and show that you acted ++ If there is nothing to discuss, don't take an hour ++ Write minutes on the same day + +** Possible agenda ++ Review previous minutes, including plan ++ What you actually did ++ Issues, problems ++ Plan for next period + +** Why the supervisor needs an agenda + +https://phdcomics.com/comics/archive/phd080905s.gif + +* Project management + +** Use a gantt chart, right? + +#+begin_src python :exports none :eval no-export +import matplotlib.pyplot as plt +import matplotlib.dates as mdates +from datetime import datetime + +plt.xkcd() +# Sample task information +tasks = ['Lit review', 'Experiments', 'Paper', 'Write thesis'] +start_dates = ['2024-01-01', '2024-06-01', '2025-01-01', '2025-06-01'] +end_dates = ['2024-06-01', '2025-01-01', '2025-07-01', '2026-06-01'] + +# Converting date strings to datetime objects +start_dates = [datetime.strptime(date, '%Y-%m-%d') for date in start_dates] +end_dates = [datetime.strptime(date, '%Y-%m-%d') for date in end_dates] + +# Calculate durations +durations = [end - start for start, end in zip(start_dates, end_dates)] + +# Set up the figure and subplot +fig, ax = plt.subplots(figsize=(10, 6)) +plt.gca().invert_yaxis() + +# Generate the Gantt chart bars +for i, task in enumerate(tasks): + ax.barh(task, durations[i].days, left=start_dates[i], color='skyblue') + +# Set the format of the date on the x-axis +ax.xaxis.set_major_locator(mdates.MonthLocator([6,12])) +ax.xaxis.set_major_formatter(mdates.DateFormatter('%b %Y')) + +# Adding grid, labels, and title +plt.grid(True, which='both', linestyle='--', linewidth=0.5) +#plt.xlabel('Month') +#plt.ylabel('Tasks') +#plt.title('Example Gantt Chart') + +# Tight layout to adjust for the date labels +plt.tight_layout() + +# Save the figure to a file +plt.savefig('example_gantt_chart.png') + +# Optionally, closing the plot +plt.close() +#+end_src + +#+RESULTS: +: None + +[[file:example_gantt_chart.png]] + + +** Wrong! + ++ To produce a nice looking gantt chart, you'll need hours with project management software (or a spreadsheet) ++ Everyone uses different software anyway ++ Either too high-level or too low-level ++ Too hard to update (so it won't be updated!) ++ It doesn't necessarily keep your project on track ++ Research is lumpy + + hard to estimate how long something will take + + new tasks appear frequently + +** Alternative -- use Scrum + ++ Scrum is designed about a /product backlog/ or list of features ++ A backlog is not about doing things /on time/ but more about /rate of progress/ ++ Supervisor and student agree on a /priority order/ for the backlog ++ Group features into a sprint (these 3 items will be done by the next meeting) + + +** Example backlog + +| Feature | +|-------------------------------| +| Lit review on thermal comfort | +| Clean data | +| Try linear regression | +| Try Neural network | +| ... | +|-------------------------------| + +** Can also add a difficulty estimate (story points) + +| Feature | Points | +|-------------------------------+--------| +| Lit review on thermal comfort | 100 | +| Clean data | 50 | +| Try linear regression | 20 | +| Try Neural network | 20 | +| ... | | +|-------------------------------+--------| + +** Burn chart + +#+begin_src python :exports none :eval no-export +import matplotlib.pyplot as plt +import numpy as np + +# Setting a "hand-drawn" style for the plot +plt.xkcd() + +# Example data for a release burn chart with a hand-drawn look +sprints = np.arange(1, 11) # Sprint numbers from 1 to 10 +ideal_burn = 190/100 * np.linspace(100, 0, 10) # Ideal burn from 100 to 0 +actual_burn = 190/100 * np.array([100, 90, 85, 70, 85, 65, 45, 35, 25, 15]) # Example actual burn with slight adjustments + +# Creating the plot with a hand-drawn style +plt.figure(figsize=(10, 6)) +plt.plot(sprints, ideal_burn, label='Ideal Burn', linestyle='--', marker='', color='gray') +plt.plot(sprints, actual_burn, label='Actual Burn', linestyle='-', marker='o', color='blue') + +# Adding titles and labels with a hand-drawn style +# plt.title('Example Release Burn Chart (Hand-Drawn Style)') +plt.xlabel('Sprints') +plt.ylabel('Points') +plt.xticks(sprints) +plt.yticks(np.arange(0, 191, 10)) +plt.grid(True, which='both', linestyle='--', linewidth=0.5) +plt.legend() + +# Annotating the chart +sprint_number = 5 +backlog_updated_value = actual_burn[sprint_number - 1] # Arrays are 0-indexed, sprints are 1-indexed +plt.annotate('Backlog updated', xy=(sprint_number, backlog_updated_value), xytext=(sprint_number + 1, backlog_updated_value + 10), + arrowprops=dict(facecolor='black', shrink=0.05, width=1, headwidth=8)) + +# Display the chart with a hand-drawn style +plt.tight_layout() +plt.savefig("burn.png") + +#+end_src + +[[file:burn.png]] + +** Also consider word count trackers +- e.g., https://wordgoal.app https://www.pacemaker.press +- For an overview https://writersatelier.com/where-else-to-track-chart-your-daily-word-count-free-spreadsheet/ + +* Match your approach to the student + +** Give flexibility to stronger students + +- They get to choose the topic more +- Meet when they have a result +- Meeting agenda flexes to what they think is most important +- Attendance not as important as progress + +** Give discipline to weaker ones + +- 10am latest starting time +- Always review with them the previous minutes to pick up what they are avoiding +- Bring them back to the agenda when they go off on a tangent +- Give them a topic that you know will work and produce a viable thesis +- Keep in mind: + - you are not punishing for poor performance - just adjusting your style to their needs + +* Engender self-respect and ownership +** Good students care about every aspect of the quality of their work + ++ Software should have unit-tests ++ Experiments should be reproducible ++ Outputs, graphs, tables well-proportioned, graceful, aesthetically pleasing, informative ++ Written work should be readable by a lay audience + +** How do we get there? + ++ Have high standards and diligently point out issues ++ Make sure it is not just about the supervisor - enable other feedback too + + journal / conference reviewers + + wider community (e.g., stackoverflow, open source developers) + + personal reward systems (e.g., chocolate 😋) ++ Show them great examples ++ Also see /Writing for Computer Science/ (Zobel) + +* Conclusion + ++ diff --git a/2024-03-supervision/burn.png b/2024-03-supervision/burn.png new file mode 100644 index 0000000..ff8794f Binary files /dev/null and b/2024-03-supervision/burn.png differ diff --git a/2024-03-supervision/example_gantt_chart.png b/2024-03-supervision/example_gantt_chart.png new file mode 100644 index 0000000..83e5c74 Binary files /dev/null and b/2024-03-supervision/example_gantt_chart.png differ