2016-10-07 12:59:10 +02:00
# Vorlesung „Programmieren in Rust“
2017-04-03 10:52:52 +02:00
Deutsche Vorlesung über Rust an der Universität Osnabrück, Wintersemester 2016/17. In diesem Repository werden Slides und andere Materialien zur Vorlesung gesammelt. Die **Ergebnisse der Evaluation** der Veranstaltung durch die Studenten sind [**hier** ](https://github.com/LukasKalbertodt/programmieren-in-rust/blob/master/AuswertungEvaluation.pdf ) einzusehen.
2016-11-11 13:54:27 +01:00
2017-02-18 18:59:17 +01:00
## Abschlussprojekte
Eine Liste aller Abschlussprojekte befindet sich [hier (Englisch) ](https://github.com/LukasKalbertodt/programmieren-in-rust/blob/master/projects.md ).
2016-11-11 13:54:27 +01:00
## Vorlesungsaufzeichnungen
2016-11-22 18:39:17 +01:00
Die Aufzeichnungen gibt es oft in zwei Versionen:
2016-11-11 13:54:27 +01:00
2016-11-11 14:17:22 +01:00
- nur das Beamerbild, aber in hoher 1080p-Qualität, mit der Aufnahme vom Notebook-Mikrofon ([YouTube Playlist](https://www.youtube.com/playlist?list=PL0Ur-09iGhpwMbNiVTBeHmIjs0GuIXhNg))
2016-11-11 13:54:27 +01:00
- Beamerbild und Dozent (mit Tafel) und Umhängemikrofon (Aufnahme schlägt hin und wieder fehl)
| Datum | Thema | Nur Beamer | Dozent und Beamer |
| ------ | ----- | ------------------------ | ---------------------------- |
| 24.10. | [Warum Rust?/Organisatorisches][s0], [Grundlagen][s1] | [YouTube ](https://www.youtube.com/watch?v=lQ36K1htRDY ) | - |
| 26.10. | [Git und GitHub/Rust einrichten][s2], [Grundlagen][s1] | [YouTube ](https://www.youtube.com/watch?v=k6KKO7QfhNQ ) | - |
| 31.10. | [Grundlagen ](s1 ), [Ownership-System (Teil 1)][s3], [Strings][s4] | [YouTube ](https://www.youtube.com/watch?v=1dr2CDxBRuo ) | [via OpenCast ](https://video4.virtuos.uos.de/engage/theodul/ui/core.html?id=2a7b1a55-5b47-4e13-bd11-45d5b6e3c2a2 ) |
| 02.11. | [Strings][s4], [Git (Teil 2)][s5] | [YouTube ](https://www.youtube.com/watch?v=Hiez8zq3yNg ) | [via OpenCast ](https://video4.virtuos.uos.de/engage/theodul/ui/core.html?id=15898062-d625-48f3-9bd4-518710271568 ) |
| 07.11. | [Structs, impl-Block und Methodensyntax][s6], [Diverses (Vec)][s7] | [YouTube ](https://www.youtube.com/watch?v=EGogoHQUeLE ) | - |
| 09.11. | [Diverses (Konstanten, Tuple-Struct, Match, Pattern)][s7], [Enums ](s8 ) | [YouTube ](https://www.youtube.com/watch?v=PHEYNPtWIbs ) | - |
2016-11-22 18:44:51 +01:00
| 14.11. | [*Nachbesprechung Aufgaben*][t3], [Error Handling][s9] | [YouTube ](https://www.youtube.com/watch?v=YYb0fIELE1Q ) | [via OpenCast ](https://video4.virtuos.uos.de/engage/theodul/ui/core.html?id=2efa047b-8c2a-4545-bd6b-3c36d208f33f ) |
| 16.11. | [Error Handling][s9], [*`tree.rs`-Beispiel*][m1] | [YouTube ](https://youtu.be/lJzYi5TqtEY ) | [via OpenCast ](https://video4.virtuos.uos.de/engage/theodul/ui/core.html?id=1cac1644-d054-4fce-b59b-6214730abf19 ) |
| 21.11. | [*Nachbesprechung Aufgaben*][t4], [Module und `use` ][s10] | [YouTube ](https://youtu.be/04dpIX5njy8 ) | [via OpenCast ](https://video4.virtuos.uos.de/engage/theodul/ui/core.html?id=96da9ffc-91eb-4d90-b89b-11696580e084 ) |
2016-11-23 19:11:19 +01:00
| 23.11. | [Module, Crates und Cargo][s10], *Farbiger Calculator* | [YouTube ](https://youtu.be/mpfAaSVTe78 ) | [via OpenCast ](https://video4.virtuos.uos.de/engage/theodul/ui/core.html?id=bac86875-bbeb-42dc-9970-55af51c9f017 ) |
2017-02-12 12:39:30 +01:00
| 28.11. | [Generics und Traits][s11] | [YouTube ](https://www.youtube.com/watch?v=ImIKRRXd3fA ) | [via OpenCast ](https://video4.virtuos.uos.de/engage/theodul/ui/core.html?id=7859a587-aa3c-470e-8f17-34d62dc66984 ) |
2016-11-30 17:14:19 +01:00
| 30.11. | [Generics und Traits][s11], [*Generic `read` Beispiel*][m2] | [YouTube ](https://www.youtube.com/watch?v=QUWfNqC-7nI ) | [via OpenCast ](https://video4.virtuos.uos.de/engage/theodul/ui/core.html?id=2c961a8f-e86e-4335-9a6f-90e8a6d435f5 ) |
2016-12-13 13:17:37 +01:00
| 05.12. | [*Nachbesprechung Aufgaben*][t6], [Iteratoren und Closures][s12] | [YouTube ](https://youtu.be/YnYKzpmMv40 ) | [via OpenCast ](https://video4.virtuos.uos.de/engage/theodul/ui/core.html?id=e4db0cac-c233-4ae7-9c62-5cd1d6e2ab16 ) |
| 07.12. | [Iteratoren und Closures][s12], [*Kommaliste Beispiel*][m3] | [YouTube ](https://www.youtube.com/watch?v=Ku0001U4o9A ) | [via OpenCast ](https://video4.virtuos.uos.de/engage/theodul/ui/core.html?id=5c64074c-80ff-40ce-84ee-5dc4cb349ff5 ) |
2016-12-13 13:26:40 +01:00
| 12.12. | [`try!` und `?` (Error Handling)][s9], [Closures][s12], [*Themenideen Abschlussprojekt*][m4] | [YouTube ](https://www.youtube.com/watch?v=-tc0tHWuJm8 ) | [via OpenCast ](https://video4.virtuos.uos.de/engage/theodul/ui/core.html?id=7da62492-0c14-41e5-b9a5-ad00dfece221 ) |
2016-12-13 13:27:37 +01:00
| 14.12. | *Kekse und Coding ("Advent of Code")* | - | - |
2016-12-13 13:26:40 +01:00
| | | | |
| 02.01. | **Fällt aus** | - | - |
2017-02-12 11:01:31 +01:00
| 04.01. | [*Blödsinn*][b1], [*Nachbesprechung Aufgaben*][t8], [Makros][s13] | [YouTube ](https://youtu.be/nPF-0zE5i9Q ) | [via OpenCast ](https://video4.virtuos.uos.de/engage/theodul/ui/core.html?id=8d44d64b-ac8b-42e0-80dc-223f83ba9745 ) |
2017-01-10 12:09:46 +01:00
| 09.01. | [*Nachbesprechung Aufgaben*][t9], [Deref und Diverses][s14], [Low Level][s15] | [YouTube ](https://youtu.be/TdJKs_Dq2Cs ) | [via OpenCast ](https://video4.virtuos.uos.de/engage/theodul/ui/core.html?id=8f7ff3e0-389d-4c98-82ac-5d708b4a1aaa ) |
2017-01-16 19:57:39 +01:00
| 11.01. | [Stack und Heap (Low Level)][s15] | [YouTube ](https://youtu.be/Unda8t9cxw8 ) | [via OpenCast ](https://video4.virtuos.uos.de/engage/theodul/ui/core.html?id=31d04ddc-80a3-4344-a2c4-b4a0316f2e3a ) |
2017-01-31 10:56:35 +01:00
| 16.01. | [*Nachbesprechung Aufgaben*][t10], [Trait Objects, Drop, Smartpointer][s16] | [YouTube ](https://youtu.be/vjQ7qx6RcRY ) | [via OpenCast ](https://video4.virtuos.uos.de/engage/theodul/ui/core.html?cid=f4a7c0754b566ef1f43345adaecc98cf&id=8e21ce68-1029-42fd-974d-52dd05a7bb5e ) |
| 18.01. | *Informationen Abschlussprojekt* , [Interior Mutability, GC vs. RAII][s16] | [YouTube ](https://www.youtube.com/watch?v=1rTtz7qHW68 ) | [via OpenCast ](https://video4.virtuos.uos.de/engage/theodul/ui/core.html?cid=f4a7c0754b566ef1f43345adaecc98cf&id=1b01a22e-42f7-4528-901f-df41557b4a05 ) |
| 23.01. | [*Animal Beispiel*][m5], [*Tipps für Abschlussprojekt*][m6], [Lifetimes][s17] | [YouTube ](https://youtu.be/1ND79YMDV54 ) | [via OpenCast ](https://video4.virtuos.uos.de/engage/theodul/ui/core.html?cid=f4a7c0754b566ef1f43345adaecc98cf&id=cd0ead3a-6417-4119-9a82-0419024150e9 ) |
| 25.01. | [Lifetimes][s17], [Multithreading & Concurrency][s18] | [YouTube ](https://youtu.be/RTCHFlGg5wQ ) | - |
| 30.01. | *Organisatorisches* , [*Ferris*][m7], [Multithreading & Concurrency][s18] | [YouTube ](https://youtu.be/hwoEtAnTuss ) | [via OpenCast ](https://video4.virtuos.uos.de/engage/theodul/ui/core.html?cid=f4a7c0754b566ef1f43345adaecc98cf&id=46fff460-84e6-4134-a77b-73e6bfad5f61 ) |
2017-02-08 16:26:44 +01:00
| 01.02. | [Performance & Effizienz][s19] | [YouTube ](https://www.youtube.com/watch?v=01HVacgLQO4 ) | [via OpenCast ](https://video4.virtuos.uos.de/engage/theodul/ui/core.html?id=84b2b573-e900-4692-bdab-7cea4fd8c332 ) |
| 06.02. | [Rust Community & Open Source][s20] | [YouTube ](https://youtu.be/mKE7j5TC-2Q ) | [via OpenCast ](https://video4.virtuos.uos.de/engage/theodul/ui/core.html?id=ba079eff-2e2b-49cb-9cc0-15138e1da23e ) |
2017-02-12 10:45:55 +01:00
| 08.02. | [Unsafe & FFI][s21] | [YouTube ](https://youtu.be/5IJr7wn48_I ) | [via OpenCast ](https://video4.virtuos.uos.de/engage/theodul/ui/core.html?id=6603a519-d899-4c2b-ac25-a4143b7377fa ) |
2017-01-30 20:32:05 +01:00
2016-11-11 13:54:27 +01:00
2016-11-22 18:43:25 +01:00
[s0]: https://github.com/LukasKalbertodt/programmieren-in-rust/blob/master/slides/00-Warum-Rust.pdf
[s1]: https://github.com/LukasKalbertodt/programmieren-in-rust/blob/master/slides/01-Grundlagen.pdf
[s2]: https://github.com/LukasKalbertodt/programmieren-in-rust/blob/master/slides/02-Git-GitHub-Rust-Environment.pdf
[s3]: https://github.com/LukasKalbertodt/programmieren-in-rust/blob/master/slides/03-Ownership-System.pdf
[s4]: https://github.com/LukasKalbertodt/programmieren-in-rust/blob/master/slides/04-Strings.pdf
[s5]: https://github.com/LukasKalbertodt/programmieren-in-rust/blob/master/slides/05-Git-Teil-2.pdf
[s6]: https://github.com/LukasKalbertodt/programmieren-in-rust/blob/master/slides/06-Structs-Methoden.pdf
[s7]: https://github.com/LukasKalbertodt/programmieren-in-rust/blob/master/slides/07-Vec-Konstanten-TypeAlias-TupleStruct-Match-Pattern.pdf
[s8]: https://github.com/LukasKalbertodt/programmieren-in-rust/blob/master/slides/08-Enums-Option-Result.pdf
[s9]: https://github.com/LukasKalbertodt/programmieren-in-rust/blob/master/slides/09-Error-Handling.pdf
2016-11-23 19:11:03 +01:00
[s10]: https://github.com/LukasKalbertodt/programmieren-in-rust/blob/master/slides/10-Module-Crates-Cargo.pdf
2016-11-30 12:44:23 +01:00
[s11]: https://github.com/LukasKalbertodt/programmieren-in-rust/blob/master/slides/11-Generic-Traits.pdf
2016-12-13 13:17:37 +01:00
[s12]: https://github.com/LukasKalbertodt/programmieren-in-rust/blob/master/slides/12-Iterators-Closures.pdf
2017-01-04 14:56:23 +01:00
[s13]: https://github.com/LukasKalbertodt/programmieren-in-rust/blob/master/slides/13-Makros.pdf
2017-01-09 18:45:54 +01:00
[s14]: https://github.com/LukasKalbertodt/programmieren-in-rust/blob/master/slides/14-Deref-und-Diverses.pdf
2017-01-11 13:19:10 +01:00
[s15]: https://github.com/LukasKalbertodt/programmieren-in-rust/blob/master/slides/15-Low-Level.pdf
2017-01-18 22:54:52 +01:00
[s16]: https://github.com/LukasKalbertodt/programmieren-in-rust/blob/master/slides/16-TraitObjects-Smartpointer-InteriorMutability-Drop-RAII.pdf
2017-01-25 14:13:23 +01:00
[s17]: https://github.com/LukasKalbertodt/programmieren-in-rust/blob/master/slides/17-Lifetimes.pdf
2017-01-30 20:32:05 +01:00
[s18]: https://github.com/LukasKalbertodt/programmieren-in-rust/blob/master/slides/18-Concurrency-Multithreading.pdf
2017-02-01 17:31:27 +01:00
[s19]: https://github.com/LukasKalbertodt/programmieren-in-rust/blob/master/slides/19-Performance-und-Effizienz.pdf
2017-02-06 20:58:03 +01:00
[s20]: https://github.com/LukasKalbertodt/programmieren-in-rust/blob/master/slides/20-Rust-Community-Open-Source.pdf
2017-02-08 16:26:44 +01:00
[s21]: https://github.com/LukasKalbertodt/programmieren-in-rust/blob/master/slides/21-Unsafe-und-FFI.pdf
2016-11-16 18:36:38 +01:00
[m1]: https://github.com/LukasKalbertodt/programmieren-in-rust/blob/master/materialien/tree.rs
2016-11-30 12:44:23 +01:00
[m2]: https://github.com/LukasKalbertodt/programmieren-in-rust/blob/master/materialien/read.rs
2016-12-07 12:54:19 +01:00
[m3]: https://github.com/LukasKalbertodt/programmieren-in-rust/blob/master/materialien/comma-list-iter.rs
2016-12-13 13:17:37 +01:00
[m4]: https://github.com/LukasKalbertodt/programmieren-in-rust/blob/master/materialien/Zusammenfassung-und-Abschlussprojekt.pdf
2017-01-24 16:09:42 +01:00
[m5]: https://github.com/LukasKalbertodt/programmieren-in-rust/blob/master/materialien/animal.rs
[m6]: https://github.com/LukasKalbertodt/programmieren-in-rust/blob/master/materialien/tipps-abschlussprojekt.md
2017-01-30 20:32:05 +01:00
[m7]: https://github.com/LukasKalbertodt/programmieren-in-rust/blob/master/materialien/ferris.jpg
2016-11-16 18:36:38 +01:00
[t3]: https://github.com/LukasKalbertodt/programmieren-in-rust/tree/master/aufgaben/sheet3
2016-11-22 15:12:57 +01:00
[t4]: https://github.com/LukasKalbertodt/programmieren-in-rust/tree/master/aufgaben/sheet4
2016-12-05 18:00:33 +01:00
[t6]: https://github.com/LukasKalbertodt/programmieren-in-rust/tree/master/aufgaben/sheet6
2017-01-04 14:56:23 +01:00
[t8]: https://github.com/LukasKalbertodt/programmieren-in-rust/tree/master/aufgaben/sheet8
2017-01-09 18:45:54 +01:00
[t9]: https://github.com/LukasKalbertodt/programmieren-in-rust/tree/master/aufgaben/sheet9
2017-01-16 19:55:55 +01:00
[t10]: https://github.com/LukasKalbertodt/programmieren-in-rust/tree/master/aufgaben/sheet10
2017-01-04 14:56:23 +01:00
[b0]: http://i.imgur.com/9g5gebP.jpg
[b1]: https://www.youtube.com/watch?v=d8q5C7UalZw& list=PL5YlUpv9iiO0WsosBlAZfL64BBCALECkW