Department of Software Engineering
Introduction

The Department of Software Engineering in the University of Tehran is among the leading departments in the nation, with a diverse program in Bachelor of Science (BS), Masters of Science (MS), and Doctor of Philosophy (PhD) degrees. Our department is situated in the School of Electrical and Computer Engineering where it enjoys close academic and research collaborations with other departments, including Information Technology, Artificial Intelligence and Robotics, Hardware and Electronics, and Communications. We support a community of about 50 MS and 20 PhD students who are engaged in world-class research across Computer Science and Software Engineering, spanning the following areas:

 

Network-Based Computing and Distributed Systems(...)
To be specified.
Real-Time Embedded Systems(...)
At the heart of personal, health care, military, and transportation applications is a computing system that performs the essential functions of sensing, computing, control, and communication. Such computer systems that are immersed in their application domains are known as embedded systems. Almost all of these application domains have some types of timing constraints on the accomplishment of their tasks. Such systems, which usually cannot be isolated from embedded systems, are known as Real-Time systems. Design technologies for real-time embedded systems are facing cross-cutting challenges of efficient resource management (including physical/logical resources, and energy), time sensitivity, and interaction to the physical environment. Faculty is engaged in cutting edge research that addresses these design challenges of real-time embedded computing systems in both centralized and distributed technologies. 
Subcategories: Real-time scheduling and resource management algorithms - Distributed Systems - Power, energy and thermal management - Fault-tolerance and dependability - Performance Modeling and Evaluation.
Formal Modeling and Verification(...)

Software is becoming a part of most modern-day industrial systems. In most cases, safety of the whole system depends on the correctness of the software parts. However, due to the inherent complexity in computer programs, it is hard to verify their correctness without a rigorous mathematical model. This is the aim for which formal methods in software engineering are devised. A central part of any formal method is a modeling notation, with clearly defined syntax and semantics, in which the system under study is specified. The specification serves as the 'correct description' against which the system is verified. Finding a suitable notation for a particular system under study is crucial, as it partly determines the complexity of the model and the analysis methods that can be used.

On the analysis part, we focus on two techniques: model-checking and model-based testing. Model-checking refers to automatic verification of the model of a reactive system against a specification usually expressed in temporal logics. The famous problem of 'state-space explosion' however is the main barrier to successful application of model-checking to large-scale systems. Finding methods to overcome this problem has been a center of attention in model-checking research community. On the other hand, model-based testing does not assume having a formal model of the system, rather it embodies a formal specification to generate and execute test cases automatically. Although it is impossible to show 'the absence of bugs' using testing, it makes it more practical when dealing with large-scale industrial systems.

Software Design and Architecture(...)

Software systems are getting more complex, and at the same time, it becomes more critical to attain quality factors such as performance, availability, modifiability, and so on. Without having a unifying view of software elements, at a high level of detail, addressing different types of quality attributes is almost impossible. This is where software architecture comes into the play. Most modern software development processes consider software architecture as the central artifact, developed during early phases of the development, which guides many other activities in the project.

As a relatively new discipline in software engineering, software architecture has opened various research problems. How to analyze and model quality attributes that drive the architecture? Can we have a systematic way to design the architecture effectively? What are the ways to model and document software architecture? How can we evaluate the architecture to see if it satisfies the intended quality attributes? Although several methods exist for each of the problems stated, there are quite a lot of open areas that must be investigated further by the research community.

Data Mining and Information Retrieval(...)
To be spcified
Database Systems(...)
To be spcified
Agent-Based Systems(...)
To be spcified
Multi-Formalism Modeling and Simulation-Based Design(...)
Advances in modeling and simulation, grounded in disciplinary to transdisciplinary subject matters, are central in carrying out research innumerous computing and informatics topics. Modeling and simulation theories, flexible and high-performance software tools and practices are indispensible in understanding and creating engineered and natural network systems. The objective of the modeling and simulation theme is to serve as a foundation and enabler for developing multi-scale, multi-purpose data intensive computational models of complex systems. New kinds of hybrid simulated and physical systems make possible innovative simulation-based science and engineering in domains as diverse as supply-chain enterprises, command and control systems, environmental phenomena and e-businesses.
Subcategories: Model Composability, Simulation-based System Design and Testing, Software Development Process Modeling 
Natural Language and Text Processing(...)
Natural Language and Text Processing is the automatic analysis of human languages and texts such as Persian, English, etc. by computer algorithms. Unlike programming languages where the structure and meaning of programs is easy to encode, human languages provide an interesting challenge, both in terms of its analysis and the learning of language from observations. The NLP in Tehran University is a teams of faculty and students who work together on algorithms that allow computers to process and understand human languages and written texts, mainly on Persian. Our work ranges from basic research in computational linguistics to key applications in human language technology, and covers areas such as, probabilistic parsing and tagging, grammar induction, word sense disambiguation, and automatic question answering, automatic translation. A distinguishing feature of the NLP Group is our effective combination of linguistic modeling and data analysis with innovative probabilistic and machine learning approaches to NLP. Interested in machines that can learn language, understand language, and translate language? We are always looking for talented graduate students. We also actively explore connections to industrial/commercial applications of our research.
University of Tehran / University College of Engineering / School of Electrical and Computer Engineering / Department Of Software Engineering
Sitemap / All rights reserved