CS-214
Software Construction
Welcome to CS-214 — Software Construction!
In this course you will learn how to design and implement reliable, maintainable, and efficient software using a mix of programming skills and fundamental software construction concepts.
Useful links
Labs
- Degrees
- Find
- Boids
- Calculator
- Huffman coding
- Anagrams
- Scalashop
- Streams
- Webapps
- Text CRDT
- Degrees' (Final exam dry run)
Lab callbacks
- Find, with a higher-order function
- Find, with a custom test
- Boids, with parallelism
- Find, with lazy lists
Exercises
- Recursion
- Higher-order functions
- Pattern Matching
- Polymorphism
- Variance, comprehensions
- Additional exercises on variance
- Parallelism
- Software engineering weeks 1-6
- Laziness
- Tail recursion, Hoare logic
- Git I and II
- Effects, git, memoization and more
- Structural induction
- Contextual abstraction
- Introduction to monads
- Monads application: Interpreters
- Futures
- Computer Checked Proofs on Lists
Debriefs
- Scala syntax, recursion, Find
- Higher-order functions, Boids lab
- Pattern matching, Calculator lab
- Polymorphism, Huffman-coding lab
- Calculator lab solution
- Comprehensions, Anagrams lab
- Variance, Parallelism, Scalashop lab
- SE exercises, Midterm solutions
- Laziness, structural induction
- Tail recursion, Hoare logic
- More state, find-lazy solution
- Contextual abstraction, human aspects of software construction, webapps
- Monads, webapps lab
- Futures, job search, final logistics
Exams
2023 final
- Game of Life
- Proof of
InOrderTraversalMirror
- Counting paths
- Music streaming service
- Lazy evaluation interpreter
- Codebreaking puzzles