Indiana _University - Purdue_University  Fort  Wayne Home Home  
School of Engineering, Technology and Computer Science
Indiana University - Purdue University Fort Wayne
Australia Canada Ecuador Germany Ireland New_Zealand Slovakia Spain Sweden United_Kingdon United_States
Students :: Prospective Students :: Alumni :: Visitors :: Friends :: Faculty/Staff :: Home :: ISEAP :: ISEUC::

Home

Background

Proposed Curriculum

Benefits

Administration

Collaboration Proposal
Photos
Course Catalog
Calendar
Tuition
Lessons Learned
Download

 

ISEUC Course Catalog

 

COURSE CATALOG
PROSPECTIVE MEMBERS
THE INTERNATIONAL SOFTWARE ENGINEERING UNIVERSITY CONSORTIUM
ISEUC: "I SEE, YOU SEE"

UNIVERSITY CODE
Butler University [Undergraduate + Graduate] BUT
California Polytechnic University at San Luis Obispo CALPOLY
[Undergraduate + Graduate]
Carnegie-Mellon University [Graduate] CMU
Embry-Riddle Aeronautical University [Graduate] ERAU
Indiana University-Purdue University at Indianapolis IUPUI
[Undergraduate + Graduate]
Mercer University MER
[Graduate]
Monmouth University [Undergraduate+Graduate] MON
Murdoch University [Undergraduate] MUR
Purdue University PUR
[Undergraduate + Graduate]
Rochester Institute of Technology [Undergraduate] RIT
Stevens Institute of Technology [Graduate] SIT
Texas Tech University [Graduate] TTU
University of Michigan-Dearborn UMD
[Undergraduate + Graduate]
University of Ottawa OTTAWA

VERSION 0.26
LOTS OF CRITIQUING REQUIRED!!!
PLEASE CORRECT: MISSING COURSES
+: CURRENTLY AVAILABLE VIA DISTANCE LEARNING
*: PLANNED TO BE AVAILABLE VIA DISTANCE LEARNING
-: NO PLANS TO PROVIDE VIA DISTANCE LEARNING
MARCH 5, 2001
KEN MODESITT
UNIVERSITY OF MICHIGAN-DEARBORN
DISTRIBUTION OF COURSES BY LEVEL
NEED
UNIVERSITY UNDERGRAD GRAD TOTAL DETAIL
BUTLER 1 1 1
CALPOLY 5 2 7 3
CMU 12 12
ERAU 10 10 10
IUPUI
MER 18 18
MON 15 20 30 15
MUR 11 11 29
PURDUE 2 1 3
RIT 12 2 14
SIT 11 11
TTU 9 9
UMD 3 16 19
OTTAWA 14(Eng)+14(Fr) 8(Eng)+4(Fr)
TOTAL 63(Eng)+14(Fr) 109 (Eng)+4(Fr) 172(Eng)+18(Fr)


Butler University [Undergraduate] (BUTLER)
[www.butler.edu/csse]
CS XXX: Software Maintenance, taught by Panagiotis (Panos) K. Linos
California Polytechnic University at San Luis Obispo [Undergraduate] (CALPOLY]
[www.csc.calpoly.edu]
CSC 205 Software Engineering I (4) (Also listed as CPE 205)
Introduction to the software lifecycle. Methods and tools for the analysis, design, and specification of large, complex software systems. Project documentation, organization and control, communication, and time and cost estimates. Group laboratory project. Graphical User Interface Design. Technical presentation methods and practice. Software design case studies and practices. Ethical and societal issues in software engineering. Miscellaneous course fee may be required- see Class Schedule. 3 lectures, 1 laboratory. Prerequisite: CSC 103.
CSC 206 Software Engineering II (4) (Also listed as CPE 206)
Continuation of the software lifecycle. Methods and tools for the implementation, integration, testing and maintenance of large, complex software systems. Program development and test environments. Group laboratory project. Technical presentation methods and practice. Ethical and societal issues in software engineering. 3 lectures, 1 laboratory. Prerequisite: CSC 205.
CSC 402 Software Requirements Engineering
In approval process
CSC 405 Software Design and Construction
In approval process
CSC 406 Software Deployment
In approval process
CSC 508 Software Engineering I (4)
In-depth study of requirements engineering, software project management, formal specifications and object-oriented analysis. 4 seminars. Prerequisite: CSC 205 and graduate standing, or consent of instructor.
CSC 509 Software Engineering II (4)
In-depth study of software modeling and design. Formal design methodologies. Design patterns. Detailed case studies of existing projects. Tools and methods for designing large software systems. 4 seminars. Prerequisite: CSC 508 and graduate standing, or consent of instructor.
Carnegie-Mellon University (CMU)
[www.distance.cmu.edu]
The Distance Education Program does not supply textbooks as part of the course support. Textbooks required for Software Engineering courses may be purchase from your favorite bookseller.
651. +Models of Software Systems
Scientific foundations for software engineering depend on the use of precise, abstract models for characterizing and reasoning about properties of software systems. This course considers many of the standard models for representing sequential and concurrent systems, such as state machines, algebras, and traces. It shows how different logics can be used to specify properties of software systems, such as functional correctness, deadlock freedom, and internal consistency. Concepts such as composition mechanisms, abstraction relations, invariants, non-determinism, inductive definitions and denotational descriptions are recurrent themes throughout the course.
This course provides the formal foundations for the other core courses. Notations are not emphasized, although some are introduced for concreteness. Examples are drawn from software applications.
After completing this course, students will:
• understand the strengths and weaknesses of certain models and logics including state machines, algebraic and process models, and temporal logic
• be able to select and describe appropriate abstract formal models for certain classes of systems, describe abstraction relations between different levels of description, and
• reason about the correctness of refinements
• be able to prove elementary properties about systems described by the models introduced in the course
Prerequisite: Undergraduate discrete math including first-order logic, sets, functions, relations, proof techniques (such as induction).
If possible, Methods of Software Development should be taken concurrently.
[ASYN]
651. +Methods of Software Development
Practical development of software requires an understanding of successful methods for bridging the gap between a problem to be solved and a working software system. This course focuses specifically on methods that guide the software engineer from requirements to code. The course will provide students with both a broad understanding of the space of current methods, and specific skills in using these methods.
After completing this course, students will:
• be able to use at least two software engineering methods effectively and make a critical assessment of the strengths and weaknesses of a broad range of methods
• understand the dimensions along which methods differ
• understand the tradeoffs in making choices along those dimensions.
Prerequisite: Experience with at least one large software system, either through industrial software development experience or an undergraduate course in software engineering, compilers, operating systems, or the like.
If possible, this course should be taken either concurrently or after Models of Software Systems and Management of Software Development.
[ASYN]
651.
652. +Managing Software Development
Large scale software development requires the ability to manage resources - both human and computational - through control of the development process. This course provides the knowledge and skills necessary to lead a project team, understand the relationship of software development to overall product engineering, estimate time and costs, and understand the software process. Topics include life cycle models, requirements elicitation, configuration control, environments, and quality assurance, all of which are used broadly in other core courses and the Studio.
After completing this course, students will:
• be able to write a software project management plan, addressing issues of risk analysis, schedule, costs, team organization, resources, and technical approach
• be able to define the key process areas of the Capability Maturity Model and the technology and practices associated with each and a variety of software development life cycle models and explain the strengths, weaknesses, and applicability of each
• understand the relationship between software products and overall products (if embedded), or the role of the product in the organizational product line
• understand the legal issues involved in liability, warranty, patentability, and copyright
• understand the purpose and limitations of software development standards and be able to apply sensible tailoring where needed
• be able to use software development standards for documentation and implementation
• be able to apply leadership principles
• be able to perform requirements elicitation
Prerequisite: Students must have had industrial software engineering experience with a large project, or a comprehensive undergraduate course in software engineering.
[ASYN]
671. Software Development Studio I
A Sample of Past Studio Projects
The Studio provides students with a laboratory for direct application of concepts learned in coursework. It has produced a variety of software products. Clients have included Boeing, NASA, Westinghouse, Innovative Systems, Inc. and the United States Air Force. Here is a sample of the Studio projects.
Medusa
A software engineering team at Boeing Defense and Space Group was working on a distributed operating system for a new helicopter. Most of the engineers still used VT100-class terminals. They needed a way to seamlessly boot up and synchronize multiple target processors in order to perform system testing. The Studio team implemented a form of windowing for the terminals that ran transparently under VMS, including using VMS Help and other operating system facilities.
Architectural Visualization Projects
Two different systems were implemented to assist architects and their contractors to have different "views" of buildings in a coordinated way. Usually plumbers, HVAC engineers, electricians, and architects have to reconcile their different needs in building construction by manual and awkward means. The systems implemented by the Studio teams assisted in automating and intelligently reconciling cable runs, piping, HVAC, etc.
Computer Assisted Instruction (CAI)
A Studio team re-engineered a CAI system that teaches logic. The old system was assembled from various sources and its interfaces had become unmaintainable. The Studio team re-implemented the underlying knowledge base and part of the user interface.
Tessellator
Before the Space Shuttle flies, its thermal protection system has to be waterproofed by injecting a toxic chemical into each of the thousands of individual tiles. A perfect job for a robot. Two Studio teams implemented the software to move and position the robot, move and position its arm, and do planning of its work.
APEX
This project is a robot to explore the moon and Mars. It has some requirements for autonomous operation. The Studio worked on navigation software and the system specification. It also re-engineered part of the existing "standard" robot message passing system, Task Control Architecture.
TCAMS
The Tape Copy and Management System (TCAMS) is one of the most successful Studio projects in terms of producing high quality code by following a defined process. TCAMS is 7,000 lines of C that controls a robotic tape mounting system and associated computers for the Air Force's B-2 test program. The
product had a total of three defects detected in unit and itegration test combined [0.44 defects/KLOC]. Tour more defects were found by the client in acceptance test, none major. After six months of operations, no additional defects were found.
654. +Analysis of Software Artifacts
Our ability to build, maintain, and reuse software systems relies on our ability to analyze effectively the products of software development. This course will address all kinds of software artifacts - specifications, designs, code, etc. - and will cover both traditional analyses, such as verification and testing, and promising new approaches, such as model checking, abstract execution and new type systems. The focus will be the analysis of function (for finding errors in artifacts and to support maintenance and reverse engineering), but the course will also address other kinds of analysis (such as performance and security).
Various kinds of abstraction (such as program slicing) that can be applied to artifacts to obtain simpler views for analysis will play a pivotal role. Concern for realistic and economical application of analysis will also be evident in a bias towards analyses that can be applied incrementally. The course emphasizes the fundamental similarities between analyses (in their mechanism and power) to teach the students the limitations and scope of the analyses, rather than the distinctions that arose historically (static vs. dynamic, code vs. spec). The course will balance theoretical discussions with lab exercises in which students will apply the ideas they are learning to real artifacts.
After completing this course, students will:
• know what kinds of analyses are available and how to use them
• understand their scope and power, when they can be applied and what conclusions can be drawn from their results
• have a grasp of fundamental notions sufficient to evaluate new kinds of analysis when they are developed
• have some experience selecting analyses for a real piece of software, applying them and interpreting the results
Prerequisite: Models of Software Systems plus experience programming a large software system.
[ASYN]
654. +Architecture of Software Systems
Successful design of complex software systems requires the ability to describe, evaluate, and create systems at an architectural level of abstraction. This course introduces architectural design of complex software systems. The course considers commonly-used software system structures, techniques for designing and implementing these structures, models and formal notations for characterizing and reasoning about architectures, tools for generating specific instances of an architecture, and case studies of actual system architectures. It teaches the skills and background students need to evaluate the architectures of existing systems and to design new systems in principled ways using well-founded architectural paradigms.
After completing this course, students will be able to:
• describe an architecture accurately
• recognize major architectural styles in existing software systems
• generate architectural alternatives for a problem and choose among them
• construct a medium-sized software system that satisfies anarchitectural specification
• use existing definitions and development tools to expedite such tasks
• understand the formal definition of a number of architectures and be able to reason about the propertiesof those architectures
• use domain knowledge to specialize an architecture for a particular family of applications
Prerequisite: Experience with at least one large software system, either through industrial software development experience or an undergraduate course in software engineering, compilers, operating systems, or the like.
[ASYN]
672. Software Development Studio II
673. Software Development Studio III
615. +Software Process Definition
A software process definition is the cornerstone of implementing and improving a software process. Although this course is primarily intended for students in the Process Track of the Masters of Software Engineering, others interested in learning how to define a process are welcome and could benefit as well.
The objective of this course is to prepare students to define software processes. The approach to software process definition to be taught will be an incremental methodology that covers:
• guidelines for early success and building a sound foundation
• organizing the process definition as it develops
• approaches to avoid unnecessarily elaborate or formal using organizational goals and constraints in the development approach
• environmental context that the process resides within and builds upon it
Prerequisite
This course is intended for individuals who have industrial software engineering experience with a large project, or a comprehensive undergraduate course in software engineering.
Assignments & Assessment
The course provides a dynamic learning experience. As you move through the course, you will reflect on the material covered in lectures and readings, and apply theory learned to your assignments. Your progress in the course will be assessed using the following methods.
Twice during the course, you will participate in debates—as a member of a debate team for one debate and as a questioner for the other debate. Debate topics will be determined by the course instructor. Your participation in the debates will constitute 20% of the assessment.
Your participation in chatroom sessions and on-line discussions will constitute 10% of the assessment.
Requirements and specification documents for the course project will be developed by you and based on your job related activities. The course project will constitute 30% of the assessment.
The final examination will test your understanding of thecourse material and will constitute 40% of the assessment.
[ASYN]
619. +Introduction to Real-Time Software and Systems
In the typical industrial setting, traditional engineering professionals (mechanical, electrical, civil) are recruited as software developers and managers because of their domain expertise. This is especially true for embedded systems development. As a result, these professional often lack specific training in the software development domain. Many undergraduate computer scientists have never had specific training
in real-time systems development and asprofessionals, are now faced with the challenge of developing software or managing development efforts for real-time systems. This course was designed with these practicing developers and managers in mind.
This course is designed to provide a thorough background in the development of real-time systems. Traditional software development issues are presented. In addition, we explore how the added constraint of real-time processing affect the analysis, design, and development of real-time systems.
Topics include:
• the software development process
• requirements and requirements analysis for real-time systems
• real-time software architectures
• real-time software design
• language for real-time system development
• real-time systems timing issues
• hardware and operating systems for real-time applications
• real-time data storage
Prerequisites
Proficiency in at least one high-level programming language used to develop real-time software (e.g., C, C++, or Ada).
Proficiency in a software design notation.
Knowledge of operating system concepts taught in an undergraduate operating system course.
A student may acquire the prerequisite knowledge via an undergraduate course, on-the-job training, or an independent study.
Course Materials
Course materials include CD ROMS of lectures, a companion guide, and access to the course website with class bulletin board and chat room.
[ASYN]
635. +Software Measurement
This course will introduce students to applying software measurement—from need identification through analysis and feedback—into the process. Much of the course material used to demonstrate the concepts are based on how software measurement is used by managers and practitioners in industry today. The content of the course is taught within the framework of the software engineering process.
After completing this course, students will:
• have learned basic and advanced measurement concepts as applied to software engineering
• be prepared to apply measurement concepts and make decisions based on the data in a software engineering environment
• understand the relationship between software products and overall products (if embedded), or the role of the product in the organizational product line.
Prerequisite
Students must have industrial software engineering experience with a large project, or a comprehensiveundergraduate course in software engineering.
Assignments & Assessment
The course provides a dynamic learning experience. As you move through the course, you will reflect on the material covered in lectures and readings, and apply theory learned to your assignments. Your progress in the course will be assessed using the following methods.
You will be responsible for three major assignments. The purpose of the assignments is to give you practice in applying software measurement. The assignments will constitute 20% of the assessment.
For the final project, you will expand on the output of your assignments by developing a project that is representative of a complete instantiation using the measurement process framework for a measurement goal. The project will constitute 20% of the assessment.
Twice during the course, you will participate in debates—as a member of a debate team for one debate and as a questioner for the other debate. Debate topics will be determined by the course instructor. Your participation in the debates will constitute 20% of the assessment.
Your participation in chatroom sessions and on-line discussions will constitute 10% of the assessment.
The final examination will test your understanding of the course material and will constitute 30% of the assessment.
Course Materials
Course materials include 14 videotaped lectures, the Companion Guide, and access to the course Website and Forums (bulletin board and chatroom). The course has no required text.
[ASYN]
NON-CREDIT
+Personal Software Process
The purpose of this course is to introduce the highest-leverage metrics of the Personal Software Process (PSP), specifically the ones associated with improving time estimation and reducing defects. Students will watch eight lectures, solve seven programming problems, complete four reports, and read selected chapters from Watts Humphrey’s A Discipline for Software Engineering (Addison-Wesley, 1995). These exercises will help the students to immediately apply PSP principles to their daily work.
This course is intended for practicing software engineers and their managers. The measures introduced can serve as the basis for software development process improvement in the organization, as well as for helping individuals. Students who advance to a more comprehensive course in the PSP will be able to concentrate more completely on advanced metrics.
Prerequisite
Since this is a development oriented class and involves writing code, all the normal tools one may use to develop code in their language of choice are required. Course requirements are not solely grounded in theory.
Students will need access to a compiler for the programming language they have chosen to complete their course assignments. Additionally, students will need a spreadsheet program for data analysis, preferably Microsoft Excel.
Assignments & Assessment
You are expected to complete the assignments as outlined on the website, participate in class discussions, an receive an assessment of "pass" or better on each of the four reports.
Course Materials
Course materials include Just-In-Time-Lecture CDs, a companion guide, and access to the course web site with a class bulletin board and chatroom.
[ASYN]
+Documenting the Idea: A Communication Course for Software Engineers
Communication is an integral part of software engineering. To be successful, software engineers must communicate their ideas, document their work, and interact with a wide variety of people. This course will enable you to become more effective and efficient in your written and oral communication. You will lean how to plan and revise your work, give and get useful document reviews, and give presentations that impress audiences. In addition, you will mature as a professional through reflection, exposure to the reflections of other professionals, and practice in expressing ideas related to software engineering.
After completing this course, you will be able to:
• save time and minimize rework when you write
• write documents and presentations that get you the results you want
• make choices—from document format to word choice—that suit your audience and purpose
• review drafts and make suggestions that result in clear, effective documents
Assignment & Assessment
This course provides a unique opportunity to enhance your writing skills, particularly as they relate to software engineering. As you move through the course, you are expected to complete the assignments as outlined in the course companion guide, participate in class chatroom discussions, and receive an assessment of "pass" or better on each of the written papers. Upon satisfactory completion of the course, you will receive a continuing education certificate attesting to the 12 units earned.
Course Materials
Course materials include CD ROMS of lectures, a companion guide, and access to the course website with class bulletin board and chat room.
[ASYN]
Embry-Riddle Aeronautical University (ERAU)
[www.computing.db.erau.edu]
MSE 500 Software Engineering Concepts
MSE 530 Software Requirements Engineering
MSE 510 Software Project Management
MSE 610 Software Architecture and Design
MSE 555 Object-Oriented Software Construction
MSE 545 Specification and Design of Real-Time Systems
MSE 640 Concurrent and Distributed Systems
MSE 655 Performance Analysis of Real-Time Systems
MSE 585 Metrics and Statistical Methods of Software Engineering
MSE 660 Formal Methods for Concurrent and Real-Time Systems
Indiana University Purdue University-Indianapolis (IUPUI)
[klingon.cs.iupui.edu]
CS 450 Principles of Software Engineering
(3 cr.) P: CSCI 355 and CSCI 362. Tools and techniques used in software development. Life-cycle concepts applied to program specification, development and maintenance. Topics include: overall design principles in software development; the use of structured programming techniques in writing large programs; formal methods of program verification; techniques and software tools for program testing, maintenance and documentation.
[ASYN]
+CS 452 Object-Oriented Analysis and Design
(3 cr.) P: CSCI 355 and CSCI 362. Introduction to the object-oriented paradigm in software development. Basic concepts: objects, classes, messaging, inheritance, methodologies. Analysis: defining objects, structures, attributes, services. Design: transforming the analytic model into the design model. Implementation: comparison of the support features provided by languages such as Smalltalk, C++, Eiffel, and CLOS. A significant design project.
[ASYN]
CS 506 Management of Software Development Process
[ASYN]
CS 507 Object-oriented Design and Programming
[ASYN]
* CS 5XX Interactive System Design
[ASYN]
Mercer University (MER)
[http://www.mercer.edu/engineering/GRAD_PROGRAMS/grad.htm]
"+" = already available in DL (none)
"*" = available in DL in 2001 – 02
"-" = not feasible for or planned for DL at this time
(no prefix) = planned for DL, but not in 2001 - 02
SSE 552. Object Oriented Design I (3-0-3)
Prerequisite: SSE graduate standing or permission of the program director.
An in depth treatment of software development with a modern language such as C++. UML is used to document designs. This course may cover both object-oriented and procedural software development. Introduction to a modern system modeling language such as Unified Modeling Language (UML).
[ASYN]
*SSE 556. Java Design I (3 0 3)
Prerequisite: SSE graduate standing or permission of the program director.
The use of a modern object-oriented programming (OOP) language (Java) to develop software including applications and applets, object oriented programming, basic data types and control structures, methods, interfaces to HTML, graphic displays, and simple graphic user interfaces. Introduction to software testing. Introduction to a modern system modeling language such as Unified Modeling Language (UML). May include topics such as simple exception handling and file I/O.
[ASYN] {T1}
SSE 572. Disciplined Software Development (3-0-3)
Prerequisite: SSE 552 or SSE 556
Individual software development practices for estimating, measuring, and controlling process schedule and product quality. May include the Personal Software Process (PSP).
[ASYN]
SSE 581. Structures, Algorithms and Timing (3 0 3)
Prerequisite: SSE 556
Object oriented data structures and algorithms for processing them. Timing considerations and timing specification in UML. May include programming with relevant APIs.
[ASYN]
SPECIAL COURSES: 591, 592, 593 for variable credit. May be repeated for credit with permission of the advisor.
* SSE 591. Software Engineering (3 0 3)
Software engineering overview, including software processes and software project management. Software requirements, requirements engineering processes, system models, prototyping, and formal specification. Software design, distributed systems architectures, object-oriented design, real-time software design, reuse and user interface design. Critical systems, dependability, specification, and development. Verification and validation, software testing, and critical systems validation. Software management, cost estimation, quality management, and process improvment. Software evolution, change, re-engineering, and configuration management.
[ASYN] {T3}
591, 592, 593 Special Topics 1-6
SSE 633. Advanced Computational Techniques I (3-0-3)
Prerequisite: SSE 652 or SSE 656
Topics covered may include genetic algorithms, artificial intelligence, neural networks, fractals and applications of chaos theory.
[ASYN]
SSE 634. Advanced Computational Techniques II (3-0-3)
Prerequisite: SSE 633
A continuation of SSE 631. Additional topics are covered, and topic areas may be synthesized, for example by combining genetic algorithms with neural networks.
[ASYN]
- SSE 641. Computer Graphics I (3-0-3)
Prerequisite: SSE 552 or permission of the professor
Introduction to graphics systems; basic raster graphics algorithms for 2D primitives; geometrical transformations, viewing transformations, windowing, clipping and shielding for 2D graphics.
[SYN] (not DL)
- SSE 642. Computer Graphics II (3-0-3)
Prerequisite SSE 641
Geometrical and viewing transformations for 3D graphics; representation of 3D curves and surfaces; solid modeling; color; illumination, and shading in the rendering pipeline.
[SYN] (not DL)
SSE 652. Object Oriented Design II (3-0-3)
Prerequisite: SSE 552
A continuation of SSE 552. This course may cover both object-oriented and procedural software development. Use of peer reviews such as software inspections. Extended use of UML. Topics may include the Standard Templete Library, C legacy code, string stream processing, and bit manipulation. Introduction to design patterns using C++.
[ASYN]
* SSE 656. Java Design II (3-0-3)
Prerequisite: SSE 556.
A continuation of SSE 556, with greater breadth and depth. Additional Java APIs are introduced. Use of peer reviews such as software inspections. Extended use of UML. Topics may include advanced graphic user interfaces, network programming, and Java Beans. . Introduction to design patterns using Java.
[ASYN] {T2}
* SSE 657. Object Oriented Methods (3-0-3)
Prerequisite: SSE 652 or SSE 656
Covers the software development life cycle. General object oriented analysis techniques (OOA) for software and system specifications are presented and applied to develop application domain models and requirements specifications. Techniques for transforming the requirements specifications into designs are presented and applied to develop language independent object oriented designs (OOD). A modern specification language such as UML will be used. Generation and selection of test cases.
[ASYN] {T1}
* SSE 658. Design Patterns (3-0-3)
Prerequisite: SSE 652 or SSE 656
Advanced topics in object oriented design (OOD), emphasizing the reuse of successful designs via design patterns.
[ASYN] {T2}
SSE 673. Software Processes (3-0-3)
Prerequisite: SSE graduate standing or permission of the program director.
This course explores the nature of the software development process and means for controlling the process so as to improve the product and control development costs and risks. Issues including development organization, project planning, configuration management, quality assurance, standards, validation and verification, and process monitoring and process improvement are presented and explored. Techniques for improving the level of maturity of the software development process are considered. Standards such as ISO or CMM may be used
[ASYN]
SSE 674 Software Risk Management (3-0-3)
Prerequisite: Permission of the program director.
Risk is inherent in virtually every software engineering project. Two kinds of risk are opportunity risk, which is the loss from avoiding risk, and failure risk, which is the loss from taking a risk, but failing to achieve the corresponding goal. The loss may be financial, or it may be competitiveness in a market, or the development and acquisition of reusable software components, or many other valuable things. This course covers topics such as people, process, infrastructure, and implementation in software risk management.
[ASYN]
- SSE 681 Real Time Embedded Software (3 0 3)
Prerequisites: SSE 581 and SSE 656.
Topics may include object-oriented design techniques for real-time systems, use of a specification language such as UML for real-time systems, and implementation in an embedded systems language such as Embedded Java or Real Time Java, and JINI technology.
[SYN] (not DL)
SPECIAL COURSES: 691, 692, 693, 698, 699 for variable credit. May be repeated for credit with permission of the advisor.
691, 692, 693. Special Topics 1-6
* SSE SSE 691 Refactoring
Prerequisite: Permission of the program director.
Software maintenance and the improvement of the design of existing code.
[ASYN] {T3}
SSE 698. Professional Seminar 1-6
(TBD) SSE 699. Thesis Research 1-6
A maximum of 6 hours of research may be counted toward the degree. Only grades of satisfactory or unsatisfactory will be assigned.
[TBD]
Monmouth University (MON)
[www.monmouth.edu/~seed]
SE 104 Introduction to Software Engineering (with PSP)
SE 205 Requirements Engineering and Specifications
SE 207 Software Design and Architectures
SE 312 Software Construction and Components
SE 418 Software Project Management
SE 485 Practicum
SE 306 Formal Methods
SE 403 Software Process Improvement
SE 402 Human-computer Interaction
SE 425 Software Experimentation and Measurement
SE 223 Product-line Development
SE 221 Software Tools Development
SE 321 Real-time Systems Design
SE 421 Information Systems Design
SE 423 Telecommunication Systems Design
SE 500 The Process of Engineering Software
This course introduces the need for an engineering approach to software, through a motivational discussion of the so called "software crisis," and a presentation of software development processes at the various degrees of granularity; this ranges from organizational processes to team and individual engineer's processes. Details of the SEI Capability Maturity Model and ISO 9000 certification standards are given and comparisons drawn as to how one influences the other. The course provides practical experiences with the Personal Software Process, and team-oriented development. A software process is defined as a set of guidelines, activities, and methods that engineers use to develop and maintain software. Without a software process, most projects are over budget and behind schedule, since successful efforts cannot be guaranteed. The success of a project depends greatly upon the experience and discipline of the engineers. Prerequisite: SE504 or equivalent.
SE 505 - Software Systems Design
The software design process and its activities. Design Fundamentals: Abstraction, Modularity, Information Hiding, Refinement, Software Architecture. Design Strategies: Function-Oriented design, Object-Oriented design, combination of both. Design application Domains: Real-time Systems, Information systems for the centralized and distributed environment, Graphical User Interfaces. Prerequisite: SE500 and SE 507.
SE 506 - Formal Methods in Software
Mathematical and logical foundations for formal methods in programming; notations and conventions for arrays; a formal programming language; proof rules for the statements of the language; the formal development of programs; formal methods in design and in design verification. Prerequisite: SE501 or equivalent.
SE 507 - Software Systems Requirements
Requirements analysis and specifications will be explored. Requirements definition and requirements specification documents. Types of requirements. The validation process of requirements specifications. Software prototyping as a technique for establishing system requirements. The use of formal methods for the specification of software systems. The interviewing process and feedback with the customer in order to formulate correct requirements. Prerequisite: SE500.
SE 512 - Software Testing and Quality
Explores techniques employed to ensure quality in a software product developed in a controlled and disciplined environment. Detailed examination of software testing principles and methodologies. Provides specific methods for test case selection and development leading to optimization of resource management in software testing environment. Prerequisite: SE507.
SE585A-SE585B The Software Engineering Practicum
This is a two-semester course sequence with major emphasis on hands-on, team-oriented large software development projects. Students will be asked to form groups of 3-5 persons, that will work as a software team whose purpose will be to develop a software product. The particular product will be chosen through negotiation with the instructor. Teams will operate in accordance with a well-defined set of policies and procedures (documented in a SE Handbook) that governs the entire development process. This documented process addresses work products, roles, activities, entry & exit criteria, reviews and audits, documented procedures, and training. The practicum will also include the use of a set of approved tools. Additional software project management topics such as planning, estimation and tracking will be covered. Project Management techniques and their application to the management of software projects. How to define a software development plan its associated tasks, milestones and deliverables. Software project scheduling and the establishment of relationships among the different tasks. Tasks dependencies and conflict resolution. Resources management and allocation. Software project cost estimation. Algorithmic models for estimating costs: the COCOMO model and its derivatives. Risk assessment and its impact in the planning and scheduling of software projects. Software project measurement and tracking. Comparative review of software tools for software project management. Software configuration management and its importance in the management of large software projects. The students will be asked to serve in team roles, hold oral reviews, and prepare documentation appropriate to their project. In addition, the students in the class will participate in the reviews of other teams in the class. At the end of the second semester, each team will give a formal presentation on the project. Prerequisites: All Core courses.
ELECTIVE COURSES
SE 508 - Software Implementation and Reuse
The purpose of this course is to explore contemporary topics in systematic software implementation and reuse. This includes the impact of Object-Based and Object-Oriented Design and Programming with Ada83, Ada95, and C++ along with Domain Engineering on the software development process. The course will concentrate on the practical aspects of applying architecture-centric, domain-specific, library-based reuse methodologies integrated with the software development process to create software systems in an efficient, cost-effective manner. The course will illustrate how object-oriented and domain engineering techniques coupled with domain-specific libraries can be used to effectively develop significant software systems in a short period of time, frequently realizing reuse on the order of 70% or more. Libraries of object-based reusable software components will be used to design and implement solutions to problems. Prerequisite: SE505.
SE 513 - Software Systems Security
Threats, vulnerabilities, and attacks to network-based systems. Heuristic procedures for breaking systems. UNIX and Internet case studies. Security modeling techniques including Bell-LaPadula, Biba, and Clark-Wilson. Composition of nondeducibility and noninterference security. Safeguard techniques including cryptographic protocols, on-line auditing and intrusion detection, access control, Internet firewalls, authentication, security kernel design, and trusted software development. Case studies in database security and secure network design. Prerequisite: SE507.
SE 526 - Networked Software Systems I
Network Computing Models, Concepts and Requirement Specification; Techniques for Interprocess Communication; Message Passing; Remote Procedure Calls; Directory Service; Synchronization; Task Partition and Allocation; Threads; Security and Authentication; Time Management. Prerequisite: SE507.
SE 527 - Networked Software Systems II
Distributed File Systems, Replication, Shared Data, Transactions, Distributed Operating Systems, Micro Kernels, Network Operating Systems, Computing Environments and Toolkits: ONC, DCE, ISIS, Languages. Prerequisite: SE526.
SE 531 - Software Organization Management
Management issues regarding the software process. Authority and delegation. Leadership and leadership paradigms. Software team management: organization, staffing and evaluation. Organizational alternatives. Centralized vs. decentralized organizations. Managing design, development and testing teams. Managing software support organizations. Strategies for staffing: minimal vs. redundant staffing. Combining generalists and specialists to achieve an optimal staff configuration. Staff development and growth. Fostering professional growth within the organization. Evaluation strategies and techniques. Compensation and reward issues. Prerequisite: SE504 or equivalent.
SE 532 - Software Quality Management
Management issues regarding the software process. This course is centered around the concept of management for quality in software processes. It covers the three fundamental elements in the management of software processes: policies, procedures and tools. It examines how software processes are defined, established, monitored and controlled in a continuous cycle of planning, doing, checking and acting to improve its quality and therefore the quality of the resulting product. The ISO 9001 and SEI's Capability Maturity Models (CMM) are discussed. Prerequisite: SE531.
SE 541 - Information Systems Architecture
Theoretical and practical issues related to the modeling and design of information systems to support medium to large organizations. The target architecture and its role in building enterprise-wide information systems. Operational, warehouse, departmental and individual level data. Data modeling levels and their associated constructs: Entity-Relationship Diagrams, Data Item Sets, Physical Data Models. Process modeling levels and their associated constructs: Functional decomposition, Context diagrams, Data Flow Diagrams, State Transition Diagrams, HIPO charts, Pseudo-code and programming specs. Relationship with Object-based modeling. Prerequisite: SE507
SE 542 - Information Systems Engineering
Theoretical and practical issues related to the implementation of information systems to support medium to large organizations. Databases within the target architecture and their role in building enterprise-wide information systems. Logical vs. Physical database design. Transaction Processing (TPS) and Decision Support systems (DSS): similarities and differences. Knowledge-based systems. Implementation issues: reliability, integrity, security, performance, scalability and maintainability. Review of existing commercial tools and environments for building, using and maintaining information Systems for the enterprise. Prerequisite: SE541.
SE 551 - Real-Time Software Analysis and Specificatio
Scheduling policies and mechanisms. Classification of Real-Time Systems: hard, soft; uniprocessor, multiprocessor, distributed. Kernels and executives. Real-time programming languages and their tasking systems. Real-time distributed systems: processor and communication scheduling domains, priority inversions and mappings, global time synchronization. Real-Time Structured Analysis (RTSA). CASE tools for RTSA. Real-Time Object Oriented Analysis methods. Comparison to RTSA. Prototyping real-time software systems. Using prototyping tools like CAPS (Computer Aided Prototyping System) to establish and validate system requirements. Prerequisite: SE507.
SE 552 - Real-Time Software Design and Implementation
Criteria and trade-offs for partitioning the functions of an real-time system among the hardware, firmware, and software. The interfaces of a real-time system to the external environment such as sensors and actuators. Designing real-time systems: structured and object-oriented methods. Case studies and comparison between the two. Design verification and validation. Implementation of Real-Time systems. Development environments and tools: Simulators, Emulators and Debuggers. Testing Real-Time systems. Test coverage and regression testing. Special approaches for Real-Time software testing. Engineering and organizational issues in real-time software development. Performance testing and its importance in real-time systems. Prerequisite: SE551 and SE505.
SE 590 - Thesis Research
Independent research in software engineering, spanning a period of 2 consecutive semesters, in an area not substantially treated in a regular course offering, under the supervision of a software engineering faculty member. A formal thesis is required. An oral defense of the thesis before a committee of two faculty members, plus the advising professor is required. Depending on the topic, a reviewer from outside the software engineering department may be asked to serve as a committee member. Prerequisites: completion of all core courses, and prior permission of the advising professor and program director.
Murdoch University [Undergraduate] (MUR)
[eng.murdoch.edu.au]
G2607 Requirements Engineering
Objectives: To provide an introduction to the software development life cyclewith an emphasis on requirements engineering.
Prerequisites: Normal progress in BE or BTech, or by approval from Engineering Programme Chair.
Content:
• General systems theory and a discussion of life cycle models.
• Modelling methods and techniques for the analysis of the data, process and behavioural aspects of systems.
• People issues including interpersonal skills and techniques (eg, for teamwork), common roles and responsibilities (eg, stakeholder, analyst).
• The emphasis of the unit is on Object-Oriented concepts and analysis through the application of object-oriented information gathering techniques and modelling notation.
Outcomes:
1. To be able to describe the concepts and application of a range of software development models.
2. To be able to describe and discuss the concepts of object oriented modelling.
3. To be able to complete an analysis for a simple software product.
4. To be able to apply an object-oriented notation within a requirements engineering task.
[ASYN]
G3757 Advanced Software Design I
Objectives:
To apply the principles of software design and introduce alternative software architectures in order to study their implications for system design and implementation. In addition, Formal Methods and in particular the Z specification language are introduced as a mechanism for specifying software and software architectures.
Prerequisites:
Normal progress in BE or BTech, or by approval from Engineering Programme Chair.
Content:
Formal Methods topics including: the place of Formal Methods in Software Engineering and an introduction to Z.
Software architecture topics focus on architectural style, including: filters, layered architectures, abstract machine architectures, various concurrent and real-time software architectures and process control architectures.
Outcomes:
1. To be able to describe the concepts and application of a range of software architectures.
2. To be able to complete a design for a complex software product.
3. To be able to implement a complex software product meeting all the necessary requirements for
specification, analysis and performance.
4. To be able to specify a range of software architectures.
[ASYN]
-G3767 Embedded and Industrial Computer Systems
Objectives:
To provide a broad understanding and practical experience in using a wide range of computing systems typical of industrial environments.
Prerequisites
Normal progress in BE or BTech, or by approval from Engineering Programme Chair.
Content:
The unit deals with a broad spectrum of embedded and industrial computer systems, from SBCs, through PCs and PLCs to SCADA and DCS systems. The strong laboratory component provides students with practical experience in using these systems. Additionally, a wide variety of application domains are considered. This enables students to appreciate the range of different sensor types, actuators and system response times (from microseconds to minutes) found in the industrial environment together with the type of computer systems which are associated with measurement and control.
Outcomes:
1. Implement and test software in a typical embedded system environment.
2. Understand the hardware and implement software for a single computer based measurement and control system.
3. Analyse and design sequential and discrete state systems.
4. Configure and maintain a small automation and process control system.
5. Configure and maintain a small system using a supervisory control package as is typical in DCS and SCADA systems.
[Requires lab – currently under investigation]
G3807 User Interface Design
Objectives
To cover the concepts, principles and practice of user interface design.
Pre-requisites
Normal progress in BE or BTech, or by approval from Engineering Programme Chair.
Content
This course will cover the theories and practice of the design of interactive user interfaces. The units will include: the elements of human-computer interaction; interaction styles; interaction design and the evaluation of interaction. Also included is the use of design environments and toolkits to implement user interface environments.
Outcomes:
1. To be able to design an operational user interface from a requirements specification.
2. To have an appreciation of the issues involved in the design and performance of a user interface.
3. To be able to fully implement a user interface conforming to design standards, styles and performance requirements.
[ASYN]
G3837 Software Engineering I
Objectives:
To provide an overview of the issues concerned with the development of large-scale software systems with an emphasis on the software process.
Prerequisites
Normal progress in BE or BTech, or by approval from Engineering Programme Chair.
Content:
The Software Development Process
Topics include: a discussion of the need for an engineering approach; software process models (including the Software Development Life Cycle plus various evolutionary and prototyping concepts); project management – estimating, planning, tools, team organisation and roles; inspections and an introduction to validation, verification and testing; an introduction to quality and reliability issues in software.
Outcomes:
1. To be able to explain the software development lifecycle, and its integration with project and team planning and management and the various tools required to support this process.
2. To be able to describe and design a software development process for a design task which includes planning, scheduling, control, verification and testing.
3. To be able to implement and demonstrate the application of a software development process in example design tasks.
[ASYN]
G3847 Software Engineering II
Objectives:
To further develop the concepts introduced in the part I unit in greater detail and introduce formal aspects of the construction of software systems with an emphasis on software quality assurance.
Prerequisites:
Normal progress in BE or BTech, or by approval from Engineering Programme Chair.
Content:
Software Quality Management
Topics include: applying software process management – various commercial and social issues; software quality assurance; use of ISO 9001 and AS3905.8; manuals, procedures and plans; configuration management and change control inspection; test planning and defect analysis; process descriptions and enactment; data integrity; Cleanroom Engineering introduction to process improvement.
Outcomes:
1. To be able to explain and demonstrate the use of inspections, testing and configuration management in large scale projects.
2. To be able to explain and demonstrate the implementation of quality assurance techniques.
3. To be able to apply those techniques as a part of an ISO 9000 compliant quality management system.
[ASYN]
G4XXX Engineering Design
Objectives
To provide an opportunity for students to put into practice all aspects of Software Engineering in the design of a modest scale, but complete, software project.
Pre-requisites
Normal progress in BE & BTech, or by approval from Engineering Programme Chair.
Content
The project will be team-based and will involve undertaking a software design problem of modest scale. Work will include specification, design, implementation, documentation and testing.
Software Development teams will take a software product through each step of the software life cycle culminating in a presentation of the software and its implementation in the client's environment.
Outcomes
1. To demonstrate an ability to work within a team to produce a software product.
2. To demonstrate an ability to document and present the documentation for a small scale project.
3. To demonstrate an ability to apply the basic principles of software engineering in the full development of a software product.
[ASYN]
G4177 Advanced Software Design II
Objectives
To provide a strong foundation in advanced design topics. In particular software architectures at the pattern and idiom level are explored, and object-oriented formal specification languages introduced as a mechanism for formalising software architectures.
Prerequisites:
Normal progress in BE or BTech, or by approval from Engineering Programme Chair.
Content:
Topics include: review of architectural style; overview of open systems, standards – user interface, Operating System Application Programming Interface (API), design patterns and language architecture including information bindings, procedural (parameters etc) and modular abstractions (ADT and O-O type), exception handling, concurrency; O-O paradigm – inheritance, generics.
Outcomes:
1. To be able to describe and explain the concepts associated with concurrent, distributed and network computing.
2. To demonstrate an understanding of the use of appropriate design patterns and idioms in software applications.
3. To demonstrate an understanding and use of standard tools to design and implement client-server applications, concurrent applications and network applications.
[ASYN]
G4147 Software Engineering Thesis
Objectives
To provide exposure to, and experience with, the complete design and implementation of a substantial software application.
Pre-requisites
Normal progress in BE or BTech, or by approval from Engineering Programme Chair.
Content
The project will involve the complete design and implementationof a substantial software system, possibly industry based. The project will include all aspects of the software development process and will require working in a team.
The project work will take place over two semesters, with twice the amount of time commitment in the second semester. Each student is required to prepare a complete design report.
Outcomes
1. To be able to demonstrate an understanding of a full range of techniques, tools and standards concerned with the design, implementation and testing of a substantial software product.
2. To be able to fully document and present a software solution.
3. To be able to implement to an operational level a substantial software product.
[ASYN]
G4247 Software Engineering III
Objectives:
To examine the use of various metrics to build on quality assurance and provide a method of measurement, improvement and optimisation of processes.
Prerequisites
Normal progress in BE or BTech, or by approval from Engineering Programme Chair.
Content:
Software Metrics and Continuous Process Improvement
Topics include: a review of software engineering and ways in which it differs from traditional engineering; a taxonomy of software metrics; measurement of size, complexity, quality and reliability of systems; certification of systems; an introduction to the assessment of software quality using American, European and Japanese approaches; basics of CMM and SPICE; an introduction to the use of Formal Methods for verification.
Outcomes:
1. To be able to explain and demonstrate the use of metrics in product and process improvement.
2. To be able to describe and explain the use of metrics for the measurement of processes such as the prediction of development and maintenance effort.
3. To be able to apply simple techniques from Formal Methods for the analysis of System Requirements.
[ASYN]
G4257 Software Engineering IV
Objectives:
To provide an exposure to a range of concepts and technologies relating to the use of Software Engineering Environments and Tools to support software development.
Prerequisites:
Normal progress in BE or BTech, or by approval from Engineering Programme Chair.
Content:
Industrial application of Software Engineering
Topics include: the application of software engineering theories in an industrial setting; human factors in project teams; the personal improvement process; design and management for re-use; risk management; assessment of the capabilities of a software organisation using CMM and SPICE; strategic issues; current trends and future directions. Additional topics include ethics and professional and legal responsibilities of the software engineer.
Outcomes:
1. To be able to describe and explain a range of technologies and tools for the software development process.
2. To be able to demonstrate the application of these technologies and tools to full scale design tasks.
3. To be able to demonstrate Risk Management as an example of such software development techniques.
4. To be able to explain the underlying theories for themeasurement of organisational capabilities.
[ASYN]
Purdue University [Undergraduate + Graduate] (PUR)
[www.cs.purdue.edu]
CS 406 Software Engineering I
Sem. 1. Class 3, cr. 3. Prerequisite: CS 251 and 352.
An introduction to the methods and tools of software engineering; software life cycle; specification and design of software, software testing, cost and effort estimation; laboratory exercises with design, testing, and other tools.
[MIX]
CS 407 Software Engineering II
Sem. 2. Class 3, cr. 3. Prerequisite: CS 406.
Because of the nature of the project, CS 407 is an extension of CS 406. The emphasis is on the development of a large software system in a team environment. Knowledge of methods and tools acquired in CS 406 are put to use in a carefully controlled and guided project. Some advanced topics such as reliability estimation and methods, and tools for the design and verification of parallel programs are covered during the lectures.
[MIX]
CS 510 Software Engineering
Sem. 2. [In 2000-01, sem. 1 instead of sem. 2.] Class 3, cr. 3. Prerequisite: CS 251.
Software life cycles, requirements engineering, software design, design of distributed systems, verification and validation, software architecture, process metrics and models, research methods in software engineering.
[MIX]
Rochester Institute of Technology [Undergraduate] (RIT)
[www.se.rit.edu]
3010-101 Software Engineering Seminar
Provides first-year students with the skills necessary to succeed at RIT and in the software engineering program. Small group sessions are used to help new students make friends, create a stronger bond with RIT and their program and become acquainted with the campus and its facilities. In addition, students are introduced to the profession of software engineering and to ethical issues they will face at RIT and through throughout their careers. Class 1, Credit 1
3010-362 Engineering of Software Subsystems
Continuation of 0603-361 with a more in-depth treatment of design and redesign, resource estimation and testing of non-trivial software subsystems. Topics include process improvement; common subsystem design patterns; maintenance; testing techniques. Students engage in active participation in the software process through projects. (0603-361) Class 3, Lab 2, Credit 4
3010-420 Formal Methods of Specification & Design
Introduction to the use of mathematical models of sequential software systems and the refinement of these models to designs and implementations. Topics include finite state machine models and regular expressions; state machine and regular expression equivalence; language syntax and semantics; formal specification, design, implementation and verification. (0603-266, 3010-362) Class 4, Credit 4
3010-420 Formal Methods of Specification & Design
Introduction to the use of mathematical models of sequential software systems and the refinement of these models to designs and implementations. Topics include finite state machine models and regular expressions; state machine and regular expression equivalence; language syntax and semantics; formal specification, design, implementation and verification. (0603-266, 3010-362) Class 4, Credit 4
3010-440 Principles of Software Architecture & Design
Examination of the fundamental building blocks and patterns for construction of software systems in the context of a sound design process, forming the foundation for subsequent courses in the principles of concurrent, distributed and information systems. All courses are structured around exploration of design patterns of construction, case studies and standards. Topics include structuring computation, patterns of design, graphical user interfaces, documenting design and functional design. Class lectures are reinforced by laboratory exercises and projects. (3010-362) Class 3, Lab 2, Credit 4
3010-441 Principles of Concurrent Software Systems
Issues and structures common in the construction of concurrent software systems. Emphasis is on fundamentals repeated in the design and development of closely coupled systems. Topics include the basics of concurrent hardware architectures, synchronization and coordination techniques and common models of software systems. Other issues include scheduling, reliability and problem decomposition. (3010-440) Class 3, Lab 2, Credit 4
3010-442 Principles of Distributed Software Systems
Issues and structures common in the construction of distributed software systems. Emphasis in on fundamentals repeated in most systems of this type. Topics include the basics of data communication and networking as well as higher-level issues encountered in the design of distributed systems. (3010-440) Class 3, Lab 2, Credit 4
3010-443 Principles of Information Systems Design
Issues and structures common in the construction of information systems. Emphasis is on fundamentals repeated in most systems of this type. Topics include historical review of methods of organizing and accessing information, high-level modeling techniques, performance and security concerns, implications of storing new data types (e.g., sound, pictures) and new dimensions (e.g., time) on information systems architectures. Team projects are required. (3010-440) Class 3, Lab 2, Credit 4



3010-450 Software Process & Product Metrics
Software metrics help a software organization on two main fronts: quality assessment of its process and products and assessment of its progress toward its main goal—the production of software artifacts. Students are exposed to metrics used in industry to control large software processes. Topics include product and process metrics, personal metrics portfolio, metrics attributes, and resource and time estimation metrics. (3010-362) Class 4, Credit 4
3010-452 Software Verification & Validation
Introduction to a set of principles and techniques that represent the foundation for improving software products. Topics include verification and validation, unit level testing, system level testing, software quality assurance, and software reliability. Team projects are emphasized. (3010-362) Class 4, Credit 4
3010-455 Software Requirements & Specification
In-depth coverage of the early phases of the software development life cycle commonly called software requirements analysis and specification. Topics include requirements elicitation and definition, requirements prototyping, functional and nonfunctional requirements specification, and legacy systems. Team projects are emphasized. (3010-420, 3010-440) Class 4, Credit 4
3010-456 Software Engineering Process
Introduction to software engineering process and related project management issues. Topics include software maturity framework, software process assessment, software process and the software life cycle, issues in software project management and control, and measurements related to the software process. (3010-440) Class 4, Credit 4
3010-561 Software Engineering Project I
The first course in a two-course, senior-level, capstone project experience. Students work as part of a team to develop solutions to problems posed by either internal or external customers. Problems may require considerable software development or evolution and maintenance of existing software products. Culminates with the completion and presentation of the first major increment of the project solution. Class time is divided among lectures on contemporary issues in software engineering, guest lectures by industry practitioners and time devoted to team-based activities. (Senior-level standing in software engineering) Class 4, Credit 4
3010-562 Software Engineering Project II
The second course in a two-course, senior-level, capstone project experience. Students submit one or more additional increments that build upon the solution submitted at the end of the first course. Students make major presentations for both customers as well as technical-oriented audiences, turn over a complete portfolio of project-related artifacts and offer an evaluation of the project and team experience. (3010-561) Class 4, Credit 4
Stevens Institute of Technology (SIT)
[www.stevens-tech.edu]
CS 608 Mathematical Foundations of Software Engineering
The course studies professional and equational logic and their uses in the specification and verification of programs. The student will become proficient in software specification and design. Topics: substitution, equality and assignment; Boolean logic, proof styles, truth functional connectives; and, or implies, equivalence. Satisfiability, validity, counter-examples; predicate logic; axioms for quantification. Prerequisite: Ma 502.
CS 621 Analysis and Design of Real-Time Systems
An introduction to the design methodologies and considerations for embedded and organic real time systems. Review of available hardware technologies, throughput analysis, hardware/software tradeoffs. Analysis of language issues arising in real time systems. Design of real-time kernels, context switching, memory allocation and scheduling. Real-time data structures. Analysis of time/memory loading, latency issues, data freshness. Exception detection and handling. A programming project or case
study is required. Prerequisites: CS 605, CS 514. Cross-listed with CpE 621.
CS 640 Software Engineering I
This course covers the principles and theory of programming-in-the-large. The phases of software development, requirements development, software design, software coding, and module testing, and software verification will be discussed in detail. Documents, rapid phototyping, top down, bottom up, successive refinement, functional and data abstraction will be discussed. Black and white box testing methods will be covered. Hierarchical and democratic term organization structures and the effects of personalizing and group dynamics will be discussed. Prerequisite: CS 590. Cross-listed with CpE 640.
CS 642 Software Engineering II
The course will be built around a small number of detailed case studies. The intent is to illustrate the use of some methodologies for software development using both state-of-the art approaches as well as potentially more valuable but as yet unproven approaches from the research community. The course will cover the phases of requirement development, system specification, design, implementation, testing, and project management. Prerequisite: CS 640. Cross-listed with CpE 642.
CS 643 Formal Verification of Software
Formal systems for specification and verification of software; Review of the first-order predicate calculus; Abstract data types, formal specification, preconditions, postconditions, invariants, predicate transformers, proofs of correctness, partial and total correctness; Correctness for assignments, alternatives, iterations, procedure calls. Prerequisite: CS 640.
CS 674 Theory of Object-Oriented Software Design
Theory of object-oriented design, classes, interfaces, inheritance hierarchy, correctness; Abstract data types, encapsulation, formal specification with preconditions, postconditions, and invariants, proofs of correctness; Object-oriented software, objects and classes, genericity, inheritance, polymorphism, overloading; Single and multiple inheritance, programming by contract, subclassing as subcontract, specification and verification; Programming language examples include C++, Java, Smalltalk, and Eiffel. Prerequisite: CS 590 or equivalent.
CS 681 Software Engineering with Ada
Data abstraction, exception handling, and concurrency are all of fundamental importance to the design and maintenance of software systems. This course covers these principles from the perspective of the programming language Ada and modern object based programming style. Topics included: data encapsulation, packages and generic packages. The notion of object. Array types, parameterized types data abstraction, packages and generics, exceptions, exception handling, function parameters and numerics, type abstraction, recursive data structures, generic procedures. The organization of project libraries. Separate compilation issues. Interrupts and low level
I/O, distributed programming and static object-oriented programming, parallel computation with tasking. The rendezvous, priority scheduling and queuing delays. The notion of active objects with the Ada tasking model. Prerequisite: CS 640.
CS 684 Software Requirements Analysis and Specification
This course introduces students to the requirements definition phase of software development. It will discuss models, notations, and processes for software requirements identification, representation, validation and analysis. An important component is a group project: the software requirements specification of a large software system.
CS 686 Software Architecture and Design
To introduce students to the software design process and its models, representations of designing/architecture, software architectures and design plans, design method, design state assessment, design quality assurance, design verification.
CS 688 Software Testing, Quality Assurance, and Maintenance
To introduce students to systematic testing of software systems, software verification, symbolic execution, software debugging, quality assurance, measurement and prediction of software reliability, project management, software maintenance, software reuse, reverse engineering.
CS 692 Software Project
The capstone course for the Master of Science in Software Engineering program. Each student will work on a large software project in a group, using methodologies learned in CS 684, CS 686 and CS 688.
Texas Tech University (TTU)
[www.cs.ttu.edu/grad/msse.html]
+CS 5355. Real Time and Time Sharing Systems (3:3:0). Prerequisite: C S 2350, 3352, and 5364.
Study of the functional needs in real time and time sharing systems. Basic techniques and display concepts, random-access fields, computer networks, simultaneous operations, multiprogramming, and multiprocessing.
[ASYN]
+CS 5358. Software Studio I (3:3:0). Prerequisite: C S 5362 and 5363
Capstone design and implementation experience of a major software project applying comprehensive software engineering techniques.
[MIX]
+CS 5359. Software Studio II (3:3:0). Prerequisite: C S 5358
A continuation of software engineering projects begun in C S 5358.
[MIX]
+CS 5360. Software Construction and Evolution (3:3:0). Prerequisite: C S 5362, 5363, and 5364
Theory and practice of the construction, testing, and maintenance of software. Emphasis placed on techniques to evolve software over time to meet the changing needs of users during the life of the software.
[ASYN]
+CS 5361. Theory of Computing Languages (3:3:0). Prerequisite: C S 3461 and 3383, equivalent, or consent of instructor
General language theory with emphasis on computing languages, Chomsky typology, syntactical and semantic specifications. Standard and experimental methods for specification of languages. Current research on translation of natural language instructions to machine instructions.
[ASYN]
+CS 5362. Software Specification and Design (3:3:0). Prerequisite: C S 2365, equivalent, or consent of instructor
Examination of the development of the specifications, architecture, and design of software. Analysis, software architecture, design patterns, architectural design and detailed design.
[ASYN]
+CS 5363. Software Project Management (3:3:0), Prerequisite: C S 2365, equivalent, or consent of instructor
Methodologies for the management of projects involving software components. The larger context of systems development is studied, along with business management and engineering principles. Technical as well as people issues are explored.
[ASYN]
+CS 5364. Software Metrics (3:3:0). Prerequisite: C S 2365, I E 3341, equivalent or consent of instructor.
In-depth study of the use and application of software measurement to improve software products, resources, and processes. Topics include investigative techniques, data collection, and analysis.
[ASYN]
+CS 5365. Principles of Multiple-Processor Systems (3:3:0). Prerequisite: C S 3375, equivalent, or consent of instructor
Comprehensive introduction to the field of parallel and distributed computing systems. Algorithms, architectures, networks, systems. Theory and applications.
[ASYN]
*CS 5366. Software Process Improvement (3:3:0). Corequisite: C S 5363 and 5364
Theory and practice for software process improvement and certification at the organizational, project team, and individual level. CS
[ASYN]
+CS 5369 Web-Based Software Systems (3:3:0). Prerequisite: CS 2365, equivalent, or consent of instructor.
In-depth study of how to engineer web-based software systems. Topics include process, development, testing, and performance issues.
[ASYN]
University of Michigan-Dearborn (UMD)
[www.engin.umd.umich.edu/CIS]
CS 375 Introduction to Software Engineering
Prerequisite: CIS 350 or equivalent. (3).
This course presents an indepth treatment of many software engineering topics including: software engineering paradigms, requirements specification, functional design, object-oriented design, software verification, and maintenance. Comprehensive discussion of human-computer interaction and user interface design.
CIS 376 Advanced Software Engineering.
Prerequisite: CIS 375. (3).
This course continues the formal development of the software engineering material begun in CIS 375. Topics covered include: personal software process, team software process, formal methods, human computer interaction, security, software architecture, software reliability,and use of CASE tools.
CIS 475 Software Engineering Seminar.
Prerequisite: CIS 375. (3).
The focus of this course is on management issues related to modern software engineering practice. Students read and discuss papers written by master software engineering professionals. Seminar topics discussed include: management of software engineering processes,software measurement, software engineering ethics, and legal issues related to professional practice.
+CIS 525 Multimedia Web Design
Prerequisite: CIS 553 or equivalent (3).
This course deals with the study of technologies used to design and implement multimedia web sites. The focus of the courses will be hands-on development of commercial web-based applications. Students will study a variety of software technologies relevant to web design and implementation. Several applied topics are covered: programming languages, scripting langauges, network programming, client/server computing, security, and multimedia systems design.
[ASYN]
+CIS 532 Analysis and Design of Algorithms
Formal languages / grammars and the Chomsky hierarchy, computability and intractability, Church-Turing hypothesis, push-down automata and Turing machines, overview of sequential machines, application of formal languages to compiler construction.
CIS 550 Foundations of Object-Oriented Computing
This course covers foundations of object-oriented computing in which objects and nets play the fundamental role. Objects generalize primitive and abstract data types processes and are considered in the algebraic framework. For the coordination of objects, the object-net methodology is introduced and examined in the categorical framework.
+CIS 553 Software Engineering
Software engineering characterizes software production and maintenance as a process to be managed. A software process includes specification, design, verification and testing, and maintenance over a lifecycle. Related topics include metrics, design reuse, techniques for quality improvement and project management, software reliability and fault tolerance. Overview of discipline, from needs assessment to retirement. Role of software engineering in future. Impact on other industries.
CIS 565 Software Quality Assurance
Focuses on the processes, methods and techniques for developing quality software, for assessing software quality, and for maintaining the quality of software. Software testing at the unit, module, subsystem and system levels, automatic and manual techniques for generating and validating test data, the testing process, static vs. dynamic analysis, functional testing, inspections and reliability assessment. Tradeoffs between software cost, schedule, time, and quality, integration of quality into the software development process as well as the principles of test planning and test execution.
CIS 567 Formal Methods in Software Engineering
The course covers the different formal mechanisms for specifying, validating and verifying software systems. Topics include: program verification through Hoare's method and Dijkstra's weakest precondition, formal specification via algebraic specifications and abstract model specifications, including initial specification and refinement towards implementation, integration of formal methods with existing programming languages, and the application of formal methods for requirement analysis, testing, safety analysis and object oriented approaches.
CIS 573 Software Reliability and Safety
Importance of reliability for current and future software systems. Safety criteria hazard analysis and risk analysis. Analysis, design, verification and validation of mission and safety critical systems. Safety critical hardware and software. Measurements of reliability (MTTF, MTTR, defects/KLOC). Techniques to increase reliability and safety: Petri nets, formal methods, component reuse, proofs of correctness. Verification and validation, certification. Safety and security.
+CIS 575 Software Engineering Management
Quantitative models of the software lifecycle; cost effectiveness; uncertainty and risk analysis; planning and modeling a software project; software cost estimation (COCOMO, Function points); software engineering metrics; software project documentation. Special emphasis on emerging software process standards such as the Capability Maturity Model of the Software Engineering Institute, and other international ones.
*CIS 577 User Interface Analysis and Design
Current theory and design techniques concerning how user interface for computer systems should be designed to be easy to learn and use. Focus on cognitive factors, such as the amount of learning required, and the information-processing load imposed on the user. Emphasis will be on integrating multimedia in the user interface.
[ASYN]
CIS 580 CASE Tools Evaluation
Study of computer aided software-engineering tools. Both commercial products and research prototypes will be investigated. Analysis of the tools, what features are useful, and what are lacking, how they help in the different stages of the software development life cycle.
+CIS 587 Computer Game Design
This course deals with the study of the technology, science and art involved in the creation of computer games. The focus of the course will be hands-on development of computer games. Students will study a variety of software technologies relevant to languages, operating systems, file systems, networks, simulation engines, and multi-media design systems. Lecture and discussion topics will be taken from several areas of computer science simulation modeling, real-time processing, game theory, software engineering, human-computer interaction, graphic design, and game aesthetics.
[ASYN]
CIS 695/ECE 695 Case Studies and Projects
Application of the methodologies, tools, and theory of software engineering to produce a specific validated software product. Projects can be faculty generated, self generated, and/or work related. All projects must be undertaken with one or more students under the supervision of the instructor. Prior to enrollment, a project proposal must be prepared and approved by the instructor and department chair. Standard software engineering documents must be prepared and approved at each phase of the project, and an oral presentation of the project is required. Course includes lectures and case studies.
ECE 553 Software and Hardware for Rapid Prototyping Applications
Rapid prototyping technology is primarily aimed at reducing the lead times and costs associated with new product development. Rapid prototyping requires a good quality 3D CAD system. This course will cover the software and hardware widely used in the rapid prototyping including Stereolithography (SLA) and virtual reality software and hardware used for rapid prototyping.
ECE 573 Embedded Systems
Survey of real time, sampled data systems, and embedded applications, e.g., digital controllers, fuzzy logic and neural networks, diagnostic systems. Principles and characteristics of sensors and devices; embedded microprocessors; processor/device interfaces; time critical I/O handling; data communications in embedded environments. Overview of embedded operating systems, cross development techniques and tools. Design of real time systems with micro-controllers such as the 68HC11 and 68332. Object oriented software development, using both assembly language and high level languages. Project oriented course.
ECE 574 Advanced Software Techniques in Engineering Applications
Graduate level introduction to data structures, high-level engineering analysis languages, hardware description languages, and algorithm complexity analysis, engineering applications.
ECE 576 Information Engineering
This course will cover the fundamental concepts of information engineering including computation, storage, communication, and application. Examples of topics are multimedia data such as video, audio, image and text, multimedia transmission through local and wide area networks, multimedia data representation, storage and compression. Information engineering applications will be discussed and students are expected to complete a project in a selected application.
University Of Ottawa [Undergraduate] (OTTAWA]
[www.site.uottawa.ca/school/ugrad]
SEG 2100. Software Design II (3,0,3) 4 cr.
Analysis, design and programming of software systems using selected object-oriented programming languages, reusable libraries and toolsets. API's. Design using user interface construction tools. Analysis, design and programming of simple servers and clients. Prerequisites:
CSI1101 or CSI1102
SEG 2101. Software Design III (3,0,3) 4 cr.
State-transition based software design. Experience in the use of industrial-strength design toolsets. BNF and basic theory of grammars and parsing. Use of parser generators. Design of simple languages for applications and programming languages. Overview of design of software using functional or logic-based programming paradigms. Introduction to basic concurrent and parallel architectures. Prerequisite: SEG2100
SEG 2500. Conception de logiciels II (3,0,3) 4 cr.
Analyse, conception et programmation de systèmes informatiques avec des langages de programmation par objet, des bibliothèques de logiciels réutilisables et des boîtes d'outils. Interfaces de programmation. Conception utilisant des outils de création d'interfaces usager. Analyse, conception et programmation de serveurs et clients simples. Préalables : CSI1501 ou CSI1502
SEG 2501. Conception de logiciels III (3,0,3) 4 cr.
Conception de systèmes informatiques par transitions d'états. Utilisation d'outils de développement industriels. BNF et théorie de base des grammaires et de l'analyse syntaxique. Utilisation de générateurs d'analyseurs syntaxiques. Conception de langages d'application et de langages de programmation simples. Introduction à la conception de logiciels selon les paradigmes de programmation fonctionnelle et logique. Introduction aux architectures concourantes et aux programmations parallèles. Préalable : SEG2500
SEG 2910. Pratique de la profession d'ingénieur logiciel (1,0,0) 1 cr.
Principes de professionnalisme et d'éthique professionnelle dans la pratique de l'ingénieur logiciel, incluant ses obligations envers la société et l'environnement.
Professional Software Engineering Practice
Principles of professional software engineering practice and ethics, societal and environmental obligations of the software engineer.
SEG 3100. Software Development for Large-Scale Systems (3,0,3) 4 cr.
The software development life cycle. Introduction to software project management: cost estimation and project planning. Software specification and requirements analysis. Comparison of software architectures. Design principles such as coupling and cohesion. Introduction to software metrics. Software quality assurance strategies: the personal-software process, reviews, testing and inspections. Assessing software designs for safety, security, performance and economic viability. Use of static and dynamic analysis
tools. Prerequisites: SEG2101 or SEG3300
SEG 3110. Advanced Object Oriented Analysis and Design (3,0,3) 4 cr.
Advanced approaches to object oriented analysis and design. Frameworks and design patterns. Design for reusability. Advanced object oriented programming techniques. Design using object oriented databases and distributed object architectures. Design of software agents. Project involving object oriented analysis, design and implementation. Prerequisites: SEG3100 or SEG3310, CSI3317
SEG 3120. Analysis and Design of User Interfaces (3,0,3) 4 cr.
Psychological principles of human-computer interaction. Evaluation of user interfaces. Usability engineering. Task analysis, user-centred design and prototyping. Conceptual models and metaphors. Software design rationale. Design of windows, menus and commands. Voice and natural language I/O. Response time and feedback. Colour, icons and sound. Internationalization and localization. User interface architectures and APIs. Case studies and project. Prerequisites: (SEG3100 or SEG3300) and (MAT2377
or MAT2375)
SEG 3150. Telecommunications Software Engineering (3,0,3) 4 cr.
Principles of information transfer. Error control, flow control, congestion control, routing algorithms. Principles of telecommunications system software design and analysis. Prerequisites: MAT2343, SEG2101, CSI2114, ELG3300
SEG 3300. Introduction to Software Engineering (3,0,0) 3 cr.
The software development life cycle. Project management issues. Software specification and requirements analysis. Software design techniques. Cost estimation. Software metrics. Software testing strategies. Software maintenance. Prerequisites: CSI2115 or CSI3125
SEG 3310. Object-Oriented Analysis, Design and Programming (3,0,1.5) 3 cr.
Quality criteria for modular design. Subtyping and inheritance. Object-oriented analysis, object-oriented modelling and design. Object-oriented programming methodology. Object repositories and reuse. Prerequisites: CSI3125 or CSI2115 or SEG2101
SEG 3500. Développement de systèmes informatiques de taille industrielle (3,0,3) 4 cr.
Le cycle de vie d'un logiciel. Introduction à la gestion de projets informatiques: estimation des coûts et planification de projets. Spécification de logiciels et analyse des besoins. Comparaison d'architectures logicielles. Principes de conception tels que couplage et cohésion. Introduction aux métriques du logiciel. Stratégies de garantie de qualité: processus personnel de développement de logiciels
(PSP), examen, test et inspections. Évaluation des qualités concernant la sécurité, la performance et la viabilité économique. Utilisation d'outils d'analyse statiques et dynamiques. Préalables : SEG2501 ou SEG3700
SEG 3510. Concepts avancés en programmation orientée objet (3,0,3) 4 cr.
Approches approfondies pour l'analyse et la conception orientées objet. Cadres et modèles. Conception en vue de la réutilisation. Techniques de programmation avancées. Conception utilisant les bases de données orientées objet et les architectures d'objets distribués. Agents logiciels. Projet. Préalables : SEG3500 ou SEG3710, CSI3717
SEG 3520. Conception et analyse des interfaces usagers (3,0,3) 4 cr.
Principes psychologiques de l'interaction humains-machines. Évaluation des interfaces, utilisabilité. Analyse des tâches. Conception basée sur l'utilisation. Prototypage, modèles conceptuels et métaphores. Rationalisation. Conception de fenêtres, menus et commandes. Entrées naturelles, temps de réponse et rétroactions. Couleurs, icônes, sons. Localisation et internationalisation. Architectures et bibliothèques d'application. Projet et études de cas. Préalables : (SEG3500 ou SEG3700) et (MAT2775 ou MAT2777)
SEG 3550. Génie des logiciels de télécommunication (3,0,3) 4 cr.
Principes de transport de l'information. Contrôle d'erreur, contrôle de flux, contrôle de congestion, algorithmes de routage. Principes de conception et d'analyse des logiciels pour les systèmes de télécommunications. Préalables : MAT2743, SEG2501, CSI2514, ELG3700
SEG 3700. Introduction au génie logiciel (3,0,0) 3 cr.
Cycle de développement de logiciels. Gestion de projet. Estimation des coûts. Métrique des logiciels. Spécifications des logiciels et analyse des besoins. Techniques de conception de logiciels. Stratégies de test. Maintenance des logiciels. Préalables : CSI3525 ou CSI2515
SEG 3710. Analyse, conception et programmation orientée objet (3,0,1.5) 3 cr.
Critères de qualité pour la conception modulaire. Hiérarchies de types et héritage. Analyse orientée objet; modélisation et conception orientée objet. Méthodologie de programmation orientée objet. Archives d'objets et réutilisation. Préalables : CSI2515 ou CSI3525 ou SEG2501

SEG 4100. Software Project Management (3,0,3) 4 cr.
Advanced project planning, cost estimation and scheduling. Project management tools. Factors influencing productivity and success. Productivity metrics. Analysis of options and risk. Planning for change. Managing expectations. Software contracts and intellectual property. Case studies. Project involving forensic project management of a real industrial project. Prerequisites: SEG3100 or SEG3300
SEG 4111. Software Quality Engineering (3,0,3) 4 cr.
Requirements gathering techniques. Formal approaches to specification of requirements. Use of specification languages and CASE tools to model requirements. Handling uncertain and changing requirements. Certification, verification and validation techniques. Advanced testing techniques. Statistical software reliability engineering. Project. Prerequisites: (SEG3100 or SEG3300), MAT2343 and (MAT2375 or MAT2377)
SEG 4115. Software Evolution and Reengineering (3,0,3) 4 cr.
Maintainability and reusability analysis. Approaches to maintenance and long-term software development. Change management and impact analysis. Release and configuration management. Software metrics. Software process standards. Reengineering and reverse engineering. Regression testing. Case studies and project in analysis and iterative development of existing large systems. Prerequisite: SEG3100 or SEG3300
SEG 4155. Telecommunications Software Design and Analysis (3,0,3) 4 cr.
Formal models for telecommunications software design and analysis. Protocol specification, design and validation. Protocol verification and testing. Conformance testing. Protocol synthesis. Protocol conversion. Prerequisite: SEG3150
SEG 4500. Gestion des projets (3,0,3) 4 cr.
Notions avancées de planification de projet, estimation des coûts et délais. Outils de gestion de projet. Facteurs influençant la productivité et le succès. Mesures de productivité. Analyse des options et des risques. Planification des changements. Gestion des attentes. Contrats de développement de logiciel et propriété intellectuelle. Études de cas. Diagnostic d'un projet industriel réel. Préalable : SEG3500 ou SEG3700
SEG 4511. Contrôle de qualité des logiciels (3,0,3) 4 cr.
Techniques d'obtention de besoins. Approches formelles pour la spécification de besoins. Utilisation de langages de spécification et d'outils de conception de logiciels. Le traitement de besoins imprécis et changeants. Techniques pour la certification, la vérification et la validation de logiciels. Techniques de test avancées. Ingénierie statistique de la fiabilité de logiciels. Projet. Préalables : (SEG3500 ou SEG3700), MAT2743 et (MAT2775 ou MAT2777)
SEG 4515. Évolution et reconception de logiciels (3,0,3) 4 cr.
Analyse de maintenabilité et de réutilisabilité. Approches pour la maintenance et le développement à long terme de logiciels. Gestion du changement et analyse d'impact. Gestion de la mise en exploitation et de la configuration de systèmes. Métriques du logiciel. Standards du processus de développement de logiciel. Ré-ingénierie et rétro- ingénierie. Tests de régression. Études de cas et projet en analyse et développement itératif de gros systèmes existants. Préalables : SEG3500 ou SEG3700
SEG 4555. Conception et analyse de logiciels de télécommunications (3,0,3) 4 cr.
Modèles théoriques pour la conception et l'analyse de logiciels de télécommunications. Spécification, conception et validation de protocoles. Vérification et test de protocoles. Test de conformité. Synthèse et transformation de protocoles. Préalable : SEG3550
SEG 4900. Projet en génie logiciel (3,0,3) 4 cr.
Programme intégré de séminaires dans différents domaines du génie logiciel; préparation et la présentation de projets développés par groupes sous la supervision d'un ingénieur informaticien (du corps professoral ou de l'industrie). Le responsable ultime est un professeur. Le choix des projets se fait au début de l'automne. Les étudiants doivent soumettre à des dates précises: a) un plan de projet avec une estimation des coûts, b) les besoins, spécifications et ou prototypes du système, c) un rapport sur la conception et l'implantation et d) un rapport sur les garanties de qualité. Préalables : SEG3510, SEG3520
Software Engineering Project
An integrated program of lectures by invited speakers active in software engineering, and the preparation and presentation of projects. Projects are performed in teams under the direction of an experienced software engineer (from the faculty or from industry). Ultimate direction is by a faculty member. Project selection is done in the early fall. At specific dates during the year, students are required to submit: a) A project plan with a cost estimation; b) requirements, specifications and or prototypes; c) A design and implementation report; d) A quality assurance report. Prerequisites: SEG3110, SEG3120
CSI 5107 (95.569) PROGRAM CONSTRUCTION AND FAULT TOLERANCE (3 cr.)(T, E)
Mathematics for program construction and fault tolerance. Program construction by relational decomposition: the equations and the heuristics. Fundamentals of program fault tolerance. Implementing error detection and damage assessment. Forward and backward error recovery. Hybrid program validation.
CSI 5109 (95.571) SPECIFICATION METHODS FOR DISTRIBUTED SYSTEMS (3 cr.) (E, S)
Concepts of process algebras, especially with relation to the specification language LOTOS. Equivalence concepts: observation equivalence, testing equivalence. Data algebras. Rewriting systems. Verification of specifications. Specifications styles. Applications to distributed systems: communications protocols, telephone systems. Related models CSP, CCS, ACP. Relation to temporal logic and model checking.
CSI 5111 (95.551) SOFTWARE QUALITY ENGINEERING (3 cr.) (E)
Software quality issues. Quality components and metrics. Software process quality. Software reliability engineering. Software design for testability. Requirements capture and validation. Systematic design validation; grey-box approach. Test design, implementation, and management. Case studies in validation and verification of communications software. Object-oriented design and test. Theoretical aspects.
CSI 5112 (94.480) SOFTWARE ENGINEERING (3 cr.) (E)
Topics of current interest in Software Engineering, such as software development systems, structured systems analysis and design, management of software, software tools, validation and verification, programming environments.
CSI 5118 (95.532) AUTOMATED VERIFICATION AND VALIDATION OF SOFTWARE 3 cr. (E)
Topics in formal test derivation methods, test management, high-level, CASE-based verification and validation, data-flow & control-flow measures and metrics for assessing quality of designs and code, regression analysis & testing. Prerequisite: a four-year undergraduate degree in computer science, computer engineering, or software engineering.
CSI 5122 (95.531) SOFTWARE USABILITY 3 cr. (E)
Design principles and metrics for usability. Qualitative and quantitative methods for the evaluation of software system usability: Heuristic evaluation, usability testing, usability inspections and walkthroughs, cognitive walkthroughs, formal usability experimentation. Ethical concerns when performing studies with test users. Economics of usability. Integration of usability engineering into the software engineering lifecycle.
CSI 5184 (95.584) LOGIC PROGRAMMING (3 cr.) (E)
Review of Logic Programming (LP) as a foundation of fifth generation software. Two approaches to LP: automated deduction and procedural semantics. Software development methodology in the LP framework. Advanced Prolog programming. Implementations of LP. The course includes a programming project and a presentation.
CSI 5310 (95.540) SOFTWARE PATTERNS (3 cr.) (E)
Survey of current developments in software patterns, three-part rules expressing relations between software contexts, problems and solutions. Discussion of Pattern categories: architectural, design, analysis, refactoring, general-purpose, anti-patterns, and idioms. Students required to apply existing patterns and to develop and defend new ones. Prerequisites: 95.304 or CSI 3300 or equivalent.
CSI 5507 (95.569) LES PROGRAMMES : CONSTRUCTION ET TOLÉRANCE AUX FAUTES (3 cr.) (T,E)
Mathématiques pour la construction de programmes et pour la tolérance aux fautes. Construction de programmes par décomposition relationnelle : les équations et les heuristiques. Fondements de la tolérance aux fautes des programmes. Mise en oeuvre de la détection d'erreurs et de l'évaluation de la contamination. Recouvrement avant et recouvrement arrière des erreurs. Validation hybride de programmes.
CSI 5509 (95.571) MÉTHODES POUR LA SPÉCIFICATION DE SYSTÈMES RÉPARTIS (3 cr.) (E,S)
Algèbres de processus, surtout par rapport au langage de spécification LOTOS. Concepts d'équivalence: équivalence d'observation, équivalence de test. Algèbres de données. Systèmes de récriture. Vérification de spécifications. Styles de spécification. Applications à systèmes répartis: protocoles de communication, systèmes téléphoniques. Modèles reliés: CSP, CCS, ACP. Relations avec logique temporelle et contrôle de modèle.
CSI 5511 (95.551) GÉNIE DE LA QUALITÉ DES LOGICIELS (3 cr.) (E)
Critères de la qualité des logiciels. Composantes et métriques de qualité. Qualité du processus de développement des logiciels. Génie de fiabilité des logiciels. Capture et validation d'exigences. Validation systématique de la conception; approche boîte-grise. Conception, implantation et gestion des tests. Étude de cas en validation et vérification des logiciels de communication. Conception orientée objet. Aspects théoriques.
CSI 5584 (95.584) PROGRAMMATION LOGIQUE (3 cr.) (E)
Revue de programmation logique (PL) comme base du logiciel de la 5e génération des ordinateurs. Deux approches à la PL : déduction automatique ou sémantique procédurale. Méthodologie du développement du logiciel dans le cadre de PL. Concepts avancés de programmation en PROLOG. Implantation de PL. Le cours comprend le développement et la présentation d'un projet.

.