Software Construction

Section 1: Introduction and Behavioral Modeling

  • Introduction to software development processes
    • Waterfall model
    • Iterative (or incremental) model
    • Agile model
  • Requirements modeling
    • Domain analysis
    • UML Use case models
  • Behavioral modeling
  • UML activity diagrams (very useful to model concurrent behavior)
  • UML state machines (model the behavior of a single object)
  • Petri nets
  • Specification and Description Language (SDL)

Section 2: Compilers, formal languages and grammars

  • Lexical analysis (convert a sequence of characters into a sequence of tokens)
    • Formal languages
    • Regular expressions (method to describe strings)
    • Deterministic and Non-deterministic Finite Automata
  • Syntax analysis
    • Context-free grammar (describes the syntax of a programming language)
    • Syntax trees
    • Parsers

Section 3: Concurrency

  • Logical and physical concurrency
  • Mutual exclusion for access to shared resources
  • Concurrency and Java programing
  • Inter-process communication
  • Process scheduling