CSE 211 Software Construction (3 Credits)
Catalog description:
General principles and techniques for disciplined detailed software design. Basic theory of grammars and parsing. State-transition and table-based design. Formal specification languages and program derivation. Techniques for handling concurrency and inter-process communication. Tools for model-driven construction.
Prerequisite:
CSE 201, CSE 274 and MTH 231
Required topics (approximate weeks allocated):
- Basics of formal languages, syntax and semantics (1.0)
- Grammars & parsers (1.0)
- Modeling (3.0)
- FSM
- UML
- state charts
- Pre- and post-conditions (2.0)
- Program derivation (2.0)
- Using API Contract programming, e.g. Spec# (3.0)
- Concurrency (1.0)
- Inter-process communication (1.0)
- Analyzing concurrent designs (1.0)
- Tests and final exam (1.0)
Learning Outcomes
- Identify and use BNF notations
- Understand the basic theory of grammars and parsers
- Use formal methodologies during software development
- The student can apply a wide variety of software construction techniques such as model-driven construction
- The student can use tools that support the construction of software
- The student can apply state-based and table-driven approaches to low-level design of software
- Create simple formal specifications of low-level software modules
- The student will create pre and post conditions in additional to ensure clauses for low-level software modules
- The student can check the validity of these specifications
- The student can generate code from the specifications using program derivation methods or appropriate tools
- The student can generate ensure clauses when using Middleware
- Understand the issues associated with concurrent programs