(under development) Week 1: Object-oriented design patterns for SAT or MAX-SAT solvers: Strategy, Decorator, etc. Illustration in the SAT4J open source project http://www.sat4j.org/ Introduction to Constraint Satisfaction. Week 2: Introduction to aspects. Separation of concerns in the context of a SAT or MAX-SAT solver. Transition systems as a tool to separate concerns: Each transition step belongs to one concern and there are several kinds of transition steps: Decide, Unit Propagate, Learn, etc. Then there is a sequencing concern that schedules the transition steps. Week 3: How to make decisions and how to learn from wrong ones. Techniques to implement the decision concern and the learning concern. CSG 270: Methods of Software Development will be taught this Spring by letting our subject of investigation: Methods of Software Development improve itself. This circular application of the topic will create numerous learning opportunities where you learn to work with multiple levels of abstraction. To practice Methods of Software Development we need an interesting application domain that is carefully chosen to ultimately support software development methods. Our application domain is the field of SAT (Satisfiability) solvers, an interesting field of study in its own right because of its wide-ranging applications from hardware design to planning, biology to network design. http://www.satlive.org/. We will learn enough about this field so that we can use interesting Methods of Software Development to develop a SAT solver. We will then study how a SAT solver (our own or an external one) can be used to help with the software development process to develop better SAT solvers. We will study tools like Alloy and Kodkod to analyze software specifications. This brings us to the world of software specification languages. We will notice the limitations of current SAT solvers to help on software development tasks which in turn will call for better SAT solvers developed using better software development methods and better algorithms.