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
- Syllabus
- Course policies
- Tools setup
- Staff
- Moodle
- Course forum
- Course video channel
- Help session rooms:
Labs
- Degrees
- Find
- Boids
- Calculator
- Huffman Coding
- Anagrams
- Scalashop
- Pathfinder
- Webapp (Rock-Paper-Scissors)
- Unguided lab: policies | write-up | examples
Callbacks
Exercises
- Structural Recursion
- Git I: Single-user version control
- Higher Order Functions
- Pattern Matching
- Debugging
- Polymorphism
- Proofs on lists and trees
- Tests
- Variance
- Comprehensions
- Specs
- Parallelism
- Laziness
- Webapps
- Git II: Distributed Version Control
- Mutation
- Contextual Abstraction
- Effects, memoization
- Git III: Collaboration
- Futures
- Property-based testing
- Autograded Exercises with Stainless
- Monads
Debriefs
- Week 1: Scala, recursion exercises, and
find
lab - Week 2: Schedule changes,
boids
lab, and equational reasoning - Week 3:
calculator
,find-hof
callback, and debugging - Week 4:
huffman
tips, dealing with stack overflows, and extra proofs - Week 5:
anagrams
tips, unit tests versus integration tests, and VSCode scrollback buffers - Week 6: Fall break!
- Weeks 7 & 8: parallelism, laziness
- Week 9: midterm and callback scores, unguided lab
- Week 10: tips for the unguided lab
- Week 11: November poll, final exam
- Week 12: Futures
- Week 13: Webapps over!