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

1. Identify and use BNF notations

2. Understand the basic theory of grammars and parsers

3. Use formal methodologies during software development

3.1: The student can apply a wide variety of software construction techniques such as model-driven construction

3.2: The student can use tools that support the construction of software

3.3: The student can apply state-based and table-driven approaches to low-level design of software

4. Create simple formal specifications of low-level software modules

4.1: The student will create pre and post conditions in additional to ensure clauses for low-level software modules

4.2: The student can check the validity of these specifications

4.3: The student can generate code from the specifications using program derivation methods or appropriate tools

4.4: The student can generate ensure clauses when using Middleware

5. Understand the issues associated with concurrent programs