|
173 | 173 | { "title": "Rust Book Chapter 10.1", "link": "https://doc.rust-lang.org/book/ch10-01-syntax.html", "sub": []},
|
174 | 174 | { "title": "Rust Book Chapter 10.2", "link": "https://doc.rust-lang.org/book/ch10-02-traits.html", "sub": []}
|
175 | 175 | ]
|
| 176 | + }, |
| 177 | + { |
| 178 | + "title": "Modules and Testing", |
| 179 | + "agenda": [ |
| 180 | + { "title": "Module System", "sub": [ |
| 181 | + { "title": "Packages and Crates", "sub": [] }, |
| 182 | + { "title": "Using Modules", "sub": [] }, |
| 183 | + { "title": "Module Paths", "sub": [] } |
| 184 | + ] }, |
| 185 | + { "title": "Testing", "sub": [ |
| 186 | + { "title": "Controlled Testing", "sub": [] }, |
| 187 | + { "title": "Test Organization", "sub": [] } |
| 188 | + ] } |
| 189 | + ], |
| 190 | + "slides_light_html": "http://htmlpreview.github.io/?https://github.com/rust-stuco/lectures/blob/main/week6/light.html", |
| 191 | + "slides_light_pdf": "https://raw.githubusercontent.com/rust-stuco/lectures/main/week6/light.pdf", |
| 192 | + "slides_dark_html": "http://htmlpreview.github.io/?https://github.com/rust-stuco/lectures/blob/main/week6/dark.html", |
| 193 | + "slides_dark_pdf": "https://raw.githubusercontent.com/rust-stuco/lectures/main/week6/dark.pdf", |
| 194 | + "hw_handout": "/hw/greplab/greplab.zip", |
| 195 | + "hw_writeup": "/hw/greplab/doc/greplab/index.html", |
| 196 | + "hw_released": false, |
| 197 | + "details_released": true, |
| 198 | + "slides_released": false, |
| 199 | + "extras": [ |
| 200 | + { "title": "Rust Book Chapter 7", "link": "https://doc.rust-lang.org/book/ch07-00-managing-growing-projects-with-packages-crates-and-modules.html", "sub": [] }, |
| 201 | + { "title": "Rust Book Chapter 11", "link": "https://doc.rust-lang.org/book/ch11-00-testing.html", "sub": [] }, |
| 202 | + { "title": "Rust Book Chapter 14", "link": "https://doc.rust-lang.org/book/ch14-00-more-about-cargo.html", "sub": [] } |
| 203 | + ] |
| 204 | + }, |
| 205 | + { |
| 206 | + "title": "Crates, Closures, and Iterators", |
| 207 | + "agenda": [ |
| 208 | + { "title": "Crate Highlights", "sub": [ |
| 209 | + { "title": "`rand`", "sub": [] }, |
| 210 | + { "title": "`clap`", "sub": [] }, |
| 211 | + { "title": "`anyhow`", "sub": [] }, |
| 212 | + { "title": "`tracing`", "sub": [] }, |
| 213 | + { "title": "`flamegraph`", "sub": [] } |
| 214 | + ] }, |
| 215 | + { "title": "Closures", "sub": [ |
| 216 | + { "title": "Fn Traits", "sub": [] } |
| 217 | + ] }, |
| 218 | + { "title": "Iterators", "sub": [ |
| 219 | + { "title": "Loops vs. Iterators", "sub": [] } |
| 220 | + ] } |
| 221 | + ], |
| 222 | + "slides_light_html": "http://htmlpreview.github.io/?https://github.com/rust-stuco/lectures/blob/main/week7/light.html", |
| 223 | + "slides_light_pdf": "https://raw.githubusercontent.com/rust-stuco/lectures/main/week7/light.pdf", |
| 224 | + "slides_dark_html": "http://htmlpreview.github.io/?https://github.com/rust-stuco/lectures/blob/main/week7/dark.html", |
| 225 | + "slides_dark_pdf": "https://raw.githubusercontent.com/rust-stuco/lectures/main/week7/dark.pdf", |
| 226 | + "hw_handout": "/hw/iterlab/iterlab.zip", |
| 227 | + "hw_writeup": "/hw/iterlab/doc/iterlab/index.html", |
| 228 | + "hw_released": false, |
| 229 | + "details_released": true, |
| 230 | + "slides_released": false, |
| 231 | + "extras": [ |
| 232 | + { "title": "Rust Book Chapter 13", "link": "https://doc.rust-lang.org/book/ch13-00-functional-features.html", "sub": [] }, |
| 233 | + { "title": "Rust Book Chapter 14", "link": "https://doc.rust-lang.org/book/ch14-00-more-about-cargo.html", "sub": [] } |
| 234 | + ] |
| 235 | + }, |
| 236 | + { |
| 237 | + "title": "Lifetimes", |
| 238 | + "agenda": [ |
| 239 | + { "title": "Intro and Motivation", "sub": [] }, |
| 240 | + { "title": "Annotations", "sub": [] }, |
| 241 | + { "title": "Elision", "sub": [] }, |
| 242 | + { "title": "Generics and Bounds", "sub": [] }, |
| 243 | + { "title": "'static", "sub": [] } |
| 244 | + ], |
| 245 | + "slides_light_html": "http://htmlpreview.github.io/?https://github.com/rust-stuco/lectures/blob/main/week8/light.html", |
| 246 | + "slides_light_pdf": "https://raw.githubusercontent.com/rust-stuco/lectures/main/week8/light.pdf", |
| 247 | + "slides_dark_html": "http://htmlpreview.github.io/?https://github.com/rust-stuco/lectures/blob/main/week8/dark.html", |
| 248 | + "slides_dark_pdf": "https://raw.githubusercontent.com/rust-stuco/lectures/main/week8/dark.pdf", |
| 249 | + "hw_handout": "/hw/iterlab/iterlab.zip", |
| 250 | + "hw_writeup": "/hw/iterlab/doc/iterlab/index.html", |
| 251 | + "hw_released": false, |
| 252 | + "details_released": true, |
| 253 | + "slides_released": false, |
| 254 | + "extras": [ |
| 255 | + { "title": "What is 'a lifetime? (video)", "link": "https://www.youtube.com/watch?v=gRAVZv7V91Q", "sub": [] }, |
| 256 | + { "title": "Rust Book Chapter 10.3", "link": "https://doc.rust-lang.org/book/ch10-03-lifetime-syntax.html", "sub": [] }, |
| 257 | + { "title": "Lifetimes (Rustonomicon)", "link": "https://doc.rust-lang.org/nomicon/lifetimes.html", "sub": [] }, |
| 258 | + { "title": "Lifetimes (Rust by Example)", "link": "https://doc.rust-lang.org/rust-by-example/scope/lifetime.html", "sub": [] } |
| 259 | + ] |
| 260 | + }, |
| 261 | + { |
| 262 | + "title": "Box and Trait Objects", |
| 263 | + "agenda": [ |
| 264 | + { "title": "The `Box<T>` Type", "sub": [] }, |
| 265 | + { "title": "The `Deref` Trait", "sub": [] }, |
| 266 | + { "title": "Deref Coercion", "sub": [] }, |
| 267 | + { "title": "The `Drop` Trait and `std::mem::drop`", "sub": [] }, |
| 268 | + { "title": "Object-Oriented Programming", "sub": [] }, |
| 269 | + { "title": "Trait Objects", "sub": [ |
| 270 | + { "title": "Dynamic dispatch with `dyn`", "sub": [] } |
| 271 | + ] }, |
| 272 | + { "title": "Dynamically Sized Types", "sub": [] } |
| 273 | + ], |
| 274 | + "slides_light_html": "http://htmlpreview.github.io/?https://github.com/rust-stuco/lectures/blob/main/week9/light.html", |
| 275 | + "slides_light_pdf": "https://raw.githubusercontent.com/rust-stuco/lectures/main/week9/light.pdf", |
| 276 | + "slides_dark_html": "http://htmlpreview.github.io/?https://github.com/rust-stuco/lectures/blob/main/week9/dark.html", |
| 277 | + "slides_dark_pdf": "https://raw.githubusercontent.com/rust-stuco/lectures/main/week9/dark.pdf", |
| 278 | + "hw_handout": "/hw/iterlab/iterlab.zip", |
| 279 | + "hw_writeup": "/hw/iterlab/doc/iterlab/index.html", |
| 280 | + "hw_released": false, |
| 281 | + "details_released": true, |
| 282 | + "slides_released": false, |
| 283 | + "extras": [] |
| 284 | + }, |
| 285 | + { |
| 286 | + "title": "Smart Pointers and Unsafe", |
| 287 | + "agenda": [ |
| 288 | + { "title": "The `Rc` Type", "sub": [] }, |
| 289 | + { "title": "The `RefCell` Type", "sub": [] }, |
| 290 | + { "title": "Memory Leaks", "sub": [] }, |
| 291 | + { "title": "Unsafe Superpowers", "sub": [] }, |
| 292 | + { "title": "Raw Pointers", "sub": [] }, |
| 293 | + { "title": "FFI", "sub": [] } |
| 294 | + ], |
| 295 | + "slides_light_html": "http://htmlpreview.github.io/?https://github.com/rust-stuco/lectures/blob/main/week10/light.html", |
| 296 | + "slides_light_pdf": "https://raw.githubusercontent.com/rust-stuco/lectures/main/week10/light.pdf", |
| 297 | + "slides_dark_html": "http://htmlpreview.github.io/?https://github.com/rust-stuco/lectures/blob/main/week10/dark.html", |
| 298 | + "slides_dark_pdf": "https://raw.githubusercontent.com/rust-stuco/lectures/main/week10/dark.pdf", |
| 299 | + "hw_handout": "/hw/iterlab/iterlab.zip", |
| 300 | + "hw_writeup": "/hw/iterlab/doc/iterlab/index.html", |
| 301 | + "hw_released": false, |
| 302 | + "details_released": true, |
| 303 | + "slides_released": false, |
| 304 | + "extras": [] |
| 305 | + }, |
| 306 | + { |
| 307 | + "title": "Parallelism", |
| 308 | + "agenda": [ |
| 309 | + { "title": "Threads", "sub": [] }, |
| 310 | + { "title": "Synchronization", "sub": [] }, |
| 311 | + { "title": "Message Passing", "sub": [] }, |
| 312 | + { "title": "`Send` and `Sync`", "sub": [] }, |
| 313 | + { "title": "More Synchronization", "sub": [] } |
| 314 | + ], |
| 315 | + "slides_light_html": "http://htmlpreview.github.io/?https://github.com/rust-stuco/lectures/blob/main/week11/light.html", |
| 316 | + "slides_light_pdf": "https://raw.githubusercontent.com/rust-stuco/lectures/main/week11/light.pdf", |
| 317 | + "slides_dark_html": "http://htmlpreview.github.io/?https://github.com/rust-stuco/lectures/blob/main/week11/dark.html", |
| 318 | + "slides_dark_pdf": "https://raw.githubusercontent.com/rust-stuco/lectures/main/week11/dark.pdf", |
| 319 | + "hw_handout": "/hw/iterlab/iterlab.zip", |
| 320 | + "hw_writeup": "/hw/iterlab/doc/iterlab/index.html", |
| 321 | + "hw_released": false, |
| 322 | + "details_released": true, |
| 323 | + "slides_released": false, |
| 324 | + "extras": [] |
| 325 | + }, |
| 326 | + { |
| 327 | + "title": "Concurrency", |
| 328 | + "agenda": [ |
| 329 | + { "title": "`async`/`await`", "sub": [] }, |
| 330 | + { "title": "Futures", "sub": [] }, |
| 331 | + { "title": "Polling", "sub": [] } |
| 332 | + ], |
| 333 | + "slides_light_html": "http://htmlpreview.github.io/?https://github.com/rust-stuco/lectures/blob/main/week12/light.html", |
| 334 | + "slides_light_pdf": "https://raw.githubusercontent.com/rust-stuco/lectures/main/week12/light.pdf", |
| 335 | + "slides_dark_html": "http://htmlpreview.github.io/?https://github.com/rust-stuco/lectures/blob/main/week12/dark.html", |
| 336 | + "slides_dark_pdf": "https://raw.githubusercontent.com/rust-stuco/lectures/main/week12/dark.pdf", |
| 337 | + "hw_handout": "/hw/iterlab/iterlab.zip", |
| 338 | + "hw_writeup": "/hw/iterlab/doc/iterlab/index.html", |
| 339 | + "hw_released": false, |
| 340 | + "details_released": true, |
| 341 | + "slides_released": false, |
| 342 | + "extras": [] |
176 | 343 | }
|
177 | 344 | ]
|
178 | 345 | }
|
0 commit comments