
Dr. Reza Mirsalari, PhD
Not a thesis supervisor
- Part Time Teaching, Computer Science and Software Engineering
Are you the profile owner?
Sign in to editContact information
Email:
Availability:
Teaching activities
Full-Stack Web Development: Java, .NET, and PHP
Full-Stack Web Development with Java, .NET, and PHP provides comprehensive training in building dynamic and robust web applications. The course emphasizes client-server architecture, teaching students how to develop both front-end and back-end components that communicate efficiently. Learners gain hands-on experience with database integration, working with technologies like MySQL, SQL Server, and JDBC/Entity Framework. Through the use of modern web frameworks such as Spring Boot (Java), ASP.NET Core (.NET), and Laravel (PHP), students build scalable, secure applications, preparing them for real-world development across multiple technology stacks.
Mobile App Development: iOS and Android
Mobile App Development for iOS and Android focuses on designing and building native applications tailored to each platform. The course covers essential techniques for mobile programming, with an emphasis on creating intuitive and responsive UI/UX designs that enhance user experience. Students learn to address platform-specific requirements such as navigation patterns, device compatibility, and performance optimization. Additionally, the course explores integration with mobile APIs for features like location services, camera access, and data storage, preparing students to develop fully functional, real-world mobile applications.
Game Development with Unity
Game development covers both fundamental and advanced concepts essential for creating interactive digital games. Using the Unity engine, students learn core topics such as scripting with C#, animation for character and environment dynamics, and the implementation of AI behaviors to create responsive, intelligent gameplay. The course also explores multiplayer game design, introducing networking principles that enable real-time interaction between players. This hands-on approach equips students with the technical and creative skills needed to build immersive single-player and multiplayer games across various platforms.
Software Development in the Cloud using Azure
Software development in the cloud using Azure and AWS provides hands-on training in deploying, managing, and scaling applications in modern cloud environments. Students explore core cloud services such as virtual machines, storage, and databases, while gaining an understanding of security best practices, DevOps tools, and automated deployment pipelines. The course emphasizes building scalable and resilient solutions, equipping learners with practical skills to manage real-world applications in both Microsoft Azure and Amazon Web Services—two of the most widely used cloud platforms in the industry.
Distributed Systems, Web Services, and Microservices
Distributed systems enable components of a software application to run on multiple networked computers, enhancing scalability and reliability. This includes web services and microservices architectures, which support modular and independently deployable services. Web services, such as RESTful APIs and SOAP, allow systems to communicate over the web using standardized protocols. Microservices build on these principles by organizing applications into loosely coupled, independently managed services. Through hands-on projects, students gain practical experience in designing, implementing, and orchestrating distributed components using REST, SOAP, and microservice frameworks—key skills for building modern, cloud-based systems.
Software Design Methodologies
In large-scale software design, structured approaches like Waterfall, Agile, and the Spiral model provide frameworks to manage complexity. Waterfall suits projects with fixed requirements, such as government or industrial systems. Agile, with its iterative and collaborative nature, excels in fast-paced environments like web or mobile app development. The Spiral model combines iteration with risk analysis, making it effective for complex systems like aerospace or healthcare. Choosing the right methodology depends on the project’s scale, risk level, and need for flexibility, with real-world use cases guiding best practices.
Software Measurement
Techniques for measuring and analyzing software quality and performance involve using quantitative methods to evaluate aspects such as reliability, maintainability, and efficiency. By applying software metrics and models, developers can identify potential issues early, monitor progress, and make data-driven decisions to enhance overall quality. These metrics—such as defect density, response time, or code complexity—help assess the effectiveness of the software and guide improvements. Models are also used to predict performance and reliability, allowing teams to optimize resources and ensure the software meets its functional and non-functional requirements.
Big Data Analytics
Big Data Analytics focuses on extracting insights from large, complex datasets using machine learning techniques. Key methods include clustering to group similar data, dimensionality reduction to simplify analysis, and recommender systems to suggest items based on user behavior. Frequent itemset mining uncovers common patterns in data, while data stream processing handles real-time data analysis. Graph analysis explores relationships in networked data, such as social or web connections, revealing deeper structural insights
Operating Systems Using Linux : Practical
A practical introduction to operating systems using Linux, this course progresses from foundational concepts to advanced system administration skills. Topics include package management, running C and Python programs on Linux, user and group management, access control, process and memory handling, storage systems, backups, and powerful tools like regular expressions, Grep, shell scripting, and operating system security.
Research activities
Advancements in Software Engineering
- Exploring emerging trends and technologies shaping software engineering.
- Investigating the impact of AI and machine learning on software development processes.
Metrics of Software Quality
-
Developing and validating metrics for assessing software quality and performance.
-
Analyzing the correlation between software metrics and project outcomes.
Architectural Design for Large-Scale Applications
-
Designing scalable and robust architectures for enterprise-level applications.
-
Examining patterns and practices in cloud computing and microservices for large systems.
Team Dynamics in Software Engineering
-
Studying the influence of team composition and collaboration on software project success.
-
Implementing agile methodologies to enhance team productivity and communication.
Project Management Techniques in Software Engineering
-
Comparing traditional vs. agile project management methodologies in software projects.
-
Assessing risk management strategies and their effectiveness in software development.
API Development and Integration
Philosophies and Methodologies in Software Development
-
Critical analysis of modern vs. traditional software development philosophies.
-
Exploring iterative and incremental development approaches in software engineering.