Detailed Course Description
SEG-2106 "Software Construction"
Winter 2016
Below you find for each chapter of the course the following information:
- Learning objecties: These are the leaning objectives already presented in the syllabus.
- Reading material: This includes the course notes (written by the professor) as well as other texts that cover the course content.
- Supplementary Material: this represent additional reading material that is not mandatory. Some of this material may be useful for a better understanding of the course content, while others go beyond the course content and are intended for the curious reader. The same holds for the "Complementary readings" that are indicated at the end of certain subsections of the course notes. Note: The "Supplementary Material" includes some course notes from 2010 and course notes prepared by Dr. Zhao in 2007.
- You may also consult the Powerpoint slides prepared by Hussein Al Osman in 2014.
Curiosity notes: Here are comments about historical developments, some famous researchers and specific applications. This will not be part of the exam questions, but it belong to the general culture of computer science and software engineering.
CASE Tools: The following tools will be used during the lab sessions and for the assignments:
- LTSA : a simple tool for building system models containing several state machines communicating by rendezvous, and for verifying the correctness of such models.
- UML tools : There are many tools for UML modeling
- LEX (or Flex): a tool for generating lexical analysers based on the language definition in the form of a regular expression. Note: Tools for generating syntax analysers from a given language grammar will be discussed, but not used in practice.
- Java : a programming language that has nice features for writing programs with concurrency.
Section 1: Requirement engineering: structural and behavioral modeling using state machines
Note: The learning objectives below are preceeded by references to the "graduate attribute criteria" to which they belong. These graduate attributes are explained in Section 3.1 of the CEAB Accreditation Criteria and Procedures. In addition, at the end of each objective, there is an indication of the labs and assignments which are intended to help you attain the objective.
1. Introduction to requirements modeling
- Leaning objectives
- Reading material
- Supplementary Material
- Prerequisite: UML Class diagrams were covered in the course SEG-2105; the concepts and notations are also discussed in [Booch] chapters 4 - 8.
- Course notes from 2013
- [Braek] chapters 1 and 2
- The topics of this and the next chapter will be futher elaborated in the course SEG-3101 on Software Requirements Analysis
- Wikipedia: Domain model, Conceptual model, UML Composite Structure diagram
2. Behavioral modeling
- Learning objectives
- (1-Knowledge) To understand modeling concepts of UML State Machines and Activity Diagrams, including hierarchical states and (independent) concurrency, real-time modeling with timers
- (2-Analysis; 4-Design; 5-Tools) To construct a state machine that models the behavior of a system satisfying given requirements (Lab-2; Lab-3; Assignment 1)
- Reading material
- Course notes
- [Booch] chapters 21 - 25 (on state machines, see printed course notes) and chapter 11 (on interfaces)
- Example: Coffee Machine
- Example: Door
- Example: Hotel (used in Lab-2)
- Supplementary Material
3. Communicating state machines
- Learning objectives
- (1-Knowledge) To understand modeling concepts interleaving concurrency, reachability analysis, state machines communicating by rendezvous or by message passing, non-deterministic system behavior
- (2-Analysis; 4-Design; 5-Tools) To design systems with communicating state machines, analysing the behavior of such systems, possibly using tools (Lab-2; Lab-4)
- Reading material
- Supplementary Material
Section 2: Languages, grammars and analysers
1. Introduction to languages and compilers
- Learning objectives
- (1-Knowledge) To understand the basic concepts of language definition and the purpose of lexical analysis, syntax analysis and semantic analysis of sentences or programs.
- Reading material
- Supplementary Material
2. Lexical analysis
(formal languages, regular expressions and accepting automata)
- Learning objectives
- (1-Knowledge) To understand the concepts of formal languages, language definition by regular expressions or "acceptor" state machines (so-called Finite State Automata), non-deterministic state machines and equivalent deterministic ones, systematic implementation methods of lexical analysers (Lab-5).
- (4-Design) To find a regular expression, or a Finite State Automaton, that defines a language that satisfies certain given requirements. (Lab-5; Assignment 2)
- (2-Analysis; 5-Tools) To demonstrate the derivation of a deterministic automaton that defines the same language as a given regular expression. (Lab-6; Assignment 2)
- (2-Analysis; 4-Design; 5-Tools) To build a lexical analyser for a language defined by a given regular expression, by direct programming or using an automated tool. (Lab-5; Assignment 2, Assignment 3)
- Reading material
- Course notes
- [Louden] chapter 2 (on "Scanning", see printed course notes)
- Supplementary Material
- Pattern matching in Java: The Pattern class
3. Syntax analysis
- Learning objectives
- (1-Knowledge) To understand the concepts syntax tree, language definition by a context-free grammar, (deterministic) top-down syntax analysis, LL(1) conditions, methods for constructing syntax analysers, and semantic attributes.
- (4-Design) To find a grammar that defines a language that satisfies certain given requirements. (Lab-6; Lab-7, Assignment 3)
- (2-Analysis) For a given grammar, identify ambiguity, generated sentences and syntax trees (Lab-6)
- (2-Analysis; 5-Tools) To check whether a given grammar allows for LL(1) syntax analysis; if not, derive an equivalent grammar that does. (Lab-7, Assignment 3)
- (2-Analysis; 4-Design; 5-Tools) To build an LL(1) syntax analyser for a language that satisfies certain given requirements; use semantic attributes for realizing certain semantic properties (Assignment 3)
- Reading material
- Course notes
- [Parson] chapter 3 (on "Syntactic Analysis I", see printed course notes)
- Supplementary Material
Section 3: Concurrency, implementation design and performance issues
1. Concurrency
- Learning objectives
- (1-Knowledge) To understand concepts of concurrency, such as logical and physical concurrency, process scheduling, mutual exclusion for access to shared resources and communication between concurrent processes;
- (1-Knowledge) To understand how concurrency is supported by the Java programming language.
- (2-Analysis; 5-Tools; 4-Design) To design, verify and implement applications with concurrency to solve real problems. (Lab-9)
- Reading material
- Course notes
- [Sebesta] chapter 12 (see printed course notes) Please read Sebesta 12.1 (Introduction), 12.2
(Introduction to subprogram-level concurrency), 12.3 (Semaphores), 12.4
(Monitors), and 12.7 (Java threads).
- Supplementary Material
Implementation design and performance issues
- Learning objectives
- (1-Knowledge) To understand the non-functional issues involved in implementation design, as well as certain design patterns to address these issues.
- (2-Analysis; 3-Investigation; 4-Design) Identify performance issues in a given system implementation; suggest alternative designs to solve these issues. (Lab-11)
- (2-Analysis; 5-Tools; 4-Design) Study the performance properties of a projected system design through simulations. (Lab-10; Assignment 4)
- Reading material
- Supplementary Material
Last update: June 22, 2015