--- title: CSCI 2600 Principles of Software --- ## Recitations The following are recitations I have prepared for a weekly one hour session: [Recitation 1](recitation01.pdf) - Topics: Introduction, Eclipse Setup [Recitation 2](recitation02.pdf) - Topics: Variable Models, Stack/Heap, Inheritence, Interfaces, Abstract Classes, Mutability, Strong/Weak Typing, Static/Dynamic Typing [Recitation 3](recitation03.pdf) - Topics: Compilation/Interpretation, Subtype Polymorphism, Static/Dynamic Binding, Overloading/Overriding, Forward/Backward Reasoning [Recitation 4](recitation04.pdf) - Topics: Reasoning through Loops, Loop Invariants, Correctness, Termination, Induction [Recitation 5](recitation05.pdf) - Topics: JavaDoc, Specification Strength, Type Variances, ADTs [Recitation 6](recitation06.pdf) - Topics: ADT Methods, Immutability, Representation Invariant/Exposure, Defensive Programming, Assertions, Exceptions [Recitation 7: Exam Review](recitation07) [Recitation 8](recitation08.pdf) - Topics: Bugs, Unit/Integration/Acceptance Testing, White/Black Box Testing, Equivalence Partitioning, Boundary Value Analysis, Reference/Value Equality, Equality Relations, Hash Functions [Recitation 9](recitation09.pdf) - Topics: Overloading/Overriding, Dispatching, Polymorphism, SOLID, Subclassing, True Subtypes, Liskov Substitution Principle [Recitation 10](recitation10.pdf) - Topics: Design Patterns, Creational Patterns, Structural Patterns, Behavioral Patterns, Builder, Factory, Singleton, Adapter, Decorator, Flyweight, Mediator, Observer, Visitor [Recitation 11: Exam Review](recitation11) Recitation 12: Exam Review [Recitation 13](recitation13.pdf) - Topics: Technical Debt, Antipatterns, Code Smells, Refactoring, Extract Method, Move Method, Replace Temp with Query, State Design Pattern, Usability, Fitt's Law, Prototyping, User Testing