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. 


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
    • 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
  4. 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
  5. Understand the issues associated with concurrent programs