Architectures for Software Systems*
Based on 17-655 Architectures for Software Systems course of Carnegie Mellon University, Institute for Software Research of (CMU-ISR)
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. During the second semester there a bootcamp event is organized that aims to give students a job market orientation and train them how to “sell” themselves better on the Bulgarian job market.
This course is delivered in: New Bulgarian University; Sofia University/Faculty of Mathematics and Informatics (content).
Analysis and Design Methods
Based on 17-652 Methods: Deciding What to Design course of Carnegie Mellon University, Institute for Software Research of (CMU-ISR)
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. The course presents various methods, principles, techniques for collecting and analyzing software development requirements, requirements structuring and implementation in the software products design. Theoretical concepts are applied in course projects on which students work in teams.1
This course is delivered in: Sofia University/Faculty of Mathematics and Informatics, as part 1 of the Software Design Bundle; Technical University (partial, content).
1In addition to the Analysis and Design Methods and the IT studio courses, as part of the Software Design Bundle students work on real projects assigned by real industry clients. After the project work is approved by the clients, students can be assigned to develop a software application as internship in the company.
IT Studio course
This course provides students with a field for direct application of concepts learned in core courses of the IT Services Master’s program through work on a real project assigned by a real customer. IT Studio part 1 is the first of these core courses and is focused on analysis and design. It trains students to understand customers’ requirements and use these requirements to design better. The course also covers the stages in the software development process, time management, team formation, and decision making. 1
This course is delivered in: Sofia University/Faculty of Mathematics and Informatics, as part 2 of the Software Design Bundle
1In addition to the Analysis and Design Methods and the IT studio courses, as part of the Software Design Bundle students work on real projects assigned by real industry clients. After the project work is approved by the clients, students can be assigned to develop a software application as internship in the company.
Information Systems Analysis and Design (SEMP aligned)
SEMP-aligned course that uses components from 2 courses of Carnegie Mellon University, Institute for Software Research (CMU-ISR) – 17-653 Managing Software Development and 17-652 Methods: Deciding What to Design
This course focuses on the logical design and development of information systems, especially in the first stages of the development – analysis, modeling and design and also on the communication with clients, customers and team members. The course puts emphasis on iterative software product life cycle, stages in the development of an information system, definition and analysis of requirements, interaction with clients and customers, basic models (data model, functional model, and interface model), DB modeling and design environment.
This course is delivered in: Sofia University/Faculty of Mathematics and Informatics
_
* ESICEE periodically organizes also intensive commercial versions of these courses.
The following courses are also available by ESICEE in this field:
Improving Software Quality through Software Architecture by David Garlan, CMU – a 3-day course by one of the founders of the field of software architecture, and of formal representation and analysis of architectural designs in particular. The course focuses on how to: express architectural requirements clearly, reuse common architectural structures, make principled architectural tradeoffs, document architectures so that others can understand the design intent, evaluate architecture for fitness of purpose, and use architectures to support self-healing capabilities.
Estimation and Risk Management for Software Projects by Eduardo Miranda, CMU –the course teaches students to deal with the uncertainties related to planning and cost estimations of Software Engineering projects. Probabilistic Cost Estimation and Risk Management refers to the use of statistical techniques to consistently deal with the things we do not know: the assumptions in our project and the normal variations that exist in the execution of every task. The course puts emphasis on the process followed to prepare the estimate, the cognitive biases and administrative behaviors that afflict the estimation process and the integration of cost estimation and risk management.
Secure Coding (C, C++ and Java) – a set of trainings and workshops designed and delivered by Robert Seacord and CERT-SEI team, providing detailed explanation of common programming principles and errors in C and C++ with focus on security issues intrinsic to the C and C++ programming languages and associated libraries.
Advanced Programming – 16-hour training for advanced programmers, delivered by eminent expert from Institute of Mathematics and Informatics, Bulgarian Academy of Sciences (IMI-BAS)
Top 10 Web Threats & Advanced Web Threats – 1-day courses addressing the top web threats, how do hackers exploit them and what are the ways to mitigate them. The courses include live demos of attacks, examples of weak and vulnerable code, mitigation tactics and discussions on how not to write vulnerable code in the process of daily work. The courses are 100% technical and not organizational.
Top 10 Mobile Threats – iOS– 1-day coursefocused on mobile security that is unique difficulty compared to other types of software. It introduces participants to the top mobile threats, how do attackers leverage them and how can the developer stop them. The course includes live demos of the attacks, examples of weak and vulnerable code. The main language used is Objective-C due to its importance in the iOS platform. The course is 100% technical and not organizational.
Top 10 Mobile Threats – Android – coming soon.