Software construction
CS-214
Media
Week05 - FP videos
04.10.2024, 13:16
1. Subtyping and Generics
03.10.2024, 22:57
2. Tuples and generic methods
04.10.2024, 16:55
3. Variance
04.10.2024, 16:56
4. Other Collections
04.10.2024, 17:00
5. Combinatorial Search and For Expressions
04.10.2024, 17:03
6. Combinatorial Search Example
04.10.2024, 21:11
7. Maps
04.10.2024, 21:12
8. Putting the Pieces Together
04.10.2024, 21:12
Media
Week05 - FP videos
04.10.2024, 13:16
1. Subtyping and Generics
03.10.2024, 22:57
2. Tuples and generic methods
04.10.2024, 16:55
3. Variance
04.10.2024, 16:56
4. Other Collections
04.10.2024, 17:00
5. Combinatorial Search and For Expressions
04.10.2024, 17:03
6. Combinatorial Search Example
04.10.2024, 21:11
7. Maps
04.10.2024, 21:12
8. Putting the Pieces Together
04.10.2024, 21:12
This file is part of the content downloaded from Software construction.
- Course website (URL)
- Syllabus (URL)
- Policies (URL)
- Monday livestreams (URL)
- Wednesday livestreams (URL)
- Lecture recordings (URL)
- Background Textbook: Discrete mathematics and its applications (Rosen), 2019 (URL)
- Help session rooms:Tuesdays 4–7pm: INF 1, INF 2, I... (Text and media area)
- Welcome poll (Questionnaire)
- Week 1 Admin slides (File)
- Week 1 FP slides: Functional programming intro (File)
- Tools setup (URL)
- Sample lab: Degrees converter (URL)
- Lab: Find (URL)
- FP Exercises: Structural recursion (URL)
- FP Exercises scaffold (ZIP): Structural recursion (URL)
- FP Exercises solution: Structural recursion (URL)
- FP Recording: Intro to Functional Programming (2024-09-09) (URL)
- Week 1 SE Slides: Git Basics (File)
- 2023 Git live-coding lecture transcript (URL)
- SE Recording : Software Engineering intro + Git basics (2024-09-11) (URL)
- Week 1 debrief: Scala, recursion exercises, and the Find lab (URL)
- SE Exercises: Git 1 (URL)
- SE Exercises solution: Git 1 (URL)
- Week 2 FP Slides: HOFs (File)
- Exercises: Higher-order functions (URL)
- Exercises scaffold (ZIP): Higher-order functions (URL)
- Exercises solution: Higher-order functions (URL)
- Lab: Boids (URL)
- FP recording - Higher-order functions (2024-09-18) (URL)
- Week 2 debrief: Schedule changes, the Boids lab, and equational reasoning (URL)
- Week 3 FP Slides (File)
- FP recording - Class hierarchies (2024-09-23) (URL)
- Week 3 SE slides: How to diagnose (almost) anything (File)
- SE recording - How to diagnose (almost) anything (2024-09-25) (URL)
- Week 3 debrief: calculator, find-hof callback, and debugging (URL)
- Exercises: Pattern Matching (URL)
- Exercises scaffold (ZIP): Pattern Matching (URL)
- Exercises solution: Pattern Matching (URL)
- Exercises: Debugging (URL)
- Exercises scaffold (ZIP): Debugging (URL)
- Exercises solution: Debugging (URL)
- Callback: Find, with a HOF (URL)
- Lab: Calculator (URL)
Tue, Oct 1 help session: INF 1 open only after 5pm. INF 2,3 open from 4pm as usual.
- Week 4 FP Slides (File)
- FP recording - polymorphism (URL)
- Week 4 SE Slides: Tests (File)
- SE recording - From tests to proofs 1 (URL)
- New-course feedback: September (Questionnaire)
- Exercises: Polymorphism (URL)
- Exercises scaffold (ZIP): Polymorphism (URL)
- Exercises solution: Polymorphism (URL)
- Exercises: Equational Reasoning (URL)
- Exercises scaffold (ZIP): Equational Reasoning (URL)
- Exercises solution: Equational Reasoning (URL)
- Exercises: Tests (URL)
- Exercises scaffold (ZIP): Tests (URL)
- Exercises solution: Tests (URL)
- Lab: Huffman Coding (URL)
No live lecture on Mon, Oct 7! Instead, recorded lecture videos:
- Videos' playlist : here
- Week 5 FP Slides (File)
- FP playlist - Collections and Comprehensions (2024-10-07) (URL)
- Week 5 SE Slides: Specs (File)
- SE recording - Specs (2024-10-09) (URL)
- Exercises: Variance (URL)
- Exercises scaffold (ZIP): Variance (URL)
- Exercises solution: Variance (URL)
- Exercises: Comprehensions (URL)
- Exercises scaffold (ZIP): Comprehensions (URL)
- Exercises solution: Comprehensions (URL)
- Exercises: Specs (URL)
- Exercises scaffold (ZIP): Specs (URL)
- Exercises solution: Specs (URL)
- Lab: Anagrams (URL)
- Week 6 FP Slides (as originally posted, with animations) (File)
- Week 6 FP Slides Revised (File)
- Week 6 Monday Lecture Code Examples (File)
- FP recording : Principles of Parallelism (2024-10-14) (URL)
- Week 6 Wednesday Slides (More Parallelism) (File)
- FP recording : Wednesday.par (2024-10-16) (URL)
- Exercises: Parallelism (URL)
- Exercises scaffold (ZIP): Parallelism (URL)
- Exercises solution: Parallelism (URL)
- Lab: Scalashop (URL)
- Unguided Callback Teams (Group choice)
HOLIDAY BREAK
- Week 7 FP Slides (File)
- FP recording : Laziness (2024-10-28) (URL)
- Week 7a Slides on Functional Data Structures (File)
- FP recording : Purely functional data structures (2024-10-30) (URL)
- Week 7a Functional Data Structures: Source Code (File)
- Exercises: Laziness (URL)
- Exercises scaffold (ZIP): Laziness (URL)
- Exercises solution: Laziness (URL)
- Unguided callback: Mandatory self-assessment (Questionnaire)
- New-course feedback: October (Questionnaire)
- Midterm Study Guide (URL)
- Midterm room floor plans (Folder)
- Midterm seat assignments (Page)
- Midterm instructions and appendix (File)
- Mock midterm (1 question) (File)
- Mock midterm solution (File)
- Week 8 SE slides: Signal processing with lazy lists (Monday) (File)
- SE recording - Signal processing with lazy lists (2024-11-04) (URL)
- Lab: Pathfinder (URL)
- Week 8 Monday lecture transcript and code: Signal processing with lazy list (URL)
- Week 9 Monday Slides: Webapps (File)
- SE recording - Webapps (2024-11-11) (URL)
- Week 9 Wednesday Slides: Le retour du Git (File)
- Exercises: Webapps (URL)
- Exercises solution: Webapps (URL)
- Exercises scaffold (ZIP): Webapps (URL)
- Exercises: Git 2 (URL)
- Exercise solutions: Git 2 (URL)
- Lab: Webapp (Rock-Paper-Scissors) (URL)
- Unguided lab instructions (URL)
- Unguided lab teams (Group choice)
- Midterm solutions (URL)
- Week 10 Slides, for Monday 2024-11-18 (File)
- FP recording - Mutation (2024-11-18) (URL)
- Exercises: Mutation (URL)
- Exercises scaffold (ZIP): Mutation (URL)
- Exercises solutions: Mutation (URL)
- Week 10 FP slides : Contextual abstraction I (File)
- FP recording - Contextual Abstraction 1 (2024-11-20) (URL)
- Exercises: Contextual Abstraction (URL)
- Exercises scaffold (ZIP): Contextual Abstraction (URL)
- Exercises solutions: Contextual Abstraction (URL)
- Webapp lecture transcript (memory) (URL)
- Examples of webapps (URL)
- Week 11 Slides for Monday 2024-11-25 (File)
- FP recording - Safe uses of imperative programming (2024-11-25) (URL)
- Week 11 SE slides: Distributed version control II, human aspects of software engineering (File)
- SE recording - Human aspects of software development (2024-11-27) (URL)
- Exercises: Safe Effects (URL)
- Exercises scaffold (ZIP): Safe Effects (URL)
- Exercises solution: Safe Effects (URL)
- Exercises: Git 3 (URL)
- Exercises solutions: Git 3 (URL)
- Week 12 FP Slides - Asynchronous programming with Futures (File)
- FP recording - Asynchronous programming with Futures (2024-12-02) (URL)
- Exercises: Futures (URL)
- Exercises scaffold (ZIP): Futures (URL)
- Exercises solution: Futures (URL)
- Week 12 SE Slides: Automated testing (File)
- SE recording - Automated testing (2024-12-04) (URL)
- Exercises: Property-based testing (URL)
- Exercise solutions: Property-based testing (URL)
- Exercises scaffold (ZIP): Property-based testing (URL)
- New-course feedback: November (Questionnaire)
- Register to bring your own your keyboard to the final (Questionnaire)
- Unguided lab checkoff registration (URL)
- Week 13 Monday Slides - Formal Verification (File)
- Week 13 Monday - Stainless Examples (File)
- Week 13 Exercises: Verifying Search (all in one Scala file) (File)
- Week 13 Exercises: Verifying Search Solution (Scala file) (File)
- FP recording - Formal Verification (2024-12-09) (URL)
- Week 13 Wednesday Slides - Contextual abstraction II (File)
16 December - 22 December
- Week 14 Monday slides - How to get a job in CS (File)
- Autograded Exercises with Stainless (submission: section below) (URL)
- Week 14 Wednesday slides - Monads (File)
- Exercises: Monads (URL)
- Exercises scaffold (ZIP): Monads (URL)
- Exercises solution: Monads (URL)
- Unguided lab: Mandatory self-assessment (Questionnaire)
- Unguided lab checkoffs schedule (URL)
- New-course feedback: December (Questionnaire)
- FP recording - Monads (2024-12-18) (URL)