-
Notifications
You must be signed in to change notification settings - Fork 3
/
course_info.R
124 lines (113 loc) · 3.79 KB
/
course_info.R
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
######## Course info ########
library(tidyverse)
# Start of semester
start_semester <- "2024-02-26"
# Week of mid-semester break
mid_semester_break <- "2024-04-01"
# Schedule
schedule <- tibble(
Week = seq(12),
Topic = c(
"Foundations of machine learning",
"Visualising your data and models",
"Re-sampling and regularisation",
"Logistic regression and discriminant analysis",
"Trees and forests",
"Neural networks and deep learning",
"Explainable artificial intelligence (XAI)",
"Support vector machines and nearest neighbours",
"K-nearest neighbours and hierarchical clustering",
"Model-based clustering and self-organising maps",
"Evaluating your clustering model",
"Project presentations by Masters students"
),
Reference = c(
"ISLR 2.1, 2.2",
"Cook and Laa Ch 1, 3, 4, 5, 6, 13",
"ISLR 5.1, 5.2, 6.2, 6.4",
"ISLR 4.3, 4.4",
"ISLR 8.1, 8.2",
"ISLR 10.1-10.3, 10.7",
"Molnar 8.1, 8.5, 9.2-9.6",
"ISLR 9.1-9.3",
"HOML Ch 20, 21",
"HOML Ch 22",
"Cook and Laa Ch 12",
""
),
Reference_URL = c(
"https://www.statlearning.com",
"https://dicook.github.io/mulgar_book/",
"https://www.statlearning.com",
"https://www.statlearning.com",
"https://www.statlearning.com",
"https://www.statlearning.com",
"https://christophm.github.io/interpretable-ml-book/",
"https://www.statlearning.com",
"https://bradleyboehmke.github.io/HOML/",
"https://bradleyboehmke.github.io/HOML/",
"https://dicook.github.io/mulgar_book/",
""
)
)
# Add mid-semester break
calendar <- tibble(
Date = seq(as.Date(start_semester), by = "1 week", length.out = 13)
) |>
mutate(
Week = row_number(),
Week = if_else(Date < mid_semester_break, Week, Week - 1),
# Week =
)
# Add calendar to schedule
schedule <- schedule |>
left_join(calendar, by = "Week") |>
mutate(
Week = if_else(Date == mid_semester_break, NA, Week),
Topic = if_else(Date == mid_semester_break, "Mid-semester break", Topic),
Reference = if_else(Date == mid_semester_break, NA, Reference),
Reference_URL = if_else(Date == mid_semester_break, NA, Reference_URL)
) |>
select(Week, Date, everything())
# Add assignment details
lastmon <- function(x) {
7 * floor(as.numeric(x - 1 + 4) / 7) + as.Date(1 - 4, origin = "1970-01-01")
}
assignments <- read_csv(here::here("assignments.csv")) |>
mutate(
Date = lastmon(Due),
Moodle = paste0("https://learning.monash.edu/mod/assign/view.php?id=", Moodle),
File = paste0("assignments/", File)
)
schedule <- schedule |>
full_join(assignments, by = "Date") |>
mutate(Week = if_else(is.na(Week) & Date > "2024-05-20", 13, Week))
show_assignments <- function(week) {
ass <- schedule |>
filter(
Week >= week & (week > Week - 3 | week > 8),
!is.na(Assignment),
) |>
select(Assignment:File)
if (NROW(ass) > 0) {
cat("\n\n## Assignments\n\n")
for (i in seq(NROW(ass))) {
cat("* [", ass$Assignment[i], "](../", ass$File[i], ") is due on ",
format(ass$Due[i], "%A %d %B.\n"),
sep = ""
)
}
}
}
submit <- function(schedule, assignment) {
ass <- schedule |>
filter(Assignment == assignment)
due <- format(ass$Due, "%e %B %Y") |> stringr::str_trim()
url <- ass$Moodle
button <- paste0(
"<br><br><hr><b>Due: ", due, "</b><br>",
"<a href=", url, " class = 'badge badge-large badge-blue'>",
"<font size='+2'> <b>Submit</b> </font><br></a>"
)
cat(button)
}